/* =========================================================
   KANAMOTO HOLDINGS 採用サイト — loader.css（初回訪問のローディング・2026-10-29 v2：落ち着いた版）
   html.is-loading のときだけ見える（付けるのは head の小さなスクリプト。2回目以降・動きを減らす設定・?static=1・JS なしでは出ない）
   FV と同じ方眼の淡い面。奥に英字（M11 と同じ Ysabeau）がゆっくり流れる
   0.1s 会社のしるしが静かに上がって出る → 0.4s 社名がオレンジの帯の後ろから現れる（M1 と同じ帯）→ 1.0s RECRUITING SITE（10/29 20:28 に短く）
   → 細い線が1.4秒かけて伸びる → 読み込みが済んだら（最短 2.4 秒）その場で静かに消える（面は動かさない）
   弾む動き（ease-back）は使わない。色・角丸・ease は tokens.css の変数だけ
   ========================================================= */
.loader { display: none; }
.is-loading .loader { display: block; }
html.is-loading, html.is-loading body { overflow: hidden; }
html.is-loading { scrollbar-gutter: stable; } /* 抜けたときにスクロールバーが出ても、横にずれないように */

.loader { position: fixed; inset: 0; z-index: 1000; cursor: progress; }
.loader__panel { position: absolute; inset: 0; }
.loader__panel {
  display: grid; place-items: center; overflow: hidden;
  background-color: var(--color-bg-page);
  background-image:
    linear-gradient(var(--grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid-line) 1px, transparent 1px);
  background-size: 24px 24px;
  background-position: -1px -1px;
}

/* 奥を流れる英字（読ませない飾り） */
.loader__flow {
  position: absolute; left: 0; top: 50%; display: flex; margin: 0; translate: 0 -50%;
  font-family: var(--font-deco); font-size: clamp(56px, 11vw, 168px); font-weight: 500; line-height: 1; letter-spacing: .16em;
  color: var(--color-tint); white-space: nowrap; pointer-events: none;
}
.loader__flow span { padding-right: .6em; }

.loader__inner { position: relative; z-index: 1; display: grid; justify-items: center; }
.loader__mark {
  position: relative; display: grid; place-items: center;
  width: 52px; height: 49px; border-radius: 14px;
  background: var(--color-brand); color: var(--color-white);
  font-size: 26px; font-weight: var(--fw-bold); line-height: 1;
}
.loader__mark::after {
  content: ""; position: absolute; left: 10px; bottom: -9px; width: 15px; height: 11px;
  background: inherit; clip-path: polygon(0 0, 100% 0, 10% 100%);
}
.loader__name { display: grid; justify-items: center; gap: 12px; margin: 30px 0 0; color: var(--color-ink); }
.loader__name-main { position: relative; display: block; font-size: 17px; font-weight: var(--fw-bold); line-height: 1.2; letter-spacing: .22em; padding-left: .22em; }
.loader__name-main::after { /* 社名の上を通り過ぎるオレンジの帯（FV のコピーと同じ） */
  content: ""; position: absolute; inset: -3px -6px; background: var(--color-brand); transform: scaleX(0); transform-origin: left center;
}
.loader__name-sub { font-size: 10px; font-weight: var(--fw-medium); line-height: 1; letter-spacing: .4em; padding-left: .4em; color: var(--color-ink-sub); }
.loader__bar { position: relative; width: 200px; height: 2px; margin-top: 36px; background: var(--color-line); overflow: hidden; }
.loader__bar span { position: absolute; inset: 0; background: var(--color-brand); transform: scaleX(0); transform-origin: left center; }
@media (min-width: 1024px) {
  .loader__mark { width: 60px; height: 56px; border-radius: 16px; font-size: 30px; }
  .loader__name-main { font-size: 20px; }
  .loader__name-sub { font-size: 11px; }
  .loader__bar { width: 240px; }
}

/* ---------- 動き（静かに。弾ませない） ---------- */
.loader__flow { animation: ld-flow 40s linear infinite, ld-fade 1.2s linear .1s both; }
.loader__mark { animation: ld-rise .8s var(--ease-out) .1s both; }
.loader__name-main { animation: ld-show .01s linear .75s both; }
.loader__name-main::after { animation: ld-band .8s var(--ease-arrow) .35s both; }
.loader__name-sub { animation: ld-fade .7s linear 1s both; }
.loader__bar { animation: ld-fade .5s linear .8s both; }
.loader__bar span { animation: ld-bar 1.4s cubic-bezier(.4, 0, .2, 1) .9s both; }

/* 抜ける（10/29 18:44 に変更）：面を動かさず、その場で静かに消える。中身は少し上がりながら先に消え、面は 0.9 秒で透けていく。
   上下に動く面は FV の登場（下から重なる影・上から重なる写真）とぶつかって行き来して見えるため使わない */
.loader.is-leaving { pointer-events: none; opacity: 0; transition: opacity .9s var(--ease-out) .2s; }
.loader.is-leaving .loader__inner { opacity: 0; transform: translateY(-12px); transition: opacity .45s linear, transform .7s var(--ease-out); }
.loader.is-leaving .loader__bar span { animation: none; transform: scaleX(1); transition: transform .3s var(--ease-out); }

@keyframes ld-flow { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes ld-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ld-rise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: translateY(0); } }
@keyframes ld-show { from { color: transparent; } to { color: var(--color-ink); } }
@keyframes ld-band { 0% { transform: scaleX(0); transform-origin: left center; } 50% { transform: scaleX(1); transform-origin: left center; } 50.01% { transform-origin: right center; } 100% { transform: scaleX(0); transform-origin: right center; } }
@keyframes ld-bar { to { transform: scaleX(.92); } }

/* ローディング中は下層の MV の写真の登場を止めておく（抜けたあとに始まる） */
.is-loading .lmv__frame { animation-play-state: paused; }
