:root {
    --red: #fb0404;
    --red-deep: #d10303;
    --red-wash: #fff2f1;
    --black: #000000;
    --ink: #1a1a1a;
    --ink-2: #5c5c5c;
    --ink-3: #8e8e8e;
    --ink-meta: #767676;  /* 白地で4.5:1を満たす最小グレー */
    --paper: #ffffff;
    --paper-2: #f5f5f5;
    --hair: #e4e4e4;

    --ja: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Noto Sans JP", system-ui, sans-serif;
    --en: "Hiragino Maru Gothic ProN", "Avenir Next Rounded", "Varela Round", "Quicksand", var(--ja);

    --pad: clamp(20px, 5vw, 64px);
  }

  * { box-sizing: border-box; }

  body {
    margin: 0; background: var(--paper); color: var(--ink);
    font-family: var(--ja); font-size: 16px; line-height: 1.9; letter-spacing: .02em;
    -webkit-font-smoothing: antialiased; overflow-x: hidden;
  }
  img { max-width: 100%; display: block; }
  .shell { max-width: 1160px; margin: 0 auto; padding-inline: var(--pad); }
  .narrow { max-width: 880px; margin: 0 auto; padding-inline: var(--pad); }

  /* ========== ヘッダー ========== */
  header {
    position: sticky; top: 0; z-index: 80;
    background: rgba(255,255,255,.93); backdrop-filter: blur(10px);
    border-bottom: 1px solid var(--hair);
  }
  .bar { max-width: 1160px; margin: 0 auto; padding: 0 var(--pad); height: 76px; display: flex; align-items: center; gap: 28px; }
  .bar .logo { width: 158px; flex: none; }
  header nav { margin-left: auto; display: flex; align-items: center; gap: 34px; }
  header nav a {
    color: var(--ink); text-decoration: none; font-family: var(--en);
    font-size: 14px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase;
    position: relative; padding: 4px 0;
  }
  header nav a::after {
    content: ""; position: absolute; left: 50%; bottom: -2px; width: 5px; height: 5px;
    border-radius: 50%; background: var(--red); transform: translate(-50%,4px) scale(0);
    transition: transform .25s ease;
  }
  header nav a:hover::after, header nav a:focus-visible::after, header nav a.on::after { transform: translate(-50%,0) scale(1); }
  .burger { display: none; }

  /* ========== 下層ページ見出し帯 ========== */
  .phead { position: relative; background: var(--paper-2); overflow: hidden; padding-block: clamp(48px, 7vw, 88px); }
  .phead .orb {
    position: absolute; border-radius: 50%; background: var(--red); opacity: .1;
    width: 30vw; height: 30vw; right: -8vw; top: -12vw; pointer-events: none;
  }
  .phead .shell { position: relative; }
  .phead .en {
    font-family: var(--en); font-weight: 700; font-size: clamp(30px, 4.6vw, 50px);
    letter-spacing: .06em; margin: 0; line-height: 1.15;
  }
  .phead .ja { margin: 8px 0 0; font-size: 14px; font-weight: 700; letter-spacing: .1em; color: var(--ink-2); }
  .crumb { margin: 0 0 18px; font-size: 12px; color: var(--ink-3); letter-spacing: .04em; }
  .crumb a { color: var(--ink-3); text-decoration: none; }
  .crumb a:hover { color: var(--red); }

  /* ========== セクション共通 ========== */
  section { padding-block: clamp(60px, 9vw, 112px); }
  .head { margin-bottom: clamp(30px, 4vw, 52px); }
  .head .mark { display: flex; align-items: flex-end; gap: 5px; margin-bottom: 14px; }
  .head .mark i { display: block; border-radius: 50%; background: var(--red); }
  .head .mark i:nth-child(1) { width: 6px; height: 6px; }
  .head .mark i:nth-child(2) { width: 9px; height: 9px; }
  .head .mark i:nth-child(3) { width: 13px; height: 13px; }
  .head .en { font-family: var(--en); font-weight: 700; font-size: clamp(22px, 3vw, 32px); letter-spacing: .06em; margin: 0; line-height: 1.2; }
  .head .ja { margin: 6px 0 0; font-size: 13px; font-weight: 700; color: var(--ink-2); letter-spacing: .1em; }

  .lead { font-size: clamp(18px, 2.6vw, 26px); line-height: 1.95; font-weight: 700; letter-spacing: .01em; max-width: 30em; margin: 0; text-wrap: balance; }
  .body-t { color: var(--ink-2); font-size: 15px; line-height: 2.15; }

  .pill {
    display: inline-flex; align-items: center; gap: 9px;
    background: var(--red); color: #fff; text-decoration: none;
    font-size: 14px; font-weight: 700; letter-spacing: .04em;
    padding: 13px 26px; border-radius: 999px; border: 0; cursor: pointer;
    font-family: var(--ja);
    transition: transform .22s ease, background .22s ease;
  }
  .pill:hover { background: var(--red-deep); transform: translateY(-2px); }
  .pill.ghost { background: transparent; color: var(--ink); border: 1.5px solid var(--ink); }
  .pill.ghost:hover { background: var(--ink); color: #fff; }
  .pill.light { background: #fff; color: var(--black); }
  .pill.light:hover { background: var(--paper-2); }
  .pill.big { font-size: clamp(15px,1.8vw,17px); padding: 20px 42px; box-shadow: 0 10px 34px -16px rgba(255,255,255,.5); }
  .pill .arw { transition: transform .25s ease; }
  .pill:hover .arw { transform: translateX(5px); }

  /* ========== 事業内容 ========== */
  .biz-intro { position: relative; padding-block: clamp(50px, 7vw, 84px) clamp(30px, 4vw, 48px); }
  .biz-intro .intro-dots {
    position: absolute; right: var(--pad); top: clamp(50px, 7vw, 84px);
    display: flex; align-items: flex-end; gap: 9px; opacity: .9;
  }
  .biz-intro .intro-dots i { display: block; border-radius: 50%; background: var(--red); }
  .biz-intro .intro-dots i:nth-child(1){ width:12px; height:12px; opacity:.35 }
  .biz-intro .intro-dots i:nth-child(2){ width:20px; height:20px; opacity:.6 }
  .biz-intro .intro-dots i:nth-child(3){ width:32px; height:32px }
  @media (max-width: 900px) { .biz-intro .intro-dots { display: none; } }

  .biz-band {
    position: relative; overflow: hidden;
    padding-block: clamp(66px, 10vw, 124px);
    background: var(--paper);
  }
  .biz-band.alt { background: var(--paper-2); }
  .biz-band .wash {
    position: absolute; border-radius: 50%; pointer-events: none;
    width: 44vw; height: 44vw; background: var(--red);
    opacity: .055; right: -13vw; top: -15vw;
  }
  .biz-band.alt .wash { right: auto; left: -15vw; top: auto; bottom: -17vw; opacity: .075; }

  .biz-item {
    position: relative;
    display: grid; grid-template-columns: clamp(78px, 9vw, 112px) 1fr;
    gap: clamp(20px, 3.5vw, 48px); align-items: start;
  }
  .biz-badge {
    width: clamp(78px, 9vw, 112px); aspect-ratio: 1; border-radius: 50%;
    background: var(--red); color: #fff;
    display: grid; place-items: center;
    font-family: var(--en); font-weight: 700; letter-spacing: .04em;
    font-size: clamp(25px, 3.2vw, 36px); line-height: 1;
    box-shadow: 0 12px 26px -14px rgba(251,4,4,.38);
  }
  .biz-txt h3 { margin: 6px 0 20px; font-size: clamp(24px, 3.6vw, 40px); line-height: 1.45; font-weight: 800; letter-spacing: .01em; text-wrap: balance; }
  .biz-txt .body-t { margin: 0; max-width: 40em; }

  /* ========== 会社概要 ========== */
  .credo { position: relative; overflow: hidden; background: var(--paper-2); }
  .credo .wash {
    position: absolute; border-radius: 50%; pointer-events: none;
    width: 40vw; height: 40vw; background: var(--red); opacity: .06;
    right: -12vw; bottom: -18vw;
  }
  .credo .shell { position: relative; }
  .credo-q {
    margin: 0 0 26px; font-size: clamp(22px, 3.4vw, 36px); line-height: 1.7;
    font-weight: 800; letter-spacing: .02em; text-wrap: balance;
  }
  .credo-q em { font-style: normal; color: var(--red); }
  .msg-body { max-width: 42em; }
  .msg-body .body-t { margin: 0 0 20px; }
  .sign { margin-top: 30px; padding-top: 22px; border-top: 1px solid var(--hair); font-size: 14px; color: var(--ink-2); }
  .sign b { display: block; font-size: 19px; color: var(--ink); letter-spacing: .08em; margin-top: 4px; }

  table.profile { width: 100%; border-collapse: collapse; font-size: 15px; }
  table.profile th, table.profile td { text-align: left; padding: 20px 4px; border-bottom: 1px solid var(--hair); vertical-align: top; }
  table.profile th { width: 190px; font-weight: 700; color: var(--ink); letter-spacing: .06em; }
  table.profile td { color: var(--ink-2); }
  table.profile tr:first-child th, table.profile tr:first-child td { border-top: 1px solid var(--hair); }
  .tbl-wrap { overflow-x: auto; }

  /* ========== お知らせ ========== */
  .tabs { display: flex; gap: 10px; margin-bottom: 28px; flex-wrap: wrap; }
  .tab {
    border: 1px solid var(--hair); background: var(--paper); color: var(--ink-2);
    border-radius: 999px; padding: 8px 20px; font-size: 13px; font-weight: 700;
    cursor: pointer; font-family: var(--ja); letter-spacing: .04em;
  }
  .tab.on { background: var(--red); border-color: var(--red); color: #fff; }

  .news-list { border-top: 1px solid var(--hair); }
  .news-row {
    display: grid; grid-template-columns: 112px 100px 1fr auto; gap: 20px; align-items: center;
    padding: 24px 6px; border-bottom: 1px solid var(--hair);
    text-decoration: none; color: var(--ink); transition: background .22s ease, padding-left .22s ease;
  }
  .news-row:hover { background: var(--paper-2); padding-left: 16px; }
  .news-date { font-family: var(--en); font-size: 13px; color: var(--ink-3); letter-spacing: .06em; font-variant-numeric: tabular-nums; }
  .news-cat { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-align: center; border: 1px solid var(--red); color: var(--red-deep); border-radius: 999px; padding: 3px 0; }
  .news-cat.b { border-color: var(--ink-3); color: var(--ink-2); }
  .news-ttl { font-size: 15px; font-weight: 600; line-height: 1.7; }
  .news-arw { color: var(--ink-3); transition: transform .25s ease; }
  .news-row:hover .news-arw { transform: translateX(5px); color: var(--red); }
  .pager { display: flex; gap: 8px; justify-content: center; margin-top: 40px; }
  .pager a {
    width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
    text-decoration: none; color: var(--ink-2); font-family: var(--en); font-size: 14px;
    border: 1px solid var(--hair);
  }
  .pager a.on { background: var(--red); border-color: var(--red); color: #fff; }

  /* 個別記事 */
  .article-meta { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
  .article h1 { margin: 0 0 36px; font-size: clamp(24px, 3.4vw, 36px); line-height: 1.6; font-weight: 800; text-wrap: balance; }
  .article h2 {
    margin: 48px 0 18px; font-size: clamp(18px, 2.2vw, 22px); font-weight: 800;
    padding-left: 16px; border-left: 4px solid var(--red); line-height: 1.6;
  }
  .article p { margin: 0 0 22px; color: var(--ink-2); font-size: 15.5px; line-height: 2.2; }
  .article .figure { aspect-ratio: 16/9; background: #ededed; border-radius: 16px; margin: 32px 0; position: relative; }
  .article .figure .tagph { position: absolute; left: 16px; bottom: 13px; font-size: 10px; letter-spacing: .12em; color: #7d7d7d; }
  .art-foot { display: flex; justify-content: space-between; gap: 14px; margin-top: 56px; padding-top: 28px; border-top: 1px solid var(--hair); flex-wrap: wrap; }
  .art-foot a { color: var(--ink-2); text-decoration: none; font-size: 14px; font-weight: 600; }
  .art-foot a:hover { color: var(--red); }

  /* ========== フォーム ========== */
  form { display: flex; flex-direction: column; gap: 26px; }
  .field { display: flex; flex-direction: column; gap: 9px; }
  .field label { font-size: 13.5px; font-weight: 700; letter-spacing: .06em; display: flex; align-items: center; gap: 9px; }
  .req { background: var(--red); color: #fff; font-size: 10px; letter-spacing: .08em; padding: 2px 8px; border-radius: 999px; font-weight: 700; }
  .opt { background: var(--paper-2); color: var(--ink-3); font-size: 10px; letter-spacing: .08em; padding: 2px 8px; border-radius: 999px; font-weight: 700; }
  .field input, .field select, .field textarea {
    font: inherit; font-size: 15px; color: var(--ink);
    border: 1px solid var(--hair); border-radius: 12px; background: var(--paper);
    padding: 15px 16px; width: 100%;
    transition: border-color .2s ease, box-shadow .2s ease;
  }
  .field textarea { min-height: 170px; resize: vertical; }
  .field input:focus, .field select:focus, .field textarea:focus {
    outline: none; border-color: var(--red); box-shadow: 0 0 0 3px var(--red-wash);
  }
  .agree { display: flex; align-items: flex-start; gap: 12px; background: var(--paper-2); border-radius: 14px; padding: 18px 20px; font-size: 14px; }
  .agree input { margin-top: 5px; accent-color: var(--red); width: 18px; height: 18px; flex: none; }
  .agree a { color: var(--red-deep); }
  .captcha { border: 1px dashed var(--hair); border-radius: 12px; padding: 20px; text-align: center; font-size: 12px; color: var(--ink-3); letter-spacing: .06em; }
  .submit-wrap { display: flex; justify-content: center; margin-top: 6px; }

  .thanks { text-align: center; border: 1px solid var(--hair); border-radius: 20px; padding: clamp(40px,6vw,64px) 28px; }
  .thanks .mark { display: flex; justify-content: center; align-items: flex-end; gap: 6px; margin-bottom: 22px; }
  .thanks .mark i { display: block; border-radius: 50%; background: var(--red); }
  .thanks .mark i:nth-child(1){width:8px;height:8px}
  .thanks .mark i:nth-child(2){width:13px;height:13px}
  .thanks .mark i:nth-child(3){width:19px;height:19px}
  .thanks h3 { margin: 0 0 12px; font-size: clamp(19px,2.4vw,24px); font-weight: 800; }
  .thanks p { margin: 0 0 26px; color: var(--ink-2); font-size: 14.5px; }

  /* ========== プライバシー ========== */
  .policy h2 {
    margin: 44px 0 14px; font-size: 17px; font-weight: 800; letter-spacing: .04em;
    display: flex; align-items: baseline; gap: 12px;
  }
  .policy h2 .n { font-family: var(--en); font-size: 12px; color: var(--red); letter-spacing: .14em; }
  .policy h2:first-of-type { margin-top: 0; }
  .policy p, .policy li { color: var(--ink-2); font-size: 15px; line-height: 2.15; }
  .policy p { margin: 0 0 10px; }
  .policy ul { margin: 0 0 10px; padding-left: 1.3em; }
  .policy .rev { margin-top: 44px; padding-top: 22px; border-top: 1px solid var(--hair); font-size: 13px; color: var(--ink-3); }

  /* ========== 共通CTA ========== */
  .cta { position: relative; background: var(--black); color: #fff; overflow: hidden; text-align: center; }
  .cta .blob { position: absolute; width: 40vw; height: 40vw; border-radius: 50%; background: var(--red); opacity: .9; right: -14vw; top: -16vw; pointer-events: none; }
  .cta .shell { position: relative; }
  .cta h2 { margin: 0 0 14px; font-family: var(--en); font-size: clamp(24px,3.4vw,36px); letter-spacing: .06em; font-weight: 700; }
  .cta p { margin: 0 auto clamp(30px,4vw,44px); color: rgba(255,255,255,.78); font-size: 15px; max-width: 32em; }

  /* ========== フッター ========== */
  footer { border-top: 1px solid var(--hair); background: var(--paper); color: var(--ink-2); padding-block: clamp(56px,7vw,84px) 28px; }
  .f-top { display: grid; grid-template-columns: 1fr auto; gap: clamp(28px,5vw,64px); align-items: start; }
  .f-logo { width: 176px; margin-bottom: 20px; }
  .f-addr { font-size: 13px; line-height: 2.1; color: var(--ink-2); font-style: normal; }
  .f-addr a.f-tel { color: var(--ink); text-decoration:none; font-family: var(--en); font-size:17px; font-weight:700; letter-spacing:.05em; display:inline-block; margin-top:10px; }
  .f-addr .f-hours { font-size: 12px; color: var(--ink-meta); letter-spacing: .06em; }
  .f-col { padding-top: 4px; }
  .f-priv { color: var(--ink-meta); text-decoration: none; font-family: var(--ja); letter-spacing: .04em; }
  .f-col ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 11px; }
  .f-col a { color: var(--ink); text-decoration: none; font-size: 13.5px; }
  .f-bottom {
    margin-top: clamp(40px,6vw,64px); padding-top: 22px; border-top: 1px solid var(--hair);
    display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
    font-family: var(--en); font-size: 11.5px; letter-spacing: .1em; color: var(--ink-meta);
  }


  .rv { opacity: 0; transform: translateY(14px); }
  .rv.in { opacity: 1; transform: none; transition: opacity .62s ease, transform .62s cubic-bezier(.2,.7,.3,1); }
  @media (prefers-reduced-motion: reduce) { .rv { opacity: 1; transform: none; } }


  a:focus-visible, button:focus-visible, input:focus-visible { outline: 2px solid var(--red); outline-offset: 3px; }

  @media (max-width: 900px) {
    .bar { height: 64px; gap: 16px; }
    .bar .logo { width: 132px; }
    header nav { display: none; }
    .burger { display: flex; flex-direction: column; gap: 5px; margin-left: auto; background: none; border: 0; padding: 8px; cursor: pointer; }
    .burger span { display: block; width: 24px; height: 2px; background: var(--ink); border-radius: 2px; }
    .biz-item { grid-template-columns: 1fr; gap: 16px; }
    .biz-badge { width: 64px; font-size: 22px; }
    .biz-band .wash { width: 86vw; height: 86vw; right: -36vw; top: -30vw; }
    .biz-band.alt .wash { left: -36vw; bottom: -34vw; }
    table.profile th { width: 120px; font-size: 13.5px; }
    table.profile th, table.profile td { padding: 15px 4px; font-size: 14px; }
    .news-row { grid-template-columns: 1fr auto; row-gap: 6px; }
    .news-ttl { grid-column: 1 / -1; }
    .news-arw { display: none; }
    .f-top { grid-template-columns: 1fr; }
  }
  @media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }
  /* ================= FV ================= */
  .hero {
    position: relative; overflow: hidden;
    background: var(--paper);
    /* ヘッダー（76px）を引いて、ちょうど画面1枚分。内容が入りきらない時だけ自動で伸びる */
    min-height: calc(100vh - 76px);
    min-height: calc(100svh - 76px);
    display: flex; align-items: center;
    padding-block: clamp(48px, 7vw, 96px);
  }
  .hero-wash {
    position: absolute; right: -14vw; top: -18vw;
    width: 62vw; height: 62vw; border-radius: 50%;
    background: var(--red-wash);
    pointer-events: none;
  }
  .hero .shell { position: relative; display: grid; grid-template-columns: 1.05fr .95fr; gap: var(--gutter); align-items: center; width: 100%; }

  h1 {
    margin: 0;
    font-size: clamp(32px, 5.4vw, 60px);
    line-height: 1.38;
    letter-spacing: .01em;
    font-weight: 800;
    text-wrap: balance;
  }
  h1 .dot { color: var(--red); }
  .hero p.sub {
    margin: 30px 0 0; max-width: 34em;
    color: var(--ink-2); font-size: clamp(14px, 1.5vw, 16px); line-height: 2.1;
  }

  /* 円モチーフ（ロゴの3つの円） */
  .circles { position: relative; aspect-ratio: 1 / .82; }
  .circles i {
    position: absolute; border-radius: 50%; background: var(--red); display: block;
    will-change: transform;
  }
  /* 3つの円は「速さ・揺れ幅・開始位置」を全部ずらして、1つずつ別々にふわふわさせる。
     マイナスの遅延＝読み込んだ瞬間からバラバラの位置で動き出す（最初だけ揃って見えるのを防ぐ） */
  .circles .c1 { width: 19%; height: 23%; left: 0;   bottom: 2%;  animation: floatS 4.6s ease-in-out -1.1s infinite; }
  .circles .c2 { width: 33%; height: 40%; left: 15%; bottom: 10%; animation: floatM 6.1s ease-in-out -2.4s infinite; }
  .circles .c3 { width: 56%; height: 68%; right: 2%; top: 0;      animation: floatL 7.9s ease-in-out    0s infinite; }
  @keyframes floatS { 0%,100% { transform: translate(0,0); }     50% { transform: translate(2px,-8px); } }
  @keyframes floatM { 0%,100% { transform: translate(0,0); }     50% { transform: translate(-3px,-13px); } }
  @keyframes floatL { 0%,100% { transform: translate(0,0); }     50% { transform: translate(4px,-18px); } }



  .biz-lead {
    margin: 0 0 22px; font-size: clamp(19px, 2.8vw, 29px); line-height: 1.95;
    font-weight: 800; letter-spacing: .01em; text-wrap: balance;
  }
  .biz-lead b { color: var(--red); font-weight: 800; }
  .biz-sub { margin: 0 0 clamp(30px, 4vw, 44px); color: var(--ink-2); font-size: 15px; line-height: 2.1; max-width: 34em; }
  /* ================= お問い合わせ ================= */
  .contact { position: relative; background: var(--black); color: #fff; overflow: hidden; }
  .contact .blob {
    position: absolute; width: 46vw; height: 46vw; border-radius: 50%;
    background: var(--red); opacity: .92;
    right: -16vw; top: -18vw; pointer-events: none;
  }
  .contact .blob.s {
    width: 15vw; height: 15vw; right: 24vw; top: 24vw; opacity: .5;
  }
  .contact .shell { position: relative; }
  .contact .head .en { color: #fff; }
  .contact .head .ja { color: rgba(255,255,255,.66); }
  .contact p.lead { margin: 0 0 clamp(32px, 4vw, 48px); color: rgba(255,255,255,.8); font-size: 15px; line-height: 2.1; max-width: 32em; }

  .pill.big {
    font-size: clamp(15px, 1.8vw, 17px); padding: 20px 42px;
    box-shadow: 0 10px 34px -16px rgba(255,255,255,.5);
  }
  .pill.big .arw { transition: transform .25s ease; }
  .pill.big:hover .arw { transform: translateX(5px); }


  /* ========== モバイル用 全画面メニュー ========== */
  .mmenu {
    position: fixed; inset: 0; z-index: 120; background: var(--paper);
    display: none; flex-direction: column;
  }
  .mmenu.open { display: flex; }
  .mmenu-bar { height: 64px; display: flex; align-items: center; padding: 0 var(--pad); border-bottom: 1px solid var(--hair); }
  .mmenu-bar img { width: 132px; }
  .mmenu-close { margin-left: auto; width: 30px; height: 30px; position: relative; background: none; border: 0; cursor: pointer; }
  .mmenu-close span { position: absolute; left: 3px; top: 14px; width: 24px; height: 2px; background: var(--ink); border-radius: 2px; }
  .mmenu-close span:nth-child(1) { transform: rotate(45deg); }
  .mmenu-close span:nth-child(2) { transform: rotate(-45deg); }
  .mmenu-list { margin: 0; padding: 14px var(--pad) 0; display: flex; flex-direction: column; gap: 0; align-items: stretch; overflow-y: auto; }
  .mmenu-list a {
    display: flex; align-items: baseline; gap: 12px; text-decoration: none; color: var(--ink);
    padding: 20px 0; border-bottom: 1px solid var(--hair);
  }
  .mmenu-list a .en { font-family: var(--en); font-size: 21px; font-weight: 700; letter-spacing: .08em; }
  .mmenu-list a .ja { font-size: 12px; color: var(--ink-3); }
  .mmenu-list a .dot { margin-left: auto; width: 8px; height: 8px; border-radius: 50%; background: var(--red); align-self: center; }
  .mmenu-foot { margin-top: auto; padding: 26px var(--pad) 32px; background: var(--paper-2); }
  .mmenu-foot .tel { font-family: var(--en); font-size: 24px; font-weight: 700; color: var(--ink); text-decoration: none; letter-spacing: .04em; }
  .mmenu-foot .sub { font-size: 11.5px; color: var(--ink-3); }
  .mmenu-foot address { font-style: normal; color: var(--ink-2); font-size: 12.5px; margin-top: 12px; line-height: 1.9; }
  body.locked { overflow: hidden; }

  .brand { display: inline-flex; align-items: center; }

  /* ---- TOP：事業概要セクション ---- */
  .biz { position: relative; overflow: hidden; background: var(--paper-2); }
  .biz .wash {
    position: absolute; border-radius: 50%; pointer-events: none;
    width: 42vw; height: 42vw; background: var(--red);
    opacity: .06; right: -12vw; top: -14vw;
  }
  .biz .wash.s {
    width: 13vw; height: 13vw; right: 22vw; top: 20vw; opacity: .09;
  }
  .biz .shell { position: relative; }

  /* ---- TOP（FV・黒帯）のモバイル調整 ---- */
  @media (max-width: 900px) {
    /* FVはflexのまま縦並びに切替（blockにするとSCROLLが本文の横に並ぶ） */
    .hero {
      flex-direction: column; justify-content: center;
      min-height: calc(100vh - 64px);
      min-height: calc(100svh - 64px);
      padding-block: 40px;
    }
    .hero .shell { position: relative; grid-template-columns: 1fr; gap: 0; }
    /* モバイルは円を文字の背面へ回す（縦を食わずに赤を大きく見せる） */
    .hero-wash { display: none; }
    .hero .shell > div:not(.circles) { position: relative; z-index: 1; }
    .circles {
      position: absolute; z-index: 0; pointer-events: none;
      right: -13%; top: 50%; transform: translateY(-50%);
      width: 120%; max-width: none; margin: 0; opacity: .13;
    }
      .pill.big { padding: 18px 30px; width: 100%; justify-content: center; }
    .contact .blob { width: 80vw; height: 80vw; right: -36vw; top: -32vw; }
    .contact .blob.s { display: none; }
    .cta .blob { width: 78vw; height: 78vw; right: -34vw; top: -30vw; }
    .biz .pill, .cta .pill, .contact .pill { width: 100%; justify-content: center; }
    .biz .wash { width: 78vw; height: 78vw; right: -32vw; top: -28vw; }
    .biz .wash.s { display: none; }
    .f-top { grid-template-columns: 1fr; }
  }

  /* ボット検知用の隠し欄（人には見えない） */
  .hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
