:root{
    --bg:#F3F0EA;
    --bg-deep:#EAE6DE;
    --navy:#1B2438;
    --ink:#2A2E3A;
    --mute:#6F6F6F;
    --gold:#A8894F;
    --line:#D9D3C7;
    --white:#FBFAF7;
    --measure:720px;
    --wide:1040px;
  }
  *{box-sizing:border-box;margin:0;padding:0}
  html{scroll-behavior:smooth}
  @media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
  body{
    font-family:"Shippori Mincho","Yu Mincho","YuMincho","Hiragino Mincho ProN","Noto Serif JP",serif;
    background:var(--bg);color:var(--ink);
    font-size:16px;line-height:1.95;letter-spacing:.02em;
    -webkit-font-smoothing:antialiased;
  }
  a{color:inherit;text-decoration:none}
  a:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
  .wrap{max-width:var(--wide);margin:0 auto;padding:0 24px}
  .measure{max-width:var(--measure)}

  /* nav */
  .nav{display:flex;align-items:center;justify-content:space-between;padding:22px 0;border-bottom:1px solid var(--line)}
  .brand{display:flex;flex-direction:column;line-height:1.3}
  .brand .jp{font-size:19px;font-weight:600;color:var(--navy);letter-spacing:.14em}
  .brand .en{font-size:10px;letter-spacing:.32em;color:var(--gold);margin-top:2px}
  .nav .tag{font-size:12px;color:var(--mute);letter-spacing:.06em}
  .nav .cta-s{font-size:13px;color:var(--navy);border-bottom:1px solid var(--navy);padding-bottom:2px}
  @media(max-width:640px){.nav .tag{display:none}}

  /* type */
  .eyebrow{font-size:11px;letter-spacing:.28em;color:var(--gold);margin-bottom:18px}
  h1{font-size:clamp(30px,4.6vw,46px);line-height:1.5;font-weight:500;color:var(--navy);letter-spacing:.04em}
  h2{font-size:clamp(24px,3.2vw,32px);line-height:1.55;font-weight:500;color:var(--navy);letter-spacing:.04em}
  h3{font-size:18px;font-weight:600;color:var(--navy);line-height:1.6}
  p{margin-bottom:1.2em}
  p:last-child{margin-bottom:0}
  .lead{font-size:17px}
  .small{font-size:13.5px;color:var(--mute);line-height:1.85}
  .rule{border:0;border-top:1px solid var(--line);margin:0}

  /* sections */
  section{padding:96px 0}
  @media(max-width:640px){section{padding:72px 0}}
  .sec-head{margin-bottom:44px}
  .sec-head h2{margin-bottom:22px}
  .deep{background:var(--bg-deep)}

  /* buttons */
  .btn{display:inline-block;padding:16px 28px;font-size:15px;letter-spacing:.06em;line-height:1.4;transition:background .2s,color .2s}
  .btn-primary{background:var(--navy);color:var(--white)}
  .btn-primary:hover{background:#2B3650}
  .btn-ghost{border:1px solid var(--navy);color:var(--navy)}
  .btn-ghost:hover{background:var(--navy);color:var(--white)}
  .btn-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:38px}
  .btn-note{margin-top:16px}

  /* hero */
  .hero{padding:110px 0 100px}
  @media(max-width:640px){.hero{padding:72px 0 64px} br.d{display:none}}
  .hero .kicker{font-size:15px;color:var(--mute);margin-bottom:26px;letter-spacing:.06em}
  .hero h1{margin-bottom:30px}
  .hero .lead{max-width:640px}

  /* four states */
  .states{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var(--line)}
  .state{padding:32px 32px 32px 0;border-bottom:1px solid var(--line)}
  .state:nth-child(odd){border-right:1px solid var(--line);padding-right:40px}
  .state:nth-child(even){padding-left:40px}
  .state h3{margin-bottom:10px}
  .state p{font-size:15px;color:var(--ink)}
  @media(max-width:720px){
    .states{grid-template-columns:1fr}
    .state,.state:nth-child(odd),.state:nth-child(even){padding:28px 0;border-right:0}
  }

  /* axis map (the one bold element) */
  .axismap{margin:52px 0 20px;border:1px solid var(--line);background:var(--white)}
  .axis{display:grid;grid-template-columns:200px 1fr;align-items:stretch;border-bottom:1px solid var(--line)}
  .axis:last-child{border-bottom:0}
  .axis .name{padding:26px 28px;border-right:1px solid var(--line)}
  .axis .name b{display:block;font-weight:600;color:var(--navy);font-size:16px}
  .axis .name span{display:block;font-size:12px;color:var(--mute);margin-top:4px;line-height:1.5}
  .axis .track{position:relative;padding:26px 28px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-height:88px}
  .axis .track.empty::before{content:"";position:absolute;inset:26px 28px;border:1px dashed var(--line)}
  .axis .track.empty::after{content:"未着手";position:absolute;left:44px;top:50%;transform:translateY(-50%);font-size:12px;color:#B5AE9F;letter-spacing:.2em}
  .chip{font-size:13px;color:var(--navy);border:1px solid var(--navy);padding:6px 14px;background:transparent}
  .chip.faint{border-color:var(--line);color:var(--mute)}
  @media(max-width:640px){
    .axis{grid-template-columns:1fr}
    .axis .name{border-right:0;border-bottom:1px dashed var(--line);padding:18px 20px}
    .axis .track{padding:20px}
    .axis .track.empty::before{inset:20px}
    .axis .track.empty::after{left:36px}
  }
  .caption{font-size:13.5px;color:var(--mute)}

  /* arrival */
  .quote{border-left:2px solid var(--gold);padding:8px 0 8px 28px;margin:36px 0}
  .quote p{font-size:clamp(20px,2.6vw,26px);line-height:1.7;color:var(--navy);font-weight:500}
  .three{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:44px}
  .three > div{padding:28px 24px 28px 0}
  .three > div + div{border-left:1px solid var(--line);padding-left:28px}
  .three b{display:block;color:var(--navy);font-weight:600;margin-bottom:6px;font-size:16px}
  .three span{font-size:14px;color:var(--mute)}
  @media(max-width:720px){
    .three{grid-template-columns:1fr}
    .three > div,.three > div + div{border-left:0;padding:22px 0;border-bottom:1px solid var(--line)}
    .three > div:last-child{border-bottom:0}
  }

  /* months */
  .months{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px}
  .month{background:var(--white);border:1px solid var(--line);padding:32px 28px 30px;position:relative}
  .month .n{font-size:11px;letter-spacing:.28em;color:var(--gold);margin-bottom:14px}
  .month .verb{font-size:13px;color:var(--mute);margin-bottom:6px}
  .month h3{font-size:20px;margin-bottom:14px;line-height:1.5}
  .month p{font-size:14.5px;line-height:1.85}
  .month .meta{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:12.5px;color:var(--mute)}
  @media(max-width:860px){.months{grid-template-columns:1fr}}

  .takeaways{margin-top:64px;padding-top:44px;border-top:1px solid var(--line)}
  .takeaways h3{margin-bottom:22px}
  .cols{display:grid;grid-template-columns:1fr 1fr;gap:0 48px}
  .cols ul{list-style:none}
  .cols li{padding:12px 0;border-bottom:1px solid var(--line);font-size:15px}
  .cols li::before{content:"";display:inline-block;width:6px;height:6px;background:var(--gold);margin-right:14px;vertical-align:middle}
  @media(max-width:640px){.cols{grid-template-columns:1fr}}

  /* work table */
  table{width:100%;border-collapse:collapse;margin-top:36px;font-size:14.5px}
  th,td{text-align:left;padding:16px 18px 16px 0;border-bottom:1px solid var(--line);vertical-align:top;line-height:1.8}
  th{font-weight:500;color:var(--mute);font-size:12.5px;letter-spacing:.06em}
  td:first-child{color:var(--navy);white-space:nowrap;width:150px}
  td:last-child{white-space:nowrap;width:110px;color:var(--mute)}
  @media(max-width:640px){
    td:first-child{white-space:normal;width:auto}
    td:last-child{width:auto}
    th:nth-child(3),td:nth-child(3){display:none}
  }
  .facts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;margin-top:40px;border-top:1px solid var(--line)}
  .facts > div{padding:24px 24px 24px 0;border-bottom:1px solid var(--line)}
  .facts > div + div{border-left:1px solid var(--line);padding-left:24px}
  .facts b{display:block;color:var(--navy);font-weight:600;font-size:15px;margin-bottom:4px}
  .facts span{font-size:13.5px;color:var(--mute)}
  @media(max-width:720px){
    .facts{grid-template-columns:1fr}
    .facts > div,.facts > div + div{border-left:0;padding:18px 0}
  }

  /* flow & fees */
  .steps{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;margin-top:48px;border:1px solid var(--line);background:var(--white)}
  .step{padding:34px 30px}
  .step + .step{border-left:1px solid var(--line)}
  .step .n{font-size:11px;letter-spacing:.28em;color:var(--gold);margin-bottom:14px}
  .step h3{font-size:19px;margin-bottom:6px}
  .step .price{font-size:24px;color:var(--navy);font-weight:500;margin:12px 0 4px;letter-spacing:.02em}
  .step .price small{font-size:13px;color:var(--mute);margin-left:6px;font-weight:400}
  .step p{font-size:14px;line-height:1.85;margin-top:12px}
  .step .tagline{font-size:13px;color:var(--mute)}
  @media(max-width:860px){
    .steps{grid-template-columns:1fr}
    .step + .step{border-left:0;border-top:1px solid var(--line)}
  }
  .fine{margin-top:36px}
  .fine .cols li::before{background:var(--line)}

  /* who */
  .who{display:grid;grid-template-columns:1fr 1fr;gap:56px}
  .who h3{margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--line)}
  .who ul{list-style:none}
  .who li{padding:10px 0;font-size:15px;line-height:1.8}
  .who .no li{color:var(--mute)}
  @media(max-width:720px){.who{grid-template-columns:1fr;gap:40px}}

  /* faq */
  details{border-bottom:1px solid var(--line)}
  details:first-of-type{border-top:1px solid var(--line)}
  summary{cursor:pointer;list-style:none;padding:22px 40px 22px 0;font-size:16.5px;color:var(--navy);font-weight:500;position:relative;line-height:1.7}
  summary::-webkit-details-marker{display:none}
  summary::after{content:"";position:absolute;right:6px;top:50%;width:10px;height:10px;border-right:1px solid var(--navy);border-bottom:1px solid var(--navy);transform:translateY(-70%) rotate(45deg);transition:transform .2s}
  details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
  details p{padding:0 0 24px;font-size:15px;max-width:var(--measure)}

  /* cta */
  .cta{background:var(--navy);color:var(--white);padding:100px 0}
  .cta .eyebrow{color:#C9AE72}
  .cta h2{color:var(--white)}
  .cta p{color:#D7D9DF}
  .cta .btn-primary{background:var(--white);color:var(--navy)}
  .cta .btn-primary:hover{background:#ECE8DF}
  .cta .flow{display:flex;gap:0;margin:40px 0 8px;flex-wrap:wrap}
  .cta .flow div{padding:14px 26px 14px 0;font-size:13.5px;color:#C4C8D2;position:relative;margin-right:26px}
  .cta .flow div::after{content:"";position:absolute;right:-2px;top:50%;width:7px;height:7px;border-right:1px solid #7C8498;border-top:1px solid #7C8498;transform:translateY(-50%) rotate(45deg)}
  .cta .flow div:last-child::after{display:none}
  .cta .flow b{display:block;color:var(--white);font-weight:500;font-size:15px}

  /* footer */
  footer{padding:44px 0 40px;border-top:1px solid var(--line)}
  footer .row{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:20px}
  footer .links a{font-size:12.5px;color:var(--mute);margin-right:22px}
  footer .copy{font-size:11px;letter-spacing:.14em;color:var(--mute);margin-top:28px}

/* ===== sub pages (legal / form) ===== */
.page{padding:80px 0 100px}
@media(max-width:640px){.page{padding:56px 0 72px}}
.page-head{margin-bottom:48px;padding-bottom:28px;border-bottom:1px solid var(--line)}
.page-head h1{font-size:clamp(28px,3.6vw,38px)}
.page-head .lead{margin-top:20px;max-width:var(--measure)}
.article{max-width:var(--measure)}
.article h2{font-size:19px;font-weight:600;margin:48px 0 14px;padding-top:24px;border-top:1px solid var(--line);color:var(--navy);line-height:1.6}
.article h2:first-of-type{border-top:0;padding-top:0;margin-top:0}
.article h3{font-size:16px;margin:26px 0 8px}
.article p,.article li{font-size:15px;line-height:1.95}
.article ol,.article ul{padding-left:1.4em;margin-bottom:1.2em}
.article li{margin-bottom:.35em}
.article .note{font-size:13.5px;color:var(--mute)}
.article a{border-bottom:1px solid var(--gold)}
.def{width:100%;border-collapse:collapse;margin:8px 0 28px;font-size:15px}
.def th,.def td{text-align:left;vertical-align:top;padding:14px 16px 14px 0;border-bottom:1px solid var(--line);line-height:1.85;white-space:normal;width:auto}
.def th{font-weight:500;color:var(--mute);width:30%;font-size:14px;letter-spacing:.04em}
.def td:last-child{white-space:normal;width:auto;color:var(--ink)}
@media(max-width:640px){
  .def th,.def td{display:block;width:100%;padding:8px 0}
  .def th{border-bottom:0;padding-top:16px}
  .def td{padding-bottom:16px}
}

/* form */
.form{max-width:var(--measure)}
fieldset{border:0;margin:0 0 44px;padding:0}
legend{font-size:19px;font-weight:600;color:var(--navy);margin-bottom:6px;padding:0}
.fs-note{font-size:13.5px;color:var(--mute);margin-bottom:18px}
.field{margin-bottom:26px}
.field > label,.field > .lbl{display:block;font-size:15px;font-weight:600;color:var(--navy);margin-bottom:8px}
.req{font-size:11px;color:var(--gold);margin-left:8px;letter-spacing:.14em;font-weight:400}
.hint{font-size:13px;color:var(--mute);margin-top:6px;line-height:1.7}
input[type=text],input[type=email],select,textarea{
  width:100%;font:inherit;font-size:15px;line-height:1.7;color:var(--ink);
  background:var(--white);border:1px solid var(--line);padding:12px 14px;border-radius:0;
  -webkit-appearance:none;appearance:none;
}
select{background-image:linear-gradient(45deg,transparent 50%,var(--navy) 50%),linear-gradient(135deg,var(--navy) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:40px}
textarea{min-height:120px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:6px 24px}
@media(max-width:560px){.choices{grid-template-columns:1fr}}
.choice{display:flex;align-items:flex-start;gap:10px;font-size:15px;line-height:1.7;padding:6px 0;cursor:pointer}
.choice input{margin-top:7px;accent-color:var(--navy);width:16px;height:16px;flex:none}
.confirm{border:1px solid var(--line);background:var(--white);padding:22px 24px;margin-bottom:34px}
.confirm .choice{padding:6px 0}
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.btn-submit{width:100%;max-width:420px;text-align:center;cursor:pointer;border:0;font-family:inherit}
.form-foot{font-size:13px;color:var(--mute);margin-top:16px}
.alert{border-left:2px solid #A3473A;padding:10px 0 10px 18px;margin-bottom:28px;font-size:14.5px;color:#7A3A30}
.alert ul{padding-left:1.2em;margin-top:6px}

/* bank box */
.bank{border:1px solid var(--line);background:var(--white);padding:26px 28px;margin:28px 0}
.bank dl{display:grid;grid-template-columns:120px 1fr;gap:10px 16px;font-size:15px}
.bank dt{color:var(--mute);font-size:14px}
.bank dd{color:var(--navy);font-weight:500}
@media(max-width:480px){.bank dl{grid-template-columns:1fr;gap:2px}.bank dt{margin-top:10px}}

/* nav variants */
.nav .links a{font-size:13px;color:var(--mute);margin-left:22px}
.nav .links a.cta-s{color:var(--navy);margin-left:28px}
@media(max-width:640px){.nav .links a:not(.cta-s){display:none}}
