  :root { --ink:#1a1a1a; --red:#c73e2e; --gray:#888; --line:#dcdcdc; --bg:#fff; }
  * { margin:0; padding:0; box-sizing:border-box; }
  html { scroll-behavior:smooth; }
  body {
    font-family:"Hiragino Mincho ProN","Yu Mincho","Noto Serif JP",serif;
    color:var(--ink); background:var(--bg); line-height:2; letter-spacing:0.04em;
  }
  /* 日本語の折り返し制御：文節単位で改行し、行末に「。」だけ残るのを防ぐ */
  .nb { display:inline-block; }
  body { line-break:strict; }
  body { word-break:auto-phrase; } /* 対応ブラウザのみ有効。非対応では無視される */
  h1, h2, h3, .turn, .q-block, .cta-note, .sign, .case-sub, .last-cta p { text-wrap:balance; }
  p, li, dd, dt, .bio, .lead p { text-wrap:pretty; }

  .label { font-family:"Helvetica Neue","Hiragino Kaku Gothic ProN",sans-serif; font-size:0.72rem; letter-spacing:0.35em; color:var(--gray); text-transform:uppercase; }
  .num { font-family:"Helvetica Neue","Hiragino Kaku Gothic ProN",sans-serif; font-size:0.8rem; letter-spacing:0.2em; color:var(--red); margin-bottom:16px; }
  .inner { max-width:860px; margin:0 auto; }
  section { padding:110px 8vw; border-bottom:1px solid var(--line); }
  h2 { font-size:clamp(1.7rem,4vw,2.5rem); font-weight:600; line-height:1.8; margin-bottom:40px; }
  .lead { max-width:680px; font-size:1rem; }
  .lead p { margin-bottom:22px; }

  /* Hero */
  .hero { min-height:94vh; display:flex; flex-direction:column; justify-content:center; padding:60px 8vw; border-bottom:1px solid var(--ink); position:relative; }
  .hero .top { position:absolute; top:32px; left:8vw; right:8vw; display:flex; justify-content:space-between; align-items:center; }
  .hero .brand { font-size:0.95rem; letter-spacing:0.4em; }
  .hero h1 { font-size:min(clamp(2.5rem,7vw,5rem),8.6vw); font-weight:600; line-height:1.55; margin:24px 0; }
  .hero h1 em { font-style:normal; border-bottom:6px solid var(--red); }
  .hero .sub { font-size:1.05rem; color:#444; max-width:680px; }
  br.pc { display:none; }
  @media (min-width:641px) { br.pc { display:inline; } }
  .hero .cta-row { margin-top:64px; }
  .hero .scroll { position:absolute; bottom:28px; right:8vw; font-family:"Helvetica Neue",sans-serif; font-size:0.68rem; letter-spacing:0.3em; color:var(--gray); writing-mode:vertical-rl; }
  .cta { display:inline-block; background:var(--ink); color:#fff; text-decoration:none; padding:20px 72px; font-size:1rem; letter-spacing:0.2em; transition:background .2s; }
  .cta:hover { background:var(--red); }
  .cta-note { font-size:0.78rem; color:var(--gray); margin-top:14px; letter-spacing:0.15em; }

  /* 悩みリスト */
  .worries ul { list-style:none; max-width:680px; margin-top:8px; }
  .worries li { padding:20px 0 20px 36px; border-bottom:1px solid var(--line); position:relative; font-size:0.98rem; }
  .worries li::before { content:"—"; position:absolute; left:0; color:var(--red); }
  .worries .turn { margin-top:56px; font-size:1.2rem; line-height:2.2; }
  .worries .turn strong { border-bottom:3px solid var(--red); font-weight:600; }

  /* 問いブロック */
  .q-block { margin:64px 0 0; padding:52px 24px; border-top:1px solid var(--ink); border-bottom:1px solid var(--ink); text-align:center; font-size:clamp(1.25rem,3vw,1.8rem); line-height:2.2; }

  .two-col { display:flex; gap:1px; background:var(--line); border:1px solid var(--line); margin:56px 0; flex-wrap:wrap; }
  .two-col .col { flex:1; min-width:280px; background:#fff; padding:40px 32px; }
  .two-col h3 { font-size:1.1rem; font-weight:600; margin-bottom:12px; }
  .two-col h3::before { content:""; display:inline-block; width:24px; height:3px; background:var(--red); vertical-align:middle; margin-right:12px; }
  .two-col p { font-size:0.92rem; color:#444; }

  /* プログラム */
  .prog { list-style:none; margin-top:16px; border-top:1px solid var(--ink); }
  .prog li { display:flex; gap:36px; padding:40px 0; border-bottom:1px solid var(--line); align-items:baseline; }
  .prog .no { font-family:"Helvetica Neue",sans-serif; font-size:1.9rem; color:var(--red); min-width:64px; }
  .prog h3 { font-size:1.15rem; font-weight:600; margin-bottom:8px; line-height:1.8; }
  .prog p { font-size:0.92rem; color:#555; max-width:600px; }

  .deliv { margin-top:72px; }
  .deliv h3 { font-size:1.2rem; font-weight:600; margin-bottom:24px; }
  .deliv ul { list-style:none; border-top:1px solid var(--ink); }
  .deliv li { padding:22px 0 22px 40px; border-bottom:1px solid var(--line); position:relative; font-size:0.96rem; }
  .deliv li::before { content:"◆"; position:absolute; left:4px; color:var(--red); font-size:0.7rem; top:30px; }
  .deliv li strong { font-weight:600; }

  .action-note { margin-top:72px; border:1px solid var(--ink); padding:48px 40px; position:relative; }
  .action-note .tag { position:absolute; top:-14px; left:32px; background:#fff; padding:0 16px; font-size:0.85rem; letter-spacing:0.25em; color:var(--red); }
  .action-note p { font-size:0.96rem; margin-bottom:18px; }
  .action-note p:last-child { margin-bottom:0; }
  .action-note strong { border-bottom:3px solid var(--red); font-weight:600; }

  /* 写真 */
  .hero-photo { display:block; width:100%; aspect-ratio:2.8/1; height:auto; object-fit:cover; object-position:50% 28%; border-bottom:1px solid var(--ink); }
  @media (max-width:640px) { .hero-photo { aspect-ratio:16/10; } }
  .photo-band { display:flex; gap:1px; background:var(--line); border-bottom:1px solid var(--ink); }
  .photo-band img { flex:1; min-width:0; width:33.33%; aspect-ratio:4/3; object-fit:cover; display:block; }
  .band-note { text-align:center; font-size:0.75rem; color:var(--gray); letter-spacing:0.2em; padding:14px 8vw; border-bottom:1px solid var(--line); }
  .sec-photo { display:block; width:100%; max-width:860px; aspect-ratio:16/8; object-fit:cover; margin:56px auto 0; }

  /* オーダーメイド */
  .tailor .split { display:flex; gap:48px; margin-top:56px; flex-wrap:wrap; align-items:stretch; }
  .tailor .split img { flex:1 1 340px; min-width:280px; max-width:520px; object-fit:cover; }
  .tailor .points { flex:1 1 300px; list-style:none; border-top:1px solid var(--ink); align-self:flex-start; }
  .tailor .points li { padding:26px 0; border-bottom:1px solid var(--line); }
  .tailor .points h3 { font-size:1.05rem; font-weight:600; margin-bottom:8px; }
  .tailor .points h3::before { content:""; display:inline-block; width:24px; height:3px; background:var(--red); vertical-align:middle; margin-right:12px; }
  .tailor .points p { font-size:0.92rem; color:#555; }

  /* 手紙 */
  .letter .inner { max-width:1060px; }
  .letter .letter-grid { display:flex; gap:64px; align-items:flex-start; flex-wrap:wrap; margin-top:8px; }
  .letter .photo { flex:0 0 clamp(280px,34vw,420px); width:clamp(280px,34vw,420px); height:auto; aspect-ratio:4/5; object-fit:cover; border-radius:0; display:block; margin:0; }
  .letter .bio { max-width:680px; margin-top:32px; border-top:1px solid var(--line); padding-top:28px; font-size:0.85rem; color:#555; line-height:2.1; }
  .letter .bio .bio-label { font-family:"Helvetica Neue",sans-serif; font-size:0.7rem; letter-spacing:0.3em; color:var(--red); display:block; margin-bottom:10px; }
  .letter .body { flex:1; min-width:300px; max-width:680px; }
  .letter .body p { margin-bottom:24px; font-size:0.98rem; }
  .letter .sign { margin-top:40px; font-size:1.05rem; text-align:right; max-width:680px; }

  /* 実績 */
  .case-card { border:1px solid var(--ink); padding:48px 40px; margin-top:16px; }
  .case-card .case-tag { font-family:"Helvetica Neue",sans-serif; font-size:0.72rem; letter-spacing:0.3em; color:var(--red); display:block; margin-bottom:14px; }
  .case-card h3 { font-size:1.4rem; font-weight:600; margin-bottom:6px; }
  .case-card .case-sub { font-size:0.85rem; color:var(--gray); margin-bottom:20px; }
  .case-card p { font-size:0.95rem; color:#444; max-width:640px; margin-bottom:20px; }
  .case-card a.case-link { font-family:"Helvetica Neue",sans-serif; font-size:0.82rem; letter-spacing:0.15em; color:var(--ink); text-decoration:none; border-bottom:2px solid var(--red); padding-bottom:2px; }
  .case-card a.case-link:hover { color:var(--red); }

  /* 向く人・向かない人 */
  .fit-wrap { display:flex; gap:1px; background:var(--line); border:1px solid var(--line); flex-wrap:wrap; }
  .fit-col { flex:1; min-width:300px; background:#fff; padding:48px 36px; }
  .fit-col.ng { background:#faf8f6; }
  .fit-col h3 { font-size:1.05rem; font-weight:600; margin-bottom:24px; letter-spacing:0.15em; }
  .fit-col ul { list-style:none; }
  .fit-col li { padding:14px 0 14px 32px; position:relative; font-size:0.94rem; border-bottom:1px solid var(--line); }
  .fit-col li:last-child { border-bottom:none; }
  .fit-col li::before { content:"○"; position:absolute; left:0; color:var(--red); }
  .fit-col.ng li::before { content:"×"; color:var(--gray); }
  .fit-note { margin-top:48px; font-size:0.9rem; color:#555; }

  /* 料金 */
  .price { display:flex; flex-wrap:wrap; gap:40px; align-items:baseline; margin-top:8px; }
  .price .old { color:var(--gray); text-decoration:line-through; font-size:1rem; }
  .price .now { font-size:3.2rem; font-weight:600; }
  .price .now small { font-size:1rem; font-weight:400; }
  .price-sub { font-size:0.85rem; color:var(--gray); margin-top:4px; }
  .price-grid { display:flex; flex-wrap:wrap; gap:1px; background:var(--line); border:1px solid var(--line); margin-top:24px; max-width:680px; }
  .price-item { flex:1; min-width:260px; background:#fff; padding:32px 32px 28px; }
  .pay-label { display:block; font-family:"Helvetica Neue","Hiragino Kaku Gothic ProN",sans-serif; font-size:0.75rem; letter-spacing:0.3em; color:var(--red); margin-bottom:10px; }
  .price-item .now { font-size:2.6rem; font-weight:600; line-height:1.4; }
  .price-item .now small { font-size:0.95rem; font-weight:400; }
  .pay-msg { margin-top:56px; font-size:1rem; }
  .pay-table { margin-top:20px; max-width:680px; border-top:1px solid var(--ink); }
  .pay-table .row { display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:20px 4px; border-bottom:1px solid var(--line); }
  .pay-table .plan { font-size:0.98rem; font-weight:600; }
  .pay-table .monthly { font-size:1.3rem; font-weight:600; }
  .pay-table .monthly small { font-size:0.85rem; font-weight:400; color:#555; }
  .pay-note { font-size:0.78rem; color:var(--gray); margin-top:12px; letter-spacing:0.05em; }
  .price-why { max-width:600px; font-size:0.92rem; color:#555; margin-top:24px; }
  .cap { display:inline-block; margin-top:28px; border:1px solid var(--ink); padding:8px 28px; font-size:0.88rem; letter-spacing:0.15em; }
  .after { margin-top:64px; border-top:1px solid var(--ink); padding-top:40px; max-width:680px; }
  .after h3 { font-size:1.1rem; font-weight:600; margin-bottom:14px; }
  .after p { font-size:0.94rem; color:#444; }

  /* 流れ */
  .flow ol { list-style:none; counter-reset:step; max-width:640px; }
  .flow li { counter-increment:step; position:relative; padding:28px 0 28px 84px; border-bottom:1px solid var(--line); }
  .flow li::before {
    content:"0" counter(step); position:absolute; left:0; top:32px;
    font-family:"Helvetica Neue",sans-serif; font-size:1.5rem; color:var(--red);
  }
  .flow li h3 { font-size:1.05rem; font-weight:600; margin-bottom:6px; }
  .flow li p { font-size:0.9rem; color:#555; }

  /* FAQ */
  .faq dl { max-width:680px; }
  .faq dt { font-size:1rem; font-weight:600; padding:24px 0 8px; }
  .faq dt::before { content:"Q ── "; color:var(--red); font-family:"Helvetica Neue",sans-serif; }
  .faq dd { font-size:0.92rem; color:#444; padding-bottom:24px; border-bottom:1px solid var(--line); }

  /* 最後のCTA */
  .last-cta { text-align:center; padding:140px 8vw; border-bottom:none; }
  .last-cta h2 { margin-bottom:32px; }
  .last-cta p { margin-bottom:48px; font-size:1.05rem; line-height:2.4; }

  footer { padding:32px 8vw; font-size:0.75rem; color:var(--gray); border-top:1px solid var(--ink); display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; }

  @media (max-width:640px) {
    section { padding:80px 6vw; }
    .letter .photo { flex-basis:100%; width:100%; aspect-ratio:4/5; max-width:420px; margin:0 auto; }
    .letter .letter-grid { gap:40px; }
    .prog li { flex-direction:column; gap:8px; }
    .q-block { padding:40px 16px; }
    .two-col .col { padding:32px 22px; }
    .fit-col { padding:36px 22px; }
    .case-card { padding:36px 22px; }
    .action-note { padding:40px 22px; }
    .cta { padding:20px 44px; }
  }
