:root {
  --green: #18a86b;
  --green-deep: #0d744b;
  --green-light: #bff1d7;
  --ink: #07110c;
  --ink-2: #0a1712;
  --paper: #eef1ec;
  --paper-2: #f8f9f6;
  --line: rgba(7,17,12,.13);
  --white-line: rgba(255,255,255,.14);
  --ease: cubic-bezier(.22,.8,.2,1);
  --shell: 1440px;
}

* { box-sizing: border-box; }
html { background: var(--ink); }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: "Helvetica Neue", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
  font-feature-settings: "palt" 1;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
body.menu-open { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
::selection { background: var(--green); color: #fff; }

.grain {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 999;
  opacity: .045;
  mix-blend-mode: soft-light;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
.pointer-glow {
  position: fixed;
  left: 0;
  top: 0;
  width: 420px;
  height: 420px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(24,168,107,.13), transparent 68%);
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 2;
  opacity: 0;
  transition: opacity .35s ease;
}
body.has-pointer .pointer-glow { opacity: 1; }

.site-header {
  position: fixed;
  z-index: 90;
  top: 0;
  left: 0;
  width: 100%;
  color: #fff;
  transition: background .35s ease, border-color .35s ease, backdrop-filter .35s ease;
  border-bottom: 1px solid transparent;
}
.site-header.is-scrolled {
  background: rgba(7,17,12,.82);
  border-color: rgba(255,255,255,.1);
  backdrop-filter: blur(18px) saturate(130%);
}
.header-inner {
  width: min(calc(100% - 56px), var(--shell));
  min-height: 92px;
  margin: auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.logo {
  display: inline-flex;
  align-items: center;
  gap: 13px;
  font-size: 21px;
  font-weight: 650;
  letter-spacing: -.04em;
}
.logo-symbol {
  position: relative;
  width: 31px;
  height: 24px;
  display: inline-block;
}
.logo-symbol i {
  position: absolute;
  bottom: 0;
  left: 0;
  border: 2px solid var(--green);
  border-bottom: 0;
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}
.logo-symbol i:nth-child(1) { width: 31px; height: 22px; }
.logo-symbol i:nth-child(2) { width: 23px; height: 16px; left: 4px; }
.logo-symbol i:nth-child(3) { width: 15px; height: 10px; left: 8px; }
.global-nav {
  display: flex;
  align-items: center;
  gap: clamp(18px,2vw,34px);
}
.global-nav a {
  position: relative;
  font-size: 12px;
  letter-spacing: .08em;
  color: rgba(255,255,255,.72);
  transition: color .25s ease;
}
.global-nav a:not(.nav-contact)::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -9px;
  width: 100%;
  height: 1px;
  background: var(--green);
  transform: scaleX(0);
  transform-origin: right;
  transition: transform .35s var(--ease);
}
.global-nav a:hover { color: #fff; }
.global-nav a:hover::after { transform: scaleX(1); transform-origin: left; }
.nav-contact {
  padding: 13px 19px;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 100px;
  transition: background .25s ease, border-color .25s ease !important;
}
.nav-contact:hover { background: var(--green); border-color: var(--green); }
.menu-button { display: none; }

.hero {
  position: relative;
  min-height: 100svh;
  background: #07110c;
  color: #fff;
  overflow: hidden;
  isolation: isolate;
}
.hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -4;
  background:
    radial-gradient(circle at 70% 35%, rgba(24,168,107,.12), transparent 33%),
    linear-gradient(120deg, #07110c 0%, #091610 52%, #06100b 100%);
}
.hero-grid {
  position: absolute;
  inset: 0;
  z-index: -3;
  background-image:
    linear-gradient(rgba(255,255,255,.045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.045) 1px, transparent 1px);
  background-size: 84px 84px;
  mask-image: linear-gradient(to bottom, #000 0%, rgba(0,0,0,.75) 68%, transparent 100%);
}
.hero-green {
  position: absolute;
  z-index: -2;
  border-radius: 50%;
  filter: blur(110px);
  background: var(--green);
  opacity: .12;
}
.hero-green--one { width: 42vw; height: 42vw; right: -16vw; top: -10vw; }
.hero-green--two { width: 28vw; height: 28vw; left: -12vw; bottom: -14vw; opacity: .06; }
.hero-ring {
  position: absolute;
  width: min(53vw, 760px);
  aspect-ratio: 1;
  right: -7vw;
  top: 50%;
  transform: translateY(-48%);
  z-index: -1;
}
.hero-ring > span { position: absolute; border-radius: 50%; }
.ring-one {
  inset: 0;
  border: 1px solid rgba(24,168,107,.45);
  box-shadow: inset 0 0 70px rgba(24,168,107,.025);
  animation: spin 26s linear infinite;
}
.ring-one::before,
.ring-one::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  background: var(--green);
}
.ring-one::before { width: 9px; height: 9px; left: 11%; top: 19%; box-shadow: 0 0 24px var(--green); }
.ring-one::after { width: 5px; height: 5px; right: 12%; bottom: 20%; }
.ring-two {
  inset: 17%;
  border: 1px dashed rgba(255,255,255,.18);
  animation: spinReverse 33s linear infinite;
}
.ring-dot {
  width: 22%;
  aspect-ratio: 1;
  left: 39%;
  top: 39%;
  border: 1px solid rgba(255,255,255,.16);
  background: radial-gradient(circle, rgba(24,168,107,.19), rgba(24,168,107,.025) 62%, transparent 63%);
}
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes spinReverse { to { transform: rotate(-360deg); } }

.hero-inner {
  width: min(calc(100% - 96px), 1360px);
  min-height: 100svh;
  margin: auto;
  padding: 150px 0 110px;
  display: grid;
  grid-template-columns: minmax(0,1.4fr) minmax(320px,.6fr);
  align-items: center;
  gap: 80px;
}
.hero-copy { position: relative; z-index: 2; }
.eyebrow {
  margin: 0 0 30px 8px;
  color: var(--green-light);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .34em;
}
.hero h1 { margin: 0; }
.company-ja {
  display: block;
  margin: 0 0 18px 8px;
  font-size: clamp(16px,1.5vw,22px);
  font-weight: 500;
  letter-spacing: .28em;
  color: rgba(255,255,255,.72);
}
.rainbow-word {
  position: relative;
  display: inline-block;
  font-family: Georgia, "Times New Roman", "Yu Mincho", serif;
  font-size: clamp(88px, 12vw, 182px);
  line-height: .78;
  letter-spacing: -.075em;
  font-weight: 400;
  color: #fff;
}
.rainbow-word::after {
  content: attr(data-text);
  position: absolute;
  left: .036em;
  top: .055em;
  width: 100%;
  color: transparent;
  -webkit-text-stroke: 1px rgba(24,168,107,.55);
  z-index: -1;
}
.hero-index {
  position: relative;
  align-self: end;
  z-index: 3;
  border-top: 1px solid rgba(255,255,255,.14);
}
.hero-index a {
  min-height: 72px;
  display: grid;
  grid-template-columns: 38px 1fr auto;
  align-items: center;
  gap: 15px;
  border-bottom: 1px solid rgba(255,255,255,.14);
  transition: padding .35s var(--ease), border-color .25s ease;
}
.hero-index a:hover { padding-left: 12px; border-color: rgba(24,168,107,.75); }
.hero-index span { color: var(--green); font-size: 10px; letter-spacing: .12em; }
.hero-index strong { font-size: 14px; font-weight: 500; letter-spacing: .04em; }
.hero-index i { font-style: normal; font-size: 18px; color: rgba(255,255,255,.5); transition: transform .3s var(--ease), color .3s ease; }
.hero-index a:hover i { transform: translate(4px,-4px); color: var(--green); }
.hero-bottom {
  position: absolute;
  left: 50%;
  bottom: 28px;
  transform: translateX(-50%);
  width: min(calc(100% - 96px), 1360px);
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 36px;
  color: rgba(255,255,255,.38);
  font-size: 10px;
  letter-spacing: .06em;
}

.intro-panel {
  position: relative;
  background: var(--paper-2);
  padding: clamp(110px, 13vw, 190px) 0;
  overflow: hidden;
}
.intro-panel::before {
  content: "Rainbow";
  position: absolute;
  right: -3vw;
  top: 15%;
  font-family: Georgia, serif;
  font-size: clamp(130px,22vw,330px);
  line-height: 1;
  letter-spacing: -.08em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(7,17,12,.07);
  pointer-events: none;
}
.intro-inner {
  position: relative;
  width: min(calc(100% - 80px), 1180px);
  margin: auto;
  z-index: 1;
}
.intro-kicker {
  margin: 0 0 48px;
  color: var(--green-deep);
  font-size: 12px;
  letter-spacing: .18em;
}
.intro-copy {
  width: min(100%, 990px);
  margin: 0;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(25px,3.4vw,48px);
  line-height: 1.75;
  letter-spacing: -.035em;
}
.round-link {
  width: 134px;
  height: 134px;
  margin: 70px 0 0 auto;
  border: 1px solid rgba(7,17,12,.25);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 10px;
  font-size: 11px;
  transition: background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease);
}
.round-link i { font-style: normal; font-size: 19px; transition: transform .35s var(--ease); }
.round-link:hover { background: var(--green); color: #fff; border-color: var(--green); transform: scale(1.05); }
.round-link:hover i { transform: translate(4px,-4px); }

.page-links {
  padding: 120px 0 150px;
  background: #dfe4dd;
}
.section-head {
  width: min(calc(100% - 80px), 1320px);
  margin: 0 auto 28px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  font-size: 10px;
  letter-spacing: .16em;
  color: rgba(7,17,12,.48);
}
.link-grid {
  width: min(calc(100% - 80px), 1320px);
  margin: auto;
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-auto-rows: minmax(360px, 28vw);
  gap: 14px;
}
.page-card {
  position: relative;
  grid-column: span 5;
  overflow: hidden;
  padding: 30px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: #f5f6f2;
  border: 1px solid rgba(7,17,12,.07);
  transition: transform .5s var(--ease), background .45s ease, color .45s ease;
  transform-style: preserve-3d;
}
.page-card--large { grid-column: span 7; }
.page-card:nth-child(4) { grid-column: span 5; }
.page-card:nth-child(5) { grid-column: span 7; }
.page-card:hover { background: #0a1712; color: #fff; transform: translateY(-5px); }
.page-card--green { background: var(--green); color: #fff; }
.page-card--green:hover { background: var(--green-deep); }
.card-number {
  position: relative;
  z-index: 2;
  width: 34px;
  height: 34px;
  border: 1px solid currentColor;
  border-radius: 50%;
  display: grid;
  place-items: center;
  font-size: 9px;
  opacity: .58;
}
.card-title { position: relative; z-index: 2; }
.card-title h2 {
  margin: 0 0 16px;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(32px,4.3vw,64px);
  line-height: 1.02;
  font-weight: 500;
  letter-spacing: -.055em;
}
.card-title span { font-size: 11px; letter-spacing: .12em; opacity: .62; }
.card-arrow {
  position: absolute;
  right: 28px;
  top: 28px;
  font-style: normal;
  font-size: 26px;
  transition: transform .35s var(--ease), color .35s ease;
}
.page-card:hover .card-arrow { transform: translate(5px,-5px); color: var(--green-light); }
.card-orbit {
  position: absolute;
  width: min(62%,430px);
  aspect-ratio: 1;
  right: -8%;
  top: -12%;
  border: 1px solid rgba(24,168,107,.28);
  border-radius: 50%;
  transition: transform 1.1s var(--ease), border-color .45s ease;
}
.card-orbit::before,
.card-orbit::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  border: 1px solid rgba(24,168,107,.17);
}
.card-orbit::before { inset: 15%; }
.card-orbit::after { inset: 31%; background: rgba(24,168,107,.04); }
.page-card:hover .card-orbit { transform: scale(1.13) rotate(18deg); border-color: rgba(24,168,107,.68); }
.card-lines {
  position: absolute;
  inset: 0;
  opacity: .16;
  background-image: repeating-linear-gradient(115deg, transparent 0 22px, rgba(255,255,255,.6) 23px, transparent 24px 46px);
  transition: transform .8s var(--ease);
}
.page-card--green:hover .card-lines { transform: scale(1.08) translateX(10px); }
.page-card--contact { background: #0a1712; color: #fff; }
.page-card--contact:hover { background: var(--green); }
.contact-watermark {
  position: absolute;
  right: -18px;
  bottom: -34px;
  font-family: Georgia, serif;
  font-size: clamp(85px,12vw,170px);
  letter-spacing: -.08em;
  line-height: 1;
  color: transparent;
  -webkit-text-stroke: 1px rgba(255,255,255,.12);
  pointer-events: none;
}

.message-strip {
  position: relative;
  padding: 160px 0 150px;
  background: #07110c;
  color: #fff;
  overflow: hidden;
}
.message-track {
  position: absolute;
  left: 0;
  top: 24px;
  display: flex;
  align-items: center;
  gap: 32px;
  width: max-content;
  color: transparent;
  -webkit-text-stroke: 1px rgba(24,168,107,.25);
  font-family: Georgia, serif;
  font-size: 82px;
  line-height: 1;
  letter-spacing: -.06em;
  animation: marquee 28s linear infinite;
}
.message-track i { width: 10px; height: 10px; border-radius: 50%; background: var(--green); }
@keyframes marquee { to { transform: translateX(-25%); } }
.message-inner {
  position: relative;
  z-index: 2;
  width: min(calc(100% - 80px), 980px);
  margin: auto;
  padding-top: 40px;
}
.message-inner p:first-child {
  margin: 0 0 34px;
  color: var(--green-light);
  font-size: 13px;
  letter-spacing: .14em;
}
.message-inner p:nth-child(2) {
  margin: 0;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(25px,3.3vw,44px);
  line-height: 1.85;
  letter-spacing: -.03em;
  color: rgba(255,255,255,.9);
}
.message-inner a {
  width: fit-content;
  margin-top: 60px;
  display: flex;
  align-items: center;
  gap: 20px;
  border-bottom: 1px solid rgba(255,255,255,.25);
  padding-bottom: 12px;
  font-size: 11px;
  letter-spacing: .12em;
}
.message-inner a i { font-style: normal; font-size: 18px; color: var(--green); transition: transform .3s var(--ease); }
.message-inner a:hover i { transform: translate(4px,-4px); }

.site-footer {
  padding: 80px max(40px, calc((100vw - 1320px)/2)) 36px;
  background: #dfe4dd;
}
.footer-main {
  min-height: 250px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 80px;
  align-items: start;
}
.footer-logo {
  font-family: Georgia, serif;
  font-size: clamp(70px,9vw,136px);
  line-height: .82;
  letter-spacing: -.075em;
}
.footer-nav { display: grid; grid-template-columns: repeat(2,minmax(110px,1fr)); gap: 18px 48px; }
.footer-nav a { font-size: 12px; transition: color .25s ease; }
.footer-nav a:hover { color: var(--green-deep); }
.footer-bottom {
  padding-top: 25px;
  border-top: 1px solid var(--line);
  display: flex;
  justify-content: space-between;
  gap: 40px;
  color: rgba(7,17,12,.55);
  font-size: 10px;
  line-height: 1.8;
}
.footer-bottom p { margin: 0; }

.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .9s var(--ease) var(--delay,0ms), transform .9s var(--ease) var(--delay,0ms);
}
.reveal.is-visible { opacity: 1; transform: translateY(0); }

@media (max-width: 1100px) {
  .global-nav { gap: 17px; }
  .global-nav a { font-size: 11px; }
  .hero-inner { grid-template-columns: 1fr .55fr; gap: 50px; }
  .hero-ring { width: 62vw; right: -18vw; }
}

@media (max-width: 860px) {
  .header-inner { width: calc(100% - 38px); min-height: 76px; }
  .menu-button {
    position: relative;
    z-index: 102;
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border: 0;
    background: transparent;
    color: #fff;
    cursor: pointer;
  }
  .menu-button span {
    position: absolute;
    width: 24px;
    height: 1px;
    background: currentColor;
    transition: transform .35s var(--ease), top .35s var(--ease);
  }
  .menu-button span:first-child { top: 18px; }
  .menu-button span:last-child { top: 27px; }
  .menu-button.is-open span:first-child { top: 23px; transform: rotate(45deg); }
  .menu-button.is-open span:last-child { top: 23px; transform: rotate(-45deg); }
  .global-nav {
    position: fixed;
    inset: 0;
    z-index: 100;
    padding: 120px 30px 40px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: center;
    gap: 0;
    background:
      radial-gradient(circle at 88% 14%, rgba(255,255,255,.09) 0 6%, transparent 26%),
      radial-gradient(circle at 6% 88%, rgba(24,168,107,.34), transparent 34%),
      linear-gradient(145deg, #06271c 0%, #0b4933 58%, #0e6a49 100%);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-12px);
    transition: opacity .35s ease, visibility .35s ease, transform .35s var(--ease);
  }
  .global-nav.is-open { opacity: 1; visibility: visible; transform: translateY(0); }
  .global-nav a,
  .nav-contact {
    width: 100%;
    padding: 17px 0;
    border: 0;
    border-bottom: 1px solid rgba(255,255,255,.14);
    border-radius: 0;
    font-family: "Yu Mincho", serif;
    font-size: 24px;
    color: #fff;
  }
  .nav-contact:hover { background: transparent; }
  .global-nav a::after { display: none; }

  .hero-inner {
    width: calc(100% - 44px);
    min-height: 100svh;
    padding: 122px 0 120px;
    grid-template-columns: 1fr;
    align-items: center;
    gap: 58px;
  }
  .hero-copy { align-self: end; }
  .rainbow-word { font-size: clamp(72px,20vw,145px); }
  .hero-index { align-self: start; width: min(100%,520px); }
  .hero-index a { min-height: 58px; }
  .hero-ring { width: 92vw; right: -52vw; top: 40%; opacity: .75; }
  .hero-bottom { width: calc(100% - 44px); grid-template-columns: 1fr auto; }
  .hero-bottom span:last-child { display: none; }

  .intro-inner,
  .section-head,
  .link-grid,
  .message-inner { width: calc(100% - 44px); }
  .intro-copy br { display: none; }
  .round-link { margin-left: 0; }

  .link-grid { grid-template-columns: 1fr; grid-auto-rows: minmax(320px,65vw); }
  .page-card,
  .page-card--large,
  .page-card:nth-child(4),
  .page-card:nth-child(5) { grid-column: auto; }
  .page-card { padding: 26px; }

  .footer-main { grid-template-columns: 1fr; gap: 60px; }
  .footer-bottom { flex-direction: column; gap: 18px; }
}

@media (max-width: 520px) {
  .logo { font-size: 18px; }
  .logo-symbol { transform: scale(.9); transform-origin: left center; }
  .hero-inner { padding-top: 105px; }
  .eyebrow { margin-bottom: 22px; font-size: 9px; }
  .company-ja { font-size: 13px; }
  .rainbow-word { font-size: clamp(64px,21vw,104px); }
  .hero-index strong { font-size: 13px; }
  .hero-bottom { font-size: 8px; }
  .intro-panel { padding: 95px 0 110px; }
  .intro-kicker { margin-bottom: 34px; }
  .intro-copy { font-size: 24px; line-height: 1.7; }
  .round-link { width: 112px; height: 112px; margin-top: 50px; }
  .page-links { padding: 80px 0 90px; }
  .link-grid { grid-auto-rows: 280px; }
  .card-title h2 { font-size: 36px; }
  .message-strip { padding: 140px 0 110px; }
  .message-track { font-size: 64px; }
  .message-inner p:nth-child(2) { font-size: 24px; }
  .site-footer { padding: 64px 22px 30px; }
  .footer-logo { font-size: 66px; }
  .footer-nav { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
  .pointer-glow { display: none; }
}

/* ------------------------------------------------------------
   Sub pages
------------------------------------------------------------ */
.subpage { background: var(--paper-2); }
.subpage .global-nav a.is-current { color: #fff; }
.subpage .global-nav a.is-current:not(.nav-contact)::after { transform: scaleX(1); }
.subpage .nav-contact.is-current { background: var(--green); border-color: var(--green); }
.sub-footer { position: relative; z-index: 3; }

.sub-hero {
  position: relative;
  height: min(690px, 78svh);
  min-height: 560px;
  overflow: hidden;
  background: #07110c;
  color: #fff;
  isolation: isolate;
}
.sub-grid {
  position: absolute;
  inset: 0;
  z-index: -4;
  background-image: linear-gradient(rgba(255,255,255,.04) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.04) 1px, transparent 1px);
  background-size: 86px 86px;
  mask-image: linear-gradient(to bottom, #000, rgba(0,0,0,.6) 72%, transparent);
}
.sub-hero-inner {
  width: min(calc(100% - 96px), 1360px);
  height: 100%;
  margin: auto;
  padding: 150px 0 70px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.sub-index {
  margin: 0 0 20px;
  color: var(--green-light);
  font-size: 11px;
  letter-spacing: .18em;
}
.sub-title {
  margin: 0;
  font-family: "Yu Mincho", "Hiragino Mincho ProN", serif;
  font-size: clamp(64px, 9vw, 136px);
  line-height: .94;
  font-weight: 500;
  letter-spacing: -.065em;
}
.sub-watermark {
  position: absolute;
  right: -2vw;
  bottom: -4vw;
  margin: 0;
  font-family: Georgia, serif;
  font-size: clamp(140px, 24vw, 360px);
  line-height: .7;
  letter-spacing: -.08em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(255,255,255,.105);
  z-index: -1;
}
.sub-orbit { position: absolute; border-radius: 50%; border: 1px solid rgba(24,168,107,.36); z-index: -2; }
.sub-orbit::before, .sub-orbit::after { content:""; position:absolute; border-radius:50%; border:1px solid rgba(24,168,107,.17); }
.sub-orbit::before { inset: 14%; }
.sub-orbit::after { inset: 31%; background: rgba(24,168,107,.035); }
.sub-orbit--a { width: 660px; height: 660px; right: -120px; top: -170px; animation: spin 32s linear infinite; }
.sub-orbit--b { width: 310px; height: 310px; left: 18%; bottom: -205px; opacity: .55; animation: spinReverse 27s linear infinite; }

.company-content { background: #edf0ea; padding: 130px 0 150px; }
.company-layout {
  width: min(calc(100% - 96px), 1260px);
  margin: auto;
  display: grid;
  grid-template-columns: 270px 1fr;
  gap: clamp(60px, 9vw, 150px);
  align-items: start;
}
.company-sticky { position: sticky; top: 130px; }
.company-sticky > p { margin: 0; font-size: 11px; letter-spacing: .18em; color: var(--green-deep); }
.company-mark { position: relative; width: 168px; height: 120px; margin-top: 58px; }
.company-mark i { position: absolute; left: 0; bottom: 0; border: 1px solid var(--green); border-bottom: 0; border-radius: 50% 50% 0 0 / 100% 100% 0 0; }
.company-mark i:nth-child(1) { width: 168px; height: 118px; }
.company-mark i:nth-child(2) { width: 126px; height: 88px; left: 21px; }
.company-mark i:nth-child(3) { width: 84px; height: 58px; left: 42px; }
.company-list { margin: 0; border-top: 1px solid var(--line); }
.company-list > div {
  position: relative;
  display: grid;
  grid-template-columns: minmax(130px,.34fr) 1fr;
  gap: 28px;
  padding: 32px 0 34px;
  border-bottom: 1px solid var(--line);
}
.company-list > div::before { content:""; position:absolute; left:0; bottom:-1px; height:1px; width:0; background: var(--green); transition: width .65s var(--ease); }
.company-list > div:hover::before { width: 100%; }
.company-list dt { font-size: 11px; letter-spacing: .1em; color: rgba(7,17,12,.55); }
.company-list dd { margin: 0; font-family: "Yu Mincho", "Hiragino Mincho ProN", serif; font-size: clamp(20px,2vw,29px); line-height: 1.6; letter-spacing: -.025em; }
.company-association dd { display: grid; gap: 8px; }
.company-association dd span { display: block; }

.next-links { display: grid; grid-template-columns: 1fr 1fr; background: #dfe4dd; border-top: 1px solid var(--line); }
.next-links a { min-height: 200px; padding: 38px clamp(28px, 5vw, 90px); display:flex; align-items:center; justify-content:space-between; gap: 30px; font-family:"Yu Mincho",serif; font-size: clamp(25px,3vw,45px); border-right:1px solid var(--line); transition: background .4s var(--ease), color .4s var(--ease), padding .4s var(--ease); }
.next-links a:last-child { border-right:0; }
.next-links a:hover { background: var(--green); color:#fff; padding-left: clamp(40px, 6vw, 108px); }
.next-links i { font-style: normal; font-family: sans-serif; font-size: 28px; transition: transform .35s var(--ease); }
.next-links a:hover i { transform: translate(5px,-5px); }
.next-links--dark { background:#07110c; border-color:rgba(255,255,255,.12); color:#fff; }
.next-links--dark a { border-color:rgba(255,255,255,.12); }

/* Philosophy */
.sub-hero--message { background: radial-gradient(circle at 79% 22%, rgba(24,168,107,.18), transparent 30%), #07110c; }
.message-arc { position:absolute; width:min(76vw,1080px); aspect-ratio:1; border:1px solid rgba(24,168,107,.34); border-radius:50%; right:-28vw; top:-49vw; z-index:-2; }
.message-arc::before { content:""; position:absolute; inset:11%; border:1px solid rgba(255,255,255,.09); border-radius:50%; }
.message-hero-quote { width:min(550px,45vw); margin: 40px 0 0 auto; font-family:"Yu Mincho",serif; font-size: clamp(19px,2vw,30px); line-height:1.7; color:rgba(255,255,255,.75); }
.message-content { background:#f4f5f1; }
.message-column { width:min(calc(100% - 96px),1120px); margin:auto; padding:140px 0 160px; }
.message-lead { width:min(100%,800px); }
.message-lead > p:first-child { margin:0 0 38px; color:var(--green-deep); font-size:12px; letter-spacing:.1em; }
.message-lead blockquote { margin:0; font-family:"Yu Mincho",serif; font-size:clamp(29px,4vw,54px); line-height:1.65; letter-spacing:-.04em; font-weight:500; }
.message-lead > p:last-child { width:min(100%,680px); margin:54px 0 0 auto; font-size:14px; line-height:2.1; color:rgba(7,17,12,.63); }
.message-body { margin-top:140px; display:grid; grid-template-columns:repeat(12,1fr); gap: 100px 28px; }
.message-body > div { grid-column: 3 / span 8; }
.message-body > div:nth-child(2) { grid-column: 6 / span 7; }
.message-body > div:nth-child(3) { grid-column: 2 / span 8; }
.message-body p { margin:0 0 28px; font-family:"Yu Mincho",serif; font-size:clamp(20px,2.4vw,31px); line-height:2; letter-spacing:-.02em; }
.message-climax { position:relative; padding:160px 0; background:#0a1712; color:#fff; overflow:hidden; }
.message-climax::before { content:"Rainbow"; position:absolute; left:-2vw; bottom:-.18em; font-family:Georgia,serif; font-size:clamp(130px,22vw,330px); line-height:.7; color:transparent; -webkit-text-stroke:1px rgba(24,168,107,.17); pointer-events:none; }
.message-climax-inner { position:relative; z-index:2; width:min(calc(100% - 96px),1000px); margin:auto; }
.message-climax-inner > p:first-child { margin:0 0 34px; color:var(--green-light); font-size:13px; letter-spacing:.13em; }
.message-climax-inner > p:nth-child(2) { margin:0; font-family:"Yu Mincho",serif; font-size:clamp(28px,3.6vw,49px); line-height:1.85; letter-spacing:-.03em; }
.signature { margin:85px 0 0 auto; width:max-content; display:flex; flex-direction:column; align-items:flex-end; gap:8px; font-family:"Yu Mincho",serif; }
.signature span { font-size:13px; color:rgba(255,255,255,.55); }
.signature strong { font-size:21px; font-weight:500; }

/* Product */
.product-hero { position:relative; min-height:92svh; overflow:hidden; background:var(--green); color:#fff; isolation:isolate; }
.product-hero::after { content:""; position:absolute; inset:0; z-index:-5; background:linear-gradient(120deg, rgba(7,17,12,.22), transparent 50%); }
.product-lines { position:absolute; inset:0; z-index:-4; opacity:.18; background-image:repeating-linear-gradient(118deg, transparent 0 31px, rgba(255,255,255,.55) 32px, transparent 33px 65px); }
.product-disc { position:absolute; border-radius:50%; border:1px solid rgba(255,255,255,.35); z-index:-2; }
.product-disc::before,.product-disc::after { content:""; position:absolute; border-radius:50%; border:1px solid rgba(255,255,255,.15); }
.product-disc::before{inset:17%}.product-disc::after{inset:35%;background:rgba(255,255,255,.04)}
.product-disc--1 { width:min(62vw,900px); aspect-ratio:1; right:-15vw; top:-10vw; animation:spin 40s linear infinite; }
.product-disc--2 { width:300px; aspect-ratio:1; left:-120px; bottom:-100px; animation:spinReverse 26s linear infinite; }
.product-hero-inner { width:min(calc(100% - 96px),1360px); min-height:92svh; margin:auto; padding:150px 0 80px; display:flex; flex-direction:column; justify-content:flex-end; }
.product-page .sub-index { color:#fff; opacity:.72; }
.product-title { margin:0; max-width:920px; font-family:"Yu Mincho",serif; font-size:clamp(70px,10.5vw,158px); line-height:.9; letter-spacing:-.08em; font-weight:500; }
.product-en { margin:46px 0 0; font-size:11px; letter-spacing:.34em; color:rgba(255,255,255,.62); }
.product-copy { background:#eef1ec; padding:140px 0 160px; }
.product-copy-head { width:min(calc(100% - 96px),1220px); margin:0 auto 70px; padding-bottom:24px; border-bottom:1px solid var(--line); }
.product-copy-head h2 { margin:0; color:var(--green-deep); font-size:12px; font-weight:500; letter-spacing:.15em; }
.product-sequence { width:min(calc(100% - 96px),1220px); margin:auto; }
.product-step { position:relative; min-height:200px; padding:48px 0; display:grid; grid-template-columns:120px minmax(0,1fr); gap:50px; border-bottom:1px solid var(--line); align-items:start; }
.product-step:first-child { border-top:1px solid var(--line); }
.product-step > span { width:42px; height:42px; border:1px solid rgba(7,17,12,.3); border-radius:50%; display:grid; place-items:center; font-size:10px; color:var(--green-deep); }
.product-step p { max-width:900px; margin:0; font-family:"Yu Mincho",serif; font-size:clamp(21px,2.6vw,35px); line-height:1.85; letter-spacing:-.025em; }
.product-step--focus { margin:40px -40px; padding:64px 40px; background:#0a1712; color:#fff; border:0; }
.product-step--focus > span { border-color:rgba(255,255,255,.35); color:var(--green-light); }
.product-step--focus p { font-size:clamp(27px,3.3vw,45px); }
.product-step--last { padding-bottom:80px; }

/* Partner */
.partner-hero { position:relative; min-height:88svh; overflow:hidden; background:#07110c; color:#fff; isolation:isolate; }
.partner-hero::before { content:""; position:absolute; inset:0; z-index:-5; background:radial-gradient(circle at 70% 30%, rgba(24,168,107,.17), transparent 35%); }
.pitch { position:absolute; width:min(76vw,1040px); aspect-ratio:1.55; right:-18vw; top:50%; transform:translateY(-47%) rotate(-9deg); border:1px solid rgba(24,168,107,.3); z-index:-2; opacity:.82; }
.pitch::before { content:""; position:absolute; left:50%; top:0; bottom:0; width:1px; background:rgba(24,168,107,.25); }
.pitch-center { position:absolute; width:23%; aspect-ratio:1; border:1px solid rgba(24,168,107,.3); border-radius:50%; left:38.5%; top:50%; transform:translateY(-50%); }
.pitch-center::after { content:""; position:absolute; width:5px; height:5px; border-radius:50%; background:var(--green); left:50%; top:50%; transform:translate(-50%,-50%); box-shadow:0 0 20px var(--green); }
.pitch-box { position:absolute; width:18%; height:47%; top:26.5%; border:1px solid rgba(24,168,107,.25); }
.pitch-box--l { left:0; border-left:0; }.pitch-box--r{right:0;border-right:0}
.partner-hero-inner { width:min(calc(100% - 96px),1360px); min-height:88svh; margin:auto; padding:150px 0 80px; display:flex; flex-direction:column; justify-content:flex-end; }
.partner-title { margin:0; font-family:"Yu Mincho",serif; font-size:clamp(70px,10vw,150px); line-height:.9; letter-spacing:-.07em; font-weight:500; }
.partner-rainbow { margin:32px 0 0; font-family:Georgia,serif; font-size:clamp(34px,5vw,70px); line-height:1; letter-spacing:-.055em; color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.25); }
.partner-content { background:#edf0ea; padding:150px 0 170px; }
.partner-statement { width:min(calc(100% - 96px),1080px); margin:auto; }
.partner-statement p { margin:0; font-family:"Yu Mincho",serif; font-size:clamp(28px,4vw,55px); line-height:1.75; letter-spacing:-.035em; }
.partner-statement p + p { margin-top:35px; color:var(--green-deep); }
.roasso-link { position:relative; width:min(calc(100% - 96px),1080px); min-height:220px; margin:120px auto 0; padding:35px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:30px; overflow:hidden; }
.roasso-link > span { position:relative; z-index:2; font-family:"Yu Mincho",serif; font-size:clamp(45px,7vw,100px); letter-spacing:-.06em; }
.roasso-link i { position:relative; z-index:2; font-style:normal; font-size:38px; transition:transform .4s var(--ease); }
.roasso-link b { position:absolute; width:300px; height:300px; border-radius:50%; background:var(--green); right:-330px; top:50%; transform:translateY(-50%); transition:right .65s var(--ease), width .65s var(--ease), height .65s var(--ease); }
.roasso-link:hover b { right:-80px; width:430px; height:430px; }
.roasso-link:hover i { transform:translate(7px,-7px); color:#fff; }

/* Contact */
.contact-page { background:#edf0ea; }
.contact-hero { position:relative; min-height:650px; height:72svh; overflow:hidden; background:#edf0ea; isolation:isolate; }
.contact-hero::before { content:""; position:absolute; inset:0; z-index:-4; background:linear-gradient(rgba(7,17,12,.055) 1px, transparent 1px),linear-gradient(90deg,rgba(7,17,12,.055) 1px,transparent 1px); background-size:86px 86px; }
.contact-hero-inner { width:min(calc(100% - 96px),1360px); height:100%; margin:auto; padding:150px 0 70px; display:flex; flex-direction:column; justify-content:flex-end; }
.contact-page .contact-header { color:var(--ink); }
.contact-page .contact-header.is-scrolled { color:#fff; }
.contact-page .contact-header:not(.is-scrolled) .global-nav a { color:rgba(7,17,12,.65); }
.contact-page .contact-header:not(.is-scrolled) .global-nav a.is-current { color:#fff; }
.contact-page .contact-header:not(.is-scrolled) .nav-contact { border-color:rgba(7,17,12,.25); }
.contact-page .contact-header:not(.is-scrolled) .menu-button { color:var(--ink); }
.contact-page .sub-index { color:var(--green-deep); }
.contact-title { margin:0; font-family:"Yu Mincho",serif; font-size:clamp(70px,10vw,150px); line-height:.9; letter-spacing:-.075em; font-weight:500; }
.contact-watermark-big { position:absolute; right:-3vw; bottom:-.15em; margin:0; z-index:-2; font-family:Georgia,serif; font-size:clamp(150px,26vw,390px); line-height:.72; letter-spacing:-.09em; color:transparent; -webkit-text-stroke:1px rgba(7,17,12,.095); }
.contact-orbit { position:absolute; width:520px; height:520px; right:-150px; top:-170px; z-index:-1; border:1px solid rgba(24,168,107,.3); border-radius:50%; }
.contact-orbit::before,.contact-orbit::after{content:"";position:absolute;border-radius:50%;border:1px solid rgba(24,168,107,.18)}.contact-orbit::before{inset:17%}.contact-orbit::after{inset:34%;background:rgba(24,168,107,.035)}
.contact-content { background:#0a1712; color:#fff; padding:140px 0 130px; }
.contact-form { width:min(calc(100% - 96px),1080px); margin:auto; }
.contact-form label { display:grid; grid-template-columns:220px 1fr; gap:45px; align-items:start; padding:32px 0; border-top:1px solid rgba(255,255,255,.16); }
.contact-form label:last-of-type { border-bottom:1px solid rgba(255,255,255,.16); }
.contact-form label > span { padding-top:17px; font-size:11px; letter-spacing:.11em; color:rgba(255,255,255,.55); }
.contact-form input,.contact-form textarea { width:100%; border:0; outline:0; background:transparent; color:#fff; font:inherit; font-family:"Yu Mincho",serif; font-size:clamp(20px,2.3vw,30px); line-height:1.7; border-bottom:1px solid rgba(255,255,255,.08); border-radius:0; padding:12px 0 15px; resize:vertical; transition:border-color .3s ease; }
.contact-form textarea { min-height:200px; }
.contact-form input:focus,.contact-form textarea:focus { border-color:var(--green); }
.contact-form button { width:160px; height:160px; margin:70px 0 0 auto; border:1px solid rgba(255,255,255,.3); border-radius:50%; background:transparent; color:#fff; display:flex; align-items:center; justify-content:center; flex-direction:column; gap:12px; cursor:pointer; transition:background .4s var(--ease),border-color .4s var(--ease),transform .4s var(--ease); }
.contact-form button span { font-size:11px; letter-spacing:.1em; }
.contact-form button i { font-style:normal; font-size:22px; }
.contact-form button:hover { background:var(--green); border-color:var(--green); transform:scale(1.05); }
.contact-info { width:min(calc(100% - 96px),1080px); margin:110px auto 0; padding-top:28px; border-top:1px solid rgba(255,255,255,.16); display:flex; justify-content:space-between; gap:30px; color:rgba(255,255,255,.48); font-size:10px; line-height:1.8; }
.contact-info p { margin:0; }

@media (max-width: 860px) {
  .subpage .global-nav a.is-current { color:#fff; }
  .sub-hero, .contact-hero { height:64svh; min-height:500px; }
  .sub-hero-inner,.product-hero-inner,.partner-hero-inner,.contact-hero-inner { width:calc(100% - 44px); padding:120px 0 48px; }
  .sub-title,.partner-title,.contact-title { font-size:clamp(54px,14vw,100px); }
  .sub-watermark { font-size:30vw; right:-8vw; bottom:-1vw; }
  .sub-orbit--a { width:520px;height:520px;right:-280px;top:-110px; }
  .company-content { padding:90px 0 110px; }
  .company-layout { width:calc(100% - 44px); grid-template-columns:1fr; gap:55px; }
  .company-sticky { position:relative; top:auto; display:flex; justify-content:space-between; align-items:flex-start; }
  .company-mark { width:96px;height:70px;margin:0; }
  .company-mark i:nth-child(1){width:96px;height:68px}.company-mark i:nth-child(2){width:72px;height:50px;left:12px}.company-mark i:nth-child(3){width:48px;height:32px;left:24px}
  .company-list > div { grid-template-columns:110px 1fr; gap:18px; padding:26px 0; }
  .next-links { grid-template-columns:1fr; }
  .next-links a { min-height:145px; border-right:0; border-bottom:1px solid var(--line); padding:30px 22px; }
  .next-links--dark a { border-color:rgba(255,255,255,.12); }
  .next-links a:hover { padding-left:30px; }

  .message-hero-quote { width:min(100%,520px); margin:28px 0 0; }
  .message-column { width:calc(100% - 44px); padding:100px 0 110px; }
  .message-lead > p:last-child { margin-left:0; }
  .message-body { margin-top:100px; grid-template-columns:1fr; gap:70px; }
  .message-body > div,.message-body > div:nth-child(2),.message-body > div:nth-child(3){grid-column:auto}
  .message-climax { padding:110px 0 120px; }
  .message-climax-inner { width:calc(100% - 44px); }
  .signature { margin-top:60px; }

  .product-hero { min-height:78svh; }
  .product-hero-inner { min-height:78svh; }
  .product-title { font-size:clamp(58px,16vw,112px); }
  .product-disc--1 { width:95vw; right:-50vw; }
  .product-copy { padding:100px 0 110px; }
  .product-copy-head,.product-sequence { width:calc(100% - 44px); }
  .product-step { grid-template-columns:55px 1fr; gap:20px; padding:38px 0; min-height:0; }
  .product-step--focus { margin:28px -22px; padding:44px 22px; }

  .partner-hero { min-height:72svh; }
  .partner-hero-inner { min-height:72svh; }
  .pitch { width:120vw; right:-74vw; opacity:.58; }
  .partner-content { padding:105px 0 120px; }
  .partner-statement,.roasso-link { width:calc(100% - 44px); }
  .roasso-link { margin-top:80px; min-height:165px; }
  .roasso-link b { display:none; }

  .contact-page .contact-header:not(.is-scrolled) .global-nav { color:#fff; }
  .contact-page .contact-header:not(.is-scrolled) .global-nav a { color:#fff; }
  .contact-content { padding:100px 0 100px; }
  .contact-form,.contact-info { width:calc(100% - 44px); }
  .contact-form label { grid-template-columns:1fr; gap:10px; padding:26px 0; }
  .contact-form label > span { padding-top:0; }
  .contact-form button { width:130px;height:130px;margin-top:55px; }
  .contact-info { margin-top:80px; flex-direction:column; gap:10px; }
}

@media (max-width: 520px) {
  .sub-hero,.contact-hero { min-height:450px; }
  .company-list > div { grid-template-columns:1fr; gap:8px; }
  .company-list dd { font-size:20px; }
  .company-association dd { font-size:17px; }
  .message-lead blockquote { font-size:28px; }
  .message-body p { font-size:20px; }
  .message-climax-inner > p:nth-child(2) { font-size:25px; }
  .signature strong { font-size:18px; }
  .product-title { font-size:15vw; }
  .product-en { font-size:8px; letter-spacing:.22em; }
  .product-step { grid-template-columns:42px 1fr; gap:14px; }
  .product-step > span { width:34px;height:34px; }
  .product-step p { font-size:19px; }
  .product-step--focus p { font-size:25px; }
  .partner-statement p { font-size:28px; }
  .roasso-link > span { font-size:44px; }
  .contact-watermark-big { font-size:34vw; }
}

/* =========================================================
   Contact page V2
   ========================================================= */
.contact-page-v2 { background:var(--paper-2); }
.contact-page-v2 .contact-header { color:#fff; }
.contact-page-v2 .contact-header:not(.is-scrolled) .global-nav a { color:rgba(255,255,255,.72); }
.contact-page-v2 .contact-header:not(.is-scrolled) .global-nav a.is-current { color:#fff; }
.contact-page-v2 .contact-header:not(.is-scrolled) .nav-contact { border-color:rgba(255,255,255,.3); background:rgba(255,255,255,.08); }

.contact-v2-hero {
  position:relative;
  min-height:760px;
  height:92svh;
  overflow:hidden;
  color:#fff;
  background:var(--green-deep);
  isolation:isolate;
}
.contact-v2-hero::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:-5;
  background:
    radial-gradient(circle at 72% 22%, rgba(191,241,215,.20), transparent 26%),
    radial-gradient(circle at 12% 85%, rgba(255,255,255,.10), transparent 24%),
    linear-gradient(120deg,#0a6d48 0%,#12945f 47%,#18a86b 100%);
}
.contact-v2-grid {
  position:absolute;
  inset:0;
  z-index:-4;
  opacity:.56;
  background-image:
    linear-gradient(rgba(255,255,255,.10) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.10) 1px,transparent 1px);
  background-size:88px 88px;
  mask-image:linear-gradient(to bottom,rgba(0,0,0,.92),rgba(0,0,0,.45) 66%,transparent 100%);
}
.contact-v2-hero::after {
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:34%;
  z-index:-3;
  background:linear-gradient(to bottom,transparent,rgba(5,47,31,.30));
}
.contact-v2-halo {
  position:absolute;
  z-index:-2;
  border:1px solid rgba(255,255,255,.27);
  border-radius:50%;
}
.contact-v2-halo::before,.contact-v2-halo::after {
  content:"";
  position:absolute;
  inset:14%;
  border:1px solid rgba(255,255,255,.16);
  border-radius:inherit;
}
.contact-v2-halo::after { inset:30%; border-color:rgba(255,255,255,.11); }
.contact-v2-halo--a { width:min(72vw,1020px); aspect-ratio:1; right:-24vw; top:-39vw; animation:spin 38s linear infinite; }
.contact-v2-halo--b { width:min(36vw,520px); aspect-ratio:1; left:-12vw; bottom:-18vw; opacity:.7; animation:spinReverse 30s linear infinite; }
.contact-v2-hero-inner {
  position:relative;
  width:min(calc(100% - 96px),1360px);
  height:100%;
  min-height:760px;
  margin:auto;
  padding:150px 0 64px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
}
.contact-v2-kicker {
  position:absolute;
  top:148px;
  left:0;
  display:grid;
  grid-template-columns:auto 92px auto;
  align-items:center;
  gap:18px;
  font-size:10px;
  letter-spacing:.18em;
  color:rgba(255,255,255,.65);
}
.contact-v2-kicker i { display:block; height:1px; background:rgba(255,255,255,.45); }
.contact-v2-title {
  position:relative;
  z-index:2;
  margin:0 0 .18em;
  max-width:1200px;
  font-family:"Yu Mincho",serif;
  font-size:clamp(92px,13.3vw,202px);
  font-weight:500;
  line-height:.82;
  letter-spacing:-.085em;
}
.contact-v2-title::after {
  content:"";
  position:absolute;
  width:13px;
  height:13px;
  right:-26px;
  top:.1em;
  border-radius:50%;
  background:var(--green-light);
  box-shadow:0 0 32px rgba(191,241,215,.9);
}
.contact-v2-rainbow {
  position:absolute;
  z-index:-1;
  right:-.02em;
  bottom:-.08em;
  font-family:Georgia,"Times New Roman",serif;
  font-size:clamp(145px,27vw,420px);
  font-style:italic;
  line-height:.72;
  letter-spacing:-.095em;
  color:transparent;
  -webkit-text-stroke:1px rgba(255,255,255,.16);
  white-space:nowrap;
  user-select:none;
}
.contact-v2-scroll {
  position:absolute;
  right:0;
  bottom:66px;
  width:112px;
  height:112px;
  border:1px solid rgba(255,255,255,.44);
  border-radius:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:9px;
  font-size:9px;
  letter-spacing:.13em;
  background:rgba(255,255,255,.04);
  backdrop-filter:blur(8px);
  transition:background .35s var(--ease),color .35s var(--ease),transform .35s var(--ease);
}
.contact-v2-scroll i { font-style:normal; font-size:17px; }
.contact-v2-scroll:hover { background:#fff; color:var(--green-deep); transform:translateY(5px); }

.contact-v2-stage {
  display:grid;
  grid-template-columns:minmax(330px,36vw) 1fr;
  min-height:940px;
  background:var(--paper-2);
  border-bottom:1px solid var(--line);
}
.contact-v2-side {
  position:relative;
  overflow:hidden;
  min-height:100%;
  padding:82px clamp(34px,4vw,72px) 64px;
  color:#fff;
  background:#07110c;
  display:flex;
  flex-direction:column;
  isolation:isolate;
}
.contact-v2-side::before {
  content:"";
  position:absolute;
  z-index:-2;
  width:540px;
  height:540px;
  left:-265px;
  bottom:-190px;
  border-radius:50%;
  background:var(--green);
  filter:blur(0);
  opacity:.95;
}
.contact-v2-side::after {
  content:"";
  position:absolute;
  z-index:-1;
  inset:0;
  background:linear-gradient(145deg,transparent 40%,rgba(24,168,107,.12));
}
.contact-v2-side-top { display:flex; align-items:flex-start; justify-content:space-between; gap:30px; }
.contact-v2-side-no {
  font-family:Georgia,serif;
  font-size:clamp(58px,6vw,92px);
  line-height:.8;
  letter-spacing:-.06em;
  color:var(--green-light);
}
.contact-v2-mark { position:relative; width:82px; height:62px; opacity:.9; }
.contact-v2-mark i { position:absolute; left:0; bottom:0; border:1px solid var(--green); border-bottom:0; border-radius:50% 50% 0 0/100% 100% 0 0; }
.contact-v2-mark i:nth-child(1) { width:82px;height:59px; }
.contact-v2-mark i:nth-child(2) { width:62px;height:43px;left:10px; }
.contact-v2-mark i:nth-child(3) { width:42px;height:27px;left:20px; }
.contact-v2-side h2 {
  margin:auto 0 44px;
  font-family:"Yu Mincho",serif;
  font-size:clamp(48px,5.4vw,82px);
  font-weight:500;
  letter-spacing:-.07em;
  line-height:.95;
}
.contact-v2-side-info {
  padding-top:24px;
  border-top:1px solid rgba(255,255,255,.18);
  color:rgba(255,255,255,.55);
  font-size:10px;
  line-height:2;
}
.contact-v2-side-info p { margin:0; }
.contact-v2-side-word {
  position:absolute;
  z-index:-1;
  right:-.12em;
  bottom:-.07em;
  font-family:Georgia,serif;
  font-style:italic;
  font-size:clamp(100px,16vw,250px);
  line-height:.7;
  letter-spacing:-.09em;
  color:transparent;
  -webkit-text-stroke:1px rgba(255,255,255,.10);
  white-space:nowrap;
}

.contact-v2-form-wrap {
  position:relative;
  padding:105px clamp(46px,7vw,120px) 100px;
  background:
    linear-gradient(rgba(7,17,12,.04) 1px,transparent 1px),
    var(--paper-2);
  background-size:100% 108px;
}
.contact-v2-form-wrap::before {
  content:"";
  position:absolute;
  width:1px;
  top:0;
  bottom:0;
  left:clamp(46px,7vw,120px);
  background:rgba(7,17,12,.06);
}
.contact-v2-form.contact-form { width:100%; max-width:920px; margin:0 auto; }
.contact-v2-form.contact-form label {
  position:relative;
  display:grid;
  grid-template-columns:54px minmax(145px,190px) 1fr;
  gap:18px;
  align-items:start;
  padding:36px 0 34px;
  border:0;
  border-top:1px solid rgba(7,17,12,.16);
}
.contact-v2-form.contact-form label:last-of-type { border-bottom:1px solid rgba(7,17,12,.16); }
.contact-v2-field-no {
  padding-top:17px;
  font-family:Georgia,serif;
  font-size:12px;
  font-style:italic;
  color:var(--green-deep);
}
.contact-v2-label {
  padding-top:15px !important;
  font-size:11px !important;
  letter-spacing:.12em !important;
  color:rgba(7,17,12,.58) !important;
}
.contact-v2-form.contact-form input,
.contact-v2-form.contact-form textarea {
  position:relative;
  z-index:2;
  min-width:0;
  width:100%;
  margin:0;
  padding:9px 0 10px;
  border:0;
  border-radius:0;
  outline:0;
  background:transparent;
  color:var(--ink);
  font-family:"Yu Mincho",serif;
  font-size:clamp(22px,2.1vw,31px);
  line-height:1.65;
  resize:vertical;
  box-shadow:none;
}
.contact-v2-form.contact-form textarea { min-height:215px; }
.contact-v2-field > i {
  position:absolute;
  z-index:1;
  left:calc(54px + 18px + min(190px, 18vw) + 18px);
  right:0;
  bottom:33px;
  height:1px;
  background:rgba(7,17,12,.09);
  transform-origin:left;
  transition:background .3s ease,transform .5s var(--ease);
}
.contact-v2-field--message > i { bottom:32px; }
.contact-v2-field:focus-within > i { background:var(--green); transform:scaleX(1.03); }
.contact-v2-field:focus-within .contact-v2-field-no { color:var(--green); }

.contact-v2-submit {
  position:relative;
  isolation:isolate;
  overflow:hidden;
  width:100%;
  min-height:112px;
  margin-top:58px !important;
  padding:0 36px !important;
  border:1px solid var(--ink) !important;
  border-radius:0 !important;
  background:transparent !important;
  color:var(--ink) !important;
  display:flex !important;
  flex-direction:row !important;
  justify-content:space-between !important;
  align-items:center !important;
  cursor:pointer;
  transition:color .45s var(--ease),border-color .45s var(--ease),transform .35s var(--ease) !important;
}
.contact-v2-submit span { position:relative; z-index:2; font-family:"Yu Mincho",serif; font-size:clamp(24px,2.5vw,38px) !important; letter-spacing:-.04em !important; }
.contact-v2-submit i { position:relative; z-index:2; font-style:normal; font-size:30px !important; transition:transform .4s var(--ease); }
.contact-v2-submit b {
  position:absolute;
  z-index:1;
  width:120%;
  aspect-ratio:1;
  right:-128%;
  top:50%;
  transform:translateY(-50%);
  border-radius:50%;
  background:var(--green);
  transition:right .72s var(--ease);
}
.contact-v2-submit:hover { color:#fff !important; border-color:var(--green) !important; transform:none !important; }
.contact-v2-submit:hover b { right:-10%; }
.contact-v2-submit:hover i { transform:translate(7px,-7px); }
.contact-v2-next { background:var(--green-deep); color:#fff; }
.contact-v2-next a { border-color:rgba(255,255,255,.14); }
.contact-v2-next a:hover { background:var(--green); }

@media (max-width: 980px) {
  .contact-v2-stage { grid-template-columns:1fr; }
  .contact-v2-side { min-height:520px; padding:64px 44px 46px; }
  .contact-v2-side h2 { margin:110px 0 42px; }
  .contact-v2-side::before { width:460px;height:460px;left:auto;right:-235px;bottom:-210px; }
  .contact-v2-side-word { right:-.04em; }
  .contact-v2-form-wrap { padding:80px 44px 85px; }
  .contact-v2-form-wrap::before { left:44px; }
}

@media (max-width: 860px) {
  .contact-page-v2 .contact-header:not(.is-scrolled) .global-nav {
    background:
      radial-gradient(circle at 88% 14%, rgba(255,255,255,.09) 0 6%, transparent 26%),
      radial-gradient(circle at 6% 88%, rgba(24,168,107,.34), transparent 34%),
      linear-gradient(145deg, #06271c 0%, #0b4933 58%, #0e6a49 100%);
  }
  .contact-v2-hero { height:82svh; min-height:620px; }
  .contact-v2-hero-inner { width:calc(100% - 44px); min-height:620px; padding:122px 0 44px; }
  .contact-v2-kicker { top:122px; grid-template-columns:auto 54px auto; }
  .contact-v2-title { font-size:clamp(72px,18vw,130px); }
  .contact-v2-title::after { width:9px;height:9px;right:-18px; }
  .contact-v2-rainbow { font-size:36vw; right:-7vw; bottom:-.01em; }
  .contact-v2-scroll { width:92px;height:92px;bottom:42px; }
  .contact-v2-halo--a { width:120vw; right:-67vw; top:-46vw; }
  .contact-v2-halo--b { width:75vw; left:-42vw; bottom:-30vw; }
  .contact-v2-form.contact-form label { grid-template-columns:42px 150px 1fr; gap:14px; }
  .contact-v2-field > i { left:220px; }
}

@media (max-width: 620px) {
  .contact-v2-hero { min-height:560px; height:76svh; }
  .contact-v2-hero-inner { min-height:560px; }
  .contact-v2-kicker { font-size:8px; gap:11px; }
  .contact-v2-title { margin-bottom:1.15em; font-size:17vw; }
  .contact-v2-title::after { display:none; }
  .contact-v2-scroll { right:auto;left:0;bottom:30px;width:auto;height:auto;border:0;border-radius:0;display:flex;flex-direction:row;gap:13px;background:transparent;backdrop-filter:none; }
  .contact-v2-scroll:hover { background:transparent;color:#fff;transform:translateY(3px); }
  .contact-v2-side { min-height:460px; padding:50px 22px 38px; }
  .contact-v2-side h2 { margin:92px 0 35px; font-size:52px; }
  .contact-v2-side-no { font-size:58px; }
  .contact-v2-mark { transform:scale(.76); transform-origin:right top; }
  .contact-v2-form-wrap { padding:64px 22px 72px; background-size:100% 92px; }
  .contact-v2-form-wrap::before { left:22px; }
  .contact-v2-form.contact-form label { grid-template-columns:38px 1fr; gap:6px 12px; padding:28px 0; }
  .contact-v2-field-no { grid-column:1;grid-row:1; padding-top:2px; }
  .contact-v2-label { grid-column:2;grid-row:1; padding-top:0 !important; }
  .contact-v2-form.contact-form input,.contact-v2-form.contact-form textarea { grid-column:1 / -1;grid-row:2; font-size:23px; padding:12px 0; }
  .contact-v2-form.contact-form textarea { min-height:170px; }
  .contact-v2-field > i { left:0;bottom:27px; }
  .contact-v2-submit { min-height:92px;margin-top:42px !important;padding:0 24px !important; }
  .contact-v2-submit span { font-size:26px !important; }
  .contact-v2-submit i { font-size:24px !important; }
}

/* Contact v3 — cleaner, larger and intentionally line-light */
.contact-v3-stage {
  position: relative;
  padding: clamp(80px, 9vw, 140px) clamp(24px, 5vw, 76px);
  background: #f4f6f1;
}
.contact-v3-shell {
  width: min(100%, 1360px);
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(320px, .82fr) minmax(0, 1.55fr);
  min-height: 820px;
  box-shadow: 0 34px 90px rgba(7, 17, 12, .09);
}
.contact-v3-side {
  position: relative;
  overflow: hidden;
  padding: clamp(44px, 4.8vw, 76px);
  background: #07110c;
  color: #fff;
  display: flex;
  flex-direction: column;
  isolation: isolate;
}
.contact-v3-side::before {
  content: "";
  position: absolute;
  z-index: -2;
  width: 520px;
  height: 520px;
  left: -285px;
  bottom: -230px;
  border-radius: 50%;
  background: var(--green);
}
.contact-v3-side::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  background: radial-gradient(circle at 110% -10%, rgba(24,168,107,.22), transparent 35%);
}
.contact-v3-side-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 30px;
}
.contact-v3-side-no {
  font-family: Georgia, serif;
  font-size: clamp(64px, 6vw, 96px);
  line-height: .8;
  letter-spacing: -.06em;
  color: var(--green-light);
}
.contact-v3-mark {
  position: relative;
  width: 88px;
  height: 66px;
}
.contact-v3-mark i {
  position: absolute;
  left: 0;
  bottom: 0;
  border: 1px solid var(--green);
  border-bottom: 0;
  border-radius: 50% 50% 0 0 / 100% 100% 0 0;
}
.contact-v3-mark i:nth-child(1) { width: 88px; height: 63px; }
.contact-v3-mark i:nth-child(2) { width: 66px; height: 46px; left: 11px; }
.contact-v3-mark i:nth-child(3) { width: 44px; height: 29px; left: 22px; }
.contact-v3-side h2 {
  margin: auto 0 52px;
  font-family: "Yu Mincho", serif;
  font-size: clamp(58px, 5.8vw, 88px);
  font-weight: 500;
  line-height: .98;
  letter-spacing: -.075em;
}
.contact-v3-side-info {
  color: rgba(255,255,255,.70);
  font-size: 13px;
  line-height: 1.9;
}
.contact-v3-side-info p { margin: 0 0 5px; }
.contact-v3-side-word {
  position: absolute;
  z-index: -1;
  right: -.08em;
  bottom: -.03em;
  font-family: Georgia, serif;
  font-style: italic;
  font-size: clamp(112px, 15vw, 230px);
  line-height: .7;
  letter-spacing: -.09em;
  color: transparent;
  -webkit-text-stroke: 1px rgba(255,255,255,.09);
  white-space: nowrap;
}
.contact-v3-form-wrap {
  padding: clamp(58px, 7vw, 108px) clamp(44px, 7vw, 108px);
  background: #fff;
  display: flex;
  align-items: center;
}
.contact-v3-form {
  width: 100%;
  margin: 0;
}
.contact-v3-field {
  display: block;
  margin: 0 0 30px;
}
.contact-v3-label {
  display: block;
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 500;
  letter-spacing: .08em;
  color: rgba(7,17,12,.72);
}
.contact-v3-form input,
.contact-v3-form textarea {
  display: block;
  width: 100%;
  margin: 0;
  padding: 20px 22px;
  border: 1px solid transparent;
  border-radius: 0;
  outline: 0;
  background: #f3f6f1;
  color: var(--ink);
  font-family: "Yu Mincho", serif;
  font-size: clamp(20px, 1.8vw, 27px);
  line-height: 1.55;
  box-shadow: none;
  transition: background .25s ease, border-color .25s ease, box-shadow .25s ease;
}
.contact-v3-form input { min-height: 72px; }
.contact-v3-form textarea {
  min-height: 250px;
  resize: vertical;
}
.contact-v3-form input:focus,
.contact-v3-form textarea:focus {
  background: #fff;
  border-color: var(--green);
  box-shadow: 0 0 0 4px rgba(24,168,107,.08);
}
.contact-v3-field--message { margin-bottom: 42px; }
.contact-v3-submit {
  width: 100%;
  min-width: 0;
  height: auto;
  min-height: 104px;
  margin: 0;
  padding: 0 34px;
  border: 0;
  border-radius: 0;
  background: var(--green-deep);
  color: #fff;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  cursor: pointer;
  overflow: hidden;
  white-space: nowrap;
  transition: background .35s var(--ease), transform .35s var(--ease);
}
.contact-v3-submit span {
  font-family: "Yu Mincho", serif;
  font-size: clamp(26px, 2.5vw, 38px);
  line-height: 1;
  letter-spacing: -.035em;
}
.contact-v3-submit i {
  flex: 0 0 auto;
  font-style: normal;
  font-size: 30px;
  transition: transform .35s var(--ease);
}
.contact-v3-submit:hover {
  background: var(--green);
  transform: translateY(-2px);
}
.contact-v3-submit:hover i { transform: translate(6px,-6px); }

@media (max-width: 980px) {
  .contact-v3-stage { padding: 72px 28px; }
  .contact-v3-shell { grid-template-columns: 1fr; min-height: 0; }
  .contact-v3-side { min-height: 470px; padding: 54px 44px 44px; }
  .contact-v3-side h2 { margin: 110px 0 42px; }
  .contact-v3-form-wrap { padding: 72px 44px 78px; }
}

@media (max-width: 620px) {
  .contact-v3-stage { padding: 46px 16px 58px; }
  .contact-v3-side { min-height: 410px; padding: 42px 24px 34px; }
  .contact-v3-side h2 { margin: 84px 0 34px; font-size: 54px; }
  .contact-v3-side-no { font-size: 58px; }
  .contact-v3-mark { transform: scale(.76); transform-origin: right top; }
  .contact-v3-side-info { font-size: 12px; }
  .contact-v3-form-wrap { padding: 48px 22px 56px; }
  .contact-v3-field { margin-bottom: 24px; }
  .contact-v3-label { margin-bottom: 10px; font-size: 14px; }
  .contact-v3-form input,
  .contact-v3-form textarea { padding: 17px 16px; font-size: 21px; }
  .contact-v3-form input { min-height: 64px; }
  .contact-v3-form textarea { min-height: 190px; }
  .contact-v3-field--message { margin-bottom: 30px; }
  .contact-v3-submit { min-height: 86px; padding: 0 22px; }
  .contact-v3-submit span { font-size: 27px; }
  .contact-v3-submit i { font-size: 24px; }
}

/* =========================================================
   Product v2 — editorial narrative, not a numbered list
   ========================================================= */
.product-page-v2 { background:#eef1ec; }

.product-v2-hero {
  position:relative;
  min-height:94svh;
  overflow:hidden;
  background:#07110c;
  color:#fff;
  isolation:isolate;
}
.product-v2-hero::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:-6;
  background:
    radial-gradient(circle at 76% 38%, rgba(24,168,107,.22), transparent 28%),
    linear-gradient(115deg,#07110c 0 58%,#0c2a1d 100%);
}
.product-v2-hero-field {
  position:absolute;
  z-index:-5;
  inset:0 0 0 56%;
  background:var(--green);
  clip-path:polygon(18% 0,100% 0,100% 100%,0 100%);
  opacity:.93;
}
.product-v2-hero-field::before {
  content:"";
  position:absolute;
  inset:0;
  background:
    linear-gradient(115deg,rgba(255,255,255,.10) 1px,transparent 1px),
    linear-gradient(25deg,rgba(255,255,255,.07) 1px,transparent 1px);
  background-size:78px 78px;
  mask-image:linear-gradient(to left,#000,transparent 92%);
}
.product-v2-hero-inner {
  width:min(calc(100% - 96px),1360px);
  min-height:94svh;
  margin:auto;
  padding:150px 0 84px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
}
.product-v2-title {
  position:relative;
  z-index:2;
  max-width:960px;
  margin:0;
  font-family:"Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:clamp(76px,10.6vw,162px);
  font-weight:500;
  line-height:.88;
  letter-spacing:-.085em;
}
.product-v2-orbit {
  position:absolute;
  z-index:-2;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.36);
}
.product-v2-orbit i { position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.18); }
.product-v2-orbit--outer { width:min(62vw,900px);aspect-ratio:1;right:-18vw;top:-12vw;animation:spin 44s linear infinite; }
.product-v2-orbit--outer i:nth-child(1){inset:13%}.product-v2-orbit--outer i:nth-child(2){inset:29%}.product-v2-orbit--outer i:nth-child(3){inset:46%;background:rgba(7,17,12,.06)}
.product-v2-orbit--small { width:260px;aspect-ratio:1;left:47%;bottom:-130px;animation:spinReverse 32s linear infinite; }
.product-v2-orbit--small i:nth-child(1){inset:20%}.product-v2-orbit--small i:nth-child(2){inset:40%;background:rgba(255,255,255,.05)}
.product-v2-watermark {
  position:absolute;
  z-index:-1;
  right:-.04em;
  bottom:-.12em;
  margin:0;
  font-family:Georgia,serif;
  font-size:clamp(150px,23vw,360px);
  line-height:.72;
  letter-spacing:-.09em;
  color:transparent;
  -webkit-text-stroke:1px rgba(255,255,255,.16);
  white-space:nowrap;
}
.product-page-v2 .sub-index { color:var(--green-light); }

.insurance-origin {
  position:relative;
  overflow:hidden;
  padding:clamp(110px,12vw,190px) 0;
  background:#f3f5f0;
}
.insurance-origin-shell {
  width:min(calc(100% - 96px),1260px);
  margin:auto;
  display:grid;
  grid-template-columns:minmax(280px,.74fr) minmax(0,1.35fr);
  gap:clamp(70px,10vw,150px);
  align-items:center;
}
.insurance-origin-art {
  position:relative;
  min-height:520px;
  display:flex;
  align-items:center;
  justify-content:center;
}
.insurance-origin-art > span {
  position:absolute;
  width:12px;
  height:12px;
  right:2%;
  top:18%;
  border-radius:50%;
  background:var(--green);
  box-shadow:0 0 0 16px rgba(24,168,107,.08),0 0 40px rgba(24,168,107,.25);
}
.insurance-origin-mark { position:relative;width:min(32vw,390px);aspect-ratio:1; }
.insurance-origin-mark i {
  position:absolute;
  left:0;
  right:0;
  margin:auto;
  bottom:0;
  border:1px solid var(--green);
  border-bottom:0;
  border-radius:50% 50% 0 0 / 100% 100% 0 0;
}
.insurance-origin-mark i:nth-child(1){width:100%;height:72%}
.insurance-origin-mark i:nth-child(2){width:74%;height:54%}
.insurance-origin-mark i:nth-child(3){width:48%;height:35%;background:rgba(24,168,107,.035)}
.insurance-origin-copy { position:relative; }
.insurance-origin-copy::before {
  content:"";
  position:absolute;
  width:1px;
  height:100%;
  left:-54px;
  top:0;
  background:linear-gradient(to bottom,transparent,var(--green) 20%,var(--green) 80%,transparent);
  opacity:.45;
}
.insurance-origin-lead {
  margin:0;
  font-family:"Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:clamp(34px,4.2vw,60px);
  line-height:1.55;
  letter-spacing:-.045em;
}
.insurance-origin-body {
  max-width:820px;
  margin:clamp(58px,7vw,90px) 0 0;
  font-family:"Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:clamp(21px,2vw,30px);
  line-height:2;
  letter-spacing:-.02em;
  color:rgba(7,17,12,.74);
}

.insurance-concept {
  position:relative;
  min-height:860px;
  overflow:hidden;
  background:#07110c;
  color:#fff;
  display:grid;
  place-items:center;
  isolation:isolate;
}
.insurance-concept::before {
  content:"";
  position:absolute;
  z-index:-4;
  inset:0 0 0 67%;
  background:var(--green);
}
.insurance-concept::after {
  content:"";
  position:absolute;
  z-index:-3;
  width:38vw;
  height:140%;
  left:54%;
  top:-20%;
  background:#0b2a1c;
  transform:skewX(-14deg);
}
.insurance-concept-shell {
  position:relative;
  z-index:2;
  width:min(calc(100% - 96px),1220px);
  margin:auto;
  display:grid;
  grid-template-columns:140px minmax(0,1fr);
  gap:clamp(40px,6vw,90px);
  align-items:start;
}
.insurance-concept-rule { position:relative;height:100%;min-height:410px; }
.insurance-concept-rule::before {
  content:"";
  position:absolute;
  left:18px;
  top:0;
  width:1px;
  height:100%;
  background:rgba(255,255,255,.2);
}
.insurance-concept-rule span {
  position:absolute;
  left:12px;
  top:12%;
  width:13px;
  height:13px;
  border-radius:50%;
  background:var(--green);
  box-shadow:0 0 28px rgba(24,168,107,.85);
}
.insurance-concept-copy {
  max-width:970px;
  margin:0;
  font-family:"Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:clamp(38px,5.1vw,72px);
  line-height:1.55;
  letter-spacing:-.055em;
}
.insurance-concept-ring {
  position:absolute;
  z-index:-1;
  width:min(68vw,980px);
  aspect-ratio:1;
  right:-28vw;
  top:50%;
  transform:translateY(-50%);
  border:1px solid rgba(255,255,255,.22);
  border-radius:50%;
}
.insurance-concept-ring i { position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.12); }
.insurance-concept-ring i:nth-child(1){inset:14%}.insurance-concept-ring i:nth-child(2){inset:31%}.insurance-concept-ring i:nth-child(3){inset:48%;background:rgba(255,255,255,.04)}
.insurance-concept-word {
  position:absolute;
  z-index:-2;
  left:-.05em;
  bottom:-.08em;
  margin:0;
  font-family:Georgia,serif;
  font-style:italic;
  font-size:clamp(160px,24vw,370px);
  line-height:.7;
  letter-spacing:-.09em;
  color:transparent;
  -webkit-text-stroke:1px rgba(255,255,255,.075);
  white-space:nowrap;
}

.insurance-perspective {
  position:relative;
  overflow:hidden;
  padding:clamp(120px,13vw,200px) 0;
  background:#dfe5dc;
}
.insurance-perspective::before {
  content:"";
  position:absolute;
  width:520px;
  height:520px;
  left:-270px;
  top:50%;
  transform:translateY(-50%);
  border:1px solid rgba(24,168,107,.28);
  border-radius:50%;
  box-shadow:0 0 0 75px rgba(24,168,107,.035),0 0 0 150px rgba(24,168,107,.025);
}
.insurance-perspective-shell {
  position:relative;
  width:min(calc(100% - 96px),1280px);
  margin:auto;
  min-height:760px;
}
.insurance-perspective-card {
  position:absolute;
  overflow:hidden;
  width:min(66%,790px);
  min-height:430px;
  padding:clamp(48px,6vw,86px);
  display:flex;
  align-items:flex-end;
  box-shadow:0 34px 90px rgba(7,17,12,.08);
}
.insurance-perspective-card p {
  position:relative;
  z-index:2;
  max-width:680px;
  margin:0;
  font-family:"Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:clamp(28px,3.3vw,47px);
  line-height:1.7;
  letter-spacing:-.04em;
}
.insurance-perspective-card--light { left:0;top:0;background:#f7f8f4;color:var(--ink); }
.insurance-perspective-card--green { right:0;bottom:0;background:var(--green-deep);color:#fff;min-height:390px; }
.insurance-card-arc {
  position:absolute;
  width:330px;
  height:240px;
  right:-70px;
  top:-30px;
}
.insurance-card-arc i { position:absolute;right:0;top:0;border:1px solid rgba(24,168,107,.42);border-bottom:0;border-radius:50% 50% 0 0 / 100% 100% 0 0;transform:rotate(-28deg);transform-origin:center; }
.insurance-card-arc i:nth-child(1){width:330px;height:232px}.insurance-card-arc i:nth-child(2){width:245px;height:173px;right:42px;top:30px}.insurance-card-arc i:nth-child(3){width:160px;height:113px;right:85px;top:60px;background:rgba(24,168,107,.035)}
.insurance-card-dot {
  position:absolute;
  right:58px;
  top:52px;
  width:15px;
  height:15px;
  border-radius:50%;
  background:var(--green-light);
  box-shadow:0 0 0 18px rgba(191,241,215,.08),0 0 35px rgba(191,241,215,.25);
}
.insurance-perspective-card--green::before {
  content:"";
  position:absolute;
  width:420px;
  height:420px;
  right:-210px;
  bottom:-250px;
  border:1px solid rgba(255,255,255,.22);
  border-radius:50%;
  box-shadow:0 0 0 80px rgba(255,255,255,.025),0 0 0 160px rgba(255,255,255,.015);
}

.insurance-closing {
  position:relative;
  overflow:hidden;
  min-height:860px;
  background:var(--green);
  color:#fff;
  display:grid;
  place-items:center;
  isolation:isolate;
}
.insurance-closing::before {
  content:"";
  position:absolute;
  z-index:-4;
  inset:0;
  background:linear-gradient(115deg,rgba(7,17,12,.25),transparent 48%);
}
.insurance-closing-lines {
  position:absolute;
  z-index:-3;
  inset:0;
  opacity:.18;
  background-image:linear-gradient(rgba(255,255,255,.2) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.2) 1px,transparent 1px);
  background-size:110px 110px;
  mask-image:radial-gradient(circle at 50% 50%,#000,transparent 76%);
}
.insurance-closing-shell {
  width:min(calc(100% - 96px),1160px);
  margin:auto;
  padding:140px 0;
}
.insurance-closing-copy {
  max-width:1050px;
  margin:0;
  font-family:"Yu Mincho","Hiragino Mincho ProN",serif;
  font-size:clamp(34px,4.6vw,64px);
  line-height:1.7;
  letter-spacing:-.05em;
}
.insurance-closing-brand {
  margin:92px 0 0;
  font-family:Georgia,serif;
  font-style:italic;
  font-size:clamp(58px,8vw,118px);
  line-height:.8;
  letter-spacing:-.07em;
  color:transparent;
  -webkit-text-stroke:1px rgba(255,255,255,.52);
}
.insurance-closing-orbit {
  position:absolute;
  z-index:-2;
  width:min(72vw,1050px);
  aspect-ratio:1;
  right:-34vw;
  top:50%;
  transform:translateY(-50%);
  border:1px solid rgba(255,255,255,.32);
  border-radius:50%;
}
.insurance-closing-orbit i {position:absolute;border-radius:50%;border:1px solid rgba(255,255,255,.19)}
.insurance-closing-orbit i:nth-child(1){inset:18%}.insurance-closing-orbit i:nth-child(2){inset:38%;background:rgba(255,255,255,.035)}

@media (max-width: 980px) {
  .product-v2-hero-inner { width:calc(100% - 52px); }
  .product-v2-hero-field { inset:0 0 0 62%; }
  .insurance-origin-shell { width:calc(100% - 52px);grid-template-columns:1fr;gap:58px; }
  .insurance-origin-art { min-height:340px;justify-content:flex-start; }
  .insurance-origin-mark { width:300px; }
  .insurance-origin-copy::before { display:none; }
  .insurance-concept { min-height:760px; }
  .insurance-concept-shell { width:calc(100% - 52px);grid-template-columns:70px 1fr;gap:32px; }
  .insurance-perspective-shell { width:calc(100% - 52px);min-height:0;display:grid;gap:28px; }
  .insurance-perspective-card { position:relative;width:100%;min-height:0;padding:62px 54px; }
  .insurance-perspective-card--green { right:auto;bottom:auto; }
  .insurance-closing-shell { width:calc(100% - 52px); }
}

@media (max-width: 680px) {
  .product-v2-hero { min-height:78svh; }
  .product-v2-hero-inner { width:calc(100% - 44px);min-height:78svh;padding:122px 0 50px; }
  .product-v2-title { font-size:clamp(60px,17vw,112px); }
  .product-v2-hero-field { inset:0 0 0 74%;clip-path:polygon(24% 0,100% 0,100% 100%,0 100%); }
  .product-v2-orbit--outer { width:115vw;right:-75vw;top:-25vw; }
  .product-v2-orbit--small { left:-100px;bottom:-160px; }
  .product-v2-watermark { font-size:38vw;right:-.2em;bottom:-.02em; }

  .insurance-origin { padding:88px 0 100px; }
  .insurance-origin-shell { width:calc(100% - 44px);gap:42px; }
  .insurance-origin-art { min-height:235px; }
  .insurance-origin-mark { width:220px; }
  .insurance-origin-art > span { width:9px;height:9px;right:8%; }
  .insurance-origin-lead { font-size:32px;line-height:1.6; }
  .insurance-origin-body { margin-top:40px;font-size:20px;line-height:1.9; }

  .insurance-concept { min-height:700px; }
  .insurance-concept::before { inset:0 0 0 82%; }
  .insurance-concept::after { left:69%;width:45vw; }
  .insurance-concept-shell { width:calc(100% - 44px);grid-template-columns:28px 1fr;gap:22px; }
  .insurance-concept-rule { min-height:350px; }
  .insurance-concept-rule::before { left:7px; }
  .insurance-concept-rule span { left:2px;width:11px;height:11px; }
  .insurance-concept-copy { font-size:32px;line-height:1.6; }
  .insurance-concept-ring { width:120vw;right:-90vw; }
  .insurance-concept-word { font-size:40vw; }

  .insurance-perspective { padding:92px 0; }
  .insurance-perspective-shell { width:calc(100% - 32px);gap:18px; }
  .insurance-perspective-card { padding:46px 28px; }
  .insurance-perspective-card p { font-size:28px;line-height:1.7; }
  .insurance-perspective-card--light { min-height:390px; }
  .insurance-perspective-card--green { min-height:340px; }
  .insurance-card-arc { transform:scale(.72);transform-origin:right top; }
  .insurance-card-dot { right:30px;top:30px; }

  .insurance-closing { min-height:760px; }
  .insurance-closing-shell { width:calc(100% - 44px);padding:100px 0; }
  .insurance-closing-copy { font-size:31px;line-height:1.75; }
  .insurance-closing-brand { margin-top:62px;font-size:74px; }
  .insurance-closing-lines { background-size:78px 78px; }
  .insurance-closing-orbit { width:135vw;right:-105vw; }
}

/* =========================================================
   V7 — Rainbow mark geometry fix
   Keep every Rainbow symbol as a true 2:1 semicircle.
   ========================================================= */
.logo-symbol,
.company-mark,
.contact-v2-mark,
.contact-v3-mark,
.insurance-origin-mark {
  position: relative;
  height: auto !important;
  aspect-ratio: 2 / 1 !important;
}

.logo-symbol i,
.company-mark i,
.contact-v2-mark i,
.contact-v3-mark i,
.insurance-origin-mark i {
  position: absolute;
  left: 50% !important;
  right: auto !important;
  bottom: 0 !important;
  top: auto !important;
  height: auto !important;
  aspect-ratio: 2 / 1 !important;
  transform: translateX(-50%);
  box-sizing: border-box;
  border-radius: 999px 999px 0 0 !important;
}

.logo-symbol { width: 32px; }
.logo-symbol i:nth-child(1) { width: 100%; }
.logo-symbol i:nth-child(2) { width: 72%; }
.logo-symbol i:nth-child(3) { width: 44%; }

.company-mark { width: 168px; margin-top: 58px; }
.company-mark i:nth-child(1) { width: 100%; }
.company-mark i:nth-child(2) { width: 74%; }
.company-mark i:nth-child(3) { width: 48%; }

.contact-v2-mark { width: 82px; }
.contact-v2-mark i:nth-child(1) { width: 100%; }
.contact-v2-mark i:nth-child(2) { width: 74%; }
.contact-v2-mark i:nth-child(3) { width: 48%; }

.contact-v3-mark { width: 88px; }
.contact-v3-mark i:nth-child(1) { width: 100%; }
.contact-v3-mark i:nth-child(2) { width: 74%; }
.contact-v3-mark i:nth-child(3) { width: 48%; }

.insurance-origin-mark { width: min(32vw, 390px); }
.insurance-origin-mark i:nth-child(1) { width: 100%; }
.insurance-origin-mark i:nth-child(2) { width: 74%; }
.insurance-origin-mark i:nth-child(3) { width: 48%; }

/* Decorative Rainbow arch used inside insurance cards. */
.insurance-card-arc i:nth-child(1) { width: 330px; height: 165px; }
.insurance-card-arc i:nth-child(2) { width: 245px; height: 122.5px; right: 42px; top: 30px; }
.insurance-card-arc i:nth-child(3) { width: 160px; height: 80px; right: 85px; top: 60px; }

@media (max-width: 760px) {
  .company-mark { width: 96px; height: auto !important; margin: 0; }
  .insurance-origin-mark { width: 220px; }
}

/* ------------------------------------------------------------
   V9: Main visual orbit dot — explicit mobile-safe animation
------------------------------------------------------------ */
.hero-ring .ring-one::before,
.hero-ring .ring-one::after {
  display: none;
}
.hero-ring .ring-tracker {
  position: absolute;
  inset: 0;
  display: block;
  border-radius: 50%;
  transform-origin: 50% 50%;
  animation: rainbowDotOrbit 9s linear infinite;
  will-change: transform;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  pointer-events: none;
}
.hero-ring .ring-tracker i {
  position: absolute;
  left: 50%;
  top: -5px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 0 8px rgba(24,168,107,.10), 0 0 28px rgba(24,168,107,.72);
  transform: translateX(-50%) translateZ(0);
}
@keyframes rainbowDotOrbit {
  from { transform: translateZ(0) rotate(0deg); }
  to   { transform: translateZ(0) rotate(360deg); }
}
@media (max-width: 860px) {
  .hero-ring .ring-tracker { animation-duration: 7.5s; }
  .hero-ring .ring-tracker i {
    width: 11px;
    height: 11px;
    top: -5.5px;
    box-shadow: 0 0 0 9px rgba(24,168,107,.12), 0 0 26px rgba(24,168,107,.8);
  }
}
/* Keep the hero's identity motion active even when the device requests reduced motion. */
@media (prefers-reduced-motion: reduce) {
  .hero-ring .ring-tracker {
    animation: rainbowDotOrbit 12s linear infinite !important;
  }
}

/* =========================================================
   V10 — mobile menu hard fix
   Full-screen menu even inside iOS / LINE in-app browsers.
   ========================================================= */
@media (max-width: 860px) {
  html.menu-open,
  body.menu-open {
    overflow: hidden !important;
    overscroll-behavior: none;
  }

  body.menu-open .site-header {
    position: fixed !important;
    inset: 0 0 auto 0 !important;
    width: 100% !important;
    height: var(--menu-vh, 100dvh) !important;
    min-height: var(--menu-vh, 100vh) !important;
    max-height: none !important;
    overflow: hidden !important;
    background: #07563a !important;
    border: 0 !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    z-index: 10000 !important;
  }

  body.menu-open .header-inner {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 0 !important;
    margin: 0 !important;
  }

  body.menu-open .logo {
    position: absolute !important;
    top: max(20px, env(safe-area-inset-top)) !important;
    left: 22px !important;
    z-index: 10003 !important;
    color: #fff !important;
  }

  body.menu-open .menu-button {
    position: absolute !important;
    top: max(15px, env(safe-area-inset-top)) !important;
    right: 17px !important;
    z-index: 10004 !important;
    color: #fff !important;
  }

  body.menu-open .global-nav,
  .global-nav.is-open {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    min-height: 100% !important;
    max-height: none !important;
    margin: 0 !important;
    padding:
      calc(max(82px, env(safe-area-inset-top) + 72px))
      22px
      calc(22px + env(safe-area-inset-bottom)) !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 0 !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    background:
      radial-gradient(circle at 92% 9%, rgba(255,255,255,.10) 0 4%, transparent 24%),
      radial-gradient(circle at 8% 92%, rgba(24,168,107,.26), transparent 32%),
      linear-gradient(145deg, #063c2b 0%, #075f41 54%, #0b7953 100%) !important;
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
    z-index: 10001 !important;
  }

  body.menu-open .global-nav a,
  body.menu-open .global-nav .nav-contact {
    flex: 0 0 auto !important;
    width: 100% !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: clamp(15px, 2.4vh, 21px) 4px !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(255,255,255,.18) !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #fff !important;
    font-family: "Yu Mincho", "Hiragino Mincho ProN", serif !important;
    font-size: clamp(21px, 6.1vw, 29px) !important;
    font-weight: 400 !important;
    line-height: 1.22 !important;
    letter-spacing: .01em !important;
    white-space: normal !important;
  }

  body.menu-open .global-nav a:first-child {
    border-top: 1px solid rgba(255,255,255,.18) !important;
  }

  body.menu-open .global-nav .nav-contact {
    margin-top: 12px !important;
    padding: 17px 18px !important;
    border: 1px solid rgba(255,255,255,.35) !important;
    background: rgba(3,42,28,.32) !important;
  }

  body.menu-open .global-nav a::after {
    display: none !important;
  }
}
