  :root{
    --bg:#f7f5f1;          /* off-white */
    --bg-alt:#eeebe4;      /* greige */
    --ink:#3f3b37;         /* charcoal */
    --ink-soft:#78726b;
    --ink-faint:#a49d94;
    --dot:#c88a84;         /* dusty rose — ロゴのドット */
    --rose:#c88a84;        /* brand accent */
    --rose-soft:#e2c6c0;
    --rose-wash:#f4ebe8;
    --rule:#e3ddd3;        /* greige hairline */
    --card:#fcfbf8;
    --line:#d9d3c8;        /* structural line on canvas */
  }
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  html{background:var(--bg)}   /* 背景色はhtml側に。bodyは透明にして固定キャンバスを確実に見せる */
  body{
    margin:0;
    background:transparent;
    color:var(--ink);
    font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP","Yu Gothic",sans-serif;
    font-size:16px;
    line-height:1.95;
    letter-spacing:.04em;
    -webkit-font-smoothing:antialiased;
  }
  .serif{
    font-family:Georgia,"Times New Roman","Hiragino Mincho ProN","Yu Mincho","Noto Serif JP",serif;
  }
  .wrap{max-width:900px;margin:0 auto;padding:0 28px}
  section{padding:96px 0}
  section[id],header[id]{scroll-margin-top:76px}
  @media(max-width:640px){section{padding:64px 0}.wrap{padding:0 22px}}

  /* ---------- nav ---------- */
  nav{
    position:sticky;top:0;z-index:50;
    background:rgba(247,245,241,.9);
    backdrop-filter:blur(10px);
    border-bottom:1px solid transparent;
    transition:border-color .3s;
  }
  nav.scrolled{border-bottom-color:var(--rule)}
  nav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px;padding-top:0;padding-bottom:0}
  .nav-mark{font-family:Georgia,serif;font-size:15px;letter-spacing:.32em;color:var(--ink)}
  .nav-mark i{color:var(--dot);font-style:normal}
  .nav-links{display:flex;gap:30px}
  .nav-links a{
    font-family:Georgia,serif;
    font-size:12px;letter-spacing:.18em;color:var(--ink-soft);
    text-decoration:none;transition:color .2s;white-space:nowrap;
  }
  .nav-links a:hover{color:var(--ink)}
  @media(max-width:640px){
    nav .wrap{height:56px}
    .nav-mark{font-size:13px;letter-spacing:.22em}
    .nav-links{gap:14px}
    .nav-links a{font-size:10.5px;letter-spacing:.06em}
  }
  @media(max-width:360px){.nav-links{display:none}}

  /* ---------- hero ---------- */
  .hero{
    position:relative;overflow:hidden;
    min-height:100vh;display:flex;
    align-items:center;justify-content:center;text-align:center;
  }
  /* canvas：ページ全体の固定背景（スクロールしても常に薄く残る） */
  .field{
    position:fixed;top:0;left:0;width:100vw;height:100vh;   /* 100vh＝iOSでも安定（URLバー開閉で伸びない） */
    z-index:0;pointer-events:none;display:block;
  }
  /* 本文コンテンツを固定キャンバスの上へ（iOSのfixed背景対策で確実に前面に） */
  .hero, section, .section-break, footer{position:relative;z-index:1}
  /* 中央のロゴを常に主役に：淡いビネットで背景の構造を沈める */
  .hero::after{
    content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
    background:radial-gradient(42% 40% at 50% 48%, rgba(247,245,241,.9) 0%, rgba(247,245,241,.5) 46%, rgba(247,245,241,0) 74%);
  }
  @media(max-width:640px){
    .hero::after{
      background:radial-gradient(64% 26% at 50% 44%, rgba(247,245,241,.88) 0%, rgba(247,245,241,.42) 52%, rgba(247,245,241,0) 80%);
    }
  }
  .hero-inner{
    position:relative;z-index:2;width:100%;
    display:flex;flex-direction:column;
    padding:clamp(80px,10vh,120px) 0;   /* 中央寄せ（上下対称の余白） */
  }

  /* スクロール誘導：画面中央下部 */
  .scroll-cue{
    position:absolute;left:50%;bottom:38px;
    z-index:2;display:flex;flex-direction:column;align-items:center;gap:18px;
    opacity:0;transform:translate(-50%,12px);pointer-events:none;
    transition:opacity .9s ease,transform .9s ease;
  }
  .scroll-cue.show{opacity:1;transform:translate(-50%,0)}
  .scroll-word{
    font-family:Georgia,serif;font-size:11px;
    letter-spacing:.36em;text-indent:.36em;color:var(--ink-soft);
  }
  .scroll-line{
    position:relative;width:1px;height:62px;
    background:var(--rule);overflow:hidden;
  }
  /* 切れ目なくローズの光が流れ続ける（常時アニメーション） */
  .scroll-line i{
    position:absolute;inset:0;width:100%;
    background:repeating-linear-gradient(180deg,
      transparent 0, transparent 9px,
      var(--rose) 16px,
      transparent 23px, transparent 32px);
    animation:scrollFlow 1.7s linear infinite;
  }
  @keyframes scrollFlow{ from{background-position:0 0} to{background-position:0 32px} }
  @media(max-width:640px){.scroll-cue{bottom:26px}.scroll-line{height:50px}}
  @media(prefers-reduced-motion:reduce){
    .scroll-cue{opacity:1;transform:translateX(-50%);transition:none}
    .scroll-line i{animation:none}
  }
  /* ブランド署名（ロゴ画像）：事業内容の下に静かに残す */
  .hero-top{margin-top:clamp(52px,8vh,96px)}
  .brand-logo{
    display:block;margin:0 auto;
    width:clamp(210px,27vw,320px);height:auto;
  }

  /* メインコピー：FVの主役 */
  .hero-focus{position:relative}
  .hero-focus::before{                 /* メインコピー背後のみグリッドを沈めて可読性を上げる */
    content:"";position:absolute;left:50%;top:50%;
    width:132%;height:186%;transform:translate(-50%,-50%);
    background:radial-gradient(closest-side,
      rgba(247,245,241,.94) 0%, rgba(247,245,241,.9) 42%, rgba(247,245,241,0) 84%);
    z-index:-1;pointer-events:none;
  }
  .hero-main{
    font-size:clamp(25px,6.4vw,60px);
    line-height:1.9;letter-spacing:.06em;
    font-weight:400;color:var(--ink);margin:0;
  }
  .hero-main .hl{color:var(--rose)}   /* 「仕組み」をブランドカラーで強調 */
  .hero-subcopy{
    font-size:clamp(16px,3.4vw,21px);      /* 15〜20%拡大 */
    letter-spacing:.08em;color:#544e47;    /* 少し濃く */
    margin:clamp(24px,4vw,38px) 0 0;line-height:2;
  }
  .hero-biz{
    color:var(--ink-soft);font-size:13px;  /* コントラストを少し上げる */
    margin:clamp(22px,3.4vw,32px) 0 0;
    display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0 4px;
  }
  .hero-biz span{white-space:nowrap}
  .hero-biz em{font-style:normal;color:var(--rose);opacity:.6;padding:0 .6em}
  @media(max-width:640px){
    /* スマホ：可視領域(svh)基準。メインコピー〜署名を1つの塊として上下中央へ */
    .hero{min-height:100vh;min-height:100svh;align-items:stretch}
    .hero-inner{
      min-height:100vh;min-height:100svh;
      justify-content:center;          /* グループ全体を画面中央に */
      padding-top:clamp(80px,11vh,120px);
      padding-bottom:clamp(80px,11vh,120px);
    }
    .hero-top{margin-top:clamp(26px,4.5vh,44px)}  /* 署名を本文に近づける */
    .hero-main{letter-spacing:.03em}   /* 2行目を1行に収める */
    .hero-biz{gap:4px 16px}.hero-biz em{display:none}
  }

  /* ---------- generic heads ---------- */
  .eyebrow{
    font-family:Georgia,serif;
    font-size:11px;letter-spacing:.3em;text-indent:.3em;
    color:var(--rose);
    margin:0 0 18px;
    text-transform:uppercase;
    display:flex;align-items:center;gap:14px;
  }
  .eyebrow::after{content:"";flex:1;height:1px;background:var(--rose-soft);opacity:.7}
  .story .eyebrow,.contact .eyebrow{justify-content:center}
  .story .eyebrow::after,.contact .eyebrow::after{display:none}
  h2{
    font-size:clamp(21px,4.4vw,27px);
    line-height:1.85;letter-spacing:.09em;
    font-weight:400;margin:0 0 34px;
  }
  p{margin:0 0 1.5em}
  p:last-child{margin-bottom:0}

  /* ---------- problem ---------- */
  .quiet{background:rgba(238,235,228,.72)}   /* 半透明にして固定背景のメッシュを通す */
  .quiet .lines p{
    font-size:clamp(16px,3.2vw,18px);
    color:var(--ink-soft);
    margin:0 0 .9em;
  }
  .quiet .turn{
    margin-top:44px;padding-top:36px;border-top:1px solid var(--rule);
    font-size:clamp(17px,3.4vw,20px);color:var(--ink);line-height:2.2;
  }
  .quiet .turn strong{font-weight:400;color:var(--rose)}
  /* PC（641px〜）はトップAbout本文の改行を解除し、自然な文章として幅いっぱいに流す（スマホは改行のまま） */
  @media(min-width:641px){
    #about .lines br{display:none}
    #about .lines{max-width:760px}
    #about .lines p{margin:0 0 1.5em;line-height:2.15}
  }
  /* Aboutページへの導線（締めの下） */
  .about-more{margin:clamp(34px,5vw,50px) 0 0}
  .about-more a{
    display:inline-flex;align-items:center;gap:12px;
    font-family:Georgia,serif;font-size:13px;letter-spacing:.16em;
    color:var(--ink);text-decoration:none;
    padding-bottom:7px;border-bottom:1px solid var(--rose-soft);
    transition:color .3s,border-color .3s,gap .3s;
  }
  .about-more a:hover{color:var(--rose);border-color:var(--rose);gap:18px}
  .about-more .ar{font-style:normal;transition:transform .3s}
  .about-more a:hover .ar{transform:translateX(3px)}
  .quiet .lines p{line-height:2.2}

  /* ---------- pillars ---------- */
  .pillars{display:grid;gap:1px;background:var(--rule);border:1px solid var(--rule);margin-top:8px}
  @media(min-width:760px){.pillars{grid-template-columns:1fr 1fr}}
  .pillar{background:var(--card);padding:38px 32px;position:relative;transition:background .3s}
  .pillar::before{
    content:"";position:absolute;left:0;top:0;width:100%;height:2px;
    background:var(--rose);transform:scaleX(0);transform-origin:left;
    transition:transform .4s ease;
  }
  .pillar:hover::before{transform:scaleX(1)}
  .pillar:hover{background:#fff}
  .pillar .num{
    font-family:Georgia,serif;font-size:12px;letter-spacing:.2em;
    color:var(--rose);display:block;margin-bottom:14px;
  }
  .pillar h3{
    font-size:17px;font-weight:600;letter-spacing:.08em;margin:0 0 14px;line-height:1.7;
    padding-bottom:14px;border-bottom:1px solid var(--rose-soft);
  }
  .pillar p{font-size:14px;color:var(--ink-soft);line-height:2;margin:0 0 1.1em}
  .pillar p:last-child{margin-bottom:0}
  .pillar .lead{
    font-size:15px;color:var(--ink);font-weight:600;
    letter-spacing:.05em;line-height:1.9;margin:0 0 14px;
  }

  /* ---------- works ---------- */
  .work{
    padding:40px 0 40px 32px;border-bottom:1px solid var(--rule);
    position:relative;
  }
  .work::before{
    content:"";position:absolute;left:0;top:40px;bottom:40px;width:1px;
    background:var(--rose);transform:scaleY(0);transform-origin:top;
    transition:transform .5s cubic-bezier(.22,.68,.16,1);
  }
  .work:hover::before{transform:scaleY(1)}
  .work h3{transition:color .35s ease}
  .work:hover h3{color:var(--rose)}
  @media(hover:none){.work:hover::before{transform:scaleY(0)}}
  .work:first-of-type{border-top:1px solid var(--rule)}
  .work-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:14px}
  .work h3{font-size:17px;font-weight:600;letter-spacing:.06em;margin:0;line-height:1.7}
  .tag{
    font-size:10.5px;letter-spacing:.14em;color:var(--rose);
    background:var(--rose-wash);
    border:1px solid var(--rose-soft);border-radius:999px;padding:3px 11px;white-space:nowrap;
  }
  .work .work-lead{font-size:15px;color:var(--ink);font-weight:600;letter-spacing:.04em;line-height:1.9;margin:0 0 16px}
  .work p{font-size:14px;color:var(--ink-soft);line-height:2.05;margin:0 0 1.15em}
  .work p:last-of-type{margin-bottom:0}
  .work ul{margin:14px 0 0;padding:0;list-style:none}
  .work li{
    font-size:13px;color:var(--ink-faint);line-height:1.95;
    padding-left:16px;position:relative;
  }
  .work li::before{content:"—";position:absolute;left:0;color:var(--dot)}
  /* 実際の画面キャプチャ */
  .work-shot{
    margin:clamp(22px,3vw,30px) 0 0;border:1px solid var(--rule);border-radius:10px;
    overflow:hidden;background:var(--card);line-height:0;
    box-shadow:0 14px 34px -22px rgba(63,59,55,.28);
  }
  .work-shot img{display:block;width:100%;height:auto}

  /* ---------- story ---------- */
  .story{
    text-align:center;
    background:linear-gradient(180deg,rgba(247,245,241,.55) 0%,rgba(244,235,232,.78) 45%,rgba(247,245,241,.55) 100%);
  }
  .story .verse{
    font-size:clamp(15px,3vw,17px);line-height:2.5;letter-spacing:.1em;
    color:var(--ink);margin:0 0 30px;
  }
  .story .verse .hl{color:var(--rose)}   /* Vernal / Aria / 春 / 奏 をブランドカラーで */
  .story .note{font-size:13px;color:var(--ink-soft);line-height:2.1;margin:0}
  @media(max-width:640px){.story .verse{letter-spacing:.01em;line-height:2.2}}
  .story .mark{margin:0;line-height:0}
  .story .mark img{display:block;margin:0 auto;width:clamp(230px,34vw,300px);height:auto}
  /* 読み仮名（ローマ字の下に少し小さく） */
  .story .name-read{
    font-size:12px;letter-spacing:.22em;text-indent:.22em;
    color:var(--ink-soft);margin:clamp(16px,2.6vw,22px) 0 clamp(36px,5vw,48px);
  }

  /* ---------- contact ---------- */
  .contact{text-align:center;background:rgba(238,235,228,.72)}
  .contact h2{margin-bottom:20px}
  .contact p{color:var(--ink-soft);font-size:15px;line-height:2;margin:0}
  .contact p + p{margin-top:1.3em}
  .btn{
    display:inline-block;margin-top:30px;
    font-family:Georgia,serif;font-size:12px;letter-spacing:.24em;text-indent:.24em;
    color:var(--ink);text-decoration:none;
    background:transparent;-webkit-appearance:none;appearance:none;
    border:1px solid var(--rose);border-radius:2px;
    padding:16px 44px;transition:background .25s,color .25s,border-color .25s;
  }
  .btn:hover{background:var(--rose);color:#fff;border-color:var(--rose)}
  /* 問い合わせフォーム */
  .cform{max-width:560px;margin:36px auto 0;text-align:left}
  .cf-grid{display:grid;gap:18px;margin-bottom:18px}
  @media(min-width:620px){.cf-grid{grid-template-columns:1fr 1fr}}
  .cf-field{display:block;margin:0}
  .cf-full{margin-top:0}
  .cf-label{display:block;font-size:12px;letter-spacing:.1em;color:var(--ink-soft);margin-bottom:8px}
  .cf-field input,.cf-field textarea{
    width:100%;font:inherit;font-size:15px;color:var(--ink);
    background:var(--card);border:1px solid var(--line);border-radius:4px;
    padding:13px 15px;transition:border-color .25s,box-shadow .25s;
  }
  .cf-field textarea{resize:vertical;line-height:1.8;min-height:132px}
  .cf-field input::placeholder,.cf-field textarea::placeholder{color:var(--ink-faint)}
  .cf-field input:focus,.cf-field textarea:focus{
    outline:none;border-color:var(--rose);box-shadow:0 0 0 3px var(--rose-wash);
  }
  .cf-submit{cursor:pointer}

  /* ---------- footer ---------- */
  footer{padding:clamp(56px,7vw,84px) 0 36px;margin-top:clamp(40px,6vw,80px)}
  .foot-grid{
    display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:clamp(32px,5vw,64px);align-items:start;
  }
  @media(max-width:760px){.foot-grid{grid-template-columns:1fr 1fr;gap:44px 24px}}
  @media(max-width:480px){.foot-grid{grid-template-columns:1fr;gap:36px}}

  /* 左：ブランド */
  .foot-brand .fmark{margin:0;line-height:0}
  .foot-brand .fmark img{display:block;width:clamp(150px,17vw,184px);height:auto}
  .foot-brand .ftag{font-size:13px;line-height:2;letter-spacing:.06em;color:var(--ink-soft);margin:18px 0 26px}
  .fsocial{display:flex;gap:12px}
  .fs{
    width:42px;height:42px;border-radius:50%;border:1px solid var(--line);
    display:flex;align-items:center;justify-content:center;color:var(--ink);
    text-decoration:none;transition:border-color .3s,color .3s;
  }
  .fs:hover{border-color:var(--rose);color:var(--rose)}
  .fs svg{width:18px;height:18px;fill:currentColor}
  .fs .fs-txt{font-family:Georgia,serif;font-size:11px;letter-spacing:.02em}

  /* 中／右：リンク列 */
  .foot-col{display:flex;flex-direction:column}
  .fcol-h{font-family:Georgia,serif;font-size:11px;letter-spacing:.24em;color:var(--ink-faint);margin:0 0 20px}
  .foot-col a{
    font-family:Georgia,serif;font-size:15px;letter-spacing:.04em;color:var(--ink-soft);
    text-decoration:none;padding:9px 0;width:max-content;transition:color .3s;
  }
  .foot-col a:hover{color:var(--rose)}
  .foot-col .finfo{color:var(--ink)}

  /* 下段 */
  .foot-bottom{
    display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px 20px;
    margin-top:clamp(44px,6vw,72px);padding-top:24px;
  }
  .fcopy{font-size:11px;letter-spacing:.16em;color:var(--ink-faint);margin:0}
  .ftagline-en{font-family:Georgia,serif;font-size:12px;letter-spacing:.3em;color:var(--ink-faint);margin:0}
  @media(max-width:560px){.ftagline-en{letter-spacing:.18em;font-size:11px}}

  /* ---------- reveal（要素ごとにずらして出す） ---------- */
  .rv{
    opacity:0;transform:translateY(22px);
    transition:opacity .95s cubic-bezier(.22,.68,.16,1) var(--d,0ms),
               transform .95s cubic-bezier(.22,.68,.16,1) var(--d,0ms);
  }
  .rv.in{opacity:1;transform:none}

  /* 見出しは下からせり上がる（行マスク） */
  .mask{display:block;overflow:hidden;padding-bottom:.14em;margin-bottom:calc(34px - .14em)}
  .mask > span{
    display:block;transform:translateY(104%);
    transition:transform 1.05s cubic-bezier(.22,.68,.16,1) var(--d,0ms);
  }
  .mask.in > span{transform:none}

  /* ---------- hero intro ---------- */
  @keyframes heroIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
  .brand-logo,.hero-main,.hero-subcopy,.hero-biz{
    opacity:0;animation:heroIn 1.25s cubic-bezier(.22,.68,.16,1) forwards;
  }
  .hero-main{animation-delay:.75s;animation-duration:1.5s}    /* 主役が先に登場 */
  .hero-subcopy{animation-delay:1.4s}
  .hero-biz{animation-delay:1.75s}
  .brand-logo{animation-delay:2.35s}                          /* ロゴは最後に残る */
  /* canvasはJS側でフェードイン */
  .field{opacity:0;transition:opacity 1.6s ease}
  .field.in{opacity:.55}   /* 背景として全ページに薄く漂わせる */

  /* ---------- scroll progress ---------- */
  #nav::after{
    content:"";position:absolute;left:0;bottom:-1px;height:1px;
    background:var(--rose);width:var(--sp,0%);
  }
  .progress{
    position:fixed;left:0;right:0;bottom:0;z-index:40;
    display:flex;align-items:center;gap:16px;
    padding:13px 28px;
    background:rgba(247,245,241,.94);
    backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
    border-top:1px solid var(--rule);
    font-family:Georgia,serif;font-size:10px;letter-spacing:.24em;
    color:var(--ink-faint);pointer-events:none;
    opacity:0;transition:opacity .6s ease;
  }
  .progress.on{opacity:1}
  .p-label{min-width:11em;color:var(--rose);transition:opacity .35s ease}
  .p-track{flex:1;height:1px;background:var(--rose-soft);position:relative;max-width:340px}
  .p-track i{
    position:absolute;inset:0 auto 0 0;display:block;
    background:var(--rose);width:var(--sp,0%);
  }
  .p-count{font-variant-numeric:tabular-nums}
  @media(max-width:640px){
    .progress{padding:12px 22px;gap:12px;font-size:9px;letter-spacing:.16em}
    .p-label{min-width:8em}
  }

  /* ---------- CTA breathe ---------- */
  @keyframes breathe{
    0%,100%{box-shadow:0 0 0 0 rgba(200,138,132,0)}
    50%{box-shadow:0 6px 26px 2px rgba(200,138,132,.22)}
  }
  .btn{animation:breathe 3.8s ease-in-out infinite}
  .btn:hover{animation:none}

  @media(prefers-reduced-motion:reduce){
    .rv,.mask>span{opacity:1;transform:none;transition:none}
    .brand-logo,.hero-main,.hero-subcopy,.hero-biz{
      opacity:1;animation:none;
    }
    .field{opacity:1;transition:none}
    .btn{animation:none}
  }

/* ============================================================
   ABOUT ページ
   ============================================================ */
.page-head{
  position:relative;
  padding-top:150px;padding-bottom:96px;text-align:left;
}
.page-head::before{
  content:"";position:absolute;inset:-120px 0 0;z-index:-1;pointer-events:none;
  background:radial-gradient(58% 46% at 30% 40%, var(--rose-wash) 0%, rgba(251,238,235,0) 74%);
}
.page-head h1{
  font-size:clamp(24px,5.2vw,42px);line-height:1.7;letter-spacing:.05em;
  font-weight:400;margin:0 0 34px;
}
.page-head .lead{
  font-size:clamp(15px,3vw,17px);color:var(--ink-soft);line-height:2.2;margin:0;
}
@media(max-width:640px){.page-head{padding-top:110px;padding-bottom:68px}}

/* page-head：左＝文章／右＝抽象タイポ構成 */
.ph-grid{display:grid;gap:clamp(30px,5vw,64px);align-items:center}
@media(min-width:820px){
  .ph-grid{grid-template-columns:1fr 1fr}
  .page-head h1{font-size:clamp(24px,2.5vw,30px);letter-spacing:.02em}   /* 狭い左カラムに2行で収める */
  .page-head .lead{font-size:15px;letter-spacing:.04em}               /* 左カラムで本文を1行に収める */
}

/* ABOUT右：DISCOVER → … → SUSTAIN の静かなタイポ構成（英字が主役／和は補足）
   各セルの中央にブロックを浮かせ、中央の十字で全体をひとつの構造に見せる */
.about-flow{
  position:relative;
  display:grid;
  grid-template-columns:repeat(2,1fr);
  grid-template-rows:repeat(2,1fr);
  width:100%;max-width:560px;margin-inline:auto;
  min-height:clamp(340px,40vw,450px);
}
/* 中央を静かにつなぐ十字（登場時に中心から伸び、その後ゆっくり呼吸する） */
.about-flow::before,.about-flow::after{content:"";position:absolute;background:var(--rose-soft);opacity:.5}
.about-flow::before{left:50%;top:9%;height:82%;width:1px;transform:translateX(-.5px);transform-origin:center;
  animation:afLineV 1s cubic-bezier(.22,.68,.16,1) .15s both, afBreath 6.5s ease-in-out 1.5s infinite}    /* 縦線 */
.about-flow::after{top:50%;left:7%;width:86%;height:1px;transform:translateY(-.5px);transform-origin:center;
  animation:afLineH 1s cubic-bezier(.22,.68,.16,1) .32s both, afBreath 6.5s ease-in-out 1.8s infinite}     /* 横線 */
/* セルは中央配置、内側の文字ブロックは左揃えのまま。登場は順番にせり上がる */
.af-item{
  display:flex;align-items:center;justify-content:center;
  padding:clamp(18px,3vw,34px);
  opacity:0;animation:afRise .85s cubic-bezier(.22,.68,.16,1) both;
}
.about-flow .af-item:nth-child(1){animation-delay:.40s}
.about-flow .af-item:nth-child(2){animation-delay:.55s}
.about-flow .af-item:nth-child(3){animation-delay:.70s}
.about-flow .af-item:nth-child(4){animation-delay:.85s}
.af-inner{text-align:left}
.af-idx{
  display:block;font-family:Georgia,serif;font-size:12px;
  letter-spacing:.22em;color:var(--rose);opacity:.7;margin-bottom:6px;
  animation:afGlow 4.6s ease-in-out infinite;   /* 番号がやわらかく明滅（01→04と巡る） */
}
.about-flow .af-item:nth-child(2) .af-idx{animation-delay:-1.15s}
.about-flow .af-item:nth-child(3) .af-idx{animation-delay:-2.3s}
.about-flow .af-item:nth-child(4) .af-idx{animation-delay:-3.45s}
.af-en{
  display:block;font-family:Georgia,serif;white-space:nowrap;
  font-size:clamp(16px,1.9vw,20px);letter-spacing:.13em;
  color:var(--ink);line-height:1.2;
}
.af-jp{display:block;font-size:12.5px;letter-spacing:.1em;color:var(--ink-faint);margin-top:7px}
/* 単語ごとに視覚幅を整える（広い語は少し詰める） */
.about-flow .af-item:nth-child(1) .af-en{letter-spacing:.05em}   /* DISCOVER */
.about-flow .af-item:nth-child(3) .af-en{letter-spacing:.06em}   /* DELIVER */
.about-flow .af-item:nth-child(4) .af-en{letter-spacing:.12em}   /* SUSTAIN */
/* 重心の視覚補正（機械的中央ではなく、見た目で揃える） */
.about-flow .af-item:nth-child(1) .af-inner{transform:translate(3px,2px)}   /* DISCOVER：やや右・やや下 */
.about-flow .af-item:nth-child(4) .af-inner{transform:translate(-3px,0)}    /* SUSTAIN：わずかに左 */
@keyframes afRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes afLineV{from{transform:translateX(-.5px) scaleY(0)}to{transform:translateX(-.5px) scaleY(1)}}
@keyframes afLineH{from{transform:translateY(-.5px) scaleX(0)}to{transform:translateY(-.5px) scaleX(1)}}
@keyframes afGlow{0%,100%{opacity:.58}50%{opacity:1}}
@keyframes afBreath{0%,100%{opacity:.4}50%{opacity:.6}}
@media(prefers-reduced-motion:reduce){
  .af-item{opacity:1;animation:none}
  .af-idx,.about-flow::before,.about-flow::after{animation:none}
}
@media(max-width:819px){
  .about-flow{max-width:470px;margin-top:8px;min-height:clamp(320px,70vw,390px)}
}

/* SERVICES と WORKS の間のビジュアル（全幅・背景100%） */
.section-break{width:100%;margin:0;padding:0;line-height:0}
.section-break img{
  display:block;width:100%;height:clamp(320px,42vw,560px);
  object-fit:cover;object-position:center;border-radius:0;
}
@media(max-width:640px){
  .section-break{margin:0}   /* スマホは余白なしで密着 */
  .section-break img{height:clamp(300px,66vw,420px)}
}

/* プロフィール写真（本文の右に回り込ませる） */
.pf-photo{
  float:right;width:clamp(220px,32%,300px);margin:4px 0 22px 44px;
  overflow:hidden;border-radius:3px;line-height:0;
}
.pf-photo img{width:100%;height:auto;display:block}
#profile .turn{clear:both}
@media(max-width:640px){
  .pf-photo{float:none;width:100%;max-width:300px;margin:0 auto 30px}
}

/* 章見出し（大きな連番 + タイトル） */
.chapter{display:flex;align-items:baseline;gap:20px;margin:0 0 40px}
.chapter .cnum{
  font-family:Georgia,serif;font-size:clamp(34px,7vw,54px);
  line-height:1;color:var(--rose-soft);letter-spacing:.02em;
}
.chapter h2{margin:0!important;padding-bottom:0!important;border:0!important}
.chapter .mask{margin-bottom:0!important}

/* プロフィール氏名・肩書き（名刺のように整然と） */
.profile-id{margin:0 0 clamp(40px,6vw,60px)}
.pid-name{
  font-size:clamp(22px,3.6vw,28px);letter-spacing:.16em;
  color:var(--ink);line-height:1.2;font-weight:400;margin:0;
}
.pid-role{font-size:11px;letter-spacing:.16em;color:var(--rose);margin:12px 0 0}
.pid-jp{font-size:14px;letter-spacing:.12em;color:var(--ink);margin:24px 0 0}
.pid-role-jp{font-size:.84em;letter-spacing:.06em;color:var(--ink-faint)}

/* 経歴タイムライン */
.tl{list-style:none;margin:0;padding:0;position:relative}
.tl::before{
  content:"";position:absolute;left:5px;top:10px;bottom:10px;width:1px;
  background:linear-gradient(180deg,var(--rose-soft),transparent);
}
.tl li{position:relative;padding:0 0 40px 34px}
.tl li:last-child{padding-bottom:0}
.tl li::before{
  content:"";position:absolute;left:0;top:9px;width:11px;height:11px;
  border-radius:50%;background:var(--bg-alt);border:1px solid var(--rose);
}
.tl li:last-child::before{background:var(--rose)}
.tl .when{
  display:block;font-family:Georgia,serif;font-size:10.5px;
  letter-spacing:.22em;color:var(--rose);margin-bottom:9px;
}
.tl h3{font-size:16px;font-weight:600;letter-spacing:.06em;margin:0 0 10px;line-height:1.7}
.tl p{font-size:14px;color:var(--ink-soft);line-height:2.05;margin:0}

/* 活動実績（数字カード） */
.stats{
  display:grid;gap:1px;background:var(--rule);
  border:1px solid var(--rule);margin:0;
  grid-template-columns:1fr;                    /* SP：1カラム */
}
@media(min-width:540px){.stats{grid-template-columns:repeat(2,1fr)}}   /* タブレット：2×2 */
@media(min-width:920px){
  .stats.stats-3{grid-template-columns:repeat(3,1fr)}
  .stats.stats-4{grid-template-columns:repeat(4,1fr)}
  .stats.stats-4 .stat{padding:36px 18px}       /* 4カラム時は左右を詰める */
  .stats.stats-4 .sval{font-size:33px}          /* 桁の多い数字も収まるよう抑える */
}
.stat{background:var(--card);padding:38px 26px;text-align:center}
.stat .skey{
  display:block;font-family:Georgia,serif;font-size:10px;
  letter-spacing:.26em;color:var(--rose);margin-bottom:18px;
  text-transform:uppercase;
}
.stat .sval{
  display:block;font-family:Georgia,serif;
  font-size:clamp(28px,5vw,36px);line-height:1.05;color:var(--ink);
  font-variant-numeric:tabular-nums;letter-spacing:.01em;
  white-space:nowrap;
}
.stat .sval em{font-style:normal;font-size:.42em;margin-left:.2em;letter-spacing:.04em}
.stat .snote{display:block;font-size:11.5px;letter-spacing:.01em;color:var(--ink-faint);margin-top:16px;line-height:1.9}
.stats-note{font-size:11.5px;color:var(--ink-faint);margin:18px 0 0;letter-spacing:.04em}

/* ---------- price / plans ---------- */
.lead-wide{max-width:660px}
/* ページ見出し右：料金の早見（プラン一覧＋価格） */
@media(min-width:820px){.ph-price{grid-template-columns:1.05fr .95fr}}
.price-index{display:flex;flex-direction:column}
.pix{
  display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;column-gap:16px;
  padding:16px 2px;border-top:1px solid var(--rule);
  text-decoration:none;color:var(--ink);
  transition:color .3s,padding-left .35s cubic-bezier(.22,.68,.16,1);
}
.pix:last-child{border-bottom:1px solid var(--rule)}
.pix-n{font-family:Georgia,serif;font-size:11px;letter-spacing:.16em;color:var(--rose);opacity:.75}
.pix-en{font-family:Georgia,serif;font-size:14px;letter-spacing:.12em;color:var(--ink)}
.pix-price{font-family:Georgia,serif;font-size:14px;letter-spacing:.02em;color:var(--ink-soft);white-space:nowrap}
.pix-price em{font-style:normal;font-size:.72em;margin-left:1px}
.pix:hover{padding-left:10px}
.pix:hover .pix-en,.pix:hover .pix-price,.pix:hover .pix-n{color:var(--rose);opacity:1}
@media(max-width:819px){.price-index{max-width:440px;margin-top:30px}}
.plans{margin-top:4px}
.plan{padding:clamp(28px,4vw,42px) 0;border-top:1px solid var(--rule)}
.plan:last-of-type{border-bottom:1px solid var(--rule)}
.plan-head{display:grid;grid-template-columns:auto 1fr auto;column-gap:clamp(16px,2.5vw,28px);align-items:start}
.plan-num{font-family:Georgia,serif;font-size:13px;letter-spacing:.2em;color:var(--rose);padding-top:4px}
.plan-en{display:block;font-family:Georgia,serif;font-size:12px;letter-spacing:.18em;color:var(--ink-faint);margin-bottom:7px}
.plan-jp{font-size:clamp(18px,2.3vw,22px);font-weight:600;letter-spacing:.04em;margin:0;line-height:1.45;color:var(--ink)}
.plan-price{text-align:right;white-space:nowrap}
.pp-amount{display:block;font-family:Georgia,serif;font-size:clamp(20px,2.6vw,26px);color:var(--ink);letter-spacing:.01em;line-height:1.2}
.pp-amount em{font-style:normal;font-size:.58em;color:var(--ink-soft);margin-left:1px}
.pp-format{display:block;font-size:11.5px;color:var(--ink-faint);letter-spacing:.05em;margin-top:8px}
.plan-desc{font-size:14.5px;color:var(--ink-soft);line-height:2;margin:20px 0 0;max-width:720px}
.plans-note{font-size:12px;color:var(--ink-faint);line-height:1.9;margin:clamp(26px,4vw,36px) 0 0;letter-spacing:.03em}
@media(max-width:560px){
  .plan-head{grid-template-columns:auto 1fr}
  .plan-price{grid-column:1 / -1;text-align:left;margin-top:14px;padding-left:calc(13px + clamp(16px,2.5vw,28px))}
  .pp-format{margin-top:5px}
}

/* 大切にしていること */
.values{display:grid;gap:34px}
@media(min-width:760px){.values{grid-template-columns:1fr 1fr;gap:44px 40px}}
.value{border-top:1px solid var(--rose-soft);padding-top:22px}
.value .vnum{
  display:block;font-family:Georgia,serif;font-size:12px;
  letter-spacing:.2em;color:var(--rose);margin-bottom:12px;
}
.value h3{font-size:16px;font-weight:600;letter-spacing:.06em;margin:0 0 14px;line-height:1.7}
.value p{font-size:14px;color:var(--ink-soft);line-height:2.05;margin:0 0 1em}
.value p:last-child{margin-bottom:0}

/* 未確定プレースホルダ */
.todo{
  color:var(--rose);background:var(--rose-wash);
  border:1px dashed var(--rose-soft);border-radius:2px;
  padding:1px 8px;font-size:.86em;letter-spacing:.04em;
}

/* Aboutページ 追補 */
.page-head .lead p{margin:0 0 1.35em}
.page-head .lead p:last-child{margin-bottom:0}
.page-head .lead strong{font-weight:400;color:var(--rose)}
.tl p{margin:0 0 1.15em}
.tl p:last-child{margin-bottom:0}
.tl li.now::before{background:var(--rose)}
.closing{
  margin:66px 0 0;padding-top:46px;
  border-top:1px solid var(--rose-soft);
  text-align:center;
  font-size:clamp(16px,3.2vw,20px);line-height:2.35;letter-spacing:.08em;
  color:var(--ink);
}
.closing strong{font-weight:400;color:var(--rose)}

/* 準備中ボタン */
.btn-soon{
  cursor:default;animation:none;
  color:var(--ink-faint);border-color:var(--rule);
  background:transparent;letter-spacing:.12em;
}
.btn-soon:hover{background:transparent;color:var(--ink-faint);border-color:var(--rule)}
