:root{
  --paper:#FFFFFF;
  --paper-2:#F2F7FD;
  --white:#FFFFFF;
  --ink:#111827;
  --navy:#0E1B2E;
  --navy-2:#16273F;
  --ink-soft:#4B5563;
  --green:#63C01F;
  --lime:#8ED23F;
  --sky:#6FC3FF;
  --blue:#1273E6;
  --blue-deep:#0B57B0;
  --blue-tint:#E9F1FC;
  --gray:#777777;
  --line:rgba(17,24,39,.12);
  --line-strong:rgba(17,24,39,.22);
  --shadow:0 30px 60px -34px rgba(20,30,10,.35);
  --disp:"Hanken Grotesk",system-ui,sans-serif;
  --jp:"Zen Kaku Gothic New",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --rail-w:64px;
  --nav-h:76px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
/* 透かし英字のように、あえて画面外へはみ出す要素がある。
   横方向のはみ出しだけを切って、モバイルで横スクロールが出ないようにする。
   overflow-x:hidden ではなく clip を使うこと。hidden はスクロールコンテナを
   作ってしまい、代表メッセージの position:sticky が効かなくなる。 */
html,body{overflow-x:clip}
body{
  font-family:var(--jp);
  background-color:var(--paper);
  background-image:radial-gradient(rgba(17,24,39,.055) 1px, transparent 1px);
  background-size:24px 24px;
  color:var(--ink);
  font-size:16px;
  line-height:1.9;
  letter-spacing:.015em;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
button{font:inherit;background:none;border:none;cursor:pointer;color:inherit}
::selection{background:var(--blue);color:#fff}
:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:2px}

.wrap{max-width:1220px;margin:0 auto;padding:0 28px;position:relative}
@media(min-width:1100px){ .wrap{padding-left:calc(var(--rail-w) + 30px);padding-right:44px} }
.sec{padding:clamp(90px,11vw,150px) 0;position:relative}
.sec-white{background:#F7F9FC}
.sec-tint{background:var(--paper-2)}

/* ---- ghost watermark word (Linkeeth風の大きな英字見出し) ---- */
/* 透かし英字は「本文の左端」にきっちり揃える。
   .ghost-word は .wrap の“枠”を基準に配置されるので、
   .wrap の padding と同じ値を left に入れないと本文とズレる。
   （以前は left:0 だったため、PC では padding 分だけ左にはみ出していた） */
.ghost-word{position:absolute;top:-.06em;left:28px;font-family:var(--disp);font-weight:800;font-size:clamp(52px,13vw,200px);color:rgba(17,24,39,.045);white-space:nowrap;z-index:-1;pointer-events:none;user-select:none;line-height:1;letter-spacing:-.03em}
@media(min-width:1100px){ .ghost-word{left:calc(var(--rail-w) + 30px)} }
.mv-band .ghost-word,.dark .ghost-word{color:rgba(255,255,255,.05)}

/* ---- decorative connecting arrow (about/business step icons) ---- */
.step-ic{width:44px;height:44px;color:var(--blue);margin-bottom:18px}
.step-ic.is-blue{color:var(--blue)}

/* ---- shared type ---- */
.eyebrow{
  font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--blue);
  display:inline-flex;align-items:center;gap:10px;margin-bottom:22px;
}
.eyebrow::before{content:"";width:16px;height:1.5px;background:var(--blue)}
.num-tag{font-family:var(--mono);font-size:11px;letter-spacing:.18em;color:var(--gray)}
.biz-card.is-blue .biz-tag{color:var(--blue)}
.biz-card.is-blue .btn-solid{background:var(--blue)}
.biz-card.is-blue .btn-solid:hover{background:var(--blue-deep)}
.biz-card.is-blue .chip:hover{border-color:var(--blue);color:var(--blue)}
/* text-wrap:balance で行の長さを揃える。
   「導入・制作のご相談はこちらから」のように、最後の1文字だけが
   次の行に落ちて不格好になるのを防ぐ。
   対応していないブラウザでは今までどおり折り返すだけなので害はない。 */
.h2{font-family:var(--jp);font-weight:900;font-size:clamp(28px,4.2vw,46px);line-height:1.44;letter-spacing:-.01em;
  text-wrap:balance;word-break:auto-phrase}
.disp{font-family:var(--disp)}
.lede{font-size:clamp(15px,1.5vw,17px);line-height:2.05;color:var(--ink-soft);max-width:44em}

.rv{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}
/* Fail-safe: if JS never runs, above-the-fold hero content still appears
   after a short delay instead of staying invisible forever. */
.hero .rv,.hero-visual.rv{animation:forceVisible .01s 1.8s forwards}
@keyframes forceVisible{to{opacity:1;transform:none}}
.rv.in{opacity:1;transform:none}

.btn{display:inline-flex;align-items:center;gap:9px;border-radius:100px;padding:15px 26px;font-family:var(--disp);font-size:14px;font-weight:700;letter-spacing:.01em;transition:transform .15s cubic-bezier(.16,1,.3,1),background .3s,color .3s,border-color .3s}
.btn:hover{transform:translateY(-2px)}
.btn-solid{background:var(--ink);color:#fff}
.btn-solid:hover{background:var(--blue)}
.btn-line{border:1.5px solid var(--line-strong)}
.btn-line:hover{border-color:var(--ink);background:var(--ink);color:#fff}

/* ================= HEADER ================= */
.hd{position:fixed;inset:0 0 auto 0;height:var(--nav-h);z-index:150;display:flex;align-items:center;background:rgba(244,246,238,.7);backdrop-filter:blur(16px);border-bottom:1px solid transparent;transition:transform .5s cubic-bezier(.16,1,.3,1),border-color .3s}
.hd.solid{border-bottom-color:var(--line)}
.hd.up{transform:translateY(-100%)}
.hd-in{width:100%;display:flex;align-items:center;gap:16px;padding:0 28px}
@media(min-width:1100px){ .hd-in{padding-left:30px;padding-right:44px} }
.brand{display:flex;align-items:center;gap:11px}
/* ロゴはSVG。どのサイズでも輪郭が崩れない */
.brand img{width:30px;height:auto;display:block}
.brand span{font-family:var(--disp);font-weight:800;font-size:16.5px;letter-spacing:-.01em}

.gnav{display:none;align-items:center;gap:26px;margin-left:44px}
@media(min-width:1100px){ .gnav{display:flex} }
/* 英字だけだと小さくて読みにくいので、少し大きくして日本語を下に添える */
.gnav a{display:flex;flex-direction:column;gap:3px;color:var(--ink);opacity:.72;
  position:relative;padding:6px 0;transition:opacity .25s}
.gn-en{font-family:var(--mono);font-size:13px;letter-spacing:.1em;font-weight:500;line-height:1}
.gn-ja{font-family:var(--jp);font-size:10px;letter-spacing:.04em;font-weight:500;
  line-height:1;color:var(--gray)}
.gnav a.current .gn-ja{color:var(--blue);opacity:.75}
.gnav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--blue);transition:width .35s cubic-bezier(.16,1,.3,1)}
.gnav a:hover{opacity:1}
.gnav a:hover::after{width:100%}
.gnav a.current{opacity:1;color:var(--blue)}

.hd-cta{margin-left:auto;display:flex;align-items:center;gap:14px}
@media(max-width:640px){
  .brand span{display:none}
  .hd-cta .pill{display:none}
}
.pill{display:inline-flex;align-items:center;gap:8px;background:var(--blue);color:#fff;border-radius:100px;padding:10px 18px;font-family:var(--disp);font-size:12.5px;font-weight:700;transition:background .3s,transform .15s cubic-bezier(.16,1,.3,1)}
.pill:hover{background:var(--blue-deep);transform:translateY(-1px)}
.pill .ar{font-family:var(--mono);font-size:11px}

.burger{width:42px;height:42px;border:1px solid var(--line-strong);border-radius:50%;position:relative;flex:none}
.burger span{position:absolute;left:12px;width:18px;height:1.5px;background:var(--ink);transition:transform .4s cubic-bezier(.16,1,.3,1)}
.burger span:nth-child(1){top:17px}
.burger span:nth-child(2){top:23px}
.burger.on span:nth-child(1){transform:translateY(3px) rotate(45deg)}
.burger.on span:nth-child(2){transform:translateY(-3px) rotate(-45deg)}
@media(min-width:1100px){ .burger{display:none} }

/* ---- left rail (desktop index nav) ---- */
/* rail nav (廃止): グローバルナビ(.gnav)に統合したため削除 */

/* ---- mobile menu overlay ---- */
.menu{position:fixed;inset:0;z-index:160;background:linear-gradient(180deg,var(--navy-2),var(--navy));color:#fff;
  clip-path:circle(0% at calc(100% - 44px) 40px);
  transition:clip-path .7s cubic-bezier(.76,0,.24,1);
  display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain}
.menu.on{clip-path:circle(150% at calc(100% - 44px) 40px)}
/* うっすらとしたドット地紋でサイト本体と world を揃える */
.menu::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
  background-size:26px 26px}

.menu-bar{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;
  height:var(--nav-h);padding:0 28px;border-bottom:1px solid rgba(255,255,255,.12);flex:none}
.menu-bar .mb-brand{display:flex;align-items:center;gap:10px;font-family:var(--disp);font-weight:800;font-size:15px;color:#fff}
/* 白抜き版のSVGを使うので、filterで無理やり反転させる必要はない */
.menu-bar .mb-brand img{width:26px;height:auto}
.menu-close{width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.28);background:none;position:relative;flex:none;cursor:pointer;transition:background .25s,transform .3s}
.menu-close:hover{background:rgba(255,255,255,.1);transform:rotate(90deg)}
.menu-close::before,.menu-close::after{content:"";position:absolute;left:12px;top:20px;width:18px;height:1.5px;background:#fff}
.menu-close::before{transform:rotate(45deg)}
.menu-close::after{transform:rotate(-45deg)}

.menu-body{position:relative;z-index:1;flex:1;display:flex;flex-direction:column;justify-content:center;padding:32px 28px}
.menu ol{list-style:none}
.menu li{overflow:hidden;border-bottom:1px solid rgba(255,255,255,.1)}
.menu li:first-child{border-top:1px solid rgba(255,255,255,.1)}
.menu a{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:16px;
  padding:20px 4px;color:#fff;
  transform:translateY(110%);transition:transform .6s cubic-bezier(.16,1,.3,1),background .25s;}
.menu a:hover{background:rgba(255,255,255,.05)}
.menu a i{font-family:var(--mono);font-style:normal;font-size:11px;letter-spacing:.1em;color:var(--sky);align-self:center}
.menu a .m-en{font-family:var(--disp);font-weight:800;font-size:clamp(26px,7vw,38px);letter-spacing:-.02em;line-height:1.15;display:block}
.menu a .m-ja{display:block;font-size:11.5px;letter-spacing:.12em;color:rgba(255,255,255,.5);margin-top:5px}
.menu a .m-ar{font-family:var(--mono);font-size:14px;color:rgba(255,255,255,.35);transition:transform .3s,color .3s}
.menu a:hover .m-ar{transform:translateX(4px);color:var(--sky)}
.menu.on a{transform:none}
.menu li:nth-child(1) a{transition-delay:.10s}
.menu li:nth-child(2) a{transition-delay:.16s}
.menu li:nth-child(3) a{transition-delay:.22s}
.menu li:nth-child(4) a{transition-delay:.28s}
.menu li:nth-child(5) a{transition-delay:.34s}

.menu-foot{position:relative;z-index:1;padding:0 28px 40px;flex:none}
/* 行き先が分かるように、ボタンの上に小さくラベルを置く */
.menu .m-cta-label{display:block;text-align:center;margin-bottom:12px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;
  color:rgba(255,255,255,.42);text-transform:uppercase}
/* ここは必ず `.menu .menu-cta` と書くこと。
   `.menu a{display:grid;...}` の方が詳細度が高いため、
   `.menu-cta` 単独だと display:grid のまま上書きされ、
   文字が左に寄って矢印だけ中央に浮く不具合になる。 */
.menu .menu-cta{display:flex;align-items:center;justify-content:center;gap:10px;
  grid-template-columns:none;
  width:100%;box-sizing:border-box;text-align:center;white-space:nowrap;
  background:var(--blue);color:#fff;border-radius:100px;padding:19px 24px;
  font-family:var(--jp);font-weight:900;font-size:15px;letter-spacing:.03em;
  box-shadow:0 14px 28px -14px rgba(18,115,230,.8);
  transition:background .3s,transform .3s,box-shadow .3s;
  transition-delay:0s}
/* メニューが開くとき、リンク5本のあとに最後に出てくる */
.menu .menu-cta{transform:translateY(110%);transition:transform .6s cubic-bezier(.16,1,.3,1) .40s,background .3s,box-shadow .3s}
.menu.on .menu-cta{transform:none}
.menu .menu-cta:hover{background:var(--blue)}
/* :hover はマウスがある環境だけ。スマホでタップすると
   hover が残って押しっぱなしのように見えるのを防ぐ。 */
@media(hover:hover) and (pointer:fine){
  .menu .menu-cta:hover{background:#0B57B0;box-shadow:0 18px 32px -14px rgba(18,115,230,.9)}
}
.menu .menu-cta:active{background:#0B57B0}
.menu .menu-cta .ar{font-family:var(--mono);font-size:12px;opacity:.85}
.menu .m-sub{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:rgba(255,255,255,.5);margin-top:22px;text-align:center;line-height:1.9}

/* ================= HERO ================= */
.hero{min-height:100svh;padding-top:var(--nav-h);display:grid;grid-template-columns:1fr;align-items:center;position:relative}
@media(min-width:900px){ .hero{grid-template-columns:1.06fr .94fr;gap:28px} }
.hero-copy{padding:56px 28px 40px;position:relative;z-index:2}
@media(min-width:1100px){ .hero-copy{padding-left:calc(var(--rail-w) + 30px)} }
.hero-copy .kicker{font-family:var(--disp);font-weight:700;font-size:13px;letter-spacing:.06em;color:var(--gray);margin-bottom:18px;text-transform:uppercase}
.hero h1{font-weight:900;font-size:clamp(36px,5.6vw,64px);line-height:1.5;letter-spacing:-.015em;text-wrap:balance}
.hero h1 .u{position:relative;white-space:nowrap}
.hero h1 .u::after{content:"";position:absolute;left:-2%;right:-2%;bottom:.08em;height:.34em;background:var(--sky);z-index:-1;transform:scaleX(0);transform-origin:left;animation:mark 1s .5s cubic-bezier(.65,0,.35,1) forwards}
@keyframes mark{to{transform:scaleX(1)}}
.hero .lede{margin-top:30px}
.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:40px}

.hero-visual{position:relative;min-height:340px;padding:0 20px 40px}
/* PCでは、左の文章と高さの重心をそろえる。
   ・枠を少し小さくする（左の文章より背が高いと上に浮いて見える）
   ・右端に余白を取る
   ・キッカーぶん下げて、見出しと目線の高さを合わせる */
@media(min-width:900px){
  .hero-visual{min-height:auto;height:auto;align-self:center;
    padding:0 clamp(20px,3vw,44px) 0 0;margin-top:26px;
    display:flex;flex-direction:column;justify-content:center}
}
.lens-stage{position:relative;width:100%;height:min(52vh,412px);border-radius:28px;overflow:hidden;background:linear-gradient(180deg,var(--paper-2),var(--paper));border:1px solid var(--line);touch-action:none}
.lens-stage svg{position:absolute;inset:0;width:100%;height:100%}
.layer-lost .itm{color:rgba(21,23,15,.16)}
.layer-found{clip-path:circle(120px at 50% 46%);transition:clip-path .05s linear}
.layer-found .itm{color:var(--blue)}
.mascot-wrap{position:absolute;left:50%;bottom:-22px;width:min(150px,34%);transform:translateX(-50%);z-index:1;
  filter:drop-shadow(0 16px 18px rgba(20,30,10,.28));
  --eye-x:0;--eye-y:0;
}
/* 画像は必ず .mascot-wrap と同じ幅にする。
   ここで max-width を付けて画像だけ小さくすると、
   %指定の瞳（.eye）の基準とズレて目の位置が狂う。 */
.mascot-peek{display:block;width:100%;height:auto;margin:0 auto}
/* mascot-hero.png からは黒目を消してあり（白目だけの状態）、
   黒目はここで描いて動かす。二重に重なって見えるのを防ぐため。
   数値は高解像度版の画像から実測した白目の中心・黒目のサイズ（画像に対する%）。 */
.mascot-wrap .eye{position:absolute;width:11.4%;aspect-ratio:47/59;border-radius:50%;
  background:radial-gradient(circle at 31% 27%, #ffffff 0 17%, transparent 18%), #14100D;
  pointer-events:none;z-index:2;
  /* 移動量は黒目自身のサイズに対する割合。白目の内側から出ない範囲に収めている */
  transform:translate(calc(-50% + var(--eye-x) * 14%), calc(-50% + var(--eye-y) * 17%));
  transition:transform .18s cubic-bezier(.16,1,.3,1);
}
.mascot-wrap .eye-l{left:19.81%;top:17.45%}
.mascot-wrap .eye-r{left:58.06%;top:18.89%}
@media(prefers-reduced-motion:reduce){ .mascot-wrap .eye{transform:translate(-50%,-50%)} }
/* ---- 虫めがね ----
   絵文字の 🔍 と同じ形を目指す。
   ・レンズ：同心円の box-shadow を重ねて金属の縁の厚みを出す
   ・持ち手：レンズの中心から45度方向へ「1本の棒」として伸ばす
   　（以前は金具と棒を別々に回転させていたため、継ぎ目が折れて見えていた）
   持ち手の付け根の位置は --lens-r で決める。レンズの外径より
   わずかに内側にすることで、隙間なくつながって見える。 */
.lens-ring{position:absolute;width:240px;height:240px;border-radius:50%;left:0;top:0;
  --lens-r:126px;
  transform:translate(-50%,-50%);pointer-events:none;display:grid;place-items:center;
  /* ガラス面：左上から差し込む光 */
  background:
    linear-gradient(126deg,rgba(255,255,255,.7) 0 30%,rgba(255,255,255,0) 45%),
    radial-gradient(circle at 30% 24%,rgba(255,255,255,.85) 0 15%,rgba(255,255,255,0) 42%);
  box-shadow:
    inset 0 0 22px rgba(17,24,39,.06),
    inset 0 0 0 1px rgba(255,255,255,.9),
    0 0 0 2px rgba(17,24,39,.28),
    0 0 0 10px var(--ink),
    0 0 0 11.5px rgba(255,255,255,.92),
    0 0 0 12.5px rgba(17,24,39,.18),
    0 26px 46px -20px rgba(20,30,10,.5);
}
/* 持ち手。transform-origin を上端にして、レンズの中心から
   45度回してから外へ押し出す。こうすると必ず中心から真っ直ぐ伸びる。 */
.lens-ring::after{content:"";position:absolute;left:50%;top:50%;
  width:19px;height:104px;border-radius:2px 2px 10px 10px;
  background:linear-gradient(90deg,#0B1421 0%,#2B3646 46%,#0B1421 100%);
  transform-origin:top center;
  transform:translate(-50%,0) rotate(-45deg) translateY(var(--lens-r));
  box-shadow:0 12px 20px -12px rgba(20,30,10,.65)}
@media(max-width:640px){
  .lens-ring{width:190px;height:190px;--lens-r:100px}
  .lens-ring::after{width:16px;height:84px}
}
.lens-hint{position:absolute;font-family:var(--mono);font-size:9.5px;letter-spacing:.18em;color:var(--gray);text-transform:uppercase}
/* ヒーロー下の説明。以前の「探す前 — LOST / 見つけた後 — FOUND」は
   何を指しているのか伝わらなかったため、
   ①操作方法 ②色の意味（凡例）の2つに作り直した。 */
.stage-caption{display:flex;justify-content:space-between;align-items:center;gap:12px;
  flex-wrap:wrap;margin-top:14px;font-size:11.5px;letter-spacing:.02em;color:var(--gray)}
.sc-tip{display:inline-flex;align-items:center;gap:8px;transition:opacity .4s}
.sc-tip svg{width:15px;height:15px;color:var(--blue);flex:none}
.sc-tip .t-pc{display:none}
@media(hover:hover) and (pointer:fine){
  .sc-tip .t-pc{display:inline}
  .sc-tip .t-touch{display:none}
}
.sc-legend{display:inline-flex;align-items:center;gap:16px;flex:none}
.sc-legend span{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.sc-legend i{width:9px;height:9px;border-radius:50%;background:rgba(17,24,39,.22);flex:none}
.sc-legend .is-found i{background:var(--blue)}
@media(max-width:520px){
  .stage-caption{flex-direction:column;align-items:flex-start;gap:10px}
  .sc-legend{gap:14px}
}

.scroll-cue{position:absolute;left:28px;bottom:22px;z-index:3;display:none;align-items:center;gap:11px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--gray)}
@media(min-width:1100px){ .scroll-cue{left:calc(var(--rail-w) + 30px);display:flex} }
.scroll-cue i{display:block;width:40px;height:1px;background:var(--line-strong);position:relative;overflow:hidden}
.scroll-cue i::after{content:"";position:absolute;inset:0;background:var(--blue);transform:translateX(-100%);animation:cue 2.4s infinite}
@keyframes cue{0%{transform:translateX(-100%)}55%{transform:translateX(0)}100%{transform:translateX(100%)}}

/* ================= ABOUT (connected path) ================= */
.about-top{margin-bottom:70px}
.about-top .lede{margin-top:22px}

/* ---- teaser links & flow (TOP要約セクション共通) ---- */
.flow-icons{margin-top:32px;display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.flow-icons span{display:inline-flex;align-items:center;gap:10px;background:var(--white);border:1px solid var(--line);border-radius:100px;padding:10px 20px 10px 14px;font-family:var(--disp);font-weight:700;font-size:14px;color:var(--ink)}
.flow-icons span svg{width:22px;height:22px;color:var(--blue)}
.flow-icons .fi-ar{font-family:var(--mono);color:var(--line-strong);font-size:16px}
@media(max-width:560px){ .flow-icons{gap:8px}.flow-icons .fi-ar{display:none}.flow-icons span{width:100%} }
.more-link{display:inline-flex;align-items:center;gap:8px;margin-top:28px;font-family:var(--disp);font-weight:700;font-size:14px;color:var(--ink);border-bottom:1.5px solid var(--ink);padding-bottom:3px;transition:color .25s,border-color .25s,gap .25s}
.more-link:hover{color:var(--blue);border-color:var(--blue);gap:12px}
.more-link .ar{font-family:var(--mono)}

.biz-teaser-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-top:44px}
@media(min-width:760px){ .biz-teaser-grid{grid-template-columns:1fr 1fr} }
.biz-teaser-card{display:block;overflow:hidden;background:var(--white);
  border:1px solid var(--line);border-radius:22px;
  transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .4s}
.teaser-body{padding:28px 30px 30px}
/* 実際の画面。ブラウザ枠に入れて「これはWebサイトです」と分かるようにする */
.teaser-shot{display:block;position:relative;overflow:hidden;
  background:var(--paper-2);border-bottom:1px solid var(--line)}
.teaser-bar{display:flex;align-items:center;gap:6px;padding:11px 14px;
  background:var(--white);border-bottom:1px solid var(--line)}
.teaser-bar i{width:8px;height:8px;border-radius:50%;background:var(--line-strong);flex:none}
.teaser-bar em{margin-left:8px;font-style:normal;font-family:var(--mono);font-size:10.5px;
  letter-spacing:.06em;color:var(--gray);
  background:var(--paper-2);border-radius:100px;padding:4px 12px}
.teaser-shot img{display:block;width:100%;height:auto;aspect-ratio:1100/430;
  object-fit:cover;object-position:top center;
  transition:transform .6s cubic-bezier(.16,1,.3,1)}
@media(hover:hover) and (pointer:fine){
  .biz-teaser-card:hover .teaser-shot img{transform:scale(1.04)}
}
@media(max-width:560px){
  .teaser-body{padding:24px 22px 26px}
  .teaser-shot img{aspect-ratio:1100/500}
}
.biz-teaser-card:hover{transform:translateY(-6px);border-color:var(--green);box-shadow:var(--shadow)}
.biz-teaser-ic{width:34px;height:34px;color:var(--green);margin-bottom:18px}
.biz-teaser-card .k{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--gray);margin-bottom:10px}
.biz-teaser-card h3{font-size:19px;font-weight:900;line-height:1.5;margin-bottom:12px}
.biz-teaser-card p{font-size:13.5px;color:var(--ink-soft);line-height:1.9;margin-bottom:22px}
.biz-teaser-card .more-link{margin-top:0;font-size:13px}
.biz-teaser-card.is-blue .biz-teaser-ic{color:var(--blue)}
.biz-teaser-card.is-blue:hover{border-color:var(--blue);box-shadow:0 30px 60px -34px rgba(18,115,230,.35)}
.biz-teaser-card.is-blue .more-link:hover,.biz-teaser-card.is-blue .more-link{transition:color .25s,border-color .25s}
.biz-teaser-card.is-blue:hover .more-link{color:var(--blue);border-color:var(--blue)}
.path{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.path::before{content:"";position:absolute;left:8%;right:8%;top:19px;height:1px;background:repeating-linear-gradient(to right,var(--line-strong) 0 8px,transparent 0 15px);z-index:0}
.pnode{position:relative;z-index:1}
.pnode .dot{width:60px;height:60px;border-radius:50%;background:var(--white);border:1.5px solid var(--line-strong);display:grid;place-items:center;margin-bottom:24px;transition:background .45s cubic-bezier(.16,1,.3,1),border-color .45s}
.pnode .dot .step-ic{width:26px;height:26px;margin:0;color:var(--ink-soft);transition:color .45s}
.pnode.in .dot{background:var(--blue);border-color:var(--blue)}
.pnode.in .dot .step-ic{color:#fff}
.pnode .num{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--gray);margin-bottom:10px}
.pnode h3{font-size:21px;font-weight:900;margin-bottom:12px}
.pnode p{font-size:14.5px;color:var(--ink-soft);max-width:26em}
@media(max-width:760px){
  .path{grid-template-columns:1fr;gap:30px}
  /* 点線はアイコン列(左60px)の中央だけを通す。本文は別カラムなので重ならない */
  .path::before{left:30px;right:auto;top:6px;bottom:6px;width:1px;height:auto;background:repeating-linear-gradient(to bottom,var(--line-strong) 0 8px,transparent 0 15px);z-index:0}
  .pnode{display:grid;grid-template-columns:60px 1fr;column-gap:20px;align-items:start;position:relative;z-index:1}
  .pnode .dot{grid-row:1/4;margin-bottom:0;position:relative;z-index:2}
  .pnode .num{grid-column:2;margin-bottom:6px}
  .pnode h3{grid-column:2;margin-bottom:10px}
  .pnode p{grid-column:2;max-width:none}
}

/* ================= MISSION / VISION ================= */
/* ================= MISSION / VISION (dark band) ================= */
.mv-band{background:linear-gradient(180deg,var(--navy-2),var(--navy));color:#fff;position:relative;overflow:hidden}
.mv-grid{display:grid;grid-template-columns:1fr;gap:64px;position:relative}
@media(min-width:900px){ .mv-grid{grid-template-columns:1fr 1px 1fr;gap:0} }
.mv-div{display:none;background:rgba(255,255,255,.14)}
@media(min-width:900px){ .mv-div{display:block} }
.mv-block{position:relative;padding:8px clamp(0px,4vw,48px)}
@media(min-width:900px){ .mv-block-l{padding-right:56px} .mv-block-r{padding-left:56px} }
.mv-ghost{position:absolute;top:-.5em;left:-.02em;font-family:var(--disp);font-weight:800;font-size:clamp(64px,11vw,140px);color:rgba(255,255,255,.06);line-height:1;z-index:0;pointer-events:none;user-select:none}
.mv-eyebrow{position:relative;z-index:1;font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--sky);margin-bottom:22px}
/* 明示的に <br> で改行位置を決めているので、balance は使わない
   （balanceが働くと「」だけが次の行に落ちることがある） */
.mv-stmt{position:relative;z-index:1;font-size:clamp(25px,4vw,42px);font-weight:900;line-height:1.5;letter-spacing:-.01em}
/* 閉じカギ括弧や助詞が単独で次行に落ちないよう、まとまりを保つ */
.nb{white-space:nowrap}
/* 収まらない場合だけ折り返す（はみ出すより折り返す方がまし） */
@media(max-width:360px){ .nb{white-space:normal} }
.hl{position:relative;color:inherit;white-space:nowrap;display:inline-block}
.hl::after{content:"";position:absolute;left:-4%;right:-4%;bottom:-.02em;height:.16em;background:var(--sky);z-index:-1;transform-origin:left;transform:scaleX(0)}
.hl.in::after{transform:scaleX(1);transition:transform .85s cubic-bezier(.65,0,.35,1)}

/* ---- character-by-character heading reveal ---- */
.reveal-chars{overflow:visible}
.rc{display:inline-block;opacity:0;transform:translateY(.5em);transition:opacity .5s cubic-bezier(.16,1,.3,1),transform .5s cubic-bezier(.16,1,.3,1)}
.reveal-chars.in .rc{opacity:1;transform:none}

/* ================= BUSINESS ================= */
.biz-card{background:var(--paper-2);border-radius:28px;padding:clamp(32px,5vw,64px);display:grid;grid-template-columns:1fr;gap:40px}
@media(min-width:880px){ .biz-card{grid-template-columns:1.15fr .85fr;align-items:center} }
.biz-card h2{margin-bottom:18px}
.biz-tag{font-family:var(--disp);font-size:13px;font-weight:700;color:var(--green);margin-bottom:24px}
.chips{display:flex;flex-wrap:wrap;gap:9px;margin:30px 0 34px}
.chip{background:var(--white);border:1px solid var(--line);border-radius:100px;padding:8px 15px;font-size:12.5px;color:var(--ink-soft);transition:border-color .25s,color .25s}
/* ================= Business: 探索シーン（落とし物マッチング側） =================
   単に枠にキャラを入れるのではなく「ミツケロくんが落とし物を探している場面」を作る。
   同心円のレーダー + 周囲に浮かぶ落とし物アイコン + 見つかった1点だけが色づく。 */
/* ---- 落とし物マッチングのアプリモック ----
   Web制作側の browser-stage と対になる見せ方。
   実際の画面イメージ（モザイク写真・特徴の一致・マッチ成立）で
   サービスの中身が一目で伝わるようにしている。 */
.app-stage{position:relative;display:flex;align-items:center;justify-content:center;
  min-height:420px;padding:58px 0 30px}
.app-stage::before{content:"";position:absolute;left:50%;top:50%;
  width:min(340px,96%);aspect-ratio:1;border-radius:44% 56% 61% 39%/48% 42% 58% 52%;
  background:radial-gradient(circle,rgba(18,115,230,.10) 0 46%,rgba(18,115,230,0) 72%);
  transform:translate(-50%,-50%);pointer-events:none}

.phone{position:relative;z-index:1;width:min(252px,72%);aspect-ratio:252/430;
  background:#0E1B2E;border-radius:34px;padding:10px;
  box-shadow:0 34px 60px -28px rgba(14,27,46,.55),0 0 0 1px rgba(14,27,46,.06)}
.phone-notch{position:absolute;left:50%;top:16px;width:64px;height:6px;border-radius:100px;
  background:rgba(255,255,255,.22);transform:translateX(-50%);z-index:2}
.phone-screen{height:100%;background:var(--white);border-radius:26px;overflow:hidden;
  padding:30px 14px 14px;display:flex;flex-direction:column;gap:10px}

.app-top{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:0 4px 10px;border-bottom:1px solid var(--line)}
.app-ttl{font-size:12.5px;font-weight:900;letter-spacing:.01em;white-space:nowrap}
.app-loc{display:inline-flex;align-items:center;gap:4px;flex:none;white-space:nowrap;font-family:var(--mono);
  font-size:9px;letter-spacing:.06em;color:var(--blue);
  background:var(--blue-tint);border-radius:100px;padding:4px 9px}
.app-loc svg{width:11px;height:11px;color:var(--blue)}

.app-item{position:relative;display:flex;align-items:center;gap:10px;
  background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:9px;
  transition:border-color .5s,background .5s,transform .5s cubic-bezier(.16,1,.3,1)}
/* モザイクを市松模様で表現する（画像を使わずに済む） */
.app-thumb{flex:none;width:44px;height:44px;border-radius:8px;background-color:#DEE6F2;
  background-image:
    linear-gradient(45deg,#C6D4E8 25%,transparent 25%,transparent 75%,#C6D4E8 75%),
    linear-gradient(45deg,#C6D4E8 25%,transparent 25%,transparent 75%,#C6D4E8 75%);
  background-size:14px 14px;background-position:0 0,7px 7px;
  transition:background-color .5s}
.app-lines{flex:1;display:flex;flex-direction:column;gap:7px}
.app-lines i{display:block;height:7px;border-radius:100px;background:var(--line-strong);
  transition:background .5s}
.app-lines .w1{width:82%}
.app-lines .w2{width:52%;height:6px;background:var(--line)}

/* 真ん中の1件だけが「一致」して光る */
.app-item.is-match{background:var(--blue-tint);border-color:var(--blue);
  animation:appMatch 6s ease-in-out infinite}
.app-item.is-match .app-thumb{background-color:#BBD3F3}
.app-item.is-match .app-lines .w1{background:rgba(18,115,230,.55)}
.app-item.is-match .app-lines .w2{background:rgba(18,115,230,.28)}
.app-badge{position:absolute;left:10px;top:-9px;font-size:9.5px;font-weight:900;
  letter-spacing:.04em;color:#fff;background:var(--blue);border-radius:100px;
  padding:4px 10px;white-space:nowrap;
  box-shadow:0 6px 14px -6px rgba(18,115,230,.9);
  animation:appBadge 6s ease-in-out infinite}
@keyframes appMatch{
  0%,18%{background:var(--paper);border-color:var(--line);transform:scale(1)}
  30%,84%{background:var(--blue-tint);border-color:var(--blue);transform:scale(1.03)}
  100%{background:var(--paper);border-color:var(--line);transform:scale(1)}
}
@keyframes appBadge{
  0%,20%{opacity:0;transform:translateY(4px)}
  32%,84%{opacity:1;transform:translateY(0)}
  100%{opacity:0;transform:translateY(4px)}
}

.app-toast{position:absolute;z-index:2;right:0;top:0;
  display:inline-flex;align-items:center;gap:9px;
  background:var(--ink);color:#fff;border-radius:100px;padding:11px 17px;
  font-size:12px;font-weight:700;letter-spacing:.02em;white-space:nowrap;
  box-shadow:0 18px 34px -18px rgba(14,27,46,.8);
  animation:appToast 6s ease-in-out infinite}
.app-toast i{width:8px;height:8px;border-radius:50%;background:var(--green);flex:none}
@keyframes appToast{
  0%,34%{opacity:0;transform:translateY(10px) scale(.96)}
  46%,84%{opacity:1;transform:translateY(0) scale(1)}
  100%{opacity:0;transform:translateY(10px) scale(.96)}
}
.app-note{position:absolute;left:0;right:0;bottom:2px;text-align:center;
  font-size:11.5px;color:var(--gray);letter-spacing:.02em}

@media(max-width:900px){
  .app-toast{font-size:11px;padding:9px 14px}
}
@media(max-width:520px){
  .app-stage{min-height:360px}
  .phone{width:min(252px,86%)}
  .app-toast{right:auto;left:50%;top:0;margin-left:-114px}
}
@media(prefers-reduced-motion:reduce){
  .app-item.is-match,.app-badge,.app-toast{animation:none}
  .app-toast{opacity:1}
}

/* 周囲に浮かぶ落とし物アイコン（ゆっくり上下） */
.biz-scatter{position:absolute;color:var(--ink);opacity:.22;pointer-events:none;
  animation:floatY 5.5s ease-in-out infinite}
.biz-scatter:nth-of-type(2){animation-delay:.9s}
.biz-scatter:nth-of-type(3){animation-delay:1.8s}
.biz-scatter:nth-of-type(4){animation-delay:2.7s}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
/* 「見つかった」1点だけ青く光る */
.biz-scatter.is-found{color:var(--blue);opacity:1;animation:foundPop 3s ease-in-out infinite}
@keyframes foundPop{
  0%,55%{transform:scale(1);filter:none}
  65%{transform:scale(1.22);filter:drop-shadow(0 0 10px rgba(18,115,230,.7))}
  80%,100%{transform:scale(1);filter:none}
}

@media(max-width:640px){
  .biz-scatter{opacity:.5}
}
@media(prefers-reduced-motion:reduce){
  .biz-scatter,.biz-scatter.is-found{animation:none}
}

/* ================= FUTURE (scroll gallery) ================= */
.future-head{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:46px;flex-wrap:wrap}
.scrollbar-track{width:120px;height:2px;background:var(--line);border-radius:2px;overflow:hidden}
.scrollbar-fill{height:100%;width:16.6%;background:var(--blue);transition:width .1s linear}
.gallery{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:20px;margin:0 -28px;padding-left:28px;padding-right:28px;scrollbar-width:none}
@media(min-width:1100px){ .gallery{margin-left:calc(-1 * (var(--rail-w) + 30px));padding-left:calc(var(--rail-w) + 30px);margin-right:-44px;padding-right:44px} }
.gallery::-webkit-scrollbar{display:none}
.fcard{scroll-snap-align:start;flex:0 0 min(78vw,300px);background:var(--white);border:1px solid var(--line);border-radius:20px;padding:28px 24px 32px;transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .3s}
.fcard:hover{transform:translateY(-6px);border-color:var(--blue)}
.fcard .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--blue);margin-bottom:18px}
.fcard h4{font-size:17px;font-weight:900;margin-bottom:10px}
.fcard p{font-size:13.5px;line-height:1.95;color:var(--ink-soft)}

/* ================= MESSAGE ================= */
.msg{display:grid;grid-template-columns:1fr;gap:40px}
@media(min-width:880px){ .msg{grid-template-columns:.8fr 1.2fr;gap:70px} }
/* 代表の署名板。顔写真がないため、丸いアバターは置かない。
   空いた右下はロゴの透かしで埋めて、余白の間延びを防ぐ。 */
.msg-card{position:sticky;top:110px;align-self:start;overflow:hidden;
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:30px 30px 34px}
.msg-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--blue),var(--green))}
/* static にすると ::before とロゴの位置基準がカードから外れるので relative にする */
@media(max-width:879px){ .msg-card{position:relative;top:auto} }
.msg-k{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--blue);
  text-transform:uppercase}
.msg-role{margin-top:26px;font-size:12.5px;font-weight:700;letter-spacing:.06em;
  color:var(--gray)}
.msg-card .nm{position:relative;margin-top:8px;font-size:clamp(22px,2.6vw,26px);
  font-weight:900;letter-spacing:.02em}
.msg-card .ro{position:relative;margin-top:12px;padding-top:12px;
  border-top:1px solid var(--line);
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--gray)}
/* ロゴの透かし。文字の背面に置くため z-index は使わず、順番と opacity で処理する */
.msg-logo{position:absolute;right:-22px;bottom:-26px;width:150px;height:auto;
  opacity:.07;pointer-events:none}
@media(max-width:879px){
  .msg-card{padding:26px 24px 30px}
  .msg-logo{right:-14px;bottom:-18px;width:120px}
}
.msg-body p{font-size:15.5px;line-height:2.15;margin-bottom:26px;color:var(--ink-soft)}
.msg-body p:last-child{margin-bottom:0}
.msg-body strong{font-weight:900;color:var(--ink);background:linear-gradient(transparent 62%,var(--paper-2) 0)}

/* ================= NEWS ================= */
.news-list{border-top:1px solid var(--line)}
.news-item{display:grid;grid-template-columns:112px 132px 1fr 24px;gap:18px;align-items:center;padding:23px 4px;border-bottom:1px solid var(--line);position:relative;transition:padding-left .35s}
.news-item:hover{padding-left:14px}
.news-item::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--blue);transform:scaleY(0);transition:transform .35s cubic-bezier(.16,1,.3,1)}
.news-item:hover::before{transform:scaleY(1)}
.news-date{font-family:var(--mono);font-size:12px;color:var(--gray)}
.news-cat{justify-self:start;border:1px solid var(--line-strong);border-radius:100px;padding:3px 12px;font-size:11px;color:var(--blue)}
.news-ttl{font-size:15.5px;font-weight:700}
.news-item .ar{font-family:var(--mono);font-size:12px;color:var(--gray);justify-self:end;transition:transform .35s}
.news-item:hover .ar{transform:translateX(4px)}
@media(max-width:700px){ .news-item{grid-template-columns:1fr auto}.news-date{grid-column:1}.news-cat{grid-column:2;grid-row:1}.news-ttl{grid-column:1/3}.news-item .ar{display:none} }

/* ================= COMPANY ================= */
.co-table{border-top:1px solid var(--line)}
/* ---- 拠点カード ----
   ただの表だと単調なので、拠点は地図リンク付きのカードにして視覚的な起点をつくる。 */
.office-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-top:26px}
@media(min-width:760px){ .office-grid{grid-template-columns:1fr 1fr;gap:20px} }
.office-card{position:relative;display:block;overflow:hidden;
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:30px 28px 26px;
  transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .4s}
/* 地図の方眼をうっすら敷いて“場所”の気配を出す */
.office-card::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(18,115,230,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(18,115,230,.05) 1px,transparent 1px);
  background-size:26px 26px;
  -webkit-mask-image:radial-gradient(circle at 88% 12%,#000,transparent 62%);
  mask-image:radial-gradient(circle at 88% 12%,#000,transparent 62%)}
@media(hover:hover) and (pointer:fine){
  .office-card:hover{transform:translateY(-5px);border-color:var(--blue);
    box-shadow:0 30px 54px -34px rgba(18,115,230,.5)}
  .office-card:hover .office-map{color:var(--blue)}
}
.office-pin{position:relative;display:grid;place-items:center;width:44px;height:44px;
  border-radius:14px;background:var(--blue-tint);margin-bottom:20px}
.office-pin svg{width:22px;height:22px;color:var(--blue)}
.office-en{position:relative;font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  color:var(--gray)}
.office-name{position:relative;font-size:19px;font-weight:900;margin-top:6px}
.office-zip{position:relative;font-family:var(--mono);font-size:12px;color:var(--gray);margin-top:16px}
.office-addr{position:relative;font-size:15px;line-height:1.8;margin-top:4px}
.office-near{position:relative;font-size:12.5px;color:var(--gray);margin-top:10px}
.office-map{position:relative;display:inline-flex;align-items:center;gap:6px;margin-top:20px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--gray);
  transition:color .3s}
.office-map .ar{font-size:11px}

/* ---- 会社概要のタイル ----
   1行1項目の表は情報が薄く見えるので、タイルを並べて密度と区切りを作る。 */
.fact-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:26px}
/* PCで3列タイルにすると1項目あたりの余白が大きく、ラベルと値が離れて読みにくい。
   2列 ×「ラベル｜値」の横並びにして、スペックシートのように詰める。 */
@media(min-width:900px){ .fact-grid{grid-template-columns:1fr 1fr;gap:14px 20px} }
.fact{position:relative;background:var(--white);border:1px solid var(--line);
  border-radius:16px;padding:22px 24px 24px;overflow:hidden;
  transition:border-color .3s,transform .4s cubic-bezier(.16,1,.3,1)}
/* 上辺のアクセント。ホバーで左から伸びる */
.fact::after{content:"";position:absolute;left:0;top:0;height:2px;width:0;
  background:var(--blue);transition:width .5s cubic-bezier(.16,1,.3,1)}
@media(hover:hover) and (pointer:fine){
  .fact:hover{border-color:var(--line-strong);transform:translateY(-3px)}
  .fact:hover::after{width:100%}
}
.fact.is-wide{grid-column:1 / -1}
.fact-k{display:flex;flex-direction:column;gap:5px;
  font-family:var(--jp);font-size:13px;font-weight:700;color:var(--ink)}
.fact-k span{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
  color:var(--blue);text-transform:uppercase}
.fact-v{margin-top:14px;font-size:16px;font-weight:700;line-height:1.7;
  letter-spacing:.01em;word-break:break-word}
@media(min-width:900px){
  .fact{display:grid;grid-template-columns:186px 1fr;align-items:center;gap:18px;
    padding:19px 24px}
  .fact-v{margin-top:0}
  .fact.is-wide{align-items:start}
  .fact.is-wide .fact-k{padding-top:2px}
}
/* 法人番号のように桁が続く数字。等幅＋字間を広げて、桁を追いやすくする */
.fact-num{font-family:var(--mono);font-size:15.5px;letter-spacing:.08em}
/* 電話番号。スマホからはタップで発信できる。
   下線を引くと受付時間との区切り線に見えてしまうので、線は入れない。 */
.fact-tel{display:inline-block;font-family:var(--mono);font-size:17px;font-weight:600;
  letter-spacing:.04em;color:var(--ink);text-decoration:none;transition:color .25s}
@media(hover:hover) and (pointer:fine){
  .fact-tel:hover{color:var(--blue)}
}
/* 値に添える補足（受付時間など） */
.fact-note{display:block;margin-top:8px;font-size:12.5px;font-weight:500;
  letter-spacing:.02em;color:var(--gray)}
/* 公告方法のURL。本文と同じ行に置くとスマホでURLの途中で改行されるため、
   必ず独立した行に出す。 */
.fact-url{display:block;margin-top:8px;font-family:var(--mono);font-size:13.5px;
  font-weight:500;letter-spacing:0;color:var(--blue);word-break:normal;
  overflow-wrap:anywhere;text-decoration:none;
  border-bottom:1px solid rgba(18,115,230,.3);padding-bottom:2px;
  width:fit-content;max-width:100%;transition:border-color .25s}
@media(hover:hover) and (pointer:fine){
  .fact-url:hover{border-bottom-color:var(--blue)}
}
.fact-list{list-style:none;display:flex;flex-direction:column;gap:10px}
.fact-list li{position:relative;padding-left:20px;font-size:15px;font-weight:500;
  line-height:1.85;color:var(--ink-soft)}
.fact-list li::before{content:"";position:absolute;left:0;top:.72em;width:7px;height:7px;
  border-radius:50%;background:var(--blue)}
.fact-list b{font-weight:900;color:var(--ink)}
.pend{font-size:12px;color:var(--gray);border:1px dashed var(--line-strong);
  border-radius:100px;padding:4px 13px;display:inline-block;font-weight:500}

/* ================= CONTACT ================= */
.ct{display:grid;grid-template-columns:1fr;gap:44px}
@media(min-width:880px){ .ct{grid-template-columns:1.1fr .9fr;gap:70px} }
.ct-topics{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ct-topics span{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:16px 18px;font-size:13.5px;display:flex;align-items:center;gap:11px;transition:border-color .25s,transform .3s}
.ct-topics span:hover{border-color:var(--blue);transform:translateY(-2px)}
.ct-topics span svg{width:20px;height:20px;color:var(--blue);flex:none}
.ct-note{font-size:13px;color:var(--gray);margin-top:22px;line-height:2}
@media(max-width:520px){ .ct-topics{grid-template-columns:1fr} }

/* ================= FOOTER ================= */
.ft{background:linear-gradient(180deg,var(--navy-2),var(--navy));color:#fff;padding:70px 0 30px;position:relative}
/* 上端にブランドカラーのアクセントライン */
.ft::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--blue),var(--green))}
/* うっすらドット地紋 */
.ft::after{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(255,255,255,.05) 1px, transparent 1px);background-size:26px 26px}
.ft .wrap{position:relative;z-index:1}
.ft .wrap{padding-left:28px}
@media(min-width:1100px){ .ft .wrap{padding-left:calc(var(--rail-w) + 30px)} }
.ft-top{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:40px;padding-bottom:50px;border-bottom:1px solid rgba(255,255,255,.14)}
.ft-brand{font-family:var(--disp);font-weight:800;font-size:19px}
.ft-copy{font-size:13px;color:rgba(255,255,255,.5);margin-top:16px;line-height:2;max-width:24em}
.ft h5{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:rgba(255,255,255,.42);margin-bottom:18px;text-transform:uppercase}
.ft ul{list-style:none;display:grid;gap:12px}
.ft ul a{font-size:13.5px;color:rgba(255,255,255,.82);transition:color .25s}
.ft ul a:hover{color:var(--sky)}
.ft-btm{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:26px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:rgba(255,255,255,.38)}
@media(max-width:760px){ .ft-top{grid-template-columns:1fr;gap:34px} }

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

/* ================= SIMPLE PAGE (Contact / Privacy / Security) ================= */
.prose{margin-top:34px;font-size:15.5px;line-height:2.05;color:var(--ink-soft)}
.prose h2{font-family:var(--jp);font-weight:900;font-size:22px;color:var(--ink);margin:44px 0 16px}
.prose h3{font-family:var(--jp);font-weight:700;font-size:17px;color:var(--ink);margin:32px 0 12px}
.prose p{margin-bottom:20px}
.prose ul,.prose ol{margin:0 0 20px 1.3em}
.prose li{margin-bottom:8px}
.prose a{color:var(--blue);text-decoration:underline}

/* ================= Contact Form 7 =================
   mitsukaeru.jp/contact/ のフォームと見た目・情報設計を揃えたもの。
   ・必須は青い「*」、任意はグレーの小さなチップ
   ・2カラムに並べたい項目は .mk-row でくくる
   ・入力欄は白地＋細い枠（サービスサイトと同じ）
   フォーム本体のHTMLは Contact Form 7 の管理画面に貼る。
   （README-setup.md に貼り付け用の一式あり） */
.wpcf7-form{margin-top:8px}
.wpcf7-form p{margin:0 0 22px;position:relative}

/* ---- レイアウト ---- */
.mk-form .mk-row{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
@media(max-width:640px){ .mk-form .mk-row{grid-template-columns:1fr} }
.mk-form .mk-field{margin:0 0 22px}

/* ---- ラベル ---- */
.wpcf7-form label,.mk-form .mk-label{display:block;font-family:var(--jp);font-size:13.5px;font-weight:700;
  letter-spacing:.04em;color:var(--ink);margin-bottom:9px}
.mk-form .req{color:var(--blue);font-weight:900;margin-left:5px}
.mk-form .opt{display:inline-block;margin-left:9px;font-family:var(--jp);font-size:10.5px;
  font-weight:500;letter-spacing:.06em;color:var(--gray);
  background:#EEF2F7;border-radius:5px;padding:3px 8px;vertical-align:2px}

/* ---- 入力欄 ---- */
/* CF7は各項目を <span class="wpcf7-form-control-wrap"> で包む。
   spanのままだと幅100%が効かないのでブロックにする。 */
.wpcf7-form-control-wrap{display:block}
.wpcf7-form-control{width:100%;font-family:var(--jp);font-size:15.5px;color:var(--ink);
  background:var(--white);border:1px solid var(--line-strong);border-radius:12px;
  padding:15px 17px;
  transition:border-color .25s,box-shadow .25s,background .25s}
.wpcf7-form-control::placeholder{color:rgba(21,23,15,.3)}
.wpcf7-form-control:focus{outline:none;border-color:var(--blue);
  box-shadow:0 0 0 4px rgba(18,115,230,.12)}
@media(hover:hover) and (pointer:fine){
  .wpcf7-form-control:hover{border-color:var(--ink-soft)}
  .wpcf7-form-control:focus:hover{border-color:var(--blue)}
}
textarea.wpcf7-form-control{min-height:190px;resize:vertical;line-height:1.9}

/* セレクトは矢印をSVGで描いて安っぽさを解消 */
.wpcf7-select,select.wpcf7-form-control{appearance:none;-webkit-appearance:none;cursor:pointer;
  padding-right:46px;
  background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231273E6' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 16px center;background-size:18px 18px}
/* 「選択してください」の状態だけ薄く見せる */
.wpcf7-select:invalid,.wpcf7-select option[value=""]{color:rgba(21,23,15,.42)}

/* ---- プライバシーポリシー同意のチェックボックス ---- */
/* 同意欄そのものも .wpcf7-form-control が付くので、
   入力欄の白枠スタイルを打ち消しておく。 */
.wpcf7-form-control.wpcf7-acceptance{width:auto;background:none;border:none;
  padding:0;box-shadow:none;border-radius:0}
.mk-form .mk-consent{margin:4px 0 28px;padding:18px 20px;
  background:#F7F9FC;border:1px solid var(--line);border-radius:14px}
.wpcf7-acceptance .wpcf7-list-item{margin:0}
.wpcf7-acceptance label{display:flex!important;align-items:flex-start;gap:12px;
  margin-bottom:0;font-weight:500;cursor:pointer}
.wpcf7-acceptance input[type="checkbox"]{appearance:none;-webkit-appearance:none;
  flex:none;width:22px;height:22px;margin:0;border:1.5px solid var(--line-strong);
  border-radius:6px;background:var(--white);cursor:pointer;position:relative;
  transition:background .2s,border-color .2s}
.wpcf7-acceptance input[type="checkbox"]:checked{background:var(--blue);border-color:var(--blue)}
.wpcf7-acceptance input[type="checkbox"]:checked::after{content:"";position:absolute;
  left:7px;top:3px;width:6px;height:11px;border:solid #fff;border-width:0 2.5px 2.5px 0;
  transform:rotate(45deg)}
.wpcf7-acceptance input[type="checkbox"]:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.wpcf7-acceptance .wpcf7-list-item-label{font-size:14px;line-height:1.6;color:var(--ink-soft)}
.mk-form .mk-consent a{color:var(--blue);text-decoration:underline}

/* ---- 送信ボタン ---- */
.mk-form .mk-submit{text-align:center;margin-bottom:0}
/* 送信ボタン。CF7の初期スタイルに負けないよう色と影をはっきり指定する。
   （opacityで薄めると押せないボタンに見えるので、色そのものを濃くしている） */
.wpcf7-submit{display:inline-flex;align-items:center;justify-content:center;
  width:100%;max-width:380px;border-radius:100px;padding:19px 32px;
  font-family:var(--jp);font-size:16px;font-weight:900;letter-spacing:.06em;
  color:#fff;border:none;cursor:pointer;opacity:1;
  /* サイトのテーマカラー（--blue）に揃える。濃紺寄りにすると
     他の青いUIから浮いて見えるため、色は変えず影で立体感を出す。 */
  background-color:#1273E6;background-image:none;
  box-shadow:0 16px 30px -14px rgba(18,115,230,.7);
  transition:filter .3s,transform .25s cubic-bezier(.16,1,.3,1),box-shadow .3s}
@media(hover:hover) and (pointer:fine){
  .wpcf7-submit:hover{background-color:var(--blue-deep);transform:translateY(-3px);
    box-shadow:0 22px 38px -14px rgba(18,115,230,.75)}
}
.wpcf7-submit:active{transform:translateY(-1px);background-color:var(--blue-deep)}
.wpcf7-submit[disabled]{filter:grayscale(.35) brightness(.9);cursor:not-allowed;box-shadow:none}
/* 送信中はCF7が .submitting を付ける */
.wpcf7-form.submitting .wpcf7-submit{filter:brightness(.9)}
.wpcf7-spinner{margin-left:10px}

/* ---- エラー・完了メッセージ ---- */
.wpcf7-not-valid-tip{color:#C0392B;font-size:12.5px;margin-top:7px;font-weight:700}
.wpcf7-form-control.wpcf7-not-valid{border-color:#C0392B;
  box-shadow:0 0 0 4px rgba(192,57,43,.1)}
.wpcf7-response-output{border-radius:14px;padding:16px 20px;margin:22px 0 0;
  font-size:14px;line-height:1.85;border:1.5px solid var(--line-strong);background:var(--white)}
.wpcf7-mail-sent-ok{border-color:var(--blue)!important;color:var(--blue);
  background:var(--blue-tint)!important}

/* ================= INNER PAGES (About / Business / Company) ================= */
.pageh{padding-top:calc(var(--nav-h) + 64px)}

.story-grid{display:grid;grid-template-columns:1fr;gap:20px}
@media(min-width:760px){ .story-grid{grid-template-columns:1fr 1fr} }
.story-card{background:var(--white);border:1px solid var(--line);border-radius:22px;padding:32px 28px;transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .4s}
.story-card:hover{transform:translateY(-6px);border-color:var(--green);box-shadow:var(--shadow)}
.story-card-top{display:flex;align-items:center;gap:14px;margin-bottom:22px}
.story-ic{width:48px;height:48px;flex:none;border-radius:50%;background:var(--paper-2);display:grid;place-items:center;color:var(--green)}
.story-ic svg{width:24px;height:24px}
.story-ic.is-blue{color:var(--blue);background:var(--blue-tint)}
.story-y{font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--gray)}
.story-card h3{font-size:19px;font-weight:900;margin-bottom:14px;line-height:1.55}
.story-card p{font-size:14px;color:var(--ink-soft);line-height:1.95;margin-bottom:20px}

.cta-band{background:var(--paper-2);border-radius:28px;padding:clamp(36px,6vw,64px);position:relative;overflow:hidden}
/* スマホでは左右の余白が効きすぎて、見出しが1文字だけ折り返してしまう。
   余白を詰め、見出しの最小サイズも少し下げて1行に収める。 */
@media(max-width:560px){
  .cta-band{padding:32px 22px;border-radius:22px}
  .cta-band .h2{font-size:clamp(23px,6.4vw,46px)}
}
.cta-band .hero-actions{justify-content:flex-start}
.cta-band-in{position:relative;z-index:1;max-width:min(720px,100%)}
.cta-band-ic{position:absolute;color:var(--ink);opacity:.13}
@media(max-width:640px){ .cta-band-ic{display:none} }

/* ---- Business page: reversed layout + browser mockup + process steps ---- */
.biz-card.rev{grid-template-columns:1fr}
@media(min-width:880px){ .biz-card.rev{grid-template-columns:.85fr 1.15fr} .biz-card.rev > div:first-child{order:2} .biz-card.rev > .app-stage,.biz-card.rev > .browser-stage{order:1} }

/* ================= Business: サイトが組み上がるシーン（Web制作側） =================
   静的なモックではなく「要素が順に組み上がっていく」様子を見せる。 */
.browser-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:340px}
/* 背面に重なるもう1枚（奥行き） */
.browser-stage::before{content:"";position:absolute;width:300px;height:220px;border-radius:18px;
  background:var(--white);border:1px solid var(--line);
  transform:translate(18px,-22px) rotate(4deg);opacity:.6;
  box-shadow:0 18px 36px -26px rgba(17,24,39,.4)}
@media(max-width:640px){ .browser-stage::before{width:240px;height:180px} }

.browser-card{background:var(--white);border-radius:18px;box-shadow:0 26px 54px -28px rgba(17,24,39,.45);
  overflow:hidden;width:min(330px,88%);border:1px solid var(--line);
  transition:transform .5s cubic-bezier(.16,1,.3,1);position:relative;z-index:1}
.browser-card:hover{transform:translateY(-8px) rotate(-1deg)}
.browser-bar{display:flex;align-items:center;gap:6px;padding:13px 15px;border-bottom:1px solid var(--line);background:#FAFBFD}
.browser-bar i{width:9px;height:9px;border-radius:50%;background:var(--line-strong);flex:none}
.browser-bar i:nth-child(3){background:var(--green)}
.browser-url{margin-left:10px;background:#EEF2F7;border-radius:100px;padding:5px 13px;
  font-family:var(--mono);font-size:10px;color:var(--gray);letter-spacing:.02em}
.browser-body{padding:20px;position:relative;min-height:210px}

/* 各パーツが順番に「組み上がる」 */
.bb-hero,.bb-line,.bb-btn{opacity:0;animation:buildIn .5s cubic-bezier(.16,1,.3,1) forwards}
.bb-hero{height:92px;border-radius:10px;
  background:linear-gradient(135deg,var(--blue-tint),#fff);
  border:1px solid var(--line);margin-bottom:16px;animation-delay:.15s}
.bb-line{height:9px;border-radius:5px;background:#E5EAF1;margin-bottom:10px}
.bb-line:nth-of-type(2){animation-delay:.45s}
.bb-line:nth-of-type(3){animation-delay:.65s}
.bb-btn{width:96px;height:30px;border-radius:100px;background:var(--blue);margin-top:16px;
  animation-delay:.9s;box-shadow:0 8px 18px -8px rgba(18,115,230,.8)}
@keyframes buildIn{
  0%{opacity:0;transform:translateY(10px) scaleX(.94)}
  100%{opacity:1;transform:none}
}
/* 組み上がりが終わったらカーソルがボタンを押しにくる */
.bb-cursor{position:absolute;width:20px;height:20px;right:38px;bottom:20px;
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.28));
  opacity:0;animation:cursorIn .4s 1.15s forwards, cursorTap 2.4s 1.55s ease-in-out infinite}
@keyframes cursorIn{from{opacity:0;transform:translate(14px,14px)}to{opacity:1;transform:none}}
@keyframes cursorTap{0%,100%{transform:translate(0,0)}45%{transform:translate(-8px,-6px)}55%{transform:translate(-8px,-6px) scale(.88)}}
/* クリックの波紋 */
.bb-ripple{position:absolute;right:52px;bottom:34px;width:14px;height:14px;border-radius:50%;
  border:2px solid var(--blue);opacity:0;animation:bbRipple 2.4s 1.55s ease-out infinite}
@keyframes bbRipple{
  0%,42%{transform:scale(.4);opacity:0}
  55%{transform:scale(1);opacity:.7}
  85%,100%{transform:scale(2.1);opacity:0}
}
@media(prefers-reduced-motion:reduce){
  .bb-hero,.bb-line,.bb-btn{opacity:1;animation:none}
  .bb-cursor{opacity:1;animation:none}
  .bb-ripple{animation:none;opacity:0}
}

.flow-head-row{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.flow-walker{flex:none}

.flow-timeline{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:26px}
.flow-timeline::before{content:"";position:absolute;left:6%;right:6%;top:29px;height:1px;background:repeating-linear-gradient(to right,var(--line-strong) 0 8px,transparent 0 15px);z-index:0}
.flow-node{position:relative;z-index:1}
.flow-dot{width:58px;height:58px;border-radius:50%;background:var(--green);display:grid;place-items:center;margin-bottom:22px;color:#fff;box-shadow:0 14px 20px -10px rgba(99,192,31,.45);transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.flow-dot svg{width:26px;height:26px}
.flow-node:hover .flow-dot{transform:scale(1.08) rotate(-4deg)}
.flow-node .num{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--gray);margin-bottom:8px}
.flow-node h4{font-size:16px;font-weight:900;margin-bottom:10px}
.flow-node p{font-size:13px;line-height:1.85;color:var(--ink-soft)}
@media(max-width:760px){
  .flow-timeline{grid-template-columns:1fr;gap:28px}
  /* 点線はアイコン列(左58px)の中央だけに引く。
     本文は別カラムなので、線が文字の上に重なることはない。 */
  .flow-timeline::before{left:29px;right:auto;top:0;bottom:0;width:1px;height:auto;background:repeating-linear-gradient(to bottom,var(--line-strong) 0 8px,transparent 0 15px);z-index:0}
  .flow-node{display:grid;grid-template-columns:58px 1fr;column-gap:20px;align-items:start;position:relative;z-index:1}
  /* アイコンの円が線の上に乗るように、背景を敷いて線を隠す */
  .flow-dot{margin-bottom:0;grid-row:1/4;position:relative;z-index:2}
  .flow-node .num{grid-column:2;margin-bottom:6px}
  .flow-node h4{grid-column:2;margin-bottom:8px}
  .flow-node p{grid-column:2;position:relative;z-index:1}
}

.contact-form-card{background:var(--white);border:1px solid var(--line);border-radius:24px;padding:clamp(28px,5vw,48px);position:relative;overflow:hidden;box-shadow:0 24px 50px -32px rgba(17,24,39,.28)}
.contact-form-card .prose{position:relative;z-index:1}

/* ---- Company: stat band ---- */
/* 数字ハイライト帯：単なる枠線ではなく、濃紺のカード＋大きな数字で存在感を出す */
.stat-band{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:52px}
.stat-band > div{position:relative;overflow:hidden;
  background:linear-gradient(160deg,var(--navy-2),var(--navy));
  border-radius:20px;padding:34px 22px 30px;text-align:left;
  box-shadow:0 20px 40px -26px rgba(14,27,46,.6);
  transition:transform .45s cubic-bezier(.16,1,.3,1),box-shadow .45s}
.stat-band > div:hover{transform:translateY(-5px);box-shadow:0 28px 50px -26px rgba(14,27,46,.75)}
/* 背景の透かし数字で奥行きを出す */
.stat-band > div::before{content:attr(data-ghost);position:absolute;right:-6px;bottom:-26px;
  font-family:var(--disp);font-weight:800;font-size:110px;line-height:1;
  color:rgba(255,255,255,.05);pointer-events:none;user-select:none}
.stat-v{position:relative;z-index:1;font-family:var(--disp);font-weight:800;
  font-size:clamp(34px,5vw,48px);color:#fff;line-height:1;letter-spacing:-.02em}
.stat-v span{font-family:var(--jp);font-size:17px;font-weight:700;margin-left:3px;color:var(--sky)}
.stat-l{position:relative;z-index:1;font-family:var(--mono);font-size:11px;
  letter-spacing:.16em;color:rgba(255,255,255,.55);margin-top:14px}
/* ラベルの上に短い水平ライン */
.stat-l::before{content:"";display:block;width:26px;height:2px;background:var(--sky);
  border-radius:2px;margin-bottom:12px}
@media(max-width:560px){ .stat-band{grid-template-columns:1fr;gap:12px} }

/* ---- News pagination ---- */
.pager{display:flex;flex-wrap:wrap;gap:8px;margin-top:40px}
.pager .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 12px;border-radius:100px;border:1px solid var(--line-strong);font-family:var(--mono);font-size:13px;color:var(--ink);transition:background .25s,color .25s,border-color .25s}
.pager .page-numbers.current{background:var(--ink);color:#fff;border-color:var(--ink)}
.pager .page-numbers:hover:not(.current){border-color:var(--blue);color:var(--blue)}

/* ================= PAGE TRANSITION (curtain wipe) ================= */
/* CSS animation reveals the page automatically even if JS fails to run (fail-safe). */
.pg-transition{position:fixed;inset:0;background:var(--blue);z-index:2000;transform:translateY(0%);animation:pgReveal .6s .15s cubic-bezier(.76,0,.24,1) forwards;display:flex;align-items:center;justify-content:center;pointer-events:none}
@keyframes pgReveal{to{transform:translateY(-100%)}}
.pg-transition.is-leaving{animation:none;transform:translateY(0%);transition:transform .6s cubic-bezier(.76,0,.24,1)}
/* ローディング中の表示は、キャラクターではなく会社のロゴマークにする。
   ミツケロくんはサービス寄りの存在なので、コーポレートの
   ページ遷移では M マークで統一する。 */
.pg-mark,.pg-frog,.pg-shadow{display:none}
.pg-load{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;gap:22px;opacity:0}
.pg-transition.is-leaving .pg-load{opacity:1}
.pg-logo{width:64px;height:auto;display:block;
  filter:drop-shadow(0 10px 18px rgba(0,0,0,.22));
  animation:pgPulse 1.4s ease-in-out infinite}
@keyframes pgPulse{
  0%,100%{transform:scale(1);opacity:.95}
  50%    {transform:scale(1.07);opacity:1}
}
/* ロゴの下を流れる細いバー */
.pg-bar{display:block;width:96px;height:3px;border-radius:100px;
  background:rgba(255,255,255,.28);overflow:hidden}
.pg-bar i{display:block;width:40%;height:100%;border-radius:100px;
  background:#fff;animation:pgBar 1.2s cubic-bezier(.65,0,.35,1) infinite}
@keyframes pgBar{
  0%{transform:translateX(-110%)}
  100%{transform:translateX(260%)}
}
@media(prefers-reduced-motion:reduce){
  .pg-transition{animation:none;transform:translateY(-100%)}
  .pg-load,.pg-logo,.pg-bar i{animation:none}
  .pg-load{opacity:0}
}

/* ================= CUSTOM CURSOR (finder lens) ================= */
body.has-cur, body.has-cur a, body.has-cur button, body.has-cur input, body.has-cur textarea, body.has-cur select{cursor:none}
/* mix-blend-mode:difference により、暗い背景の上では自動的に白く反転して見える。
   フッターなどのダーク領域でカーソルが同化して見えなくなるのを防ぐ。 */
/* mix-blend-mode:difference は暗い背景(フッター等)でコントラストが出ず
   カーソルが見えなくなるため使わない。明色＋暗い縁取りで、
   どんな背景の上でも視認できるようにする。 */
#curDot{position:fixed;top:0;left:0;width:7px;height:7px;background:var(--blue);border-radius:50%;pointer-events:none;z-index:2100;transform:translate(-50%,-50%);opacity:0;transition:opacity .25s;box-shadow:0 0 0 2px rgba(255,255,255,.9)}
#curRing{position:fixed;top:0;left:0;width:34px;height:34px;border:1.5px solid var(--blue);border-radius:50%;pointer-events:none;z-index:2099;transform:translate(-50%,-50%);opacity:0;transition:width .3s cubic-bezier(.16,1,.3,1),height .3s cubic-bezier(.16,1,.3,1),border-color .3s,background-color .3s,opacity .25s;box-shadow:0 0 0 1.5px rgba(255,255,255,.75), inset 0 0 0 1.5px rgba(255,255,255,.55)}
body.has-cur #curDot,body.has-cur #curRing{opacity:1}
#curRing.cur-hover{width:58px;height:58px;background:rgba(18,115,230,.14)}
#curRing.cur-hover-blue{width:58px;height:58px;background:rgba(18,115,230,.14)}
body.has-cur #curDot.cur-hover{opacity:0}

/* ---- magnetic buttons ---- */
.btn,.pill{will-change:transform}

/* ================= SCROLL PROGRESS BAR ================= */
#scrollProgress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:1900;pointer-events:none;background:transparent}
#scrollProgress i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--blue),var(--blue));transform:scaleX(0);transform-origin:left;transition:transform .12s linear}
@media(prefers-reduced-motion:reduce){ #scrollProgress i{transition:none} }

/* ================= playful icon micro-interactions ================= */
.biz-teaser-card:hover .biz-teaser-ic{transform:scale(1.15) rotate(-6deg)}
.biz-teaser-ic{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.pnode .dot{transition:background .45s cubic-bezier(.16,1,.3,1),border-color .45s,transform .35s cubic-bezier(.34,1.56,.64,1)}
.pnode:hover .dot{transform:scale(1.08) rotate(-4deg)}
.story-ic{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.story-card:hover .story-ic{transform:scale(1.12) rotate(6deg)}
/* flow-node hover handled by .flow-node:hover .flow-dot above */
.ct-topics span svg{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}
.ct-topics span:hover svg{transform:scale(1.15) rotate(-6deg)}

/* ================= number count-up (Company stat band) ================= */
.stat-v{transition:opacity .3s}

/* ================= organic blob accents (graphic personality) ================= */
.blob{position:absolute;border-radius:42% 58% 63% 37% / 41% 44% 56% 59%;pointer-events:none;z-index:0}
.blob-blue{background:var(--blue-tint)}
.blob-mint{background:var(--paper-2)}

/* ---- mascot accent images used across pages ---- */
.mascot-accent{position:relative;z-index:1;filter:drop-shadow(0 12px 14px rgba(20,30,10,.2))}
.mascot-accent img{display:block;width:100%;height:auto;position:relative;z-index:1}
@media(max-width:640px){
  .mascot-accent{position:static!important;width:64px!important;margin:0 0 18px auto}
}

/* ================= CONTACT (service-site style) ================= */
.ct-h2{font-size:clamp(19px,2.6vw,24px);font-weight:900;letter-spacing:-.01em;text-wrap:balance}
.req-mark,.ct-h2 + .lede .req{color:var(--blue);font-weight:900}

/* 2つの窓口カード */
.ct-desks{display:grid;grid-template-columns:1fr;gap:16px;margin-top:44px}
@media(min-width:760px){ .ct-desks{grid-template-columns:1fr 1fr} }
.ct-desk{display:block;position:relative;background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:28px 26px 26px;transition:transform .4s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .4s}
.ct-desk:hover{transform:translateY(-5px);border-color:var(--green);box-shadow:var(--shadow)}
.ct-desk.is-blue:hover{border-color:var(--blue);box-shadow:0 30px 60px -34px rgba(18,115,230,.35)}
.ct-desk-key{font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;color:var(--gray)}
.ct-desk-ic{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;
  background:var(--paper-2);color:var(--green);margin:14px 0 18px;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.ct-desk.is-blue .ct-desk-ic{background:var(--blue-tint);color:var(--blue)}
.ct-desk:hover .ct-desk-ic{transform:scale(1.1) rotate(-6deg)}
.ct-desk-ic svg{width:22px;height:22px}
.ct-desk h3{font-size:17.5px;font-weight:900;margin-bottom:10px}
.ct-desk p{font-size:13.5px;line-height:1.9;color:var(--ink-soft);margin-bottom:18px}
.ct-desk-mail{display:inline-block;font-family:var(--mono);font-size:12.5px;color:var(--ink);
  border-bottom:1.5px solid var(--line-strong);padding-bottom:2px;transition:color .25s,border-color .25s}
.ct-desk:hover .ct-desk-mail{color:var(--green);border-color:var(--green)}
.ct-desk.is-blue:hover .ct-desk-mail{color:var(--blue);border-color:var(--blue)}

/* 補足ブロック */
.ct-note-block .ct-h2{margin-bottom:0}
.ct-list{margin:16px 0 0;padding-left:1.2em;font-size:14px;line-height:2;color:var(--ink-soft)}
.ct-list li{margin-bottom:4px}

.ct-alert{display:flex;gap:14px;align-items:flex-start;background:var(--white);
  border:1px solid var(--line);border-left:3px solid var(--blue);border-radius:14px;
  padding:20px 22px;margin-top:36px}
.ct-alert-mark{flex:none;width:24px;height:24px;border-radius:50%;background:var(--blue);color:#fff;
  display:grid;place-items:center;font-family:var(--disp);font-weight:800;font-size:14px;margin-top:1px}
.ct-alert p{font-size:13.5px;line-height:1.95;color:var(--ink-soft)}
.ct-alert a{color:var(--blue);text-decoration:underline}

.ct-related{display:flex;flex-wrap:wrap;gap:10px;margin-top:32px}
.ct-related a{font-size:13px;border:1px solid var(--line-strong);border-radius:100px;
  padding:9px 18px;transition:border-color .25s,color .25s}
.ct-related a:hover{border-color:var(--blue);color:var(--blue)}

/* ================= 404 ページ =================
   「探し物が見つかる会社」なので、404も“まだ見つかっていない”文脈で受け止める。 */
.nf .wrap{text-align:left}
.nf-in{position:relative}
.nf-figure{position:relative;display:flex;align-items:flex-end;justify-content:center;
  width:220px;height:210px;margin:0 0 34px}
.nf-figure img{position:relative;z-index:1;width:180px;height:auto;
  filter:drop-shadow(0 16px 18px rgba(20,30,10,.22))}
.nf-ring{position:absolute;left:50%;bottom:26px;width:190px;height:190px;border-radius:50%;
  border:1.5px solid rgba(18,115,230,.28);transform:translate(-50%,0);
  animation:nfPulse 4.6s cubic-bezier(.22,1,.36,1) infinite;opacity:0}
.nf-ring.d2{animation-delay:1.9s}
@keyframes nfPulse{
  0%{transform:translate(-50%,0) scale(.6);opacity:0}
  14%{opacity:.6}
  100%{transform:translate(-50%,0) scale(1.5);opacity:0}
}
@media(max-width:640px){
  .nf-figure{width:170px;height:170px;margin-bottom:26px}
  .nf-figure img{width:140px}
  .nf-ring{width:150px;height:150px}
}
.nf-links{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:64px}
@media(max-width:560px){ .nf-links{grid-template-columns:1fr} }
.nf-links a{display:flex;align-items:baseline;gap:12px;background:var(--white);
  border:1px solid var(--line);border-radius:16px;padding:18px 22px;
  font-family:var(--disp);font-weight:800;font-size:17px;
  transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .3s,box-shadow .35s}
.nf-links a:hover{transform:translateY(-4px);border-color:var(--blue);
  box-shadow:0 24px 44px -30px rgba(18,115,230,.5)}
.nf-links a i{font-family:var(--mono);font-style:normal;font-size:10.5px;
  letter-spacing:.14em;color:var(--gray);flex:none}
.nf-links a span{font-family:var(--jp);font-weight:500;font-size:12px;
  letter-spacing:.06em;color:var(--gray);margin-left:auto}
@media(prefers-reduced-motion:reduce){ .nf-ring{animation:none;opacity:.35} }

/* ================= 運営会社カード（Contact） =================
   項目を並べただけの表はページの中で浮くので、
   ロゴ入りのカードにまとめて他のセクションと density を合わせる。 */
.op-card{position:relative;overflow:hidden;margin-top:20px;
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:30px 30px 26px}
.op-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--blue),var(--green))}
.op-head{display:flex;align-items:center;gap:14px;padding-bottom:22px;
  border-bottom:1px solid var(--line)}
.op-logo{width:34px;height:auto;flex:none}
.op-en{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--gray)}
.op-name{font-size:18px;font-weight:900;margin-top:4px}
.op-list{display:grid;grid-template-columns:1fr;gap:0}
.op-list > div{padding:20px 0;border-bottom:1px solid var(--line)}
.op-list dt{display:flex;flex-direction:column;gap:4px;
  font-size:12.5px;font-weight:700;color:var(--ink)}
.op-list dt span{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
  color:var(--blue)}
.op-list dd{margin-top:10px;font-size:15px;line-height:1.85;color:var(--ink-soft)}
@media(min-width:640px){
  .op-list > div{display:grid;grid-template-columns:170px 1fr;gap:18px;align-items:baseline}
  .op-list dd{margin-top:0}
}
.op-more{display:inline-flex;align-items:center;gap:8px;margin-top:22px;
  font-size:13.5px;font-weight:700;color:var(--blue);transition:gap .3s}
.op-more .ar{font-family:var(--mono);transition:transform .3s}
@media(hover:hover) and (pointer:fine){
  .op-more:hover .ar{transform:translateX(4px)}
}
@media(max-width:560px){ .op-card{padding:26px 22px 22px} }

/* ================= POLICY PAGES (privacy / security) =================
   mitsukaeru.jp のプライバシーポリシーと同じ骨格
   （見出し → 目次カード → 番号つき本文 → 末尾のトップへ戻る）に、
   コーポレートの要素（虫めがねの透かし・ブランドカラーの番号）を足したもの。 */
/* ヘッダーは position:fixed なので、その高さぶん上に余白を取る */
.pol-hero{position:relative;overflow:hidden;padding:calc(var(--nav-h) + clamp(34px,5vw,58px)) 0 clamp(36px,5vw,56px);
  background:linear-gradient(180deg,var(--paper-2) 0%,var(--white) 100%);
  border-bottom:1px solid var(--line)}
/* 右上に薄く浮かぶ虫めがね。コーポレートらしさをここで足す */
.pol-hero-lens{position:absolute;right:-70px;top:-40px;width:340px;height:340px;
  border-radius:50%;pointer-events:none;
  box-shadow:0 0 0 14px rgba(18,115,230,.07),inset 0 0 0 1px rgba(18,115,230,.10)}
.pol-hero-lens::after{content:"";position:absolute;width:24px;height:150px;
  right:6px;bottom:-124px;transform:rotate(45deg);transform-origin:top center;
  border-radius:8px;background:rgba(18,115,230,.07)}
@media(max-width:720px){ .pol-hero-lens{width:220px;height:220px;right:-60px;top:-30px} }

.pol-en{font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--blue)}
.pol-title{margin-top:14px;font-size:clamp(28px,5.2vw,46px);font-weight:900;
  letter-spacing:-.02em;line-height:1.35;text-wrap:balance}
.pol-lede{margin-top:20px;font-size:clamp(14.5px,1.5vw,16px);line-height:2;
  color:var(--ink-soft);max-width:44em}
.pol-date{margin-top:22px;font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;
  color:var(--gray)}

/* ---- 2カラム（PCは左に目次を固定表示） ---- */
.pol-wrap{padding-top:clamp(40px,6vw,60px)}
.pol-layout{display:grid;grid-template-columns:1fr;gap:34px}
@media(min-width:960px){
  .pol-layout{grid-template-columns:246px 1fr;gap:64px;align-items:start}
  .pol-side{position:sticky;top:calc(var(--nav-h) + 26px);
    max-height:calc(100vh - var(--nav-h) - 52px);overflow-y:auto}
  .pol-side::-webkit-scrollbar{width:4px}
  .pol-side::-webkit-scrollbar-thumb{background:var(--line);border-radius:100px}
}

/* ---- 目次 ---- */
.pol-toc-h{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;color:var(--blue);
  margin-bottom:14px}
.pol-toc ol{list-style:none}
.pol-toc a{position:relative;display:flex;align-items:baseline;gap:8px;
  border-radius:10px;padding:11px 14px;font-size:13.5px;line-height:1.6;
  color:var(--gray);transition:background .3s,color .3s}
.pol-toc a i{font-family:var(--mono);font-style:normal;font-size:11px;flex:none}
@media(hover:hover) and (pointer:fine){
  .pol-toc a:hover{background:var(--paper-2);color:var(--ink)}
}
/* いま読んでいる項目 */
.pol-toc a.is-active{background:var(--blue-tint);color:var(--blue);font-weight:700}
.pol-toc a.is-active::before{content:"";position:absolute;left:0;top:9px;bottom:9px;width:3px;
  border-radius:100px;background:var(--blue)}

/* スマホでは追従させず、上部のカードに横並びで置く */
@media(max-width:959px){
  .pol-toc{background:var(--paper-2);border:1px solid var(--line);border-radius:18px;
    padding:22px 20px 18px}
  .pol-toc ol{display:flex;flex-wrap:wrap;gap:9px}
  .pol-toc a{background:var(--white);border:1px solid var(--line);border-radius:11px;
    padding:9px 13px;font-size:13px;color:var(--ink-soft)}
  .pol-toc a i{color:var(--blue)}
  .pol-toc a.is-active{background:var(--blue-tint);border-color:var(--blue)}
  .pol-toc a.is-active::before{display:none}
}

/* ---- 本文 ---- */
.pol-sec{scroll-margin-top:calc(var(--nav-h) + 24px)}
.pol-sec + .pol-sec{border-top:1px solid var(--line);
  margin-top:clamp(34px,4vw,46px);padding-top:clamp(34px,4vw,46px)}
.pol-sec h2{display:flex;align-items:baseline;gap:9px;
  font-size:clamp(19px,2.4vw,23px);font-weight:900;letter-spacing:-.01em;line-height:1.5}
.pol-n{flex:none;color:var(--ink)}
.pol-txt{margin-top:18px}
.pol-txt p{font-size:15px;line-height:2.05;color:var(--ink-soft)}
.pol-txt p + p{margin-top:16px}
.pol-txt ul{list-style:none;margin:16px 0 0;display:flex;flex-direction:column;gap:11px}
.pol-txt ul + p{margin-top:18px}
.pol-txt li{position:relative;padding-left:20px;font-size:15px;line-height:1.95;
  color:var(--ink-soft)}
.pol-txt li::before{content:"";position:absolute;left:1px;top:.82em;width:6px;height:6px;
  border-radius:50%;background:var(--blue);opacity:.55}
.pol-txt a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
/* 項目と値がある内容は表で見せる（mitsukaeru.jp と同じ形） */
.pol-table{width:100%;border-collapse:collapse;margin-top:18px;
  border:1px solid var(--line);border-radius:12px;overflow:hidden}
.pol-table th,.pol-table td{padding:14px 16px;border-bottom:1px solid var(--line);
  font-size:14.5px;line-height:1.8;text-align:left;vertical-align:top}
.pol-table th{width:190px;background:var(--paper-2);font-weight:700;color:var(--ink)}
.pol-table td{color:var(--ink-soft)}
.pol-table tr:last-child th,.pol-table tr:last-child td{border-bottom:none}
@media(max-width:560px){
  .pol-table th,.pol-table td{display:block;width:auto}
  .pol-table th{border-bottom:none;padding-bottom:0;background:none;font-size:12.5px;color:var(--blue)}
  .pol-table td{padding-top:6px}
}

/* ---- 末尾 ---- */
.pol-foot{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:20px;margin-top:clamp(40px,5vw,60px);padding-top:28px;border-top:1px solid var(--line)}
.pol-sign{font-size:14.5px;font-weight:900;letter-spacing:.02em}
.pol-sign span{display:block;margin-top:6px;font-family:var(--mono);font-size:11px;
  font-weight:500;letter-spacing:.06em;color:var(--gray)}
/* mitsukaeru.jp と同じく、末尾の右側に「トップへ戻る」を置く */
.pol-top{display:inline-flex;align-items:center;gap:9px;
  border:1px solid var(--line-strong);border-radius:100px;padding:12px 22px;
  font-size:13.5px;font-weight:700;letter-spacing:.02em;
  transition:border-color .3s,background .3s,transform .3s cubic-bezier(.16,1,.3,1)}
.pol-top .ar{font-family:var(--mono);font-size:12px;color:var(--blue)}
@media(hover:hover) and (pointer:fine){
  .pol-top:hover{border-color:var(--blue);background:var(--blue-tint);transform:translateY(-2px)}
}
@media(max-width:560px){
  .pol-foot{flex-direction:column;align-items:stretch}
  .pol-top{justify-content:center}
}

/* ================= 電子公告（/koukoku/） =================
   法定の掲載物なので、読みやすさと「今どうなっているか」が
   すぐ分かることを優先する。公告が0件のときも状態を明示する。 */
.kk-method{position:relative;overflow:hidden;
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:28px 30px 30px}
.kk-method::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--blue),var(--green))}
.kk-method-h{display:flex;align-items:center;gap:12px;
  font-size:16px;font-weight:900;letter-spacing:.01em}
.kk-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;
  background:var(--blue-tint);flex:none}
.kk-mark svg{width:19px;height:19px;color:var(--blue)}
.kk-note{display:inline-block;margin-top:6px;font-size:12.5px;line-height:1.85;color:var(--gray)}
@media(max-width:560px){ .kk-method{padding:24px 20px 24px;border-radius:16px} }

.kk-block{margin-top:clamp(40px,5vw,58px)}
.kk-head{display:flex;align-items:center;gap:14px}
.kk-count{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--blue);
  background:var(--blue-tint);border-radius:100px;padding:5px 12px}

.kk-list{display:flex;flex-direction:column;gap:16px;margin-top:22px}
.kk-item{position:relative;background:var(--white);border:1px solid var(--line);
  border-radius:18px;padding:26px 28px}
.kk-item-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.kk-date{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--gray)}
.kk-kind{font-size:11.5px;font-weight:700;letter-spacing:.04em;color:var(--blue);
  background:var(--blue-tint);border-radius:100px;padding:5px 12px}
.kk-title{margin-top:12px;font-size:clamp(17px,2.2vw,20px);font-weight:900;
  letter-spacing:-.01em;line-height:1.6}
.kk-period{margin-top:10px;font-size:12.5px;color:var(--gray)}
.kk-body{margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}
/* 掲載終了ぶんは、現行の公告と見分けがつくよう落ち着かせる */
.kk-list.is-past .kk-item{background:var(--paper-2);border-color:transparent}
.kk-list.is-past .kk-kind{color:var(--gray);background:rgba(17,24,39,.06)}
.kk-list.is-past .kk-title{font-size:16px;color:var(--ink-soft)}
@media(max-width:560px){ .kk-item{padding:22px 20px;border-radius:14px} }

/* 公告が1件も無いときの表示 */
.kk-empty{margin-top:22px;text-align:center;
  background:var(--paper-2);border:1px dashed var(--line-strong);border-radius:20px;
  padding:clamp(38px,6vw,56px) 24px}
.kk-empty-ic{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 18px;
  border-radius:16px;background:var(--white);border:1px solid var(--line)}
.kk-empty-ic svg{width:24px;height:24px;color:var(--blue);opacity:.7}
.kk-empty-t{font-size:16px;font-weight:900;letter-spacing:.01em}
.kk-empty-d{margin-top:10px;font-size:13.5px;color:var(--gray);line-height:1.9}

/* ================= 電話窓口（Contact） =================
   メールの窓口カード2枚とは連絡手段が違うので、横長の1枚で別立てにする。 */
.ct-tel{display:grid;grid-template-columns:1fr;gap:20px;margin-top:16px;
  position:relative;overflow:hidden;
  background:var(--white);border:1px solid var(--line);border-radius:20px;
  padding:28px 30px}
.ct-tel::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,var(--blue),var(--green))}
@media(min-width:760px){
  .ct-tel{grid-template-columns:auto 1fr;gap:40px;align-items:center}
}
.ct-tel-main{display:flex;align-items:flex-start;gap:18px}
.ct-tel-ic{flex:none;display:grid;place-items:center;width:52px;height:52px;
  border-radius:16px;background:var(--blue-tint);color:var(--blue)}
.ct-tel-ic svg{width:25px;height:25px}
.ct-tel-key{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--gray)}
/* 番号は一番目立たせる。スマホはタップで発信できる */
.ct-tel-num{display:inline-block;margin-top:8px;
  font-family:var(--mono);font-size:clamp(26px,4.4vw,32px);font-weight:700;
  letter-spacing:.02em;line-height:1.1;color:var(--ink);text-decoration:none;
  transition:color .25s}
@media(hover:hover) and (pointer:fine){
  .ct-tel-num:hover{color:var(--blue)}
}
.ct-tel-hours{margin-top:10px;font-size:13.5px;font-weight:700;letter-spacing:.02em}
.ct-tel-hours span{font-weight:500;color:var(--gray);white-space:nowrap}
.ct-tel-note{font-size:13px;line-height:1.95;color:var(--ink-soft)}
@media(min-width:760px){
  .ct-tel-note{padding-left:40px;border-left:1px solid var(--line)}
}
@media(max-width:560px){
  .ct-tel{padding:24px 22px;border-radius:16px}
  .ct-tel-main{gap:14px}
  .ct-tel-ic{width:46px;height:46px;border-radius:14px}
  .ct-tel-ic svg{width:22px;height:22px}
}
