:root{
  --pink:#EBD3CB;          /* ピンクベージュ（基調） */
  --pink-soft:#F6E9E3;
  --pink-deep:#C99C8E;
  --ivory:#FBF7F0;
  --champagne:#C4A574;     /* シャンパンゴールド */
  --champagne-soft:#E7D9BE;
  --olive:#767845;
  --olive-deep:#5B5D33;
  --sage:#A8B7A0;
  --sage-soft:#E4EADD;
  --ink:#4B3F3B;
  --ink-soft:#7B6C66;
  --line:#E6D8CF;
  --white:#FFFFFF;
  --serif:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
  --sans:"Zen Kaku Gothic New","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
  --en:"Cormorant Garamond","Times New Roman",serif;
  --w:1120px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--ivory);line-height:1.95;font-size:16px;letter-spacing:.03em;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
.wrap{width:min(var(--w),calc(100% - 48px));margin-inline:auto}
.en{font-family:var(--en);letter-spacing:.14em}
.serif{font-family:var(--serif)}

/* ---------- header ---------- */
.hd{position:sticky;top:0;z-index:50;background:var(--ivory);border-bottom:1px solid var(--line)}
.hd .in{display:flex;align-items:center;justify-content:space-between;height:76px}
.logo{display:flex;align-items:center;gap:12px}
.logo svg{width:38px;height:38px;flex:none}
.logo b{display:block;font-family:var(--serif);font-size:20px;font-weight:600;letter-spacing:.12em;line-height:1.2}
.logo small{display:block;font-size:10.5px;letter-spacing:.2em;color:var(--ink-soft);font-family:var(--en);font-size:12px}
.gnav{display:flex;align-items:center;gap:30px;font-size:14px}
.gnav a{position:relative;padding:6px 0}
.gnav a:not(.btn)::after{content:"";position:absolute;left:0;bottom:0;width:0;height:1px;background:var(--champagne);transition:width .3s}
.gnav a:not(.btn):hover::after,.gnav a[aria-current="page"]::after{width:100%}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 34px;border-radius:999px;background:var(--olive);color:#fff;font-size:15px;letter-spacing:.1em;border:1px solid var(--olive);transition:background .3s,transform .3s}
.btn:hover{background:var(--olive-deep);transform:translateY(-2px)}
.btn.gold{background:var(--champagne);border-color:var(--champagne)}
.btn.gold:hover{background:#B2925F}
.btn.line{background:transparent;color:var(--olive-deep)}
.btn.line:hover{background:var(--olive);color:#fff}
.btn.sm{padding:10px 22px;font-size:13.5px}
.menu-btn{display:none;width:48px;height:48px;border:0;background:none;cursor:pointer;position:relative;z-index:70}
.menu-btn span,.menu-btn::before,.menu-btn::after{content:"";position:absolute;left:12px;right:12px;height:1.5px;background:var(--ink);transition:transform .3s,opacity .3s,top .3s}
.menu-btn::before{top:17px}.menu-btn span{top:23px}.menu-btn::after{top:29px}
.menu-btn[aria-expanded="true"]::before{top:23px;transform:rotate(45deg)}
.menu-btn[aria-expanded="true"] span{opacity:0}
.menu-btn[aria-expanded="true"]::after{top:23px;transform:rotate(-45deg)}

/* ---------- hero ---------- */
.hero{position:relative;background:linear-gradient(180deg,var(--pink-soft) 0%,var(--ivory) 100%);overflow:hidden}
.hero .in{display:grid;grid-template-columns:1.02fr 1fr;align-items:center;gap:56px;min-height:660px;padding:56px 0 72px}
.hero .eyebrow{font-family:var(--en);font-size:15px;color:var(--champagne);letter-spacing:.3em;margin-bottom:18px}
.hero h1{font-family:var(--serif);font-weight:500;font-size:clamp(30px,3.6vw,46px);line-height:1.6;letter-spacing:.08em;color:var(--ink)}
.hero h1 em{font-style:normal;background:linear-gradient(transparent 68%,rgba(196,165,116,.35) 68%)}
.hero p.lead{margin:26px 0 34px;color:var(--ink-soft);font-size:16px;max-width:30em}
.hero .cta{display:flex;flex-wrap:wrap;gap:14px}
.hero .note{margin-top:20px;font-size:13px;color:var(--ink-soft)}
.hero .ph{position:relative}
.hero .ph .main{border-radius:240px 240px 24px 24px;aspect-ratio:4/5;width:100%;object-fit:cover;box-shadow:0 30px 60px -30px rgba(120,80,70,.35)}
.hero .ph .sub{position:absolute;left:-40px;bottom:36px;width:38%;aspect-ratio:1;object-fit:cover;border-radius:50%;border:6px solid var(--ivory);box-shadow:0 14px 30px -14px rgba(0,0,0,.25)}
.hero .ph .badge{position:absolute;right:-8px;top:34px;width:118px;height:118px;border-radius:50%;background:var(--ivory);border:1px solid var(--champagne);display:grid;place-items:center;text-align:center;font-family:var(--serif);font-size:13px;line-height:1.6;color:var(--olive-deep);letter-spacing:.1em}
.hero .ph .badge b{display:block;font-size:20px;color:var(--champagne)}
.leaf-deco{position:absolute;pointer-events:none;opacity:.55}

/* ---------- sections ---------- */
section{position:relative}
.sec{padding:104px 0}
.sec.pink{background:var(--pink-soft)}
.sec.sage{background:var(--sage-soft)}
.sec.white{background:var(--white)}
.hd2{text-align:center;margin-bottom:56px}
.hd2 .en{display:block;color:var(--champagne);font-size:15px;margin-bottom:8px;text-transform:uppercase}
.hd2 h2{font-family:var(--serif);font-weight:500;font-size:clamp(25px,2.8vw,34px);letter-spacing:.1em;line-height:1.6}
.hd2 h2::after{content:"";display:block;width:52px;height:1px;background:var(--champagne);margin:18px auto 0}
.hd2 p{margin-top:18px;color:var(--ink-soft);font-size:15px}
.concept{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.concept .txt p{margin-bottom:1.4em;color:var(--ink-soft)}
.concept .txt h3{font-family:var(--serif);font-weight:500;font-size:clamp(22px,2.4vw,28px);line-height:1.9;margin-bottom:22px;letter-spacing:.08em}
.concept .imgs{position:relative;aspect-ratio:1/1}
.concept .imgs img{position:absolute;object-fit:cover;box-shadow:0 20px 40px -24px rgba(90,60,50,.4)}
.concept .imgs .a{left:0;top:0;width:68%;height:74%;border-radius:200px 200px 16px 16px}
.concept .imgs .b{right:0;bottom:0;width:52%;height:50%;border-radius:16px;border:6px solid var(--ivory)}

.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.card{background:var(--white);border-radius:20px;padding:40px 30px 36px;text-align:center;border:1px solid var(--line);position:relative}
.card .no{font-family:var(--en);font-size:34px;color:var(--champagne);line-height:1;margin-bottom:6px}
.card .ic{width:64px;height:64px;margin:0 auto 16px;border-radius:50%;background:var(--pink-soft);display:grid;place-items:center}
.card .ic svg{width:32px;height:32px;stroke:var(--olive);fill:none;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
.card h3{font-family:var(--serif);font-weight:500;font-size:20px;letter-spacing:.08em;margin-bottom:14px;line-height:1.6}
.card p{font-size:14.5px;color:var(--ink-soft);text-align:left}

.target{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.target li{background:var(--white);border:1px solid var(--line);border-radius:14px;padding:26px 18px;text-align:center;font-size:14.5px}
.target li b{display:block;font-family:var(--serif);font-weight:500;font-size:17px;color:var(--olive-deep);margin-bottom:6px;letter-spacing:.08em}

.svc-row{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.svc{background:var(--white);border-radius:20px;overflow:hidden;border:1px solid var(--line);display:flex;flex-direction:column;transition:transform .4s,box-shadow .4s}
.svc:hover{transform:translateY(-6px);box-shadow:0 24px 40px -28px rgba(90,60,50,.45)}
.svc img{aspect-ratio:16/10;width:100%;object-fit:cover}
.svc .b{padding:28px 28px 30px;flex:1;display:flex;flex-direction:column}
.svc h3{font-family:var(--serif);font-weight:500;font-size:20px;letter-spacing:.08em;margin-bottom:10px}
.svc p{font-size:14.5px;color:var(--ink-soft);flex:1}
.svc .more{margin-top:16px;font-size:13.5px;color:var(--olive-deep);letter-spacing:.12em}
.svc .more::after{content:" →"}

.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;counter-reset:s}
.steps li{position:relative;background:var(--white);border-radius:18px;padding:34px 22px 28px;text-align:center;border:1px solid var(--line)}
.steps li::before{counter-increment:s;content:"STEP " counter(s);display:block;font-family:var(--en);color:var(--champagne);letter-spacing:.2em;font-size:15px;margin-bottom:6px}
.steps li b{display:block;font-family:var(--serif);font-weight:500;font-size:18px;margin-bottom:8px;letter-spacing:.08em}
.steps li p{font-size:14px;color:var(--ink-soft);text-align:left}

.voices{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.voice{background:var(--white);border-radius:18px;padding:30px 28px;border:1px solid var(--line);position:relative}
.voice::before{content:"“";position:absolute;right:22px;top:6px;font-family:var(--en);font-size:76px;line-height:1;color:var(--champagne-soft)}
.voice .meta{font-size:13px;color:var(--olive-deep);margin-bottom:10px;letter-spacing:.1em}
.voice h3{font-family:var(--serif);font-weight:500;font-size:17.5px;line-height:1.8;margin-bottom:10px}
.voice p{font-size:14.5px;color:var(--ink-soft)}
.demo-tag{display:block;text-align:center;font-size:12.5px;color:var(--ink-soft);margin-top:24px}

.faq-list{max-width:820px;margin:0 auto;display:grid;gap:14px}
details{background:var(--white);border:1px solid var(--line);border-radius:14px;overflow:hidden}
summary{list-style:none;cursor:pointer;padding:22px 64px 22px 28px;position:relative;font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:.06em;line-height:1.7}
summary::-webkit-details-marker{display:none}
summary::before{content:"Q";font-family:var(--en);color:var(--champagne);font-size:22px;margin-right:14px}
summary::after{content:"";position:absolute;right:28px;top:50%;width:10px;height:10px;border-right:1.5px solid var(--olive);border-bottom:1.5px solid var(--olive);transform:translateY(-70%) rotate(45deg);transition:transform .3s}
details[open] summary::after{transform:translateY(-30%) rotate(-135deg)}
details .a{padding:0 28px 26px 28px;color:var(--ink-soft);font-size:15px;display:flex;gap:14px}
details .a::before{content:"A";font-family:var(--en);color:var(--olive);font-size:22px;line-height:1.5;flex:none}

.cta-band{position:relative;color:#fff;text-align:center;padding:96px 0;background:var(--olive-deep) center/cover}
.cta-band::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(70,72,40,.72),rgba(70,72,40,.8))}
.cta-band .wrap{position:relative}
.cta-band h2{font-family:var(--serif);font-weight:500;font-size:clamp(24px,3vw,34px);letter-spacing:.1em;line-height:1.7;margin-bottom:16px}
.cta-band p{margin-bottom:34px;opacity:.92}
.cta-band .tel{margin-top:26px;font-size:14px;opacity:.9}
.cta-band .tel b{font-family:var(--en);font-size:30px;letter-spacing:.1em;margin-left:10px;font-weight:600}

/* ---------- sub page ---------- */
.ph-head{background:linear-gradient(180deg,var(--pink-soft),var(--ivory));text-align:center;padding:76px 0 64px;position:relative;overflow:hidden}
.ph-head .en{display:block;color:var(--champagne);font-size:15px;margin-bottom:10px}
.ph-head h1{font-family:var(--serif);font-weight:500;font-size:clamp(28px,3.4vw,40px);letter-spacing:.14em}
.ph-head p{margin-top:16px;color:var(--ink-soft);font-size:15px}
.crumb{font-size:12.5px;color:var(--ink-soft);padding:16px 0}
.crumb a{text-decoration:underline;text-underline-offset:3px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center}
.two img{border-radius:20px;aspect-ratio:5/4;object-fit:cover;width:100%;box-shadow:0 24px 48px -30px rgba(90,60,50,.45)}
.two.rev .t{order:2}
.two h3{font-family:var(--serif);font-weight:500;font-size:24px;line-height:1.8;letter-spacing:.08em;margin-bottom:18px}
.two p{color:var(--ink-soft);margin-bottom:1.2em}
.sign{font-family:var(--serif);text-align:right;margin-top:18px;letter-spacing:.14em}
.tbl{width:100%;border-collapse:collapse;background:var(--white);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.tbl th,.tbl td{padding:20px 24px;border-bottom:1px solid var(--line);text-align:left;font-size:15px;vertical-align:top}
.tbl th{width:26%;background:var(--pink-soft);font-family:var(--serif);font-weight:500;letter-spacing:.08em}
.tbl tr:last-child th,.tbl tr:last-child td{border-bottom:0}

.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;align-items:stretch}
.plan{background:var(--white);border:1px solid var(--line);border-radius:22px;padding:40px 30px 34px;text-align:center;position:relative;display:flex;flex-direction:column}
.plan.rec{border:2px solid var(--champagne);box-shadow:0 26px 46px -30px rgba(160,120,60,.5)}
.plan .tag{position:absolute;left:50%;top:-14px;transform:translateX(-50%);background:var(--champagne);color:#fff;font-size:12.5px;padding:3px 18px;border-radius:999px;letter-spacing:.14em;white-space:nowrap}
.plan h3{font-family:var(--serif);font-weight:500;font-size:22px;letter-spacing:.1em}
.plan .sub{font-size:13px;color:var(--ink-soft);margin:6px 0 18px}
.plan .price{font-family:var(--en);font-size:44px;color:var(--olive-deep);line-height:1.2;letter-spacing:.04em}
.plan .price small{font-family:var(--sans);font-size:14px;letter-spacing:.06em}
.plan .per{font-size:13px;color:var(--ink-soft);margin-bottom:20px}
.plan ul{text-align:left;font-size:14.5px;border-top:1px solid var(--line);padding-top:20px;flex:1}
.plan li{position:relative;padding-left:26px;margin-bottom:10px;color:var(--ink-soft);line-height:1.7}
.plan li::before{content:"";position:absolute;left:4px;top:.55em;width:10px;height:5px;border-left:1.5px solid var(--olive);border-bottom:1.5px solid var(--olive);transform:rotate(-45deg)}
.fine{font-size:13px;color:var(--ink-soft);margin-top:22px;line-height:1.9}
.support{display:grid;grid-template-columns:repeat(2,1fr);gap:18px 40px;max-width:860px;margin:0 auto}
.support li{padding:18px 0 18px 40px;border-bottom:1px dashed var(--champagne);position:relative;font-size:15px}
.support li::before{content:"";position:absolute;left:6px;top:28px;width:12px;height:12px;border-radius:50%;background:var(--sage)}

.tl{max-width:860px;margin:0 auto;position:relative}
.tl::before{content:"";position:absolute;left:34px;top:10px;bottom:10px;width:1px;background:var(--champagne)}
.tl li{position:relative;padding:0 0 44px 100px}
.tl li:last-child{padding-bottom:0}
.tl .dot{position:absolute;left:0;top:0;width:68px;height:68px;border-radius:50%;background:var(--ivory);border:1px solid var(--champagne);display:grid;place-items:center;font-family:var(--en);font-size:24px;color:var(--olive-deep);line-height:1}
.tl .dot small{display:block;font-size:10px;letter-spacing:.2em;color:var(--champagne);text-align:center}
.tl .box{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:26px 30px}
.tl h3{font-family:var(--serif);font-weight:500;font-size:20px;letter-spacing:.08em;margin-bottom:8px}
.tl .term{display:inline-block;font-size:12.5px;background:var(--sage-soft);color:var(--olive-deep);padding:2px 14px;border-radius:999px;margin-bottom:10px;letter-spacing:.08em}
.tl p{font-size:14.5px;color:var(--ink-soft)}

.form{max-width:760px;margin:0 auto;background:var(--white);border:1px solid var(--line);border-radius:22px;padding:48px 48px 44px}
.form .row{margin-bottom:26px}
.form label{display:block;font-size:14.5px;margin-bottom:8px;letter-spacing:.08em}
.form label i{font-style:normal;font-size:11.5px;background:var(--pink-deep);color:#fff;padding:1px 10px;border-radius:999px;margin-left:10px;letter-spacing:.1em}
.form input,.form select,.form textarea{width:100%;font:inherit;font-size:16px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--ivory);color:var(--ink)}
.form textarea{min-height:150px;resize:vertical}
.form input:focus,.form select:focus,.form textarea:focus{outline:2px solid var(--sage);outline-offset:1px;background:#fff}
.form .chk{display:flex;flex-wrap:wrap;gap:12px 24px;font-size:15px}
.form .chk label{display:flex;align-items:center;gap:8px;margin:0}
.form .chk input{width:auto}
.form .sub{text-align:center;margin-top:34px}
.form .sub .btn{min-width:280px;cursor:pointer;font:inherit;font-size:16px}
.thanks{display:none;text-align:center;max-width:760px;margin:0 auto;background:var(--white);border:1px solid var(--champagne);border-radius:22px;padding:56px 32px}
.thanks h2{font-family:var(--serif);font-weight:500;font-size:24px;margin-bottom:14px;letter-spacing:.1em}
.contact-info{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-bottom:56px}
.contact-info div{background:var(--white);border:1px solid var(--line);border-radius:16px;padding:26px 22px;text-align:center}
.contact-info b{display:block;font-family:var(--serif);font-weight:500;letter-spacing:.1em;margin-bottom:6px;color:var(--olive-deep)}
.contact-info span{font-size:14.5px;color:var(--ink-soft)}
.contact-info .big{font-family:var(--en);font-size:26px;color:var(--ink);letter-spacing:.08em;display:block}

/* ---------- notes (制作補足) ---------- */
.notes h3{font-family:var(--serif);font-weight:500;font-size:22px;letter-spacing:.08em;margin:0 0 14px}
.notes .blk{background:var(--white);border:1px solid var(--line);border-radius:18px;padding:34px 34px 30px;margin-bottom:26px}
.notes p,.notes li{font-size:14.5px;color:var(--ink-soft)}
.notes li{margin:6px 0 6px 1.2em;list-style:disc}
.notes code{background:var(--pink-soft);padding:1px 8px;border-radius:6px;font-size:13px;word-break:break-all}
.sw{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:12px}
.sw div{border-radius:12px;padding:46px 12px 12px;font-size:12px;border:1px solid var(--line);text-align:center;line-height:1.5}

/* ---------- footer ---------- */
.ft{background:var(--olive-deep);color:#EFEAD9;padding:64px 0 28px}
.ft .in{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:48px}
.ft .logo b{color:#fff}
.ft .logo small{color:#CFC9B0}
.ft p{font-size:13.5px;opacity:.85;margin-top:16px;line-height:1.9}
.ft h4{font-family:var(--serif);font-weight:500;letter-spacing:.14em;margin-bottom:14px;font-size:15px;color:var(--champagne-soft)}
.ft li{margin-bottom:8px;font-size:14px}
.ft li a:hover{text-decoration:underline;text-underline-offset:3px}
.ft .copy{margin-top:46px;padding-top:22px;border-top:1px solid rgba(255,255,255,.18);font-size:12px;opacity:.75;text-align:center}
.sp-bar{display:none}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(24px);transition:opacity .9s ease,transform .9s ease}
.rv.is-in{opacity:1;transform:none}
.rv.d1{transition-delay:.12s}.rv.d2{transition-delay:.24s}
.static .rv{opacity:1;transform:none;transition:none}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .gnav{display:none}
  .menu-btn{display:block}
  .gnav.open{display:flex;position:fixed;inset:0;z-index:60;background:var(--ivory);flex-direction:column;justify-content:center;align-items:center;gap:6px;font-size:18px}
  .gnav.open a{padding:14px 0;font-family:var(--serif);letter-spacing:.14em}
  .gnav.open .btn{margin-top:18px;font-family:var(--sans)}
  .hero .in{grid-template-columns:1fr;gap:40px;min-height:0;padding:40px 0 56px}
  .hero .ph{max-width:480px;margin:0 auto;width:100%}
  .hero .ph .sub{left:-8px}
  .concept,.two{grid-template-columns:1fr;gap:36px}
  .two.rev .t{order:0}
  .cards3,.svc-row,.voices,.plans,.contact-info{grid-template-columns:1fr}
  .target,.steps{grid-template-columns:repeat(2,1fr)}
  .support{grid-template-columns:1fr}
  .sec{padding:76px 0}
  .ft .in{grid-template-columns:1fr;gap:30px}
  .plans{max-width:480px;margin-inline:auto}
}
@media (max-width:600px){
  body{font-size:15.5px;padding-bottom:72px}
  .wrap{width:calc(100% - 32px)}
  .hd .in{height:64px}
  .logo b{font-size:17px}
  .logo svg{width:32px;height:32px}
  .hero .ph .badge{width:96px;height:96px;font-size:11px;right:0}
  .hero .ph .badge b{font-size:16px}
  .target,.steps{grid-template-columns:1fr}
  .form{padding:32px 20px}
  .tl::before{left:26px}
  .tl li{padding-left:76px}
  .tl .dot{width:52px;height:52px;font-size:20px}
  .tl .box{padding:20px}
  .tbl th,.tbl td{display:block;width:100%;padding:14px 18px}
  .tbl th{border-bottom:0;padding-bottom:4px}
  summary{padding:18px 48px 18px 18px;font-size:15.5px}
  summary::after{right:18px}
  details .a{padding:0 18px 22px}
  .sw{grid-template-columns:repeat(2,1fr)}
  .sp-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--ivory);border-top:1px solid var(--line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));gap:10px}
  .sp-bar a{flex:1;display:flex;align-items:center;justify-content:center;padding:12px 6px;border-radius:999px;font-size:14px;letter-spacing:.06em;border:1px solid var(--olive)}
  .sp-bar a.p{background:var(--olive);color:#fff}
  .sp-bar a.s{color:var(--olive-deep)}
}
@media (max-width:960px){.hero .leaf-deco{display:none}}
@media (max-width:960px){.gnav.open .btn{font-size:16px;padding:14px 36px}}
