/* Asume HP 共通の見た目。色は今のまま（白・ミント・ティール・墨）。動きの形はロゴのダイヤに揃える */
:root{
  --white:#FFFFFF; --bg:#F5F7F6; --ink:#0D1414; --text:#3A4646; --mute:#667471;
  --mint:#15FDDC; --teal:#0FA79B; --teal-d:#0B7F76; --pale:#EFFBF8;
  --line:rgba(13,20,20,.1); --line-d:rgba(255,255,255,.14);
  --jp:"Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;
  --en:"Outfit","Helvetica Neue",sans-serif;
  --min:"Shippori Mincho B1","Hiragino Mincho ProN",serif;
  --sho:"Yuji Syuku",serif;
  --p:clamp(20px,6vw,84px);
  --ez:cubic-bezier(.2,.7,0,1);
  --ez2:cubic-bezier(.65,0,.15,1);
  --sv:100vh;
}
@supports (height:100svh){ :root{ --sv:100svh; } }
*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
html,body{ overflow-x:clip; }
body{ margin:0; background:var(--white); color:var(--text); font-family:var(--jp); line-height:2; font-size:15px; font-feature-settings:"palt"; -webkit-font-smoothing:antialiased; line-break:strict; }
/* 短い文は言葉の切れ目で折り返す。長い文は最後の行が1字にならないように */
h1,h2,h3,summary,.lead,.sec-lead,.sub,.d,.desc,.tl .t,.tl .s,.word span,.stack p,.gov-grid p,.why3 p,.why-list p,.steps p,.vision p{ word-break:auto-phrase; overflow-wrap:anywhere; }
p,li,dd{ text-wrap:pretty; }
@media (pointer:fine){ html{ scrollbar-width:thin; scrollbar-color:var(--teal) transparent; } }
::selection{ background:var(--mint); color:var(--ink); }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
h1,h2,h3,p,ul,ol,dl,dd,figure{ margin:0; padding:0; }
ul,ol{ list-style:none; }
a:focus-visible,button:focus-visible,summary:focus-visible{ outline:2px solid var(--teal); outline-offset:3px; }
section,[id]{ scroll-margin-top:84px; }
.en{ font-family:var(--en); }
.frame{ width:100%; max-width:1280px; margin-inline:auto; padding-inline:var(--p); }
.mark{ display:inline-block; background:url(/favicon.svg) center/contain no-repeat; }
.pc{ display:none; }
@media (min-width:900px){ .pc{ display:initial; } .sp{ display:none; } }

/* ---------- 文字の小物 ---------- */
.tag{ display:flex; align-items:center; gap:12px; font-family:var(--en); font-weight:600; font-size:11.5px; letter-spacing:.32em; color:var(--teal); line-height:1; margin:0 0 20px; }
.tag::before{ content:""; width:7px; height:7px; background:var(--mint); transform:rotate(45deg); border-radius:1.5px; box-shadow:0 0 12px var(--mint); }
.h2{ color:var(--ink); font-weight:700; font-size:clamp(27px,4.3vw,58px); line-height:1.42; letter-spacing:.01em; }
.h2 .ln{ display:block; }
.h2.sm{ font-size:clamp(25px,3vw,40px); }
.on-dark .h2,.h2.w{ color:#fff; }
.h2 em,.mint-em{ font-style:normal; color:var(--teal-d); }
.more{ display:inline-flex; align-items:center; gap:12px; font-weight:700; font-size:14px; color:var(--ink); padding:6px 0; position:relative; line-height:1.4; }
.more::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:currentColor; transform-origin:right; transition:transform .5s var(--ez); }
.more:hover::after{ transform:scaleX(0); }
.more .ar{ font-family:var(--en); color:var(--teal); transition:transform .4s var(--ez); }
.more:hover .ar{ transform:translateX(6px); }
.on-dark .more,.more.w{ color:#fff; }
.on-dark .more .ar,.more.w .ar{ color:var(--mint); }

.btn{ display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:50px; padding:12px 26px; border-radius:999px; font-weight:700; font-size:14px; line-height:1.3; border:0; cursor:pointer; position:relative; overflow:hidden; isolation:isolate; font-family:var(--jp); transition:transform .4s var(--ez), box-shadow .4s, color .3s; }
.btn .ar{ font-family:var(--en); transition:transform .4s var(--ez); }
.btn:hover .ar{ transform:translateX(5px); }
.btn:active{ transform:scale(.97); }
.btn.g{ background:linear-gradient(120deg,var(--teal-d),var(--teal) 55%,#14CDBA); color:#fff; box-shadow:0 16px 34px -14px rgba(11,127,118,.75); }
.btn.g::before{ content:""; position:absolute; z-index:-1; inset:0; background:var(--mint); transform:translateY(102%); transition:transform .5s var(--ez); }
.btn.g:hover{ color:var(--ink); }
.btn.g:hover::before{ transform:none; }
.btn.g::after{ content:""; position:absolute; top:0; left:-60%; width:40%; height:100%; background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.5),rgba(255,255,255,0)); transform:skewX(-18deg); animation:btnshine 4.6s infinite; }
@keyframes btnshine{ 0%,72%{ left:-60%; } 92%,100%{ left:150%; } }
.btn.o{ background:rgba(255,255,255,.08); color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.45); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px); }
.btn.o:hover{ background:#fff; color:var(--ink); }
.btn.k{ background:#fff; color:var(--ink); box-shadow:inset 0 0 0 1px var(--line); }
.btn.k:hover{ background:var(--ink); color:#fff; }
.btn.w{ background:#fff; color:var(--ink); }
.btn.w:hover{ background:var(--mint); }

/* ---------- 進み具合 ---------- */
.progress{ position:fixed; top:0; left:0; height:2.5px; width:100%; z-index:70; background:linear-gradient(90deg,var(--teal),var(--mint)); box-shadow:0 0 12px rgba(21,253,220,.8); transform:scaleX(0); transform-origin:left; pointer-events:none; }

/* ---------- ヘッダー ---------- */
.hd{ position:fixed; z-index:60; top:12px; left:50%; translate:-50% 0; width:min(1280px,calc(100% - 20px)); height:58px; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:0 8px 0 16px; border-radius:999px; color:#fff; transition:background .45s, color .45s, box-shadow .45s, opacity .5s; }
.hd.on{ background:rgba(255,255,255,.76); -webkit-backdrop-filter:blur(18px) saturate(1.6); backdrop-filter:blur(18px) saturate(1.6); color:var(--ink); box-shadow:0 14px 40px -18px rgba(13,20,20,.35), inset 0 0 0 1px rgba(255,255,255,.7); }
.brand{ display:inline-flex; align-items:center; gap:4px; font-weight:800; font-size:15px; letter-spacing:.01em; white-space:nowrap; line-height:1; }
.brand .mark{ width:30px; height:30px; transition:transform .9s var(--ez); }
.brand:hover .mark{ transform:rotate(360deg); }
.gnav{ display:flex; align-items:center; gap:6px; }
.gnav .lk{ display:none; }
.pill{ display:inline-flex; align-items:center; height:42px; padding:0 18px; border-radius:999px; font-weight:700; font-size:12.5px; white-space:nowrap; transition:transform .35s var(--ez), background .3s, color .3s; }
.pill:hover{ transform:translateY(-1px); }
.pill.dark{ display:none; background:var(--ink); color:#fff; }
.pill.mint{ background:var(--mint); color:var(--ink); box-shadow:0 8px 24px -8px rgba(21,253,220,.9); }
.burger{ width:42px; height:42px; border:0; border-radius:50%; background:rgba(255,255,255,.14); color:inherit; display:grid; place-items:center; cursor:pointer; padding:0; transition:background .3s; }
.hd.on .burger{ background:rgba(13,20,20,.06); }
.burger i,.burger i::before{ display:block; width:18px; height:1.7px; background:currentColor; border-radius:2px; transition:transform .45s var(--ez), translate .45s var(--ez); }
.burger i{ translate:0 -3.5px; }
.burger i::before{ content:""; translate:0 7px; }
.menu-open .burger i{ translate:0 0; transform:rotate(45deg); }
.menu-open .burger i::before{ translate:0 0; transform:rotate(-90deg); }
.menu-open .hd{ color:#fff; background:transparent; box-shadow:none; -webkit-backdrop-filter:none; backdrop-filter:none; }
.menu-open .hd .pill{ opacity:0; pointer-events:none; }
.menu-open{ overflow:hidden; }
@media (min-width:900px){
  .hd{ padding:0 8px 0 20px; }
  .gnav{ gap:8px; }
  .gnav .lk{ display:block; padding:0 14px; font-weight:600; font-size:13.5px; position:relative; }
  .gnav .lk::after{ content:""; position:absolute; left:14px; right:14px; bottom:-6px; height:1.5px; background:var(--mint); transform:scaleX(0); transform-origin:left; transition:transform .45s var(--ez); }
  .gnav .lk:hover::after,.gnav .lk[aria-current]::after{ transform:none; }
  .pill.dark{ display:inline-flex; }
  .burger{ display:none; }
}
.menu{ position:fixed; inset:0; z-index:55; background:var(--ink); color:#fff; padding:96px var(--p) 36px; display:flex; flex-direction:column; visibility:hidden; clip-path:polygon(calc(100% - 40px) 41px,calc(100% - 40px) 41px,calc(100% - 40px) 41px,calc(100% - 40px) 41px); transition:clip-path .8s var(--ez2), visibility 0s .8s; overflow:auto; }
.menu::before{ content:""; position:absolute; right:-30vw; bottom:-20vw; width:90vw; height:90vw; background:radial-gradient(closest-side,rgba(21,253,220,.22),rgba(21,253,220,0)); pointer-events:none; }
.menu-open .menu{ visibility:visible; clip-path:polygon(calc(100% - 40px) calc(41px - 240vmax),calc(100% - 40px + 240vmax) 41px,calc(100% - 40px) calc(41px + 240vmax),calc(100% - 40px - 240vmax) 41px); transition:clip-path .8s var(--ez2), visibility 0s; }
.menu a.big{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; font-weight:700; font-size:clamp(24px,7vw,34px); line-height:1.3; padding:17px 0; border-bottom:1px solid var(--line-d); opacity:0; transform:translateY(22px); transition:opacity .5s, transform .7s var(--ez); position:relative; }
.menu a.big[aria-current]{ color:var(--mint); }
.menu a.big small{ font-family:var(--en); font-weight:500; font-size:11px; letter-spacing:.24em; color:var(--mint); }
.menu-open .menu a.big{ opacity:1; transform:none; transition-delay:calc(.16s + var(--i)*.06s); }
.menu .foot-cta{ margin-top:26px; opacity:0; transition:opacity .6s .55s; }
.menu-open .menu .foot-cta{ opacity:1; }

/* ---------- 入る時のダイヤ／ページの切り替え ---------- */
#op{ display:none; position:fixed; inset:0; z-index:40; background:#fff; place-items:center; }
html.op #op{ display:grid; }
#op svg{ width:clamp(112px,20vmin,170px); height:auto; overflow:visible; }
#op .f{ fill:none; stroke:url(#opg); stroke-width:19; stroke-dasharray:760; stroke-dashoffset:760; animation:opdraw 1s .08s var(--ez2) forwards; }
#op .e{ fill:url(#opg1); opacity:0; transform-origin:145px 148px; transform:scale(.8); animation:opin .6s .6s var(--ez) forwards; }
@keyframes opdraw{ to{ stroke-dashoffset:0; } }
@keyframes opin{ to{ opacity:1; transform:none; } }
#op.gone{ opacity:0; transition:opacity .3s; }
html.op .hd,html.op-run .hd{ opacity:0; pointer-events:none; }

#wipe{ position:fixed; inset:0; z-index:90; pointer-events:none; overflow:hidden; visibility:hidden; }
#wipe i{ position:absolute; left:50%; top:50%; width:150vmax; height:150vmax; margin:-75vmax 0 0 -75vmax; background:linear-gradient(135deg,var(--mint),#14CDBA 45%,var(--teal-d)); border-radius:8%; transform:rotate(45deg) scale(0); transition:transform .5s var(--ez2); }
#wipe b{ position:absolute; left:50%; top:50%; width:64px; height:64px; margin:-32px 0 0 -32px; background:url(/favicon.svg) center/contain no-repeat; filter:brightness(0) invert(1); opacity:0; transition:opacity .2s; }
.wipe-in #wipe,.wipe-out #wipe{ visibility:visible; pointer-events:auto; }
.wipe-in #wipe i{ transform:rotate(45deg) scale(1); transition:none; }
.wipe-in #wipe b{ opacity:1; }
.wipe-out #wipe i{ transform:rotate(45deg) scale(1); }
.wipe-out #wipe b{ opacity:1; transition-delay:.2s; }

/* ---------- 指の跡・カーソル ---------- */
.tap{ position:fixed; z-index:80; width:64px; height:64px; margin:-32px 0 0 -32px; pointer-events:none; border:1.5px solid var(--mint); border-radius:12px; box-shadow:0 0 18px rgba(21,253,220,.7), inset 0 0 12px rgba(21,253,220,.35); animation:tap .7s var(--ez) forwards; }
@keyframes tap{ from{ transform:rotate(45deg) scale(.2); opacity:1; } to{ transform:rotate(45deg) scale(1.25); opacity:0; } }
.cur,.cur-d{ position:fixed; left:0; top:0; z-index:85; pointer-events:none; rotate:45deg; }
.cur-d{ width:7px; height:7px; margin:-3.5px 0 0 -3.5px; background:var(--mint); border-radius:1.5px; box-shadow:0 0 12px var(--mint); }
.cur{ width:30px; height:30px; margin:-15px 0 0 -15px; border-radius:22%; border:1px solid rgba(15,167,155,.65); display:grid; place-items:center; transition:width .35s var(--ez), height .35s var(--ez), margin .35s var(--ez), background .3s, border-color .3s; font-family:var(--en); font-size:11px; font-weight:600; letter-spacing:.14em; color:var(--ink); }
.cur.on{ width:48px; height:48px; margin:-24px 0 0 -24px; background:rgba(21,253,220,.2); border-color:var(--mint); }
.cur.view{ width:74px; height:74px; margin:-37px 0 0 -37px; background:var(--mint); border-color:var(--mint); }
.cur span{ opacity:0; rotate:-45deg; transition:opacity .2s; }
.cur.view span{ opacity:1; }

/* ---------- 共通の登場 ---------- */
.fx .rv{ opacity:0; transform:translateY(28px); transition:opacity .9s var(--ez), transform 1.1s var(--ez); transition-delay:var(--d,0s); }
.fx .rv.in{ opacity:1; transform:none; }
.fx .chars i.c{ display:inline-block; opacity:0; transform:translateY(.9em) rotate(5deg); transform-origin:left bottom; font-style:inherit; transition:opacity .5s, transform .95s var(--ez); transition-delay:calc(var(--i)*.028s + var(--d,0s)); }
.fx .chars.in i.c{ opacity:1; transform:none; }
.chars .ln{ display:block; overflow:hidden; padding-block:.04em; margin-block:-.04em; }
/* 写真はダイヤから開く */
.open{ overflow:hidden; position:relative; background:var(--pale); }
.open img{ width:100%; height:100%; object-fit:cover; filter:saturate(.9); }
.fx .open img{ clip-path:polygon(50% 50%,50% 50%,50% 50%,50% 50%); transform:scale(1.22); transition:clip-path 1.25s var(--ez2), transform 1.7s var(--ez), filter .8s; will-change:transform; }
.fx .open.in img{ clip-path:polygon(50% -55%,155% 50%,50% 155%,-55% 50%); transform:scale(1.02); }
.open figcaption{ position:absolute; left:14px; bottom:12px; z-index:2; color:#fff; font-size:11.5px; font-weight:600; letter-spacing:.06em; line-height:1.5; text-shadow:0 1px 8px rgba(3,18,15,.8); }

/* ---------- ヒーロー ---------- */
.hero{ position:relative; height:calc(var(--sv)*1.1); background:#fff; }
.hero-stage{ position:sticky; top:0; height:var(--sv); overflow:hidden; }
.hero-frame{ position:absolute; inset:0; overflow:hidden; background:#0b1a18; clip-path:inset(calc(var(--hp,0)*2.4svh) calc(var(--hp,0)*4vw) round calc(var(--hp,0)*32px)); }
html.op .hero-frame{ clip-path:path("M0 0Z"); }
.hero-img{ position:absolute; inset:-4% 0; width:100%; height:108%; object-fit:cover; object-position:62% 38%; transform:scale(calc(1.12 - var(--hp,0)*.08)) translateY(calc(var(--hp,0)*2.5%)); animation:burns 22s ease-in-out infinite alternate; transform-origin:60% 60%; }
@keyframes burns{ from{ scale:1; } to{ scale:1.07; } }
.gl{ position:absolute; inset:0; width:100%; height:100%; display:block; pointer-events:none; }
.hero .gl{ mix-blend-mode:screen; }
.hero-veil{ position:absolute; inset:0; background:linear-gradient(180deg,rgba(6,25,22,.5),rgba(6,25,22,.06) 26%,rgba(6,25,22,.12) 48%,rgba(6,25,22,.84) 100%); }
.motto{ position:absolute; right:calc(var(--p) - 2px); top:clamp(92px,13svh,128px); writing-mode:vertical-rl; font-family:var(--sho); color:#fff; letter-spacing:.11em; line-height:1.3; font-size:clamp(21px,min(8.1vw,calc((var(--sv) - 345px)/14.6)),58px); text-shadow:0 2px 6px rgba(3,18,15,.75), 0 6px 30px rgba(3,18,15,.6), 0 0 46px rgba(21,253,220,.35); transform:translateY(calc(var(--hp,0)*-44px)); }
.motto span.m{ display:block; white-space:nowrap; }
.motto span.m:last-child{ margin-top:1.9em; margin-right:.36em; }
.fx .motto i.c{ display:inline-block; font-style:normal; opacity:0; transform:translateY(-.5em) scale(1.35); filter:blur(10px); }
.fx.ready .motto i.c{ opacity:1; transform:none; filter:blur(0); transition:opacity .8s, transform 1.2s var(--ez), filter .9s; transition-delay:calc(.15s + var(--i)*.055s); }
.hero-b{ position:absolute; left:var(--p); right:var(--p); bottom:calc(66px + env(safe-area-inset-bottom,0px)); color:#fff; }
.hero-brand{ font-family:var(--en); font-weight:600; font-size:10.5px; letter-spacing:.2em; line-height:1.5; margin-bottom:12px; color:rgba(255,255,255,.86); display:flex; align-items:center; gap:10px; }
.hero-brand::before{ content:""; width:7px; height:7px; background:var(--mint); transform:rotate(45deg); box-shadow:0 0 12px var(--mint); flex:none; }
.hero h1{ font-weight:700; font-size:clamp(24px,3.6vw,50px); line-height:1.44; letter-spacing:.015em; text-shadow:0 2px 24px rgba(3,18,15,.65); }
.hero h1 em{ font-style:normal; color:var(--mint); }
.ctas{ display:flex; gap:10px; margin-top:18px; flex-wrap:wrap; }
.ctas .btn{ flex:1 1 0; min-width:0; white-space:nowrap; padding-inline:16px; font-size:13px; }
.fx .hero-b > *{ opacity:0; transform:translateY(24px); }
.fx.ready .hero-b > *{ opacity:1; transform:none; transition:opacity .9s, transform 1.1s var(--ez); }
.fx.ready .hero-b > :nth-child(2){ transition-delay:.3s; }
.fx.ready .hero-b > :nth-child(3){ transition-delay:.5s; }
.newspill{ position:absolute; left:var(--p); right:var(--p); bottom:calc(14px + env(safe-area-inset-bottom,0px)); height:40px; padding:0 14px; display:flex; align-items:center; gap:10px; border-radius:999px; background:rgba(255,255,255,.14); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); color:#fff; font-size:12px; font-weight:500; box-shadow:inset 0 0 0 1px rgba(255,255,255,.22); transition:background .3s, color .3s; }
.newspill:hover{ background:#fff; color:var(--ink); }
.newspill b{ font-family:var(--en); font-size:10px; letter-spacing:.2em; color:var(--mint); }
.newspill:hover b{ color:var(--teal-d); }
.newspill .nd{ display:none; font-family:var(--en); }
.newspill .nt{ overflow:hidden; white-space:nowrap; text-overflow:ellipsis; flex:1; }
.newspill .nv{ display:none; font-family:var(--en); font-size:11px; }
.fx .newspill{ opacity:0; }
.fx.ready .newspill{ opacity:1; transition:opacity 1s .8s, background .3s, color .3s; }
.cue{ display:none; }
@media (min-width:900px){
  .motto{ right:calc(var(--p) + 3vw); top:clamp(104px,14svh,150px); font-size:clamp(26px,min(4.1vw,calc((var(--sv) - 250px)/16.6)),62px); }
  .hero-b{ right:auto; max-width:760px; bottom:44px; }
  .hero-brand{ font-size:12px; }
  .ctas{ margin-top:22px; }
  .ctas .btn{ flex:0 0 auto; padding-inline:30px; font-size:14px; min-width:190px; }
  .newspill{ left:auto; right:var(--p); bottom:44px; width:min(420px,32vw); height:46px; padding:0 18px; }
  .newspill .nd{ display:block; font-size:11.5px; opacity:.75; }
  .newspill .nv{ display:block; }
  .cue{ display:block; position:absolute; left:50%; bottom:0; width:1px; height:66px; background:rgba(255,255,255,.24); overflow:hidden; }
  .cue::after{ content:""; position:absolute; left:0; top:0; width:1px; height:50%; background:var(--mint); animation:cue 2.2s var(--ez2) infinite; }
  @keyframes cue{ from{ transform:translateY(-100%); } to{ transform:translateY(220%); } }
}

/* ---------- 流れる大きな文字 ---------- */
.mq{ position:relative; overflow:hidden; padding:clamp(24px,3.5vw,48px) 0 clamp(14px,2vw,28px); background:#fff; }
.mq-row{ display:flex; width:max-content; align-items:center; will-change:transform; }
.mq-row span{ flex:none; white-space:nowrap; }
.mq-row.big span{ font-family:var(--en); font-weight:600; font-size:clamp(58px,12.5vw,190px); line-height:1.08; letter-spacing:-.025em; color:transparent; -webkit-text-stroke:1.2px var(--teal); }
.mq-row.big span:nth-of-type(2n){ -webkit-text-stroke:0; background:linear-gradient(100deg,var(--teal-d),#14CDBA 60%,var(--mint)); -webkit-background-clip:text; background-clip:text; }
.mq-row i{ flex:none; display:block; width:.32em; height:.32em; margin:0 .46em; background:var(--mint); transform:rotate(45deg); border-radius:15%; box-shadow:0 0 18px rgba(21,253,220,.75); }
.mq-row.big i{ font-size:clamp(58px,12.5vw,190px); }

/* ---------- 会社紹介（ダイヤが開く） ---------- */
.iris{ position:relative; height:calc(var(--sv)*1.38); background:#fff; }
.iris-stage{ position:sticky; top:0; height:var(--sv); overflow:hidden; }
.iris-t{ position:absolute; z-index:3; left:var(--p); right:var(--p); top:clamp(84px,12svh,130px); }
.iris-t p.lead{ margin:16px 0 14px; font-size:14.5px; line-height:1.95; max-width:32em; }
.iris-ph{ position:absolute; inset:0; z-index:2; background:#0b1a18; }
.iris-ph img{ position:absolute; left:0; top:calc(var(--sv)*-.25); width:100%; height:calc(var(--sv)*1.5); max-width:none; object-fit:cover; object-position:50% 47%; transform:translateY(calc((1 - var(--ip,0))*var(--sv)*.24)); }
@media (min-width:900px){ .iris-ph img{ top:calc(var(--sv)*-.11); height:calc(var(--sv)*1.22); transform:translateY(calc((1 - var(--ip,0))*var(--sv)*.1)); } }
.iris-ph::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(6,25,22,0) 55%,rgba(6,25,22,.55)); }
.iris-line{ position:absolute; inset:0; z-index:3; width:100%; height:100%; pointer-events:none; overflow:visible; }
.iris-line path{ fill:none; stroke:var(--mint); stroke-width:1.5; }
.iris-line path + path{ stroke:var(--teal); stroke-width:1; opacity:.5; }
.iris-cap{ position:absolute; z-index:4; left:var(--p); bottom:26px; color:#fff; font-size:12px; font-weight:600; letter-spacing:.08em; opacity:var(--ic,0); transform:translateY(calc((1 - var(--ic,0))*12px)); }
.still .iris{ height:auto; }
.still .iris-stage{ position:static; height:auto; padding:80px 0 0; overflow:visible; }
.still .iris-t{ position:static; padding:0 var(--p) 28px; }
.still .iris-ph{ position:relative; height:56vw; overflow:hidden; }
.still .iris-ph img{ top:0; height:100%; transform:none; }
.still .iris-line,.still .iris-cap{ display:none; }

/* ---------- 事業（横にすべる） ---------- */
.hs{ position:relative; height:calc(var(--sv) + var(--dist,0px)); background:#fff; }
.hs-stage{ position:sticky; top:0; height:var(--sv); overflow:hidden; display:flex; flex-direction:column; justify-content:center; gap:clamp(14px,2.4svh,28px); padding-top:58px; }
.hs-track{ display:flex; gap:clamp(14px,2vw,28px); width:max-content; padding-inline:var(--p); will-change:transform; align-items:stretch; }
.hs-intro{ flex:none; width:min(76vw,560px); display:flex; flex-direction:column; justify-content:center; padding-right:8px; }
.hs-intro .h2{ margin-bottom:18px; }
.svc-card{ flex:none; width:min(78vw,480px); will-change:transform; }
.svc-card a{ display:block; }
.svc-card figure{ will-change:transform; height:min(calc(var(--sv)*.6),120vw); border-radius:22px; overflow:hidden; position:relative; background:var(--pale); box-shadow:0 30px 60px -30px rgba(13,20,20,.45); }
.svc-card figure img{ position:absolute; inset:0 -12%; width:124%; max-width:none; height:100%; object-fit:cover; transform:translateX(calc(var(--cx,0)*7%)); filter:saturate(.88); transition:filter .6s; }
.svc-card a:hover figure img{ filter:saturate(1.05); }
.svc-card figure::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(6,25,22,.22),rgba(6,25,22,0) 30%); }
.svc-card .no{ position:absolute; z-index:2; left:16px; top:10px; font-family:var(--en); font-weight:500; font-size:clamp(44px,5vw,70px); line-height:1.1; color:#fff; letter-spacing:-.03em; text-shadow:0 2px 20px rgba(3,18,15,.55); }
.svc-card .soon{ position:absolute; z-index:2; right:14px; top:14px; font-family:var(--en); font-weight:600; font-size:10px; letter-spacing:.16em; color:var(--ink); background:var(--mint); border-radius:999px; padding:4px 11px; line-height:1.6; }
.svc-card h3{ margin-top:14px; display:flex; flex-direction:column; gap:2px; }
.svc-card h3 .t{ color:var(--ink); font-size:clamp(17px,1.5vw,21px); font-weight:700; line-height:1.45; }
.svc-card h3 .sub{ font-size:12.5px; font-weight:500; color:var(--mute); line-height:1.6; }
.hs-foot{ display:flex; align-items:center; gap:14px; padding-inline:var(--p); }
.hs-count{ font-family:var(--en); font-weight:500; font-size:13px; color:var(--mute); white-space:nowrap; font-variant-numeric:tabular-nums; }
.hs-count b{ color:var(--ink); font-weight:600; }
.hs-bar{ flex:1; height:2px; background:var(--line); position:relative; overflow:hidden; border-radius:2px; }
.hs-bar i{ position:absolute; inset:0; background:linear-gradient(90deg,var(--teal),var(--mint)); transform-origin:left; transform:scaleX(var(--hsp,0)); }
.still .hs{ height:auto; padding:70px 0 50px; }
.still .hs-stage{ position:static; height:auto; overflow:visible; padding-top:0; }
.still .hs-track{ width:auto; overflow-x:auto; }
.still .hs-foot{ display:none; }

/* ---------- 数字 ---------- */
@media (max-width:899px){
}
@media (min-width:900px){
}

/* ---------- 代表メッセージ ---------- */
.msg{ position:relative; overflow:hidden; background:linear-gradient(180deg,#fff,var(--pale)); padding:clamp(70px,10vw,140px) 0; }
.msg-kanji{ position:absolute; right:-.14em; top:50%; font-family:var(--sho); font-size:clamp(300px,52vw,760px); line-height:1; color:transparent; -webkit-text-stroke:1.2px rgba(15,167,155,.28); transform:translateY(calc(-50% + var(--ky,0px))) rotate(var(--kr,0deg)); pointer-events:none; user-select:none; }
.msg-grid{ position:relative; z-index:2; display:grid; gap:26px; }
.msg-quote{ color:var(--ink); font-family:var(--min); font-weight:700; font-size:clamp(26px,8.2vw,56px); line-height:1.55; letter-spacing:.04em; }
.msg-quote em{ font-style:normal; position:relative; color:var(--teal-d); }
.msg-quote em::after{ content:""; position:absolute; left:-.04em; right:-.04em; bottom:.08em; height:.34em; background:var(--mint); opacity:.5; z-index:-1; transform:scaleX(0); transform-origin:left; transition:transform 1s var(--ez) .7s; }
.msg-quote.in em::after{ transform:none; }
.msg-body{ max-width:34em; }
.lit{ color:var(--ink); font-family:var(--min); font-weight:600; font-size:clamp(17px,1.9vw,23px); line-height:2.05; letter-spacing:.03em; }
.lit + .lit{ margin-top:1.05em; }
.fx .lit i.c{ font-style:normal; color:rgba(13,20,20,.15); transition:color .45s; }
.fx .lit i.c.on{ color:var(--ink); }
.on-dark .lit{ color:#fff; }
.fx .on-dark .lit i.c{ color:rgba(255,255,255,.2); }
.fx .on-dark .lit i.c.on{ color:#fff; }
.msg-sign{ margin-top:26px; display:flex; flex-direction:column; gap:8px; }
.msg-sign .role{ font-family:var(--sho); font-size:13.5px; color:var(--ink); letter-spacing:.2em; opacity:.75; line-height:1.4; }
.msg-sign .name{ font-family:var(--sho); color:var(--ink); font-size:clamp(30px,3.6vw,44px); letter-spacing:.18em; line-height:1.1; }
.fx .msg-sign .name i.c{ display:inline-block; font-style:normal; opacity:0; filter:blur(9px); transform:scale(1.3); transition:opacity .7s, filter .8s, transform 1s var(--ez); transition-delay:calc(var(--i)*.14s + .15s); }
.fx .msg-sign.in .name i.c{ opacity:1; filter:none; transform:none; }
.msg .more{ margin-top:24px; }
@media (min-width:900px){
  .msg-grid{ grid-template-columns:1.1fr 1fr; gap:clamp(40px,6vw,96px); align-items:start; }
  .msg-quote{ font-size:clamp(32px,4vw,56px); }
}

/* ---------- 沿革（年が回る） ---------- */
.hist{ position:relative; background:var(--ink); color:#fff; }
.hist.pin{ height:calc(var(--sv)*1.62); }
.hist-stage{ position:sticky; top:0; height:var(--sv); overflow:hidden; display:flex; flex-direction:column; justify-content:center; padding-block:76px 26px; }
.hist .gl{ opacity:.6; }
.hist-in{ position:relative; z-index:2; width:100%; }
.hist-head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; }
.hist-year{ margin-top:clamp(14px,5svh,50px); font-family:var(--en); font-weight:500; font-size:clamp(90px,28vw,290px); line-height:1; letter-spacing:-.05em; color:#fff; display:flex; align-items:flex-end; }
.hist-year small{ font-size:.2em; letter-spacing:0; color:var(--mint); margin:0 0 .5em .4em; font-weight:500; }
.fl{ display:flex; }
.fc{ display:inline-block; position:relative; overflow:hidden; height:1.02em; width:.62em; text-align:center; }
.fc b{ position:absolute; left:0; right:0; top:0; font-weight:inherit; line-height:1.02; transition:transform .85s var(--ez), opacity .4s; }
.fc b.in{ transform:translateY(100%); opacity:0; }
.fc b.out{ transform:translateY(-100%); opacity:0; }
.hist-now{ min-height:3.2em; margin-top:clamp(8px,2svh,18px); font-weight:700; font-size:clamp(22px,3vw,40px); line-height:1.5; }
.hist-now span{ display:inline-block; animation:nowin .8s var(--ez); }
.hist-now em{ font-style:normal; color:var(--mint); }
@keyframes nowin{ from{ opacity:0; transform:translateY(16px); } to{ opacity:1; transform:none; } }
.hist-rail{ position:relative; display:grid; grid-template-columns:repeat(7,1fr); margin-top:clamp(14px,3svh,30px); padding-top:16px; }
.hist-rail::before{ content:""; position:absolute; left:calc(100%/14); right:calc(100%/14); top:6px; height:1px; background:var(--line-d); }
.hist-rail::after{ content:""; position:absolute; left:calc(100%/14); top:6px; height:1px; width:calc((100% - 100%/7)*var(--hr,0)); background:linear-gradient(90deg,var(--teal),var(--mint)); box-shadow:0 0 12px var(--mint); }
.hist-rail li{ position:relative; text-align:center; font-family:var(--en); font-size:11px; font-weight:500; color:rgba(255,255,255,.5); line-height:1.4; transition:color .4s; }
.hist-rail li::before{ content:""; position:absolute; z-index:2; left:50%; top:-15px; width:10px; height:10px; margin-left:-5px; background:var(--ink); box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.45); border-radius:2px; transform:rotate(45deg); transition:background .35s, box-shadow .35s, transform .5s var(--ez); }
.hist-rail li.on{ color:#fff; }
.hist-rail li.on::before{ background:var(--mint); box-shadow:0 0 14px var(--mint); }
.hist-rail li.cur-y::before{ transform:rotate(45deg) scale(1.5); }
.hist-rail li .jp{ display:none; font-family:var(--jp); font-size:12px; font-weight:500; margin-top:3px; }
.still .hist.pin{ height:auto; }
.still .hist-stage{ position:static; height:auto; padding-block:70px; overflow:visible; }
.still .hist-year,.still .hist-now{ display:none; }
.still .hist-rail{ grid-template-columns:1fr; gap:14px; text-align:left; padding-top:24px; }
.still .hist-rail::before,.still .hist-rail::after,.still .hist-rail li::before{ display:none; }
.still .hist-rail li{ text-align:left; color:#fff; font-size:14px; }
.still .hist-rail li .jp{ display:inline; margin-left:12px; font-size:14px; }
@media (min-width:900px){
  .hist-rail li .jp{ display:block; }
  .hist-year{ font-size:clamp(150px,22vw,330px); }
}

/* ---------- お知らせ＋採用 ---------- */
.nr{ padding:clamp(66px,9vw,120px) 0; background:#fff; }
.nr-grid{ display:grid; gap:44px; }
.news-head{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:14px; }
.news-list a{ position:relative; display:grid; grid-template-columns:1fr 20px; gap:2px 14px; align-items:center; padding:15px 0; border-top:1px solid var(--line); overflow:hidden; isolation:isolate; transition:padding .4s var(--ez); }
.news-list a:last-child{ border-bottom:1px solid var(--line); }
.news-list a::before{ content:""; position:absolute; z-index:-1; inset:0; background:var(--pale); transform:scaleX(0); transform-origin:left; transition:transform .55s var(--ez); }
.news-list a:hover{ padding-inline:14px; }
.news-list a:hover::before{ transform:none; }
.news-list time{ grid-column:1; font-family:var(--en); font-weight:500; font-size:12px; color:var(--teal); letter-spacing:.04em; line-height:1.5; }
.news-list span{ grid-column:1; color:var(--ink); font-weight:500; font-size:14px; line-height:1.6; }
.news-list .ar{ grid-column:2; grid-row:1/3; font-family:var(--en); font-style:normal; color:var(--teal); transition:transform .4s var(--ez); }
.news-list a:hover .ar{ transform:translateX(4px); }
.recruit-card{ position:relative; overflow:hidden; color:#fff; background:var(--ink); border-radius:26px; padding:clamp(30px,4vw,52px); }
.recruit-card .gl{ opacity:.8; }
.recruit-card > *:not(.gl):not(.bigmark){ position:relative; z-index:2; }
.recruit-card h2{ font-size:clamp(25px,2.9vw,38px); font-weight:700; line-height:1.45; }
.recruit-card h2 em{ font-style:normal; color:var(--mint); }
.r-jobs{ margin:20px 0 24px; }
.r-jobs li{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:0 12px; padding:13px 0; border-top:1px solid var(--line-d); line-height:1.5; }
.r-jobs li:last-child{ border-bottom:1px solid var(--line-d); }
.r-jobs b{ font-size:14.5px; }
.r-jobs .k{ font-size:12px; opacity:.72; }
.bigmark{ position:absolute; right:-54px; bottom:-54px; width:230px; height:230px; opacity:.2; transform:rotate(var(--mr,0deg)); }
@media (min-width:900px){ .nr-grid{ grid-template-columns:1.12fr 1fr; gap:clamp(36px,5vw,72px); align-items:start; } }

/* ---------- お問い合わせの帯 ---------- */
.cta{ position:relative; overflow:hidden; text-align:center; padding:clamp(76px,11vw,150px) 0; background:linear-gradient(180deg,#fff,var(--pale) 60%,#D9FBF4); }
.cta .frame{ position:relative; z-index:2; }
.cta .lead{ margin:16px auto 28px; font-size:14px; max-width:30em; line-height:1.9; }
.duo{ display:flex; flex-direction:column; align-items:center; gap:12px; }
.duo .btn{ min-width:min(100%,280px); }
.cdia{ position:absolute; z-index:1; left:50%; top:50%; width:clamp(320px,52vw,740px); aspect-ratio:1; margin:calc(clamp(320px,52vw,740px)/-2) 0 0 calc(clamp(320px,52vw,740px)/-2); border:1px solid rgba(15,167,155,.3); border-radius:14%; transform:rotate(calc(45deg + var(--cr,0deg))); }
.cdia::before,.cdia::after{ content:""; position:absolute; border-radius:14%; border:1px solid rgba(15,167,155,.2); inset:11%; }
.cdia::after{ inset:24%; background:radial-gradient(closest-side,rgba(21,253,220,.42),rgba(21,253,220,0)); border-color:rgba(21,253,220,.55); }
@media (min-width:640px){ .duo{ flex-direction:row; justify-content:center; } }

/* ---------- フッター ---------- */
.ft{ position:relative; overflow:hidden; background:var(--ink); color:#fff; padding-top:clamp(50px,6vw,86px); }
.ft .brand{ font-size:18px; color:#fff; }
.ft .brand .mark{ width:34px; height:34px; }
.foot{ display:grid; gap:30px; }
.addr{ margin-top:14px; font-size:12.5px; color:rgba(255,255,255,.66); line-height:1.8; }
.ft .motto2{ margin-top:12px; font-family:var(--sho); font-size:17px; letter-spacing:.08em; line-height:1.8; color:#fff; }
.ft nav{ display:grid; grid-template-columns:1fr 1fr; gap:4px 18px; }
.ft nav a{ display:inline-flex; font-size:13.5px; font-weight:500; padding:6px 0; color:rgba(255,255,255,.82); transition:color .3s, transform .35s var(--ez); }
.ft nav a:hover{ color:var(--mint); transform:translateX(4px); }
.foot-big{ display:flex; justify-content:space-between; margin-top:clamp(26px,4vw,56px); padding-inline:clamp(8px,1.6vw,22px); font-family:var(--en); font-weight:600; font-size:9.6vw; line-height:1; letter-spacing:-.03em; white-space:nowrap; color:rgba(255,255,255,.1); overflow:hidden; }
.foot-big i{ display:inline-block; font-style:normal; transition:transform 1.1s var(--ez), color .5s; transition-delay:calc(var(--i)*.035s); }
.fx .foot-big i{ transform:translateY(102%); }
.fx .foot-big.in i{ transform:none; }
.foot-big i:hover{ color:var(--mint); transition-delay:0s; }
.legal{ display:flex; justify-content:space-between; gap:12px; padding:14px var(--p) calc(14px + env(safe-area-inset-bottom,0px)); font-family:var(--en); font-size:11px; color:rgba(255,255,255,.5); line-height:1.6; }
@media (min-width:900px){ .foot{ grid-template-columns:1fr auto; } .ft nav{ grid-template-columns:repeat(5,auto); gap:4px 26px; } }

/* ---------- 下のページの頭 ---------- */
.phead{ position:relative; overflow:hidden; background:var(--ink); color:#fff; padding:clamp(120px,19svh,190px) 0 clamp(36px,5vw,64px); }
.phead .gl{ opacity:.95; }
.phead .frame{ position:relative; z-index:2; }
.phead .tag{ color:var(--mint); }
.phead h1{ font-weight:700; font-size:clamp(38px,6.2vw,84px); line-height:1.25; letter-spacing:.02em; color:#fff; }
.phead .lead{ margin-top:16px; max-width:40em; font-size:14.5px; line-height:1.95; color:rgba(255,255,255,.84); }
.phead-ghost{ position:absolute; right:-.04em; bottom:-.2em; font-weight:600; font-size:clamp(70px,17vw,280px); line-height:1; letter-spacing:-.04em; color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.16); white-space:nowrap; pointer-events:none; }
.lnav{ display:flex; gap:7px; margin-top:24px; overflow-x:auto; scrollbar-width:none; margin-inline:calc(var(--p)*-1); padding-inline:var(--p); padding-block:2px; }
.lnav::-webkit-scrollbar{ display:none; }
@media (max-width:899px){ .lnav{ -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent); mask-image:linear-gradient(90deg,#000 calc(100% - 44px),transparent); } }
.lnav a{ flex:none; height:36px; display:inline-flex; align-items:center; padding:0 14px; border-radius:999px; font-size:12px; font-weight:500; color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.26); transition:background .3s, color .3s; }
.lnav a:hover{ background:var(--mint); color:var(--ink); }
.sec{ padding:clamp(60px,8.5vw,120px) 0; position:relative; }
.sec.pale{ background:var(--pale); }
.sec.gray{ background:var(--bg); }
.sec.dark{ background:var(--ink); color:#fff; }
.sec .sec-lead{ margin-top:14px; font-size:14.5px; line-height:1.95; max-width:38em; }

/* ---------- 企業情報 ---------- */
.mis-grid{ display:grid; gap:26px; }
.mis-ph{ border-radius:22px; aspect-ratio:16/11; }
.vision{ margin-top:clamp(36px,5vw,70px); padding-top:clamp(26px,3vw,40px); border-top:1px solid var(--line); }
.vision h3{ color:var(--ink); font-size:clamp(21px,2.8vw,38px); line-height:1.5; font-weight:700; margin-top:0; }
.vision p:not(.tag){ margin-top:10px; font-size:14.5px; line-height:1.9; }
.words{ display:grid; gap:10px; margin-top:clamp(26px,3vw,44px); }
.word{ position:relative; overflow:hidden; padding:18px 20px 18px; border-radius:18px; background:var(--pale); transition:transform .5s var(--ez), background .4s, color .4s; isolation:isolate; }
.word::before{ content:""; position:absolute; z-index:-1; right:-40px; top:-40px; width:120px; height:120px; background:var(--mint); opacity:.32; border-radius:20%; transform:rotate(45deg); transition:transform .9s var(--ez), opacity .4s; }
.word:hover{ transform:translateY(-4px); }
.word:hover::before{ transform:rotate(225deg) scale(1.3); opacity:.55; }
.word b{ display:block; font-family:var(--sho); font-weight:400; color:var(--ink); font-size:30px; line-height:1.3; letter-spacing:.08em; }
.word small{ display:block; font-family:var(--en); color:var(--teal-d); font-size:10.5px; letter-spacing:.22em; font-weight:600; line-height:1.4; margin:2px 0 8px; }
.word span{ display:block; font-size:13.5px; line-height:1.75; }
.stack{ display:grid; gap:14px; margin-top:26px; }
.stack article{ position:sticky; top:calc(84px + var(--i)*14px); background:#fff; border-radius:22px; padding:clamp(22px,3vw,38px); box-shadow:0 26px 60px -34px rgba(13,20,20,.4), inset 0 0 0 1px var(--line); overflow:hidden; }
.stack article::after{ content:""; position:absolute; right:-26px; bottom:-26px; width:92px; height:92px; background:linear-gradient(135deg,var(--mint),var(--teal)); opacity:.2; border-radius:20%; transform:rotate(45deg); }
.stack .vn{ font-family:var(--en); font-size:11.5px; font-weight:600; letter-spacing:.24em; color:var(--teal); line-height:1; }
.stack h3{ color:var(--ink); font-size:clamp(23px,2.6vw,32px); font-weight:700; line-height:1.4; margin:10px 0 8px; }
.stack p{ font-size:14px; line-height:1.85; }
.gov-grid{ display:grid; gap:0; margin-top:24px; }
.gov-grid li{ padding:16px 0; border-top:1px solid var(--line); position:relative; }
.gov-grid li:last-child{ border-bottom:1px solid var(--line); }
.gov-grid h3{ display:flex; align-items:center; gap:11px; color:var(--ink); font-size:15.5px; font-weight:700; line-height:1.5; }
.gov-grid h3::before{ content:""; width:8px; height:8px; flex:none; background:var(--mint); border-radius:2px; transform:rotate(45deg); box-shadow:0 0 10px rgba(21,253,220,.9); }
.gov-grid p{ margin-top:5px; font-size:13.5px; line-height:1.8; }
.tl-grid{ display:grid; gap:26px; }
.tl-wrap{ position:relative; }
.tl-wrap::before,.tl-wrap::after{ content:""; position:absolute; left:6px; top:12px; bottom:12px; width:1.5px; background:var(--line-d); }
.tl-wrap::after{ background:linear-gradient(180deg,var(--teal),var(--mint)); box-shadow:0 0 12px rgba(21,253,220,.7); transform:scaleY(var(--tp,0)); transform-origin:top; }
.still .tl-wrap::after{ transform:none; }
.tl{ position:relative; padding:0 0 26px 34px; }
.tl:last-child{ padding-bottom:0; }
.tl::before{ content:""; position:absolute; z-index:2; left:1.5px; top:12px; width:11px; height:11px; background:var(--ink); box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.4); transform:rotate(45deg); border-radius:2px; transition:background .4s, box-shadow .4s, transform .6s var(--ez); }
.tl.lit-on::before{ background:var(--mint); box-shadow:0 0 16px var(--mint); transform:rotate(45deg) scale(1.2); }
.tl .y{ display:block; font-family:var(--en); font-weight:500; font-size:clamp(25px,3vw,38px); line-height:1.25; letter-spacing:-.01em; color:rgba(255,255,255,.4); transition:color .5s; font-variant-numeric:tabular-nums; }
.tl.lit-on .y{ color:#fff; }
.tl .t{ color:#fff; font-size:15.5px; font-weight:700; line-height:1.55; margin-top:4px; }
.tl .s{ font-size:13px; color:rgba(255,255,255,.66); line-height:1.75; margin-top:2px; }
.mile{ color:var(--mint); font-weight:800; }
.soonb{ display:inline-block; margin-left:8px; font-family:var(--en); font-weight:600; font-size:10px; letter-spacing:.16em; color:var(--ink); background:var(--mint); border-radius:999px; padding:1px 9px; vertical-align:.14em; }
.prof-grid{ display:grid; gap:30px; }
.profile{ margin-top:18px; }
.profile > div{ display:grid; grid-template-columns:92px 1fr; gap:12px; padding:13px 0; border-top:1px solid var(--line); font-size:13.5px; line-height:1.75; transition:background .3s, padding .4s var(--ez); }
.profile > div:last-child{ border-bottom:1px solid var(--line); }
.profile > div:hover{ background:var(--pale); padding-inline:10px; }
.profile dt{ color:var(--mute); font-weight:500; font-size:12.5px; }
.profile dd{ color:var(--ink); font-weight:500; }
.profile small{ color:var(--mute); font-weight:400; }
.dd-biz span{ display:block; }
.prof-side{ display:grid; gap:12px; align-content:start; }
.oshot{ border-radius:18px; aspect-ratio:16/9; }
.lg-card{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:18px 20px; border-radius:18px; background:var(--pale); }
.lg{ display:flex; align-items:center; gap:4px; font-weight:800; color:var(--ink); font-size:18px; line-height:1; }
.lg .mark{ width:40px; height:40px; }
.lg-card .c{ font-size:11.5px; color:var(--mute); line-height:1.5; }
@media (min-width:900px){
  .mis-grid{ grid-template-columns:1.05fr 1fr; gap:clamp(36px,5vw,76px); align-items:center; }
  .mis-grid .h2{ font-size:clamp(28px,3.2vw,46px); }
  .words{ grid-template-columns:repeat(3,1fr); gap:14px; }
  .stack{ gap:18px; }
  .gov-grid{ grid-template-columns:1fr 1fr; column-gap:clamp(30px,4vw,60px); }
  .gov-grid li:nth-last-child(2){ border-bottom:1px solid var(--line); }
  .tl-grid{ grid-template-columns:.7fr 1.3fr; gap:clamp(40px,6vw,90px); }
  .tl-head{ position:sticky; top:110px; align-self:start; }
  .prof-grid{ grid-template-columns:1.2fr 1fr; gap:clamp(36px,5vw,76px); }
  .tl{ padding-bottom:32px; }
}

/* ---------- 事業内容 ---------- */
.bz{ padding:clamp(44px,6vw,90px) 0; }
.bz .frame{ display:grid; gap:20px; }
.bz-ph{ border-radius:22px; aspect-ratio:16/11; }
.bz-ph img{ filter:saturate(.9); }
.bz .bno{ display:flex; align-items:baseline; gap:12px; font-family:var(--en); font-weight:500; font-size:clamp(46px,6vw,84px); line-height:1; letter-spacing:-.03em; color:transparent; -webkit-text-stroke:1.2px var(--teal); }
.bz .bno small{ font-size:11px; font-weight:600; letter-spacing:.22em; color:var(--teal-d); -webkit-text-stroke:0; }
.bz h2{ color:var(--ink); font-size:clamp(23px,2.9vw,38px); font-weight:700; line-height:1.42; margin-top:10px; }
.bz .sub{ display:block; font-size:12.5px; font-weight:500; color:var(--mute); line-height:1.6; margin-top:4px; }
.bz .d{ margin-top:12px; font-size:14.5px; line-height:1.9; }
.chips{ display:flex; flex-wrap:wrap; gap:6px; margin-top:14px; }
.chips li{ display:inline-flex; align-items:center; gap:6px; padding:5px 13px; border-radius:999px; background:var(--pale); color:var(--ink); font-size:12.5px; font-weight:500; line-height:1.5; }
.chips .nw{ font-family:var(--en); font-weight:700; font-size:9.5px; letter-spacing:.1em; color:var(--ink); background:var(--mint); border-radius:99px; padding:0 6px; }
.bz.alt{ background:var(--bg); }
.bz.alt .chips li{ background:#fff; }
.soont{ display:inline-block; margin-left:6px; font-family:var(--en); font-weight:600; font-size:10px; letter-spacing:.16em; color:var(--ink); background:var(--mint); border-radius:999px; padding:2px 10px; vertical-align:middle; -webkit-text-stroke:0; }
@media (min-width:900px){
  .bz .frame{ grid-template-columns:1.1fr 1fr; gap:clamp(36px,5vw,80px); align-items:center; }
  .bz.alt .bz-ph{ order:2; }
}
.belt{ position:relative; overflow:hidden; background:var(--ink); padding:clamp(46px,6vw,80px) 0; transform:skewY(-1.6deg); margin-block:clamp(16px,2vw,30px); }
.belt h2{ color:#fff; margin-bottom:22px; transform:skewY(1.6deg); }
.belt .mq-row{ margin-top:8px; }
.belt .mq-row span{ font-size:clamp(17px,2vw,26px); font-weight:700; color:#fff; line-height:2; }
.belt .mq-row.rev span{ color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.72); }
.belt .mq-row i{ font-size:clamp(17px,2vw,26px); margin:0 .7em; }
.why3{ display:grid; gap:12px; margin-top:26px; counter-reset:w; }
.why3 li{ position:relative; overflow:hidden; border-radius:20px; background:#fff; padding:22px 22px 24px; box-shadow:inset 0 0 0 1px var(--line); transition:transform .5s var(--ez), box-shadow .5s; isolation:isolate; }
.why3 li::before{ counter-increment:w; content:"0" counter(w); display:block; font-family:var(--en); font-weight:500; font-size:clamp(34px,3.6vw,50px); line-height:1.15; letter-spacing:-.03em; color:var(--teal); }
.why3 li::after{ content:""; position:absolute; z-index:-1; inset:auto -30% -70% -30%; height:100%; background:radial-gradient(closest-side,rgba(21,253,220,.42),rgba(21,253,220,0)); opacity:0; transition:opacity .5s, transform .8s var(--ez); transform:translateY(30px); }
.why3 li:hover{ transform:translateY(-5px); box-shadow:inset 0 0 0 1px var(--mint), 0 26px 50px -28px rgba(11,127,118,.5); }
.why3 li:hover::after{ opacity:1; transform:none; }
.why3 h3{ color:var(--ink); font-size:17px; font-weight:700; line-height:1.5; margin-top:6px; }
.why3 p{ margin-top:6px; font-size:13.5px; line-height:1.85; }
.head-row{ display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:8px 20px; }
.steps{ display:grid; gap:0; margin-top:24px; position:relative; }
.steps li{ position:relative; padding:14px 0 16px 58px; border-top:1px solid var(--line); }
.steps li:last-child{ border-bottom:1px solid var(--line); }
.steps .n{ position:absolute; left:0; top:13px; font-family:var(--en); font-weight:500; font-size:30px; line-height:1.2; letter-spacing:-.02em; color:var(--teal); }
.steps h3{ color:var(--ink); font-size:16px; font-weight:700; line-height:1.5; }
.steps p{ font-size:13.5px; line-height:1.8; margin-top:2px; }
.flow-go{ margin-top:22px; }
.faq-list{ margin-top:20px; }
.faq-list details{ border-top:1px solid var(--line); }
.faq-list details:last-child{ border-bottom:1px solid var(--line); }
.faq-list summary{ display:grid; grid-template-columns:22px 1fr 22px; gap:8px; align-items:center; padding:15px 0; list-style:none; cursor:pointer; color:var(--ink); font-size:14.5px; font-weight:700; line-height:1.6; }
.faq-list summary::-webkit-details-marker{ display:none; }
@supports (interpolate-size:allow-keywords){
  .faq-list{ interpolate-size:allow-keywords; }
  .faq-list details::details-content{ height:0; overflow:clip; transition:height .55s var(--ez), content-visibility .55s allow-discrete; }
  .faq-list details[open]::details-content{ height:auto; }
}
.faq-list .q,.faq-list .a{ font-family:var(--en); font-weight:600; color:var(--teal); font-size:15px; }
.faq-list .tg{ font-family:var(--en); font-weight:400; color:var(--teal); font-size:20px; line-height:1; text-align:center; transition:transform .5s var(--ez); }
.faq-list details[open] .tg{ transform:rotate(135deg); }
.ans{ display:grid; grid-template-columns:22px 1fr; gap:8px; padding:0 22px 18px 0; font-size:13.5px; line-height:1.85; }
.ans p{ animation:ansin .6s var(--ez); }
@keyframes ansin{ from{ opacity:0; transform:translateY(-8px); } to{ opacity:1; transform:none; } }
@media (min-width:900px){
  .why3{ grid-template-columns:repeat(3,1fr); gap:16px; }
  .steps{ grid-template-columns:repeat(4,1fr); border-top:0; gap:16px; }
  .steps li,.steps li:last-child{ padding:16px 0 0; border:0; border-top:1px solid var(--line); }
  .steps .n{ position:static; display:block; font-size:40px; margin-bottom:4px; }
  .faq-grid{ display:grid; grid-template-columns:.7fr 1.3fr; gap:clamp(40px,6vw,90px); }
  .faq-list{ margin-top:0; }
}

/* ---------- 採用 ---------- */
.rc-hero{ position:relative; overflow:hidden; background:#0b1a18; color:#fff; min-height:calc(var(--sv)*.94); display:flex; align-items:flex-end; padding:110px 0 clamp(36px,5vw,70px); }
.rc-hero img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transform:scale(calc(1.1 + var(--rp,0)*.06)); }
.rc-hero .gl{ mix-blend-mode:screen; }
.rc-hero::after{ content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(6,25,22,.55),rgba(6,25,22,.26) 40%,rgba(6,25,22,.86)); }
.rc-hero .frame{ position:relative; z-index:3; }
.rc-ghost{ position:absolute; z-index:2; left:calc(var(--p) - .04em); top:82px; font-weight:600; font-size:clamp(70px,19vw,290px); line-height:.94; letter-spacing:-.03em; color:transparent; -webkit-text-stroke:1px rgba(255,255,255,.4); pointer-events:none; }
.rc-hero h1{ font-weight:700; font-size:clamp(36px,6vw,82px); line-height:1.32; color:#fff; }
.rc-hero h1 em{ font-style:normal; color:var(--mint); }
.rc-hero .desc{ margin-top:14px; font-size:14.5px; line-height:1.9; color:rgba(255,255,255,.9); }
.job-grid{ display:grid; gap:16px; margin-top:24px; }
.job{ border-radius:24px; overflow:hidden; background:#fff; box-shadow:inset 0 0 0 1px var(--line), 0 26px 60px -40px rgba(13,20,20,.45); transition:transform .6s var(--ez); }
.job:hover{ transform:translateY(-6px); }
.job-ph{ aspect-ratio:16/9; }
.job-body{ padding:clamp(20px,2.6vw,32px); }
.job h3{ color:var(--ink); font-size:clamp(20px,2.1vw,26px); font-weight:700; line-height:1.45; }
.job h3 small{ display:block; font-size:12.5px; color:var(--teal-d); font-weight:500; margin-top:2px; }
.job .desc{ margin-top:10px; font-size:14px; line-height:1.85; }
.tags{ display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
.tags span{ padding:3px 11px; font-size:11.5px; font-weight:500; color:var(--teal-d); border-radius:99px; background:var(--pale); line-height:1.7; }
.job dl{ margin:14px 0 18px; }
.job dl > div{ display:grid; grid-template-columns:56px 1fr; padding:9px 0; border-top:1px solid var(--line); font-size:12.5px; line-height:1.7; }
.job dl > div:last-child{ border-bottom:1px solid var(--line); }
.job dt{ color:var(--mute); }
.job dd{ color:var(--ink); font-weight:500; }
.job .btn{ width:100%; }
.why-list{ margin-top:18px; }
.why-list li{ padding:14px 0; border-top:1px solid var(--line); }
.why-list li:last-child{ border-bottom:1px solid var(--line); }
.why-list h3{ color:var(--ink); font-size:16px; font-weight:700; line-height:1.5; }
.why-list p{ font-size:13.5px; line-height:1.8; margin-top:3px; }
.why-ph{ border-radius:22px; aspect-ratio:16/10; }
.cap{ margin-top:clamp(28px,4vw,50px); text-align:center; font-size:13px; font-weight:700; color:var(--ink); }
.apply{ position:relative; overflow:hidden; background:var(--ink); color:#fff; border-radius:26px; padding:clamp(40px,6vw,76px) clamp(22px,4vw,60px); text-align:center; }
.apply .gl{ opacity:.9; }
.apply > *:not(.gl):not(.bigmark){ position:relative; z-index:2; }
.apply h2{ font-size:clamp(25px,3.6vw,48px); font-weight:700; line-height:1.45; }
.apply h2 em{ font-style:normal; color:var(--mint); }
.apply .lead{ margin:10px 0 22px; font-size:14px; color:rgba(255,255,255,.85); line-height:1.8; }
.apply .sub{ margin-top:12px; font-size:12px; color:rgba(255,255,255,.7); line-height:1.6; }
@media (min-width:900px){
  .job-grid{ grid-template-columns:1fr 1fr; gap:22px; }
  .why-grid{ display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(36px,5vw,76px); align-items:center; }
}
.why-grid{ display:grid; gap:24px; }

/* ---------- お知らせ ---------- */
.news-all{ display:grid; gap:0; }
.news-all .item{ padding:clamp(20px,2.6vw,34px) 0; border-top:1px solid var(--line); position:relative; }
.news-all .item:last-child{ border-bottom:1px solid var(--line); }
.news-all time{ font-family:var(--en); font-weight:500; font-size:12px; color:var(--teal); letter-spacing:.04em; line-height:1.5; display:block; }
.news-all h2{ color:var(--ink); font-size:clamp(17px,1.9vw,23px); font-weight:700; line-height:1.55; margin-top:4px; }
.news-all p{ margin-top:6px; font-size:14px; line-height:1.9; }
.news-all .item:target h2{ color:var(--teal-d); }
.nar{ max-width:820px; margin-inline:auto; padding-inline:var(--p); }

/* ---------- お問い合わせ ---------- */
form.fm{ display:grid; gap:14px; }
.fm label{ display:grid; gap:6px; color:var(--ink); font-size:13px; font-weight:700; line-height:1.6; }
.fm small{ font-weight:400; color:var(--mute); font-size:11.5px; }
.fm input,.fm select,.fm textarea{ width:100%; min-height:50px; padding:12px 16px; border-radius:14px; border:0; font:inherit; font-size:16px; font-weight:400; color:var(--ink); background:var(--bg); box-shadow:inset 0 0 0 1px transparent; transition:box-shadow .3s, background .3s; }
.fm textarea{ min-height:150px; line-height:1.75; resize:vertical; }
.fm select{ -webkit-appearance:none; appearance:none; padding-right:44px; cursor:pointer; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%230FA79B' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 18px center; }
.fm input:focus,.fm select:focus,.fm textarea:focus{ outline:0; background-color:#fff; box-shadow:inset 0 0 0 1.5px var(--teal), 0 0 0 5px rgba(21,253,220,.22); }
.fm ::placeholder{ color:var(--mute); font-size:14px; }
.fm .hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.fm .btn{ width:100%; margin-top:6px; font-size:15px; min-height:56px; }
.fm .btn.sending{ pointer-events:none; opacity:.92; }
.fm .btn.sending .ar{ width:12px; height:12px; color:transparent; overflow:hidden; border:2px solid #fff; border-radius:3px; animation:spin 1s var(--ez2) infinite; }
@keyframes spin{ from{ transform:rotate(45deg); } to{ transform:rotate(405deg); } }
.fm .note{ font-size:12px; color:var(--mute); line-height:1.7; text-align:center; }

/* ---------- 送信のあと ---------- */
.okdia{ display:block; width:clamp(72px,9vw,104px); height:auto; margin-bottom:18px; overflow:visible; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.okdia .d{ stroke:var(--mint); stroke-width:3; stroke-dasharray:240; filter:drop-shadow(0 0 8px rgba(21,253,220,.7)); }
.okdia .k{ stroke:#fff; stroke-width:4.5; stroke-dasharray:60; }
.fx .okdia .d{ animation:okdraw 1s .2s var(--ez2) backwards; }
.fx .okdia .k{ animation:okdraw2 .55s .95s var(--ez) backwards; }
@keyframes okdraw{ from{ stroke-dashoffset:240; } to{ stroke-dashoffset:0; } }
@keyframes okdraw2{ from{ stroke-dashoffset:60; } to{ stroke-dashoffset:0; } }
.back-row{ display:flex; flex-wrap:wrap; gap:10px; }

/* ---------- 動きを減らす設定の人 ---------- */
.still *,.still *::before,.still *::after{ animation:none !important; transition:none !important; }
.still .hero{ height:var(--sv); }
.still .hero-stage{ position:relative; }
