/* =========================================================
   CoCoSupport — site.css
   Brand: Blue #1E6FD0 / Green #3DB25A / Yellow #F5B71E / Navy #0D2449
========================================================= */
:root{
  --navy:#0D2449; --navy-2:#132F5E; --blue:#1E6FD0; --blue-2:#3A8DF0; --sky:#7CC0FF;
  --green:#3DB25A; --green-2:#6BD37F; --yellow:#F5B71E; --yellow-2:#FFD35C;
  --cream:#FBF8F2; --paper:#F3EFE6; --white:#fff;
  --ink:#101828; --ink-2:#344054; --muted:#667085; --line:rgba(13,36,73,.12);
  --grad: linear-gradient(120deg, var(--blue) 0%, #2a9bb8 45%, var(--green) 75%, #9ccf3a 100%);
  --grad-warm: linear-gradient(120deg, var(--yellow) 0%, #f39a2b 100%);
  --f-en: "Outfit", "Zen Kaku Gothic New", system-ui, sans-serif;
  --f-min: "Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", serif;
  --f-go: "Zen Kaku Gothic New", "Hiragino Sans", "Yu Gothic", "Noto Sans JP", system-ui, sans-serif;
  --ease: cubic-bezier(.16,1,.3,1);
  --ease-2: cubic-bezier(.65,0,.35,1);
  --r-s: 14px; --r-m: 24px; --r-l: 36px; --r-xl: 48px;
  --gutter: clamp(16px, 4vw, 56px);
  --maxw: 1240px;
  --header-h: 84px;
  --shadow: 0 30px 80px -30px rgba(13,36,73,.35);
}

*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
html.lenis, html.lenis body{ height:auto; }
.lenis.lenis-smooth{ scroll-behavior:auto !important; }
.lenis.lenis-stopped{ overflow:hidden; }
body{
  margin:0; background:var(--cream); color:var(--ink);
  font-family:var(--f-go); font-weight:500; font-size:16px; line-height:1.9; letter-spacing:.04em;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
  font-feature-settings:"palt" 1;
}
img,video,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; cursor:pointer; background:none; border:0; padding:0; }
input,textarea,select{ font:inherit; color:inherit; }
p{ margin:0; }
h1,h2,h3,h4{ margin:0; font-weight:700; line-height:1.4; }
b,strong{ font-weight:700; }
::selection{ background:var(--yellow-2); color:var(--navy); }
.wrap{ width:100%; max-width:calc(var(--maxw) + var(--gutter)*2); margin:0 auto; padding:0 var(--gutter); }
.skip{ position:absolute; left:-9999px; }
.skip:focus{ left:16px; top:16px; z-index:10001; background:#fff; padding:10px 16px; border-radius:12px; }
:focus-visible{ outline:3px solid var(--yellow); outline-offset:3px; border-radius:6px; }
section{ position:relative; }
[id]{ scroll-margin-top:90px; }
.hp{ position:absolute !important; left:-9999px !important; opacity:0; }

/* ---------- Eyebrow / headings ---------- */
.eyebrow{
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--f-en); font-weight:500; font-size:13px; letter-spacing:.32em; color:var(--blue);
}
.eyebrow i{ width:34px; height:2px; border-radius:2px; background:var(--grad); display:inline-block; }
.eyebrow--light{ color:rgba(255,255,255,.86); }
.sechead{ margin-bottom:clamp(36px,5vw,64px); }
.sechead__title{
  font-family:var(--f-min); font-weight:700; font-size:clamp(30px,4.4vw,56px);
  line-height:1.35; letter-spacing:.06em; color:var(--navy); margin-top:14px;
}
.sechead--light .sechead__title{ color:#fff; }
.sechead__lead{ margin-top:16px; color:var(--muted); font-size:15px; }

/* split text */
[data-split] .ch, [data-split-lines] .ln > span{ display:inline-block; will-change:transform; }
[data-split-lines] .ln{ display:block; overflow:hidden; padding-bottom:.08em; }
.js [data-split] .ch{ opacity:0; transform:translateY(.6em) rotate(6deg); filter:blur(6px); }
.js [data-split].is-in .ch{ opacity:1; transform:none; filter:none; transition:transform 1s var(--ease), opacity .8s var(--ease), filter .8s var(--ease); transition-delay:calc(var(--i) * 28ms); }
.js [data-split-lines] .ln > span{ transform:translateY(110%); }
.js [data-split-lines].is-in .ln > span{ transform:none; transition:transform 1.2s var(--ease); transition-delay:calc(var(--i) * 110ms); }
.js [data-reveal]{ opacity:0; transform:translateY(34px); }
.js [data-reveal].is-in{ opacity:1; transform:none; transition:opacity 1s var(--ease), transform 1.2s var(--ease); transition-delay:var(--d,0s); }

/* ---------- Buttons ---------- */
.btn{
  --bg:#fff; --fg:var(--navy);
  position:relative; display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:56px; padding:0 30px; border-radius:999px; overflow:hidden; isolation:isolate;
  background:var(--bg); color:var(--fg); font-weight:700; font-size:15px; letter-spacing:.08em; white-space:nowrap;
  transition:transform .5s var(--ease), box-shadow .5s var(--ease), color .4s;
  box-shadow:0 14px 34px -14px rgba(13,36,73,.45);
}
.btn span{ position:relative; z-index:2; display:inline-flex; align-items:center; gap:10px; }
.btn::before{
  content:""; position:absolute; inset:0; z-index:1; border-radius:inherit;
  background:rgba(255,255,255,.22); transform:translateY(101%); transition:transform .6s var(--ease);
}
.btn::after{ /* shine */
  content:""; position:absolute; top:0; bottom:0; left:-60%; width:40%; z-index:1;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent);
  transform:skewX(-20deg); transition:left .9s var(--ease);
}
.btn:hover::before{ transform:none; }
.btn:hover::after{ left:130%; }
.btn:hover{ box-shadow:0 22px 44px -16px rgba(13,36,73,.55); }
.btn:active{ transform:scale(.97); }
.btn--lg{ min-height:64px; padding:0 36px; font-size:16px; }
.btn--full{ width:100%; }
.btn--grad{ --fg:#fff; background:var(--grad); background-size:200% 100%; background-position:0 0; transition:background-position .8s var(--ease), transform .5s var(--ease), box-shadow .5s; }
.btn--grad:hover{ background-position:100% 0; }
.btn--blue{ --fg:#fff; --bg:linear-gradient(135deg,#2f80ed,#1756b5); background:var(--bg); }
.btn--line{ --fg:#fff; background:linear-gradient(135deg,#06C755,#18a94e); }
.btn--yellow{ --fg:#3b2600; background:linear-gradient(135deg,#FFD35C,#F5A623); }
.btn--white{ --bg:#fff; --fg:var(--navy); }
.btn--white::before{ background:rgba(30,111,208,.08); }
.btn--dark{ --fg:#fff; background:var(--navy); }
.btn--glass{ --fg:#fff; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.4); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); box-shadow:none; }
.btn--ghost{ --fg:var(--navy); background:transparent; border:1.5px solid var(--line); box-shadow:none; }
.btn--ghost::before{ background:rgba(13,36,73,.06); }

/* ---------- Curtain (page transition / opening) ---------- */
.curtain{ position:fixed; inset:0; z-index:9000; pointer-events:none; }
.curtain__panel{ position:absolute; inset:0; transform:translateY(0); }
.curtain__panel--1{ background:var(--yellow); }
.curtain__panel--2{ background:var(--green); }
.curtain__panel--3{ background:var(--navy); }
.curtain__logo{ position:absolute; inset:0; display:grid; place-items:center; }
.curtain__logo img{ width:110px; height:auto; filter:drop-shadow(0 20px 40px rgba(0,0,0,.35)); }
.no-js .curtain{ display:none; }
.curtain.is-done{ visibility:hidden; }

/* ---------- Cursor ---------- */
.cursor{ position:fixed; left:0; top:0; z-index:9500; pointer-events:none; display:none; mix-blend-mode:normal; }
.has-cursor .cursor{ display:block; }
.cursor__dot{ position:absolute; width:8px; height:8px; margin:-4px 0 0 -4px; border-radius:50%; background:var(--blue); }
.cursor__ring{
  position:absolute; width:40px; height:40px; margin:-20px 0 0 -20px; border-radius:50%;
  border:1.5px solid rgba(30,111,208,.5); display:grid; place-items:center;
  transition:width .45s var(--ease), height .45s var(--ease), margin .45s var(--ease), background .35s, border-color .35s;
}
.cursor__label{ font-style:normal; font-family:var(--f-go); font-weight:700; font-size:13px; color:#fff; opacity:0; transition:opacity .3s; letter-spacing:.1em; }
.cursor.is-hover .cursor__ring{ width:64px; height:64px; margin:-32px 0 0 -32px; background:rgba(30,111,208,.12); border-color:transparent; }
.cursor.is-label .cursor__ring{ width:92px; height:92px; margin:-46px 0 0 -46px; background:var(--blue); border-color:transparent; }
.cursor.is-label .cursor__label{ opacity:1; }
.cursor.is-label .cursor__dot{ opacity:0; }
.has-cursor, .has-cursor a, .has-cursor button{ cursor:none; }
.has-cursor input, .has-cursor textarea, .has-cursor select{ cursor:auto; }

.progress{ position:fixed; left:0; right:0; top:0; height:3px; z-index:8001; pointer-events:none; }
.progress span{ display:block; height:100%; width:100%; background:var(--grad); transform-origin:0 50%; transform:scaleX(0); }

/* ---------- Header ---------- */
.gh{ position:fixed; left:0; right:0; top:0; z-index:8000; padding:14px var(--gutter) 0; transition:transform .6s var(--ease); pointer-events:none; }
.gh.is-hidden{ transform:translateY(-120%); }
.gh__bar{
  pointer-events:auto; max-width:1440px; margin:0 auto; height:66px;
  display:flex; align-items:center; justify-content:space-between; gap:20px;
  padding:0 10px 0 20px; border-radius:999px;
  background:rgba(255,255,255,.0); border:1px solid transparent;
  transition:background .5s var(--ease), border-color .5s, box-shadow .5s, backdrop-filter .5s;
}
.gh.is-solid .gh__bar, .page-about .gh__bar, .page-access .gh__bar, .page-recruit .gh__bar, .page-mission .gh__bar{
  background:rgba(255,255,255,.72); border-color:rgba(255,255,255,.7);
  backdrop-filter:blur(18px) saturate(1.4); -webkit-backdrop-filter:blur(18px) saturate(1.4);
  box-shadow:0 20px 50px -30px rgba(13,36,73,.35);
}
.gh__brand{ display:flex; align-items:center; gap:10px; flex:none; }
.gh__brand img{ width:44px; height:auto; transition:transform .6s var(--ease); }
.gh__brand:hover img{ transform:rotate(-10deg) scale(1.08); }
.gh__word{ display:flex; flex-direction:column; line-height:1.15; }
.gh__word b{ font-family:var(--f-en); font-weight:700; font-size:19px; letter-spacing:.01em; color:var(--navy); transition:color .4s; }
.gh__word small{ font-size:10.5px; color:var(--muted); letter-spacing:.08em; transition:color .4s; }
.page-home .gh:not(.is-solid) .gh__word b{ color:#fff; }
.page-home .gh:not(.is-solid) .gh__word small{ color:rgba(255,255,255,.8); }
.gh__nav{ display:flex; align-items:center; gap:clamp(12px,1.6vw,28px); font-weight:700; font-size:14px; }
.gh__nav a{ position:relative; overflow:hidden; display:block; height:1.9em; color:var(--navy); transition:color .4s; }
.page-home .gh:not(.is-solid) .gh__nav a{ color:#fff; }
.gh__nav a span{ display:block; transition:transform .5s var(--ease); }
.gh__nav a span::after{ content:attr(data-text); position:absolute; left:0; top:100%; color:var(--blue); }
.page-home .gh:not(.is-solid) .gh__nav a span::after{ color:var(--yellow-2); }
.gh__nav a:hover span{ transform:translateY(-100%); }
.gh__nav a[aria-current="page"]::before{ content:""; position:absolute; left:50%; bottom:0; width:5px; height:5px; margin-left:-2.5px; border-radius:50%; background:var(--green); }
.gh__actions{ display:flex; align-items:center; gap:10px; }
.gh__tel{ display:flex; align-items:center; gap:8px; font-family:var(--f-en); font-weight:600; font-size:17px; color:var(--navy); padding:0 8px; transition:color .4s; }
.gh__tel svg{ width:18px; height:18px; fill:currentColor; }
.page-home .gh:not(.is-solid) .gh__tel{ color:#fff; }
.gh__cta{ min-height:48px; padding:0 24px; font-size:14px; }
.gh__menu{ display:none; width:52px; height:52px; border-radius:50%; background:var(--navy); position:relative; flex:none; }
.gh__menu span{ position:absolute; left:16px; right:16px; height:2px; background:#fff; border-radius:2px; transition:transform .5s var(--ease), top .5s var(--ease); }
.gh__menu span:nth-child(1){ top:21px; } .gh__menu span:nth-child(2){ top:29px; }
.is-menu .gh__menu span:nth-child(1){ top:25px; transform:rotate(45deg); }
.is-menu .gh__menu span:nth-child(2){ top:25px; transform:rotate(-45deg); }
@media (max-width:1280px){ .gh__tel{ display:none; } }
@media (max-width:1100px){
  .gh__nav{ display:none; } .gh__menu{ display:block; }
}
@media (max-width:560px){
  .gh{ padding:10px 10px 0; }
  .gh__bar{ height:60px; padding:0 6px 0 12px; }
  .gh__cta{ display:none; }
  .gh__word b{ font-size:17px; }
  .gh__brand img{ width:38px; }
}

/* ---------- Menu overlay ---------- */
.menu{ position:fixed; inset:0; z-index:7900; visibility:hidden; }
.menu__bg{ position:absolute; inset:0; background:var(--navy); clip-path:circle(0% at calc(100% - 50px) 44px); transition:clip-path .9s var(--ease-2); }
.menu__bg::after{ content:""; position:absolute; inset:0; background:radial-gradient(60% 50% at 80% 10%, rgba(61,178,90,.35), transparent 60%), radial-gradient(50% 50% at 10% 90%, rgba(30,111,208,.55), transparent 60%); }
.is-menu .menu{ visibility:visible; }
.is-menu .menu__bg{ clip-path:circle(150% at calc(100% - 50px) 44px); }
.menu__inner{ position:relative; height:100%; overflow:auto; padding:110px var(--gutter) 40px; display:grid; gap:40px; align-content:start; }
.menu__nav{ display:grid; gap:4px; }
.menu__nav a{ display:block; color:#fff; opacity:0; transform:translateY(30px); transition:opacity .6s var(--ease), transform .8s var(--ease); }
.menu__nav small{ display:block; font-family:var(--f-en); font-size:12px; letter-spacing:.2em; color:var(--yellow-2); }
.menu__nav span{ font-family:var(--f-min); font-size:clamp(26px,7vw,40px); line-height:1.4; }
.menu__nav a[aria-current="page"] span{ color:var(--green-2); }
.is-menu .menu__nav a{ opacity:1; transform:none; }
.is-menu .menu__nav a:nth-child(1){ transition-delay:.25s } .is-menu .menu__nav a:nth-child(2){ transition-delay:.3s }
.is-menu .menu__nav a:nth-child(3){ transition-delay:.35s } .is-menu .menu__nav a:nth-child(4){ transition-delay:.4s }
.is-menu .menu__nav a:nth-child(5){ transition-delay:.45s } .is-menu .menu__nav a:nth-child(6){ transition-delay:.5s }
.is-menu .menu__nav a:nth-child(7){ transition-delay:.55s }
.menu__info{ display:grid; gap:12px; opacity:0; transition:opacity .6s .5s; }
.is-menu .menu__info{ opacity:1; }
.menu__info p{ color:rgba(255,255,255,.7); font-size:13px; margin-top:8px; }

/* ---------- HERO ---------- */
.hero{ position:relative; height:100svh; min-height:640px; color:#fff; overflow:hidden; background:var(--navy); }
.hero__media{ position:absolute; inset:0; overflow:hidden; will-change:clip-path, transform; }
.hero__poster, .hero__video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.hero__video{ opacity:0; transition:opacity 1.2s var(--ease); }
.hero__video.is-playing{ opacity:1; }
.hero__shade{ position:absolute; inset:0;
  background:
    linear-gradient(90deg, rgba(8,20,45,.72) 0%, rgba(8,20,45,.38) 45%, rgba(8,20,45,0) 75%),
    linear-gradient(0deg, rgba(8,20,45,.55) 0%, rgba(8,20,45,0) 40%),
    linear-gradient(180deg, rgba(8,20,45,.35) 0%, rgba(8,20,45,0) 22%);
}
.hero__content{ position:relative; z-index:2; height:100%; display:flex; flex-direction:column; justify-content:center; padding-top:96px; padding-bottom:150px; }
.hero__title{ font-family:var(--f-min); font-weight:700; font-size:clamp(34px,min(5.6vw,8.6vh),78px); line-height:1.32; letter-spacing:.05em; margin-top:22px; text-shadow:0 10px 50px rgba(0,0,0,.25); }
.hero__title .line{ display:block; overflow:hidden; padding:.02em 0 .1em; }
.hero__title .line > span, .hero__title .ch{ display:inline-block; }
.js .hero__title .ch{ transform:translateY(110%); }
.hl{ position:relative; font-style:normal; display:inline-block; color:var(--yellow-2); }
.hl svg{ position:absolute; left:-2%; right:-2%; bottom:-.16em; width:104%; height:.34em; overflow:visible; }
.hl path{ fill:none; stroke:var(--yellow); stroke-width:6; stroke-linecap:round; stroke-dasharray:220; stroke-dashoffset:220; }
.hero__lead{ margin-top:26px; max-width:640px; font-size:clamp(14px,1.3vw,17px); line-height:2; color:rgba(255,255,255,.92); }
.hero__cta{ margin-top:34px; display:flex; flex-wrap:wrap; gap:12px; }
.hero__note{ margin-top:20px; font-size:12px; color:rgba(255,255,255,.72); letter-spacing:.04em; }
.hero__caption{
  position:absolute; z-index:3; left:var(--gutter); bottom:36px; max-width:min(560px, calc(100% - 2*var(--gutter) - 150px));
  display:grid; grid-template-columns:auto 1fr; align-items:center; gap:4px 14px;
  padding:12px 18px 14px 12px; border-radius:22px;
  background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.25);
  backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
}
.hero__captag{ font-weight:700; font-size:12px; padding:6px 12px; border-radius:999px; background:#fff; color:var(--navy); letter-spacing:.1em; }
.hero__captext{ font-size:13.5px; line-height:1.6; }
.hero__capbar{ grid-column:1 / -1; height:2px; background:rgba(255,255,255,.2); border-radius:2px; overflow:hidden; margin-top:8px; }
.hero__capbar i{ display:block; height:100%; width:100%; background:var(--yellow-2); transform-origin:0 50%; transform:scaleX(0); }
.hero__captag.is-swap, .hero__captext.is-swap{ animation:capSwap .9s var(--ease); }
@keyframes capSwap{ 0%{ opacity:0; transform:translateY(10px); filter:blur(4px); } 100%{ opacity:1; transform:none; filter:none; } }
.badge{ position:absolute; z-index:3; right:var(--gutter); bottom:28px; width:150px; height:150px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.1); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); border:1px solid rgba(255,255,255,.25); transition:transform .6s var(--ease), background .4s; }
.badge svg{ position:absolute; inset:0; width:100%; height:100%; animation:spin 16s linear infinite; }
.badge text{ font-family:var(--f-en); font-size:13.5px; font-weight:600; letter-spacing:.2em; fill:#fff; }
.badge img{ width:64px; height:auto; transition:transform .6s var(--ease); }
.badge:hover{ transform:scale(1.06); background:rgba(255,255,255,.2); }
.badge:hover img{ transform:scale(1.15) rotate(-8deg); }
@keyframes spin{ to{ transform:rotate(360deg); } }
.hero__scroll{ position:absolute; z-index:3; left:50%; bottom:18px; transform:translateX(-50%); display:none; }
@media (min-width:1101px){
  .hero__scroll{ display:flex; flex-direction:column; align-items:center; gap:8px; font-family:var(--f-en); font-size:11px; letter-spacing:.3em; color:rgba(255,255,255,.8); }
  .hero__scroll i{ width:1px; height:46px; background:rgba(255,255,255,.3); position:relative; overflow:hidden; }
  .hero__scroll i::after{ content:""; position:absolute; left:0; top:-50%; width:100%; height:50%; background:#fff; animation:scrollLine 2s var(--ease) infinite; }
}
@keyframes scrollLine{ to{ top:110%; } }
@media (max-width:760px){
  .hero{ min-height:680px; }
  .hero__content{ justify-content:flex-end; padding-bottom:196px; }
  .hero__shade{ background:linear-gradient(0deg, rgba(8,20,45,.9) 0%, rgba(8,20,45,.55) 45%, rgba(8,20,45,.15) 75%, rgba(8,20,45,.35) 100%); }
  .hero__cta .btn{ flex:1 1 auto; min-height:52px; padding:0 18px; }
  .hero__cta .btn--glass{ display:none; }
  .hero__caption{ bottom:88px; max-width:none; right:var(--gutter); }
  .badge{ display:none; }
  .hero__title{ font-size:clamp(26px,8vw,40px); letter-spacing:.02em; }
  .hero__eyebrow{ font-size:11px; letter-spacing:.2em; }
  .hero__note{ font-size:11px; }
}

/* ---------- Marquee ---------- */
.bigmarquee{ overflow:hidden; padding:clamp(28px,5vw,60px) 0; background:var(--cream); border-bottom:1px solid var(--line); }
.marquee__track{ display:flex; align-items:center; width:max-content; will-change:transform; }
.bigmarquee span{ font-family:var(--f-en); font-weight:700; font-size:clamp(56px,11vw,168px); line-height:1; letter-spacing:-.02em; color:var(--navy); padding:0 .25em; white-space:nowrap; }
.bigmarquee span.o{ color:transparent; -webkit-text-stroke:1.5px var(--navy); }
.dot{ flex:none; width:clamp(18px,2.4vw,36px); height:clamp(18px,2.4vw,36px); border-radius:50%; margin:0 .4em; }
.dot--b{ background:var(--blue); } .dot--g{ background:var(--green); } .dot--y{ background:var(--yellow); }

/* ---------- News ---------- */
.news{ padding:70px 0 20px; }
.news__inner{ display:grid; grid-template-columns:220px 1fr; gap:30px; }
.news__h{ font-family:var(--f-min); font-size:22px; color:var(--navy); }
.news__h .en{ display:block; font-family:var(--f-en); font-size:40px; font-weight:600; color:var(--blue); line-height:1; margin-bottom:6px; }
.news__list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--line); }
.news__list li > *{ display:grid; grid-template-columns:120px 1fr; gap:20px; padding:20px 6px; border-bottom:1px solid var(--line); transition:background .4s, padding .4s var(--ease); }
.news__list a:hover{ background:#fff; padding-left:16px; }
.news__list time{ font-family:var(--f-en); color:var(--blue); font-weight:600; }
.news__t small{ display:block; color:var(--muted); font-size:13px; margin-top:4px; }
@media (max-width:760px){ .news__inner{ grid-template-columns:1fr; } .news__list li > *{ grid-template-columns:1fr; gap:2px; } }

/* ---------- Message ---------- */
.msg{ padding:clamp(90px,12vw,180px) 0; overflow:hidden; }
.msg__grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(30px,6vw,100px); align-items:center; }
.msg__title{ font-family:var(--f-min); color:var(--navy); margin-top:18px; }
.msg__t1{ display:block; font-size:clamp(28px,3.7vw,54px); line-height:1.3; letter-spacing:.03em; white-space:nowrap; }
.msg__t2{ display:block; font-size:clamp(20px,2.4vw,32px); color:var(--blue); margin-top:10px; letter-spacing:.1em; }
.msg__body{ margin:40px 0 44px; font-family:var(--f-min); font-size:clamp(17px,1.7vw,22px); line-height:2.3; letter-spacing:.08em; }
.msg__body p span{
  background:linear-gradient(90deg, var(--navy) 50%, rgba(13,36,73,.18) 50%);
  background-size:200% 100%; background-position:100% 0;
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.no-js .msg__body p span{ color:var(--navy); }
.msg__visual{ position:relative; aspect-ratio:1/1.08; }
.msg__ph{ position:absolute; margin:0; overflow:hidden; box-shadow:var(--shadow); }
.msg__ph img{ width:100%; height:100%; object-fit:cover; transform:scale(1.15); }
.msg__ph--1{ left:0; top:0; width:74%; height:66%; border-radius:var(--r-xl) var(--r-xl) var(--r-xl) 8px; }
.msg__ph--2{ right:0; bottom:0; width:56%; height:50%; border-radius:50% 50% var(--r-xl) var(--r-xl); border:8px solid var(--cream); }
.msg__heart{ position:absolute; left:6%; bottom:8%; width:clamp(80px,9vw,130px); filter:drop-shadow(0 20px 30px rgba(13,36,73,.25)); }
.msg__ring{ position:absolute; right:6%; top:6%; width:120px; height:120px; border-radius:50%; border:1.5px dashed rgba(30,111,208,.35); animation:spin 30s linear infinite; }
@media (max-width:900px){ .msg__t1{ white-space:normal; } .msg__grid{ grid-template-columns:1fr; } .msg__visual{ max-width:560px; margin:0 auto; width:100%; } }

/* ---------- Strength ---------- */
.strength{ padding:clamp(90px,11vw,160px) 0; background:var(--navy); color:#fff; overflow:hidden; border-radius:var(--r-xl) var(--r-xl) 0 0; }
.strength__glow{ position:absolute; inset:0; background:radial-gradient(40% 50% at 15% 20%, rgba(30,111,208,.55), transparent 70%), radial-gradient(35% 45% at 90% 80%, rgba(61,178,90,.35), transparent 70%), radial-gradient(30% 40% at 70% 10%, rgba(245,183,30,.18), transparent 70%); }
.strength__grid{ position:relative; display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,24px); }
.scard{
  --c:var(--blue-2);
  position:relative; min-height:clamp(260px,26vw,380px); padding:clamp(24px,2.4vw,38px); border-radius:var(--r-l);
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.14); overflow:hidden;
  display:flex; flex-direction:column; transform-style:preserve-3d; transition:border-color .5s, background .5s;
}
.scard--green{ --c:var(--green-2); } .scard--yellow{ --c:var(--yellow-2); } .scard--sky{ --c:var(--sky); }
.scard:hover{ border-color:rgba(255,255,255,.35); background:rgba(255,255,255,.1); }
.scard__num{ font-family:var(--f-en); font-weight:300; font-size:clamp(64px,7vw,110px); line-height:1; color:var(--c); }
.scard__title{ margin-top:auto; font-size:clamp(16px,1.35vw,20px); line-height:1.6; }
.scard__sub{ margin-top:10px; font-size:13.5px; color:rgba(255,255,255,.7); }
.scard__shine{ position:absolute; inset:0; pointer-events:none; background:radial-gradient(300px circle at var(--mx,50%) var(--my,0%), rgba(255,255,255,.16), transparent 60%); opacity:0; transition:opacity .4s; }
.scard:hover .scard__shine{ opacity:1; }
@media (max-width:1000px){ .strength__grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .strength__grid{ grid-template-columns:1fr; } .scard{ min-height:200px; } }

/* ---------- Services ---------- */
.svc{ background:var(--paper); padding:clamp(90px,10vw,140px) 0 clamp(60px,8vw,100px); overflow:hidden; }
.svc__pin{ position:relative; }
.svc__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; margin-bottom:clamp(30px,4vw,56px); }
.svc__lead{ color:var(--muted); font-size:14px; max-width:320px; }
.svc__viewport{ overflow-x:auto; overflow-y:hidden; scrollbar-width:none; -webkit-overflow-scrolling:touch; scroll-snap-type:x proximity; padding-bottom:20px; }
.svc__viewport::-webkit-scrollbar{ display:none; }
.svc.is-pinned .svc__viewport{ overflow:visible; scroll-snap-type:none; padding-bottom:0; }
.svc__track{ display:flex; gap:clamp(14px,1.8vw,26px); padding:0 var(--gutter); width:max-content; will-change:transform; }
.svcard{
  --c:var(--blue); --c2:#e8f1fc;
  position:relative; flex:none; width:clamp(290px,28vw,400px); text-align:left; border-radius:var(--r-l); overflow:hidden;
  background:#fff; display:flex; flex-direction:column; box-shadow:0 30px 60px -40px rgba(13,36,73,.4);
  transition:transform .7s var(--ease), box-shadow .7s var(--ease);
}
.svcard--green{ --c:var(--green); --c2:#e9f7ec; } .svcard--yellow{ --c:#E3A20C; --c2:#fdf4dc; }
.svcard:hover{ transform:translateY(-10px); box-shadow:0 50px 80px -40px rgba(13,36,73,.5); }
.svcard__media{ display:block; aspect-ratio:4/3; overflow:hidden; position:relative; }
.svcard__media::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg, transparent 55%, rgba(0,0,0,.18)); }
.svcard__media img{ width:100%; height:100%; object-fit:cover; transition:transform 1.4s var(--ease); }
.svcard:hover .svcard__media img{ transform:scale(1.08); }
.svcard__body{ display:flex; flex-direction:column; gap:8px; padding:24px 26px 26px; flex:1; }
.svcard__num{ display:flex; align-items:center; gap:10px; font-family:var(--f-en); font-weight:600; font-size:14px; color:var(--c); letter-spacing:.1em; }
.svcard__num i{ flex:1; height:1px; background:linear-gradient(90deg, var(--c), transparent); }
.svcard__title{ font-size:clamp(19px,1.6vw,22px); font-weight:700; color:var(--navy); line-height:1.5; }
.svcard__short{ font-size:14px; color:var(--ink-2); line-height:1.8; }
.svcard__more{ margin-top:auto; padding-top:14px; display:inline-flex; align-items:center; gap:10px; font-weight:700; font-size:13px; color:var(--c); }
.svcard__more svg{ width:30px; height:30px; padding:7px; border-radius:50%; background:var(--c2); fill:var(--c); transition:transform .6s var(--ease), background .4s, fill .4s; }
.svcard:hover .svcard__more svg{ transform:rotate(90deg); background:var(--c); fill:#fff; }
.svc__end{ flex:none; width:clamp(290px,28vw,400px); border-radius:var(--r-l); padding:40px 34px; display:flex; flex-direction:column; justify-content:center; gap:14px; background:var(--navy); color:#fff; position:relative; overflow:hidden; }
.svc__end::before{ content:""; position:absolute; width:300px; height:300px; right:-120px; top:-120px; border-radius:50%; background:radial-gradient(circle, rgba(61,178,90,.6), transparent 70%); }
.svc__endt{ font-family:var(--f-min); font-size:clamp(22px,2vw,28px); line-height:1.5; position:relative; }
.svc__ends{ font-size:14px; color:rgba(255,255,255,.75); position:relative; }
.svc__end .btn{ margin-top:10px; align-self:flex-start; }
.svc__bar{ margin-top:36px; display:flex; align-items:center; gap:20px; }
.svc__bar::before{ content:""; }
.svc__barfill{ position:relative; flex:1; height:2px; background:var(--line); border-radius:2px; overflow:hidden; }
.svc__barfill::after{ content:""; position:absolute; inset:0; background:var(--grad); transform-origin:0 50%; transform:scaleX(var(--p,0)); }
.svc__count{ font-family:var(--f-en); font-style:normal; font-weight:600; color:var(--navy); letter-spacing:.1em; font-size:14px; }
@media (max-width:900px){
  .svc__head{ flex-direction:column; align-items:flex-start; }
  .svc__viewport{ overflow-x:auto; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
  .svc__viewport::-webkit-scrollbar{ display:none; }
  .svcard, .svc__end{ scroll-snap-align:center; width:min(82vw,360px); }
}

/* ---------- Movie ---------- */
.movie{ padding:clamp(90px,11vw,160px) 0; }
.movie__head{ text-align:center; margin-bottom:clamp(30px,4vw,56px); }
.movie__head .eyebrow{ justify-content:center; }
.movie__lead{ margin-top:14px; color:var(--muted); }
.movie__frame{ position:relative; display:block; width:100%; aspect-ratio:16/9; border-radius:var(--r-xl); overflow:hidden; background:var(--navy); box-shadow:var(--shadow); will-change:transform, border-radius; }
.movie__preview{ width:100%; height:100%; object-fit:cover; transform:scale(1.02); }
.movie__frame::after{ content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(8,20,45,.35), transparent 50%); pointer-events:none; }
.movie__play{ position:absolute; left:50%; top:50%; z-index:2; width:132px; height:132px; margin:-66px 0 0 -66px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.18); border:1px solid rgba(255,255,255,.5); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px); color:#fff; transition:transform .6s var(--ease), background .4s; }
.movie__play svg{ width:36px; height:36px; fill:#fff; margin-left:6px; }
.movie__play em{ position:absolute; bottom:-34px; font-style:normal; font-family:var(--f-en); font-size:12px; letter-spacing:.3em; white-space:nowrap; }
.movie__frame:hover .movie__play{ transform:scale(1.1); background:var(--blue); }
@media (max-width:600px){ .movie__play{ width:84px; height:84px; margin:-42px 0 0 -42px; } .movie__play em{ display:none; } .movie__frame{ border-radius:var(--r-m); } }

/* ---------- Price ---------- */
.price{ padding:clamp(90px,11vw,160px) 0; background:#fff; border-radius:var(--r-xl); }
.rates{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(12px,1.6vw,22px); }
.rate{ --c:var(--yellow); position:relative; overflow:hidden; border-radius:var(--r-l); background:var(--cream); padding:clamp(26px,2.6vw,40px); transition:transform .6s var(--ease), box-shadow .6s; }
.rate::before{ content:""; position:absolute; left:0; top:0; right:0; height:6px; background:var(--c); }
.rate--green{ --c:var(--green); } .rate--blue{ --c:var(--blue); }
.rate:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
.rate__head{ display:flex; align-items:center; gap:10px; font-weight:700; font-size:20px; color:var(--navy); }
.rate__dot{ width:12px; height:12px; border-radius:50%; background:var(--c); box-shadow:0 0 0 5px color-mix(in srgb, var(--c) 20%, transparent); }
.rate__time{ font-family:var(--f-en); color:var(--muted); margin-top:4px; }
.rate__yen{ margin-top:22px; display:flex; align-items:baseline; gap:8px; }
.rate__yen b{ font-family:var(--f-en); font-weight:600; font-size:clamp(42px,4.6vw,68px); line-height:1; color:var(--ink); letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.rate__yen span{ font-size:14px; color:var(--ink-2); }
.rate__deco{ position:absolute; right:18px; top:22px; font-family:var(--f-en); font-weight:700; font-size:clamp(14px,1.2vw,16px); letter-spacing:.3em; color:var(--c); opacity:.9; letter-spacing:-.02em; pointer-events:none; }
.notes{ list-style:none; padding:0; margin:22px 0 0; display:flex; flex-wrap:wrap; gap:10px; }
.notes__i{ padding:10px 18px; border-radius:999px; background:var(--cream); font-size:13.5px; font-weight:700; color:var(--ink-2); border:1px solid var(--line); }
.notes__i--0{ background:#eef5fd; } .notes__i--1{ background:#edf8ef; } .notes__i--2{ background:#fdf6e3; }
@media (max-width:860px){ .rates{ grid-template-columns:1fr; } }

.sim{ margin-top:clamp(40px,5vw,70px); display:grid; grid-template-columns:1.25fr .75fr; border-radius:var(--r-xl); overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--line); }
.sim__form{ padding:clamp(24px,3vw,44px); background:var(--cream); }
.sim__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:12px; flex-wrap:wrap; padding-bottom:18px; border-bottom:1px solid var(--line); }
.sim__head h3{ font-family:var(--f-min); font-size:clamp(20px,2vw,26px); color:var(--navy); }
.sim__head p{ font-size:12.5px; color:var(--muted); }
.sim__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:18px 18px; margin-top:22px; }
.field{ display:flex; flex-direction:column; gap:8px; }
.field > span{ font-size:12.5px; font-weight:700; color:var(--ink-2); letter-spacing:.06em; }
.field small{ font-size:11px; color:var(--muted); line-height:1.6; }
.field input[type=date], .field input[type=time]{ height:52px; border-radius:14px; border:1.5px solid var(--line); background:#fff; padding:0 14px; font-family:var(--f-en); font-weight:600; font-size:16px; outline:none; transition:border-color .3s, box-shadow .3s; width:100%; }
.field input:focus{ border-color:var(--blue); box-shadow:0 0 0 4px rgba(30,111,208,.12); }
.stepper{ display:grid; grid-template-columns:48px 1fr 48px; height:52px; border-radius:14px; border:1.5px solid var(--line); background:#fff; overflow:hidden; }
.stepper button{ font-size:20px; font-weight:700; color:var(--blue); transition:background .3s; }
.stepper button:hover{ background:#eef5fd; }
.stepper input{ border:0; text-align:center; font-family:var(--f-en); font-weight:600; font-size:18px; outline:none; width:100%; -moz-appearance:textfield; appearance:textfield; }
.stepper input::-webkit-inner-spin-button{ -webkit-appearance:none; }
.toggles{ display:flex; flex-direction:column; gap:8px; }
.tog{ display:flex; align-items:center; gap:10px; height:44px; padding:0 14px; border-radius:12px; background:#fff; border:1.5px solid var(--line); font-weight:700; font-size:13px; transition:all .35s var(--ease); }
.tog i{ width:34px; height:20px; border-radius:20px; background:#d6dbe4; position:relative; transition:background .35s; flex:none; }
.tog i::after{ content:""; position:absolute; left:2px; top:2px; width:16px; height:16px; border-radius:50%; background:#fff; transition:transform .45s var(--ease); box-shadow:0 2px 6px rgba(0,0,0,.2); }
.tog[aria-pressed="true"]{ border-color:var(--green); background:#effaf1; }
.tog[aria-pressed="true"] i{ background:var(--green); }
.tog[aria-pressed="true"] i::after{ transform:translateX(14px); }
.timeline{ margin-top:28px; }
.timeline__bands{ position:relative; height:16px; border-radius:10px; overflow:hidden; background:#e7e3da; }
.tb{ position:absolute; top:0; bottom:0; opacity:.35; }
.tb--day{ background:var(--yellow); } .tb--eve{ background:var(--green); } .tb--late{ background:var(--blue); }
.timeline__sel{ position:absolute; top:0; bottom:0; background:var(--navy); border-radius:10px; box-shadow:0 0 0 2px #fff inset; transition:left .6s var(--ease), width .6s var(--ease); }
.timeline__sel--2{ display:none; }
.timeline__ticks{ display:flex; justify-content:space-between; margin-top:6px; font-family:var(--f-en); font-size:11px; color:var(--muted); }
.sim__result{ background:linear-gradient(160deg, var(--navy) 0%, #143c7c 100%); color:#fff; position:relative; overflow:hidden; }
.sim__result::before{ content:""; position:absolute; width:360px; height:360px; right:-140px; top:-140px; border-radius:50%; background:radial-gradient(circle, rgba(61,178,90,.45), transparent 70%); }
.sim__resultIn{ position:relative; padding:clamp(24px,3vw,44px); height:100%; display:flex; flex-direction:column; }
.sim__label{ display:flex; justify-content:space-between; gap:10px; font-weight:700; font-size:14px; color:rgba(255,255,255,.8); flex-wrap:wrap; }
.sim__dur{ font-size:12px; padding:3px 12px; border-radius:999px; background:rgba(255,255,255,.12); }
.sim__total{ font-family:var(--f-en); font-weight:600; font-size:clamp(46px,5vw,72px); line-height:1.1; margin:10px 0 18px; letter-spacing:-.01em; font-variant-numeric:tabular-nums; }
.sim__bd{ display:grid; gap:0; margin-bottom:22px; border-top:1px solid rgba(255,255,255,.15); }
.sim__bd .row{ display:flex; justify-content:space-between; gap:12px; padding:10px 0; border-bottom:1px solid rgba(255,255,255,.12); font-size:12.5px; }
.sim__bd .row span{ color:rgba(255,255,255,.7); flex:none; }
.sim__bd .row b{ text-align:right; font-weight:500; }
.sim__bd .row.total{ display:none; }
.sim__note{ margin-top:12px; font-size:11px; color:rgba(255,255,255,.6); }
.sim__resultIn .btn{ margin-top:auto; }
@media (max-width:1000px){ .sim{ grid-template-columns:1fr; } .sim__grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:520px){ .sim__grid{ grid-template-columns:1fr; } }

/* ---------- Mission teaser ---------- */
.mteaser{ padding:clamp(90px,11vw,160px) 0; }
.mteaser__grid{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,6vw,90px); align-items:center; }
.mteaser__title{ font-family:var(--f-min); font-size:clamp(19px,2.6vw,38px); line-height:1.5; letter-spacing:.05em; color:var(--navy); margin-top:18px; }
.mteaser__vision{ margin-top:24px; color:var(--ink-2); font-size:15px; line-height:2; }
.mteaser__btns{ margin-top:32px; display:flex; flex-wrap:wrap; gap:12px; }
.mteaser__vals{ list-style:none; margin:0; padding:0; display:grid; gap:10px; counter-reset:v; }
.mteaser__vals a{ display:grid; grid-template-columns:48px 1fr; align-items:center; gap:2px 14px; padding:16px 22px; border-radius:20px; background:#fff; border:1px solid var(--line); transition:transform .5s var(--ease), box-shadow .5s, border-color .4s; }
.mteaser__vals a:hover{ transform:translateX(8px); box-shadow:0 20px 40px -25px rgba(13,36,73,.35); border-color:transparent; }
.mteaser__vals span{ grid-row:1 / 3; font-family:var(--f-en); font-weight:600; font-size:24px; color:var(--blue); }
.mteaser__vals li:nth-child(3n+2) span{ color:var(--green); } .mteaser__vals li:nth-child(3n) span{ color:#E3A20C; }
.mteaser__vals b{ font-size:16px; color:var(--navy); }
.mteaser__vals small{ font-size:12px; color:var(--muted); line-height:1.6; }
@media (max-width:900px){ .mteaser__grid{ grid-template-columns:1fr; } }

/* ---------- FAQ ---------- */
.faq{ padding:clamp(90px,11vw,160px) 0; background:var(--paper); border-radius:var(--r-xl) var(--r-xl) 0 0; }
.faq__grid{ display:grid; grid-template-columns:.8fr 1.2fr; gap:clamp(30px,6vw,90px); align-items:start; }
.faq__side{ position:sticky; top:120px; }
.acc{ display:grid; gap:12px; }
.acc__item{ border-radius:22px; background:#fff; overflow:hidden; transition:box-shadow .5s; }
.acc__item[open]{ box-shadow:0 24px 50px -30px rgba(13,36,73,.35); }
.acc__item summary{ list-style:none; display:grid; grid-template-columns:40px 1fr 32px; align-items:center; gap:14px; padding:20px 22px; cursor:pointer; font-weight:700; color:var(--navy); line-height:1.6; }
.acc__item summary::-webkit-details-marker{ display:none; }
.acc__q, .acc__a{ width:40px; height:40px; border-radius:50%; display:grid; place-items:center; font-family:var(--f-en); font-weight:600; font-size:17px; }
.acc__q{ background:var(--blue); color:#fff; }
.acc__a{ background:#fdf4dc; color:#C98800; flex:none; }
.acc__icon{ position:relative; width:32px; height:32px; border-radius:50%; background:var(--cream); transition:background .4s, transform .6s var(--ease); }
.acc__icon::before, .acc__icon::after{ content:""; position:absolute; left:50%; top:50%; width:12px; height:2px; margin:-1px 0 0 -6px; background:var(--navy); border-radius:2px; transition:transform .5s var(--ease), background .4s; }
.acc__icon::after{ transform:rotate(90deg); }
.acc__item[open] .acc__icon{ background:var(--navy); transform:rotate(180deg); }
.acc__item[open] .acc__icon::before, .acc__item[open] .acc__icon::after{ background:#fff; }
.acc__item[open] .acc__icon::after{ transform:rotate(0); }
.acc__body{ overflow:hidden; }
.acc__inner{ display:flex; gap:14px; padding:0 22px 24px; color:var(--ink-2); line-height:2; }
@media (max-width:900px){ .faq__grid{ grid-template-columns:1fr; } .faq__side{ position:static; } }
@media (max-width:520px){ .acc__item summary{ grid-template-columns:34px 1fr 28px; padding:16px; gap:10px; font-size:15px; } .acc__q,.acc__a{ width:34px; height:34px; } .acc__inner{ padding:0 16px 20px; font-size:14.5px; } }

/* ---------- Recruit banner ---------- */
.rbanner{ padding:clamp(60px,8vw,110px) 0; background:var(--paper); }
.rbanner__link{ position:relative; display:grid; grid-template-columns:1fr auto; align-items:center; gap:20px; min-height:260px; padding:clamp(30px,4vw,60px); border-radius:var(--r-xl); overflow:hidden; color:#fff; isolation:isolate; }
.rbanner__img{ position:absolute; inset:0; z-index:-1; }
.rbanner__img img{ width:100%; height:100%; object-fit:cover; transition:transform 1.4s var(--ease); }
.rbanner__img::after{ content:""; position:absolute; inset:0; background:linear-gradient(90deg, rgba(13,36,73,.92) 0%, rgba(13,36,73,.6) 55%, rgba(13,36,73,.15) 100%); }
.rbanner__link:hover .rbanner__img img{ transform:scale(1.06); }
.rbanner__txt{ display:flex; flex-direction:column; gap:10px; }
.rbanner__txt b{ font-family:var(--f-min); font-size:clamp(22px,3vw,40px); line-height:1.4; }
.rbanner__txt small{ font-size:15px; opacity:.85; }
.rbanner__arrow{ width:84px; height:84px; border-radius:50%; background:#fff; display:grid; place-items:center; transition:transform .6s var(--ease), background .4s; }
.rbanner__arrow svg{ width:28px; fill:var(--navy); transition:fill .4s; }
.rbanner__link:hover .rbanner__arrow{ transform:scale(1.1) rotate(-45deg); background:var(--yellow); }
@media (max-width:600px){ .rbanner__link{ grid-template-columns:1fr; } .rbanner__arrow{ width:56px; height:56px; } }

/* ---------- Contact ---------- */
.contact{ padding:clamp(90px,11vw,160px) 0; background:var(--navy); color:#fff; overflow:hidden; }
.contact__bg span{ position:absolute; border-radius:50%; filter:blur(60px); opacity:.55; animation:float 18s ease-in-out infinite alternate; }
.contact__bg span:nth-child(1){ width:520px; height:520px; left:-160px; top:-120px; background:var(--blue); }
.contact__bg span:nth-child(2){ width:420px; height:420px; right:-100px; bottom:-120px; background:var(--green); animation-delay:-6s; opacity:.4; }
.contact__bg span:nth-child(3){ width:260px; height:260px; right:30%; top:10%; background:var(--yellow); animation-delay:-11s; opacity:.18; }
@keyframes float{ 0%{ transform:translate(0,0) scale(1); } 100%{ transform:translate(60px,40px) scale(1.12); } }
.contact__grid{ position:relative; display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,80px); align-items:start; }
.contact__title{ font-family:var(--f-min); font-size:clamp(32px,4.4vw,58px); line-height:1.4; letter-spacing:.05em; margin-top:18px; }
.contact__lead{ margin-top:22px; color:rgba(255,255,255,.82); font-size:15px; }
.contact__tel{ display:inline-flex; flex-direction:column; margin-top:34px; padding:18px 30px 20px; border-radius:28px; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.2); transition:background .4s, transform .6s var(--ease); }
.contact__tel:hover{ background:rgba(255,255,255,.14); transform:translateY(-4px); }
.contact__tel small{ font-size:12px; letter-spacing:.2em; color:var(--yellow-2); }
.contact__tel b{ font-family:var(--f-en); font-weight:600; font-size:clamp(34px,4vw,52px); line-height:1.1; letter-spacing:.02em; }
.contact__dl{ margin:28px 0 0; display:grid; gap:8px; }
.contact__dl div{ display:grid; grid-template-columns:60px 1fr; gap:10px; font-size:14px; }
.contact__dl dt{ color:rgba(255,255,255,.55); font-family:var(--f-en); letter-spacing:.1em; }
.contact__dl dd{ margin:0; }
.contact__btns{ margin-top:30px; display:flex; flex-wrap:wrap; gap:10px; }
.cform{ padding:clamp(24px,3vw,44px); border-radius:var(--r-xl); background:rgba(255,255,255,.96); color:var(--ink); box-shadow:0 40px 100px -40px rgba(0,0,0,.6); }
.cform__title{ font-family:var(--f-min); font-size:24px; color:var(--navy); }
.cform__note{ margin-top:6px; font-size:12.5px; color:var(--muted); }
.cform__grid{ display:grid; gap:14px; margin:24px 0 20px; }
.fl{ position:relative; display:block; }
.fl input, .fl textarea{ width:100%; border:1.5px solid var(--line); border-radius:16px; background:#fff; padding:24px 16px 10px; font-size:16px; outline:none; transition:border-color .3s, box-shadow .3s; resize:vertical; }
.fl textarea{ padding-top:30px; min-height:180px; line-height:1.8; }
.fl textarea::placeholder{ color:transparent; }
.fl textarea:focus::placeholder{ color:#98a2b3; font-size:13px; }
.fl > span{ position:absolute; left:17px; top:17px; font-size:15px; color:var(--muted); pointer-events:none; transition:all .35s var(--ease); }
.fl input:focus, .fl textarea:focus{ border-color:var(--blue); box-shadow:0 0 0 4px rgba(30,111,208,.12); }
.fl input:focus + span, .fl input:not(:placeholder-shown) + span,
.fl textarea:focus + span, .fl textarea:not(:placeholder-shown) + span{ top:7px; font-size:11px; color:var(--blue); font-weight:700; letter-spacing:.08em; }
.fl--seg{ display:flex; flex-direction:column; gap:8px; }
.fl--seg > span.fl__label{ position:static; }
.fl__label{ font-size:12.5px; font-weight:700; color:var(--ink-2); }
.seg{ display:flex; gap:6px; padding:5px; border-radius:16px; background:var(--cream); }
.seg label{ flex:1; }
.seg input{ position:absolute; opacity:0; pointer-events:none; }
.seg span{ display:block; text-align:center; padding:10px 6px; border-radius:12px; font-weight:700; font-size:14px; color:var(--muted); transition:all .4s var(--ease); cursor:pointer; }
.seg input:checked + span{ background:#fff; color:var(--navy); box-shadow:0 6px 16px -8px rgba(13,36,73,.4); }
.seg input:focus-visible + span{ outline:3px solid var(--yellow); }
.cform__status{ margin-top:12px; font-weight:700; font-size:14px; min-height:1.5em; }
.cform__status.ok{ color:#15803d; } .cform__status.ng{ color:#b91c1c; }
.cform__to{ font-size:12px; color:var(--muted); }
.cform__send.is-loading span{ opacity:.6; }
@media (max-width:900px){ .contact__grid{ grid-template-columns:1fr; } }

/* ---------- CTA band (sub pages) ---------- */
.ctaband{ padding:clamp(70px,9vw,120px) 0; background:var(--grad); color:#fff; overflow:hidden; }
.ctaband::before{ content:""; position:absolute; inset:0; background:radial-gradient(50% 80% at 90% 0%, rgba(255,255,255,.25), transparent 60%); }
.ctaband__inner{ position:relative; display:flex; justify-content:space-between; align-items:center; gap:30px; flex-wrap:wrap; }
.ctaband__title{ font-family:var(--f-min); font-size:clamp(28px,3.6vw,46px); line-height:1.4; margin-top:12px; }
.ctaband__btns{ display:flex; flex-wrap:wrap; gap:12px; }

/* ---------- Footer ---------- */
.gf{ background:var(--navy); color:rgba(255,255,255,.85); padding-bottom:30px; overflow:hidden; }
.gf__marquee{ padding:44px 0 20px; border-bottom:1px solid rgba(255,255,255,.1); overflow:hidden; }
.gf__marquee .marquee__track{ animation:marq 40s linear infinite; }
.gf__marquee span{ display:flex; align-items:center; gap:.5em; font-family:var(--f-en); font-weight:600; font-size:clamp(40px,7vw,100px); line-height:1.1; color:rgba(255,255,255,.1); white-space:nowrap; padding-right:.5em; }
.gf__marquee i{ width:.3em; height:.3em; border-radius:50%; background:var(--green); opacity:.6; }
@keyframes marq{ to{ transform:translateX(-50%); } }
.gf__grid{ display:grid; grid-template-columns:auto 1.2fr 1fr; gap:clamp(24px,5vw,80px); padding-top:56px; padding-bottom:40px; align-items:start; }
.gf__brand img{ width:170px; height:auto; aspect-ratio:auto; object-fit:contain; background:#fff; border-radius:28px; padding:16px; }
.gf__name{ font-weight:700; font-size:18px; color:#fff; margin-bottom:10px; }
.gf__info p{ font-size:13.5px; line-height:2; }
.gf__info a:hover{ color:var(--yellow-2); }
.gf__nav{ display:grid; grid-template-columns:1fr 1fr; gap:6px 24px; font-size:14px; }
.gf__nav a{ position:relative; padding:4px 0; transition:color .3s, padding .5s var(--ease); }
.gf__nav a:hover{ color:var(--yellow-2); padding-left:8px; }
.gf__bottom{ display:flex; justify-content:space-between; align-items:center; border-top:1px solid rgba(255,255,255,.1); padding-top:24px; font-family:var(--f-en); font-size:12px; letter-spacing:.1em; }
.gf__top{ display:flex; align-items:center; gap:10px; }
.gf__top svg{ width:40px; height:40px; padding:10px; border-radius:50%; background:rgba(255,255,255,.1); fill:#fff; transition:transform .5s var(--ease), background .4s; }
.gf__top:hover svg{ transform:translateY(-4px); background:var(--blue); }
@media (max-width:900px){ .gf__grid{ grid-template-columns:1fr; } .gf__brand img{ width:130px; } }

/* ---------- Mobile dock ---------- */
.dock{ display:none; }
@media (max-width:760px){
  body{ padding-bottom:74px; }
  .dock{ position:fixed; left:10px; right:10px; bottom:calc(10px + env(safe-area-inset-bottom)); z-index:7800; display:grid; grid-template-columns:repeat(3,1fr); gap:6px; padding:6px; border-radius:22px; background:rgba(255,255,255,.82); backdrop-filter:blur(18px) saturate(1.4); -webkit-backdrop-filter:blur(18px) saturate(1.4); box-shadow:0 20px 40px -20px rgba(13,36,73,.5); border:1px solid rgba(255,255,255,.8); transition:transform .6s var(--ease); }
  .dock.is-hidden{ transform:translateY(140%); }
  .dock a{ display:flex; align-items:center; justify-content:center; gap:6px; height:50px; border-radius:16px; font-weight:700; font-size:14px; color:#fff; }
  .dock svg{ width:18px; height:18px; fill:currentColor; }
  .dock__tel{ background:linear-gradient(135deg,#2f80ed,#1756b5); }
  .dock__line{ background:#06C755; }
  .dock__form{ background:linear-gradient(135deg,#FFD35C,#F5A623); color:#3b2600 !important; }
}

/* ---------- Modal ---------- */
.modal{ position:fixed; inset:0; z-index:8500; display:grid; place-items:center; padding:20px; visibility:hidden; }
.modal.is-open{ visibility:visible; }
.modal__scrim{ position:absolute; inset:0; background:rgba(8,20,45,.55); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); opacity:0; transition:opacity .6s var(--ease); }
.modal.is-open .modal__scrim{ opacity:1; }
.modal__panel{ position:relative; width:min(980px,100%); max-height:calc(100svh - 40px); overflow:auto; display:grid; grid-template-columns:1fr 1fr; background:#fff; border-radius:var(--r-xl); box-shadow:0 60px 120px -40px rgba(0,0,0,.6); opacity:0; transform:translateY(40px) scale(.96); transition:opacity .5s var(--ease), transform .8s var(--ease); overscroll-behavior:contain; }
.modal.is-open .modal__panel{ opacity:1; transform:none; }
.modal__media{ position:relative; min-height:300px; overflow:hidden; }
.modal__media img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transform:scale(1.15); transition:transform 1.6s var(--ease); }
.modal.is-open .modal__media img{ transform:scale(1); }
.modal__content{ padding:clamp(28px,4vw,52px); display:flex; flex-direction:column; }
.modal__num{ font-family:var(--f-en); font-weight:600; color:var(--blue); letter-spacing:.2em; }
.modal__title{ font-family:var(--f-min); font-size:clamp(22px,2.4vw,30px); color:var(--navy); margin-top:8px; line-height:1.5; }
.modal__body{ margin-top:20px; color:var(--ink-2); line-height:2; font-size:15px; }
.modal__body p + p{ margin-top:14px; }
.modal__body b{ color:var(--navy); background:linear-gradient(transparent 60%, rgba(245,183,30,.35) 60%); }
.modal__actions{ margin-top:auto; padding-top:28px; display:flex; flex-wrap:wrap; gap:10px; }
.modal__close{ position:absolute; right:16px; top:16px; z-index:3; width:48px; height:48px; border-radius:50%; background:#fff; box-shadow:0 10px 30px -10px rgba(0,0,0,.3); transition:transform .6s var(--ease); }
.modal__close:hover{ transform:rotate(90deg); }
.modal__close span{ position:absolute; left:15px; right:15px; top:23px; height:2px; background:var(--navy); border-radius:2px; transform:rotate(45deg); }
.modal__close span + span{ transform:rotate(-45deg); }
.modal--video .modal__panel{ width:min(1200px,100%); grid-template-columns:1fr; background:#000; }
.modal--video .modal__content{ display:none; }
.modal--video .modal__media{ min-height:0; aspect-ratio:16/9; }
.modal--video .modal__media video{ position:absolute; inset:0; width:100%; height:100%; }
@media (max-width:760px){ .modal__panel{ grid-template-columns:1fr; } .modal__media{ min-height:200px; aspect-ratio:16/10; } }

.toast{ position:fixed; left:50%; bottom:100px; z-index:9600; transform:translate(-50%,20px); padding:12px 22px; border-radius:999px; background:var(--navy); color:#fff; font-weight:700; font-size:14px; opacity:0; pointer-events:none; transition:all .5s var(--ease); box-shadow:var(--shadow); }
.toast.is-show{ opacity:1; transform:translate(-50%,0); }

/* =========================================================
   Sub pages
========================================================= */
.phero{ position:relative; padding:calc(var(--header-h) + clamp(60px,9vw,120px)) 0 clamp(50px,7vw,90px); overflow:hidden; }
.phero__bgword{ position:absolute; right:-2vw; top:50%; transform:translateY(-40%); font-family:var(--f-en); font-weight:700; font-size:clamp(90px,19vw,300px); line-height:.8; color:var(--navy); opacity:.04; white-space:nowrap; pointer-events:none; letter-spacing:-.03em; }
.crumb{ display:flex; gap:10px; align-items:center; font-family:var(--f-en); font-size:12px; letter-spacing:.14em; color:var(--muted); margin-bottom:24px; }
.crumb a:hover{ color:var(--blue); }
.phero__en{ font-family:var(--f-en); font-weight:600; font-size:clamp(46px,8vw,120px); line-height:1; letter-spacing:-.02em; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; padding-bottom:.1em; }
.phero__jp{ font-family:var(--f-min); font-size:clamp(22px,2.6vw,34px); color:var(--navy); margin-top:10px; letter-spacing:.1em; }
.phero__lead{ margin-top:22px; max-width:760px; color:var(--ink-2); }
.phero__index{ list-style:none; padding:0; margin:34px 0 0; display:flex; flex-wrap:wrap; gap:10px; }
.phero__index a{ display:inline-flex; align-items:center; gap:10px; padding:12px 20px; border-radius:999px; background:#fff; border:1px solid var(--line); font-weight:700; font-size:14px; color:var(--navy); transition:all .45s var(--ease); }
.phero__index a:hover{ background:var(--navy); color:#fff; }
.phero__index span{ font-family:var(--f-en); color:var(--blue); }
.phero__index a:hover span{ color:var(--yellow-2); }
.block{ padding:clamp(60px,8vw,120px) 0; }
.block--white{ background:#fff; border-radius:var(--r-xl); }
.block--paper{ background:var(--paper); }

/* about */
.about__canva{ position:relative; border-radius:var(--r-xl); overflow:hidden; background:#fff; box-shadow:var(--shadow); border:1px solid var(--line); }
.about__canva .ratio{ position:relative; padding-top:56.25%; }
.about__canva iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.about__bar{ display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; margin-top:18px; }
.about__bar a.link{ font-weight:700; color:var(--blue); display:inline-flex; gap:8px; align-items:center; }
.about__bar a.link:hover{ text-decoration:underline; }

/* access */
.access__grid{ display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(20px,3vw,40px); align-items:stretch; }
.access__card{ padding:clamp(28px,3.4vw,50px); border-radius:var(--r-xl); background:#fff; box-shadow:var(--shadow); display:flex; flex-direction:column; gap:22px; }
.access__card h2{ font-family:var(--f-min); color:var(--navy); font-size:26px; }
.access__dl{ margin:0; display:grid; gap:0; border-top:1px solid var(--line); }
.access__dl div{ display:grid; grid-template-columns:90px 1fr; gap:14px; padding:16px 0; border-bottom:1px solid var(--line); }
.access__dl dt{ font-weight:700; color:var(--muted); font-size:13px; }
.access__dl dd{ margin:0; font-weight:700; color:var(--navy); }
.access__dl a{ color:var(--blue); }
.access__note{ padding:16px 18px; border-radius:16px; background:#fdf6e3; font-size:13.5px; color:#6b4b00; }
.access__map{ border-radius:var(--r-xl); overflow:hidden; min-height:460px; box-shadow:var(--shadow); position:relative; background:#e8e4da; }
.access__map iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; filter:saturate(.9); }
@media (max-width:900px){ .access__grid{ grid-template-columns:1fr; } .access__map{ min-height:360px; } }

/* mission */
.m-statement{ font-family:var(--f-min); font-size:clamp(19px,5.2vw,64px); line-height:1.5; color:var(--navy); letter-spacing:.05em; }
.m-body{ margin-top:clamp(30px,4vw,50px); max-width:860px; display:grid; gap:16px; font-size:clamp(15px,1.3vw,17px); line-height:2.2; color:var(--ink-2); }
.m-vision{ background:var(--navy); color:#fff; padding:clamp(90px,11vw,160px) 0; overflow:hidden; border-radius:var(--r-xl); }
.m-vision__lead, .m-vision__tail{ font-size:clamp(15px,1.4vw,18px); color:rgba(255,255,255,.75); }
.m-vision__quote{ margin:24px 0; font-family:var(--f-min); font-size:clamp(24px,3.6vw,48px); line-height:1.7; letter-spacing:.04em; }
.m-vision__quote em{ font-style:normal; color:var(--yellow-2); }
.m-way{ margin-top:clamp(60px,8vw,110px); }
.m-way__big{ overflow:hidden; margin:30px 0; }
.m-way__big .marquee__track{ animation:marq 30s linear infinite; }
.m-way__big span{ font-family:var(--f-en); font-weight:700; font-size:clamp(64px,12vw,190px); line-height:1; white-space:nowrap; padding-right:.4em; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.m-way__sub{ font-family:var(--f-min); font-size:clamp(18px,2vw,26px); }
.m-body2{ margin-top:clamp(40px,5vw,70px); display:grid; gap:14px; max-width:860px; color:rgba(255,255,255,.82); line-height:2.2; }
.m-closing{ padding:clamp(100px,12vw,180px) 0; text-align:center; }
.m-closing__lead{ color:var(--ink-2); font-size:clamp(15px,1.4vw,18px); }
.m-closing__big{ font-family:var(--f-min); font-weight:700; font-size:clamp(56px,11vw,160px); line-height:1.2; margin-top:20px; letter-spacing:.08em; background:var(--grad); -webkit-background-clip:text; background-clip:text; color:transparent; }
.m-values__head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; margin-bottom:clamp(30px,5vw,60px); }
.m-values__lead{ color:var(--ink-2); font-family:var(--f-min); font-size:clamp(15px,1.4vw,18px); line-height:2; }
.m-values__title{ font-family:var(--f-min); font-size:clamp(34px,5vw,64px); color:var(--navy); letter-spacing:.06em; margin-top:6px; }
.vstack{ display:grid; gap:clamp(16px,2vw,24px); }
.vcard{ --c:var(--blue); position:sticky; top:calc(96px + var(--i) * 14px); display:grid; grid-template-columns:.9fr 1.1fr; gap:clamp(20px,4vw,60px); padding:clamp(28px,4vw,56px); border-radius:var(--r-xl); background:#fff; box-shadow:0 -10px 40px -20px rgba(13,36,73,.25), var(--shadow); min-height:clamp(320px,40vw,460px); transform-origin:50% 0; }
.vcard:nth-child(3n+2){ --c:var(--green); } .vcard:nth-child(3n){ --c:#E3A20C; }
.vcard:nth-child(even){ background:var(--cream); }
.vcard__num{ font-family:var(--f-en); font-weight:300; font-size:clamp(70px,9vw,140px); line-height:.9; color:var(--c); }
.vcard__name{ font-family:var(--f-min); font-size:clamp(26px,3vw,40px); color:var(--navy); margin-top:18px; }
.vcard__catch{ margin-top:10px; font-weight:700; color:var(--c); font-size:15px; line-height:1.7; }
.vcard__lead{ margin-bottom:16px; font-weight:700; color:var(--navy); }
.vcard__items{ list-style:none; margin:0; padding:0; display:grid; gap:14px; }
.vcard__items li{ position:relative; padding-left:22px; color:var(--ink-2); line-height:1.95; font-size:15px; }
.vcard__items li::before{ content:""; position:absolute; left:0; top:.8em; width:8px; height:8px; border-radius:50%; background:var(--c); }
.vcard__items b{ display:block; color:var(--navy); }
@media (max-width:860px){ .vcard{ grid-template-columns:1fr; position:relative; top:auto; } }
.hara{ background:var(--paper); padding:clamp(90px,11vw,160px) 0; border-radius:var(--r-xl) var(--r-xl) 0 0; margin-top:clamp(60px,8vw,120px); }
.hara__intro{ max-width:880px; margin-top:22px; line-height:2.2; color:var(--ink-2); font-size:clamp(15px,1.3vw,17px); }
.hara__list{ list-style:none; margin:clamp(34px,5vw,60px) 0 0; padding:0; display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(12px,1.8vw,22px); }
.hara__item{ padding:clamp(24px,3vw,40px); border-radius:var(--r-l); background:#fff; position:relative; overflow:hidden; }
.hara__no{ display:inline-grid; place-items:center; width:48px; height:48px; border-radius:50%; background:var(--navy); color:#fff; font-family:var(--f-en); font-weight:600; }
.hara__item h3{ font-size:clamp(18px,1.6vw,21px); color:var(--navy); margin-top:16px; }
.hara__item p{ margin-top:12px; color:var(--ink-2); line-height:2; font-size:14.5px; }
.hara__item p + p{ margin-top:8px; }
.hara__pdf{ margin-top:36px; }
@media (max-width:860px){ .hara__list{ grid-template-columns:1fr; } }

/* recruit */
.r-hero{ position:relative; min-height:78svh; display:flex; align-items:flex-end; color:#fff; padding:calc(var(--header-h) + 80px) 0 clamp(50px,6vw,90px); overflow:hidden; border-radius:0 0 var(--r-xl) var(--r-xl); background:var(--navy); }
.r-hero__bg{ position:absolute; inset:0; }
.r-hero__bg img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; transform:scale(1.1); transition:opacity 1.4s var(--ease), transform 7s linear; }
.r-hero__bg img.is-on{ opacity:1; transform:scale(1); }
.r-hero__bg::after{ content:""; position:absolute; inset:0; background:linear-gradient(0deg, rgba(8,20,45,.9) 0%, rgba(8,20,45,.45) 50%, rgba(8,20,45,.35) 100%); }
.r-hero .wrap{ position:relative; }
.r-hero__tag{ display:inline-block; padding:8px 16px; border-radius:999px; background:#fff; color:var(--navy); font-weight:700; font-size:13px; letter-spacing:.14em; }
.r-hero__title{ font-family:var(--f-min); font-size:clamp(32px,5.4vw,76px); line-height:1.35; letter-spacing:.04em; margin-top:18px; }
.r-hero__catch{ margin-top:16px; font-size:clamp(15px,1.6vw,20px); color:rgba(255,255,255,.9); }
.r-hero__btns{ margin-top:30px; display:flex; flex-wrap:wrap; gap:10px; }
.r-over{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(24px,5vw,80px); align-items:start; }
.r-over__text{ font-size:clamp(15px,1.3vw,17px); line-height:2.2; color:var(--ink-2); }
.r-over__text b{ color:var(--navy); background:linear-gradient(transparent 60%, rgba(245,183,30,.35) 60%); }
.chips{ display:flex; flex-wrap:wrap; gap:10px; margin-top:24px; }
.chip{ display:inline-flex; align-items:center; gap:10px; padding:12px 18px; border-radius:999px; background:#fff; border:1px solid var(--line); font-weight:700; font-size:13.5px; color:var(--navy); }
.chip i{ width:8px; height:8px; border-radius:50%; background:var(--green); }
.chip:nth-child(3n+2) i{ background:var(--blue); } .chip:nth-child(3n) i{ background:var(--yellow); }
.req{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(12px,2vw,24px); }
.req__card{ padding:clamp(26px,3vw,44px); border-radius:var(--r-l); background:#fff; box-shadow:var(--shadow); }
.req__card--must{ background:var(--navy); color:#fff; }
.req__card h3{ display:flex; align-items:center; gap:12px; font-size:20px; }
.req__card h3 span{ font-family:var(--f-en); font-size:12px; letter-spacing:.2em; padding:5px 12px; border-radius:999px; background:var(--yellow); color:var(--navy); }
.req__card ul{ list-style:none; margin:20px 0 0; padding:0; display:grid; gap:12px; }
.req__card li{ position:relative; padding-left:30px; line-height:1.9; }
.req__card li::before{ content:""; position:absolute; left:0; top:.35em; width:20px; height:20px; border-radius:50%; background:var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z'/%3E%3C/svg%3E") center/14px no-repeat; }
.req__card--must li b{ color:var(--yellow-2); }
.req__note{ margin-top:18px; font-size:13px; color:var(--muted); }
@media (max-width:860px){ .r-over, .req{ grid-template-columns:1fr; } }
.rsim{ display:grid; grid-template-columns:1.1fr .9fr; border-radius:var(--r-xl); overflow:hidden; box-shadow:var(--shadow); border:1px solid var(--line); }
.rsim .sim__grid{ grid-template-columns:repeat(3,1fr); }
.rsim__lead{ margin-bottom:26px; color:var(--ink-2); line-height:2; }
.rsim__lead b{ color:var(--navy); }
.badges{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:16px; }
.badges span{ padding:4px 12px; border-radius:999px; background:rgba(255,255,255,.12); font-size:12px; }
@media (max-width:1000px){ .rsim{ grid-template-columns:1fr; } }
@media (max-width:620px){ .rsim .sim__grid{ grid-template-columns:1fr; } }

/* reduced motion */
@media (prefers-reduced-motion: reduce){
  .respect-reduce *,.respect-reduce *::before,.respect-reduce *::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .respect-reduce [data-reveal], .respect-reduce [data-split] .ch, .respect-reduce [data-split-lines] .ln > span, .respect-reduce .hero__title .ch{ opacity:1 !important; transform:none !important; filter:none !important; }
}
.faq__side .sechead__title{ font-size:clamp(26px,3vw,44px); }

/* ---------- Gradient chars（1文字ずつ色と動き） ---------- */
.m-closing__big{ white-space:nowrap; font-size:clamp(36px,10.4vw,150px); letter-spacing:.04em; }
[data-gradchars]{ -webkit-text-fill-color:initial; }
[data-gradchars].is-split{ background:none; -webkit-background-clip:border-box; background-clip:border-box; color:inherit; }
[data-gradchars] .gc{ display:inline-block; color:var(--c); will-change:transform; transform-origin:50% 80%; }
[data-gradchars] .gc--sp{ width:.28em; }
.js [data-gradchars] .gc{ opacity:0; }
[data-gradchars].is-wave .gc{ animation:gcWave 3.6s ease-in-out infinite; animation-delay:calc(var(--i) * -.22s); }
@keyframes gcWave{ 0%,100%{ transform:translateY(0) rotate(0); } 50%{ transform:translateY(-.06em) rotate(-2deg); } }
[data-gradchars] .gc:hover{ animation:gcPop .7s cubic-bezier(.34,1.56,.64,1) both; }
@keyframes gcPop{ 0%{ transform:translateY(0) scale(1); } 40%{ transform:translateY(-.22em) scale(1.12) rotate(-6deg); } 100%{ transform:translateY(0) scale(1); } }
.m-closing__big .gc{ text-shadow:0 .08em .3em color-mix(in srgb, var(--c) 25%, transparent); }
@media (prefers-reduced-motion: reduce){ .respect-reduce [data-gradchars] .gc{ opacity:1 !important; animation:none !important; } }

img{ height:auto; }
@media (max-width:900px){ .mteaser__title{ font-size:clamp(19px,5.2vw,34px); } }

/* ===== Polish round 2 ===== */
/* nav magic line */
.gh__nav{ position:relative; }
.gh__line{ position:absolute; left:0; bottom:-4px; height:2px; width:0; border-radius:2px; background:var(--grad); opacity:0; transition:transform .55s var(--ease), width .55s var(--ease), opacity .3s; pointer-events:none; }
.gh__nav.has-line .gh__line{ opacity:1; }
.gh__nav a[aria-current="page"]::before{ display:none; }

/* hero highlight shimmer */
.hl .ch{ animation:hlShine 4.2s ease-in-out infinite; animation-delay:calc(var(--i) * .14s); }
@keyframes hlShine{ 0%,100%{ color:var(--yellow-2); } 50%{ color:#fff4cf; text-shadow:0 0 24px rgba(255,211,92,.55); } }

/* image reveal */
.js [data-imgreveal]{ clip-path:inset(100% 0% 0% 0%); }
.js [data-imgreveal].is-shown{ clip-path:none; }

/* arrow in buttons */
.btn .arw{ position:relative; z-index:2; width:28px; height:28px; margin-right:-12px; border-radius:50%; display:grid; place-items:center; overflow:hidden; background:rgba(255,255,255,.22); flex:none; }
.btn--white .arw, .btn--ghost .arw{ background:rgba(30,111,208,.1); }
.btn .arw svg{ width:14px; height:14px; fill:currentColor; transition:transform .5s var(--ease); }
.btn .arw svg + svg{ position:absolute; transform:translateX(-200%); }
.btn:hover .arw svg:first-child{ transform:translateX(200%); }
.btn:hover .arw svg + svg{ transform:translateX(0); }

/* section dots */
.secnav{ position:fixed; right:22px; top:50%; z-index:7000; transform:translateY(-50%); display:none; flex-direction:column; gap:6px; padding:10px 8px; border-radius:999px; background:rgba(255,255,255,.55); backdrop-filter:blur(14px) saturate(1.4); -webkit-backdrop-filter:blur(14px) saturate(1.4); border:1px solid rgba(255,255,255,.7); box-shadow:0 16px 40px -20px rgba(13,36,73,.4); opacity:0; transition:opacity .5s; }
.secnav.is-on{ opacity:1; }
@media (min-width:1560px){ .secnav{ display:flex; } }
.secnav a{ position:relative; width:14px; height:14px; display:grid; place-items:center; }
.secnav a::before{ content:""; width:6px; height:6px; border-radius:50%; background:rgba(13,36,73,.3); transition:all .45s var(--ease); }
.secnav a:hover::before{ background:var(--navy); }
.secnav a.is-active::before{ width:6px; height:14px; border-radius:6px; background:var(--grad); }
.secnav span{ position:absolute; right:26px; top:50%; transform:translate(8px,-50%); padding:4px 10px; border-radius:999px; background:var(--navy); color:#fff; font-family:var(--f-en); font-size:11px; letter-spacing:.14em; white-space:nowrap; opacity:0; pointer-events:none; transition:all .4s var(--ease); }
.secnav a:hover span, .secnav a.is-active span{ opacity:1; transform:translate(0,-50%); }
.secnav a.is-active:not(:hover) span{ opacity:0; }

/* footer giant word */
.gf__giant{ margin:10px 0 0; padding:0 var(--gutter); font-family:var(--f-en); font-weight:700; font-size:clamp(56px,15.5vw,250px); line-height:.95; letter-spacing:-.035em; white-space:nowrap; text-align:center; overflow:hidden; }
.gf__giant .gc{ opacity:.95; }

/* service card image follows cursor */
.svcard__media img{ translate:var(--tx,0) var(--ty,0); transition:transform 1.4s var(--ease), translate .8s var(--ease); }
.svc__track .svcard{ transform-origin:50% 100%; }

/* nicer text links */
.contact__dl a, .gf__info a, .access__dl a{ background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat; transition:background-size .5s var(--ease); }
.contact__dl a:hover, .gf__info a:hover, .access__dl a:hover{ background-size:100% 1px; }

@media (max-width:600px){
  .r-hero__title{ font-size:clamp(22px,6.6vw,40px); letter-spacing:.02em; }
  .contact__title{ font-size:clamp(24px,7vw,40px); }
  .sechead__title{ letter-spacing:.03em; }
}
@media (min-width:1101px){
  .hero__caption{ left:max(var(--gutter), calc((100vw - var(--maxw)) / 2)); }
  .badge{ right:max(var(--gutter), calc((100vw - var(--maxw)) / 2)); }
}

.no-js [data-imgreveal]{ clip-path:none; }
.no-js .curtain{ display:none; }

/* hero slideshow（動画が再生できない環境でも写真が切り替わる） */
.hero__slides{ position:absolute; inset:0; overflow:hidden; }
.hero__slides .hero__poster{ opacity:0; transform:scale(1.14); transition:opacity 1.6s var(--ease), transform 7s linear; }
.hero__slides .hero__poster.is-on{ opacity:1; transform:scale(1.02); }
.hero__video.is-playing ~ .hero__shade{ }

/* =========================================================
   組み上がる図形（shapes）
========================================================= */
.shp{ position:absolute; inset:0; pointer-events:none; z-index:0; overflow:hidden; }
.shp ~ .wrap, .shp ~ .svc__pin{ position:relative; z-index:1; }
.s{ position:absolute; display:block; width:var(--sz); height:var(--sz); rotate:var(--r); will-change:transform; --c:var(--blue); }
.s::after{ content:""; position:absolute; inset:0; border-radius:inherit; }
.c-blue{ --c:var(--blue); } .c-green{ --c:var(--green); } .c-yellow{ --c:var(--yellow); } .c-sky{ --c:var(--sky); } .c-navy{ --c:var(--navy); } .c-white{ --c:#fff; }
.s-circle{ border-radius:50%; background:var(--c); }
.s-ring{ border-radius:50%; border:3px solid var(--c); }
.s-pill{ height:calc(var(--sz) * .34); border-radius:999px; background:var(--c); }
.s-half{ height:calc(var(--sz) / 2); border-radius:var(--sz) var(--sz) 0 0; background:var(--c); }
.s-quarter{ border-radius:100% 0 0 0; background:var(--c); }
.s-dots{ background-image:radial-gradient(var(--c) 2.2px, transparent 2.6px); background-size:16px 16px; opacity:.35; }
.s-plus::before, .s-plus::after{ content:""; position:absolute; left:50%; top:0; width:26%; height:100%; margin-left:-13%; border-radius:4px; background:var(--c); }
.s-plus::after{ transform:rotate(90deg); }
.s{ animation:shpFloat calc(6s + var(--i) * .7s) ease-in-out infinite alternate; animation-delay:calc(var(--i) * -.9s); }
@keyframes shpFloat{ 0%{ translate:0 0; } 100%{ translate:0 -16px; } }
.s-ring, .s-dots{ animation-name:shpFloat, shpSpin; animation-duration:calc(6s + var(--i) * .7s), 40s; animation-timing-function:ease-in-out, linear; animation-direction:alternate, normal; }
@keyframes shpSpin{ to{ rotate:calc(var(--r) + 360deg); } }
.strength .s, .contact .s{ opacity:.85; }
.msg .s, .price .s, .mteaser .s, .faq .s, .svc .s, .phero .s{ opacity:.9; }
.msg .s-circle, .msg .s-pill, .msg .s-half, .msg .s-quarter{ opacity:.85; }
@media (max-width:760px){ .s{ width:calc(var(--sz) * .55); height:calc(var(--sz) * .55); } .s-pill{ height:calc(var(--sz) * .19); } .s-half{ height:calc(var(--sz) * .275); } }
.phero .shp{ z-index:0; }
.phero > .wrap{ position:relative; z-index:1; }

/* icons */
.ico{ width:28px; height:28px; display:block; }
.ico > *{ stroke-dasharray:100; stroke-dashoffset:100; transition:stroke-dashoffset 1.6s var(--ease); }
.is-drawn .ico > *{ stroke-dashoffset:0; }
.no-js .ico > *{ stroke-dashoffset:0; }
.svcard{ position:relative; }
.svcard__ico{ position:relative; z-index:2; align-self:flex-start; margin:-30px 0 -34px 22px; width:60px; height:60px; border-radius:50%; background:#fff; color:var(--c); display:grid; place-items:center; box-shadow:0 12px 26px -12px rgba(13,36,73,.45); animation:icoBob 3.2s ease-in-out infinite; transition:transform .7s cubic-bezier(.34,1.56,.64,1), background .4s, color .4s; }
.svcard:nth-child(2n) .svcard__ico{ animation-delay:-1.1s; } .svcard:nth-child(3n) .svcard__ico{ animation-delay:-2s; }
.svcard:hover .svcard__ico{ transform:rotate(-12deg) scale(1.14); background:var(--c); color:#fff; }
.svcard__body{ padding-top:40px; }
@keyframes icoBob{ 0%,100%{ translate:0 0; } 50%{ translate:0 -5px; } }
.scard__top{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }
.scard__ico{ width:58px; height:58px; border-radius:18px; display:grid; place-items:center; color:var(--c); background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.14); animation:icoBob 3.6s ease-in-out infinite; }
.scard:nth-child(2) .scard__ico{ animation-delay:-.9s; } .scard:nth-child(3) .scard__ico{ animation-delay:-1.8s; } .scard:nth-child(4) .scard__ico{ animation-delay:-2.7s; }
.scard__ico .ico{ width:30px; height:30px; }
.scard:hover .scard__ico{ background:var(--c); color:var(--navy); }

/* moving icons already on the page */
.msg__heart{ animation:heartFloat 5s ease-in-out infinite; }
@keyframes heartFloat{ 0%,100%{ translate:0 0; rotate:-6deg; } 50%{ translate:0 -14px; rotate:6deg; } }
.m-values__head img{ animation:heartFloat 5s ease-in-out infinite; }
.rbanner__arrow{ animation:arrowNudge 2.4s ease-in-out infinite; }
@keyframes arrowNudge{ 0%,100%{ translate:0 0; } 50%{ translate:6px 0; } }
.hara__no{ transition:transform .5s cubic-bezier(.34,1.56,.64,1); }
.hara__item:hover .hara__no{ transform:rotate(-12deg) scale(1.15); }
.acc__q{ transition:transform .6s cubic-bezier(.34,1.56,.64,1); }
.acc__item:hover .acc__q{ transform:rotate(-12deg) scale(1.1); }
.mteaser__vals span{ transition:transform .6s cubic-bezier(.34,1.56,.64,1); }
.mteaser__vals a:hover span{ transform:scale(1.25) rotate(-8deg); }

/* 見出しの改行バランス（文節で折り返し、行の長さを均等に） */
h1, h2, h3, .sechead__title, .m-statement, .mteaser__title, .contact__title, .ctaband__title, .r-hero__title, .msg__t1, .phero__jp, .rbanner__txt b, .svc__endt{ text-wrap:balance; word-break:auto-phrase; }
.hara .sechead__title{ font-size:clamp(24px,3.4vw,46px); }
p, li, dd, summary{ word-break:auto-phrase; text-wrap:pretty; }

/* 文字分割見出し：単語単位で改行 */
.wd, .nb{ display:inline-block; white-space:nowrap; }
.hara__title{ font-size:clamp(24px,3vw,44px); }
