*{margin:0;padding:0;box-sizing:border-box}
:root{
  --serif:"Hiragino Mincho ProN","Yu Mincho","Noto Serif JP",Georgia,serif;
  --paper:#f6f4ef;
  --navy:#0b1322;
  --ink:#1a2433;
  --wine:#641f31;
  --wine-l:#d59caa;
  --hair:rgba(38,28,20,.14);
  --sub:rgba(38,28,20,.68);
}
html,body{background:var(--paper)}
body{
  color:var(--ink);
  font-family:"Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic Medium","Yu Gothic","Noto Sans JP",system-ui,sans-serif;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
::selection{background:#641f31;color:#f6f4ef}
.eyebrow::before{content:'';display:inline-block;width:22px;height:1px;background:currentColor;margin-right:12px;vertical-align:4px}
.wrap{width:min(1020px,88vw);margin:0 auto}

/* ---- ヘッダー ---- */
.hd{position:sticky;top:0;z-index:50;background:rgba(246,244,239,.92);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--hair)}
.hd-in{width:min(1180px,94vw);margin:0 auto;display:flex;align-items:center;justify-content:space-between;height:64px}
.hd-logo{font-size:12px;font-weight:600;letter-spacing:.42em;color:var(--ink);text-decoration:none}
.hd-nav{display:flex;align-items:center;gap:26px}
.hd-nav a{font-size:12px;letter-spacing:.16em;color:var(--ink);text-decoration:none;opacity:.75;transition:opacity .3s,color .3s;padding:6px 0}
.hd-nav a:hover{opacity:1}
.hd-nav a.on{opacity:1;color:var(--wine);border-bottom:1px solid var(--wine)}
.hd-nav a.hd-cta{background:var(--wine);color:#f6f4ef;opacity:1;padding:10px 18px;letter-spacing:.2em;border-radius:2px;border:none;transition:background .3s}
.hd-nav a.hd-cta:hover{background:#7d2f42}

/* ---- 共通 ---- */
.page{display:none}
.page.on{display:block}
.sec{padding:96px 0}
.sec.tight{padding:72px 0}
.eyebrow{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.42em;color:var(--wine);margin-bottom:20px}
h1.pt{font-size:clamp(24px,3.6vw,40px);font-weight:300;letter-spacing:.14em;line-height:1.8;text-wrap:balance}
h2.st{font-size:clamp(19px,2.6vw,28px);font-weight:300;letter-spacing:.14em;line-height:1.8;margin-bottom:18px;text-wrap:balance}
.lead{font-size:clamp(13.5px,1.6vw,15.5px);font-weight:300;letter-spacing:.1em;line-height:2.2;color:var(--sub);max-width:40em}
.hairline{border:none;border-top:1px solid var(--hair)}

/* ---- サービスページ ---- */
.svc-hero{padding:88px 0 64px}
.svc-hero .role{font-size:12px;letter-spacing:.24em;color:var(--sub);margin-top:18px}
.svc-hero .catch{margin-top:26px;font-size:clamp(22px,3.4vw,38px);font-weight:300;letter-spacing:.14em;line-height:1.9;text-wrap:balance}
.svc-hero .intro{margin-top:24px}
.motif{margin-top:52px;width:100%;height:64px;display:block}
.motif polyline{fill:none;stroke:var(--wine);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round;opacity:.8}

.pain-grid{display:flex;flex-direction:column;gap:16px;margin-top:44px}
.pain-grid p{display:flex;align-items:center;gap:14px;font-weight:300;font-size:clamp(13.5px,1.7vw,16px);letter-spacing:.1em;color:var(--sub)}
.pain-grid p i{display:block;width:18px;height:1px;background:var(--wine);flex:none}

.do-list{margin-top:40px;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px 34px}
.do-list li{list-style:none;font-size:13.5px;font-weight:300;letter-spacing:.08em;line-height:1.9;padding:13px 0;border-bottom:1px solid var(--hair);color:var(--ink)}

.dont{background:var(--navy);color:#eef1f4}
.dont .eyebrow{color:var(--wine-l)}
.dont h2.st{color:#eef1f4}
.dont .lead{color:rgba(238,241,244,.65)}
.dont-list{margin-top:40px;display:flex;flex-direction:column;gap:0}
.dont-list li{list-style:none;display:flex;align-items:baseline;gap:16px;padding:18px 0;border-bottom:1px solid rgba(238,241,244,.12);font-size:clamp(13.5px,1.7vw,16px);font-weight:300;letter-spacing:.1em;line-height:1.9}
.dont-list li:first-child{border-top:1px solid rgba(238,241,244,.12)}
.dont-list .x{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--wine-l);font-size:12px;flex:none}

.fit-grid{display:grid;grid-template-columns:1fr 1fr;gap:34px;margin-top:44px}
.fit-col{border:1px solid var(--hair);padding:34px 34px 28px}
.fit-col.good{border-color:rgba(100,31,49,.45)}
.fit-col h3{font-size:14.5px;font-weight:600;letter-spacing:.14em;margin-bottom:22px}
.fit-col.good h3{color:var(--wine)}
.fit-col li{list-style:none;font-size:13px;font-weight:300;letter-spacing:.06em;line-height:2;padding:9px 0;border-top:1px solid var(--hair);color:var(--sub)}
.fit-note{margin-top:24px;font-size:12.5px;font-weight:300;letter-spacing:.08em;line-height:2;color:var(--sub)}

.after-list{margin-top:44px;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:28px}
.after-item{border-top:1px solid var(--ink);padding-top:16px}
.after-item .a-no{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.12em;color:var(--wine)}
.after-item p{margin-top:10px;font-size:13.5px;font-weight:300;letter-spacing:.08em;line-height:2}

.next-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:40px}
.next-card{border:1px solid var(--hair);padding:26px 28px;text-decoration:none;color:inherit;display:flex;justify-content:space-between;align-items:center;gap:16px;transition:border-color .3s}
.next-card:hover{border-color:var(--wine)}
.next-card h3{font-size:15px;font-weight:600;letter-spacing:.06em}
.next-card p{margin-top:6px;font-size:12px;font-weight:300;letter-spacing:.08em;color:var(--sub)}
.next-card .arw{color:var(--wine);flex:none}

/* ---- 構造図(稼働する構造) ---- */
.wrap-wide{width:min(1280px,96vw);margin:0 auto}
.diag{margin-top:10px;overflow-x:auto}
.diag svg{width:100%;height:auto;display:block;overflow:visible}
.diag .node rect{fill:#fff;stroke:rgba(38,28,20,.3);stroke-dasharray:3 4;transition:stroke .9s,stroke-dasharray .9s}
.diag.built .node rect{stroke:rgba(100,31,49,.35);stroke-dasharray:none}
.diag .node text{font-size:13.5px;fill:var(--ink);font-weight:400;letter-spacing:.06em}
.diag .node.small text{font-size:11px;letter-spacing:.04em;fill:rgba(38,28,20,.75)}
.diag .node.small rect{stroke:rgba(38,28,20,.24)}
.diag.built .node.small rect{stroke:rgba(100,31,49,.25)}
.diag .gnode{transition:opacity .8s .2s}
.diag.built .gnode{opacity:0}
.diag .cap{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;fill:rgba(38,28,20,.68);letter-spacing:.22em;transition:opacity .6s}
.diag .cap-b{opacity:0;fill:var(--wine)}
.diag.built .cap-a{opacity:0}
.diag.built .cap-b{opacity:1}
.diag .c-messy{fill:none;stroke:rgba(38,28,20,.32);stroke-width:1;stroke-dasharray:4 5;transition:opacity .7s}
.diag.built .c-messy{opacity:0}
.diag .c-line{fill:none;stroke:var(--wine);stroke-width:1.5;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.5s ease .55s,filter 1s 1.5s}
.diag.built .c-line{stroke-dashoffset:0;filter:drop-shadow(0 0 4px rgba(213,156,170,.65))}
.diag .c-line.sp{stroke-width:1;opacity:.55;transition-delay:1.1s}
.diag .node{transform:var(--tm);transition:transform 1.15s cubic-bezier(.22,1,.36,1)}
.diag.built .node{transform:var(--tb)}
.diag .pd{transition:opacity .6s .8s}
.diag.built .pd{opacity:0}
.diag .sdot{fill:#b08d57;animation:sblink 2.2s ease-in-out infinite}
.diag.built .sdot{opacity:0;animation:none;transition:opacity .5s}
@keyframes sblink{0%,100%{opacity:.15}50%{opacity:.75}}
.diag .orbit{opacity:0;transform-box:view-box;transform-origin:50% 50%;transition:opacity .6s 1.8s}
.diag.built .orbit{opacity:1;animation:orbit 16s linear infinite}
.diag.built .orbit.o2{animation-delay:-8s}
@keyframes orbit{to{transform:rotate(360deg)}}
.diag .plab{font-size:11px;fill:#9c6b2f;letter-spacing:.1em}
.diag .plabels{transition:opacity .7s}
.diag.built .plabels{opacity:0}
.diag .dnote{font-size:10.5px;fill:rgba(38,28,20,.68);letter-spacing:.1em}
.diag.draft .c-line{stroke-dasharray:.012 .018;stroke-dashoffset:0;transition:none;filter:none;stroke:rgba(100,31,49,.6)}
.diag .swapdot{opacity:0;transition:opacity .6s 1.2s}
.diag.built .swapdot{opacity:1;animation:pswap 7s ease-in-out infinite}
@keyframes pswap{0%,42%{fill:#7d8ba1}50%,92%{fill:#b08d57}100%{fill:#7d8ba1}}
/* Re:Core: お金の機構 */
.diag .mech{opacity:0;transition:opacity .9s .8s}
.diag.built .mech{opacity:1}
.diag .mech .mrect{fill:#fff;stroke:rgba(100,31,49,.4);stroke-width:1.2}
.diag.built .mech .mrect{filter:drop-shadow(0 0 6px rgba(213,156,170,.35))}
.diag.draft .mech .mrect{stroke-dasharray:4 4;filter:none}
.diag .mtxt{font-size:11.5px;fill:rgba(38,28,20,.7);letter-spacing:.14em}
.diag .bar{fill:rgba(100,31,49,.28);transform:var(--sm);transform-box:fill-box;transform-origin:center bottom;transition:transform 1.1s cubic-bezier(.22,1,.36,1) .7s}
.diag.built .bar{transform:var(--sb);fill:rgba(100,31,49,.5)}
.diag .bar.miss{fill:none;stroke:rgba(38,28,20,.3);stroke-dasharray:3 3}
.diag.built .bar.miss{fill:rgba(100,31,49,.5);stroke:none}
.diag.draft .bar,.diag.raw .bar{transform:var(--sm)}
.diag.draft .bar.miss,.diag.raw .bar.miss{fill:none;stroke:rgba(38,28,20,.3);stroke-dasharray:3 3}
.diag .fdot{fill:var(--wine);opacity:0}
.diag.built .fdot{animation:fall 5.5s linear 1.8s infinite}
@keyframes fall{0%{transform:translateY(0);opacity:0}6%{opacity:.9}46%{transform:translateY(276px);opacity:.9}52%{opacity:0;transform:translateY(276px)}100%{opacity:0;transform:translateY(276px)}}
.diag .okb{opacity:0;transition:opacity .8s 1.6s;font-size:12px;fill:var(--wine);letter-spacing:.14em}
.diag.built .okb{opacity:1}
.diag .plabels.keep{opacity:1}
/* Re:Rest: 視座の階段 */
.diag .vp{transform:var(--tm);transition:transform 1.25s cubic-bezier(.22,1,.36,1) .5s}
.diag.built .vp{transform:var(--tb)}
.diag .vp circle{fill:var(--wine)}
.diag.built .vp circle{filter:drop-shadow(0 0 5px rgba(213,156,170,.7))}
.diag .vcone{fill:rgba(213,156,170,.14);opacity:0;transition:opacity 1s 1.3s}
.diag.built .vcone{opacity:1}
.diag.pul.built .vcone{animation:breathe 6.5s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.55}50%{opacity:1}}
.diag .nfrag{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;fill:rgba(38,28,20,.66);transition:opacity .8s}
.diag.built .nfrag{opacity:0}
.diag .steplab{font-size:12.5px;fill:rgba(38,28,20,.7);letter-spacing:.12em;opacity:0;transition:opacity .8s 1.2s}
.diag.built .steplab{opacity:1}
.diag .steplab.cur{fill:var(--wine)}
.diag .nm{stroke:rgba(38,28,20,.3);stroke-width:1;stroke-dasharray:3 4;fill:none;opacity:0;transition:opacity .7s 2s}
.diag.built .nm{opacity:1}
.diag .nm-go{stroke:var(--wine);stroke-width:1.6;fill:none;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;transition:stroke-dashoffset .9s ease 2.5s,opacity .3s 2.4s}
.diag.built .nm-go{stroke-dashoffset:0;opacity:1;filter:drop-shadow(0 0 3px rgba(213,156,170,.6))}
.diag .nm-dot{fill:var(--wine);opacity:0;transition:opacity .5s 3.3s}
.diag.built .nm-dot{opacity:1;filter:drop-shadow(0 0 5px rgba(213,156,170,.75))}
/* Re:Achieve: 回る輪と、貯まる棚 */
.diag .orbit2{opacity:0;transform-box:view-box;transform-origin:230px 180px;transition:opacity .6s 1.6s}
.diag.built .orbit2{opacity:1;animation:orbit 12s linear infinite}
.diag .deal{transition:opacity .6s}
.diag.built .deal{opacity:0}
.diag .shelf{opacity:0;transition:opacity .8s .8s}
.diag.built .shelf{opacity:1}
.diag.draft .okb{opacity:0}
.diag .acard rect{fill:#fff;stroke:rgba(100,31,49,.35)}
.diag .acard{opacity:0;transform:translateY(8px);transition:opacity .7s,transform .7s}
.diag.built .acard{opacity:1;transform:none}
.diag .adep{fill:var(--wine);opacity:0}
.diag.built .adep{animation:adep 7s linear 2.5s infinite}
@keyframes adep{0%{transform:translate(0,0);opacity:0}4%{opacity:.9}26%{transform:translate(230px,-64px);opacity:.9}31%{opacity:0;transform:translate(230px,-64px)}100%{opacity:0;transform:translate(230px,-64px)}}
/* Re:Frame: 霧が言葉になり、人へ渡る */
.diag .fog{transition:opacity .9s}
.diag.built .fog{opacity:0}
.diag.fogkeep .fog{opacity:.55}
.diag .ffrag{fill:rgba(38,28,20,.62);font-size:12px;letter-spacing:.08em;transition:opacity .8s}
.diag.built .ffrag{opacity:0}
.diag.fogkeep .ffrag{opacity:1}
.diag .frame-r{fill:none;stroke:rgba(38,28,20,.35);stroke-width:1.2;transition:stroke .9s .6s,filter .9s .8s}
.diag.built .frame-r{stroke:rgba(100,31,49,.55);filter:drop-shadow(0 0 6px rgba(213,156,170,.35))}
.diag.draft .frame-r{stroke-dasharray:5 5}
.diag .fword{font-size:12px;fill:var(--wine);letter-spacing:.14em;opacity:0;transition:opacity .8s 1s}
.diag.built .fword,.diag.fogkeep .fword{opacity:1}
.diag .person{fill:rgba(38,28,20,.25);transition:fill .8s}
.diag.built .person.lit{fill:var(--wine)}
.diag.pul.built .person.lit{animation:relay 7s ease-in-out infinite}
@keyframes relay{0%,100%{filter:none}10%{filter:drop-shadow(0 0 6px rgba(213,156,170,.9))}20%{filter:none}}

/* ---- 図解ステップ・チップ・ガラス・稼働の余韻 ---- */
.step-blk{padding:56px 0 30px;border-top:1px solid var(--hair)}
.step-head{display:flex;align-items:baseline;gap:18px}
.s-no{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.12em;color:var(--wine)}
.step-head h3{font-size:19px;font-weight:600;letter-spacing:.12em}
.step-p{margin-top:12px;font-size:13px;font-weight:300;letter-spacing:.06em;line-height:2.1;color:var(--sub);max-width:38em}
.step-blk .diag{margin-top:30px}
.chips-cap{margin-top:44px;font-size:11.5px;letter-spacing:.24em;color:var(--sub)}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
.chip{border:1px solid var(--hair);padding:9px 16px;font-size:12px;font-weight:300;letter-spacing:.08em}
.glass{background:rgba(238,241,244,.05);border:1px solid rgba(238,241,244,.16);border-radius:6px;padding:6px 30px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:inset 0 0 46px rgba(213,156,170,.05);margin-top:40px}
/* trimモード(比較検証用): AFTER図を省略し、ヒーロー図解の問題ラベルを2個に */
body.trim .after-fig{display:none}
body.trim .svc-hero .plabels text:nth-of-type(n+3){display:none}
.glass .dont-list{margin-top:0}
.cta-flow{width:min(440px,72vw);margin:0 auto 36px;display:block;overflow:visible}
.cta-flow .cdot{animation:cflow 7s linear infinite}
@keyframes cflow{0%{transform:translateX(0);opacity:0}5%{opacity:.85}60%{opacity:.85;transform:translateX(600px)}64%{opacity:0;transform:translateX(600px)}100%{opacity:0;transform:translateX(600px)}}

/* ---- ステップ(進め方) ---- */
.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;margin-top:52px;position:relative}
.flow::before{content:'';position:absolute;top:4px;left:0;right:0;height:1px;background:var(--hair)}
.f-step{position:relative}
.f-dot{width:9px;height:9px;border-radius:50%;background:var(--wine);margin-bottom:18px}
.f-no{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.12em;color:var(--wine)}
.f-step h3{margin-top:8px;font-size:14.5px;font-weight:600;letter-spacing:.1em}
.f-step p{margin-top:9px;font-size:12.5px;font-weight:300;letter-spacing:.06em;line-height:2;color:var(--sub)}

/* ---- CTAバンド ---- */
.cta-band{background:var(--navy);color:#eef1f4;text-align:center;padding:100px 0}
.cta-band .eyebrow{color:var(--wine-l)}
.cta-band h2{font-size:clamp(19px,2.8vw,30px);font-weight:300;letter-spacing:.16em;line-height:1.9;text-wrap:balance}
.cta-band .lead{color:rgba(238,241,244,.7);margin:18px auto 0}
.btn-l{margin-top:44px;display:inline-block;padding:17px 48px;border:1px solid #eef1f4;color:#eef1f4;text-decoration:none;font-size:14px;letter-spacing:.3em;transition:background .35s,border-color .35s}
.btn-l:hover,.btn-l:focus-visible{background:var(--wine);border-color:var(--wine);outline:none}
.cta-band .note{margin-top:18px;font-size:11.5px;letter-spacing:.2em;opacity:.5}

/* ---- ロゴ(ブランド資産・透過でペーパー地に馴染ませる/カードなし) ---- */
.logo-card{display:block;max-width:520px;margin:38px auto 0}
.logo-card img{display:block;width:100%;height:auto}
.logo-story .logo-card{max-width:560px}
/* About:ブランドストーリー */
.logo-story{text-align:center}
.logo-story .st{text-align:center}
.logo-parts{display:flex;justify-content:center;gap:34px;flex-wrap:wrap;max-width:720px;margin:44px auto 0}
.lp{flex:1 1 0;min-width:150px;max-width:200px}
.lp-k{display:block;font-family:var(--serif);font-size:30px;color:var(--wine);margin-bottom:12px;line-height:1}
.lp p{font-size:12.5px;font-weight:300;letter-spacing:.08em;line-height:1.95;color:var(--sub)}
.logo-narr{max-width:36em;margin:46px auto 0;font-size:clamp(13.5px,1.6vw,15px);font-weight:300;letter-spacing:.1em;line-height:2.2;color:var(--sub)}
.logo-tagline{margin-top:26px;font-family:var(--serif);font-size:clamp(15px,2vw,19px);letter-spacing:.16em;color:var(--wine)}
/* Services:ブランドメッセージ */
.brand-promise{border-top:1px solid var(--hair);text-align:center}
.brand-promise .st{text-align:center}
.brand-promise .lead{margin:0 auto}
/* 会社概要:シンプル */
.logo-simple{text-align:center;border-top:1px solid var(--hair)}
.logo-simple-cap{margin-top:26px;font-size:13px;font-weight:300;letter-spacing:.08em;line-height:2;color:var(--sub)}
.logo-simple-cap a{color:var(--wine);text-decoration:none;border-bottom:1px solid rgba(100,31,49,.35);padding-bottom:1px;margin-left:6px;white-space:nowrap}
.logo-simple-cap a:hover{border-color:var(--wine)}
@media (max-width:640px){
  .logo-card,.logo-story .logo-card{max-width:90vw}
  .logo-parts{flex-direction:column;gap:20px;max-width:280px}
  .lp{max-width:none}
}

/* ---- 私たちについて ---- */
.concept-hero{padding:110px 0 80px;text-align:center}
.concept-hero h1{font-size:clamp(22px,3.6vw,40px);font-weight:300;letter-spacing:.18em;line-height:2;text-wrap:balance}
.concept-hero .lead{margin:34px auto 0;text-align:left}
.mvv{display:flex;flex-direction:column}
.mvv-row{display:grid;grid-template-columns:180px 1fr;gap:30px;padding:38px 0;border-top:1px solid var(--hair);align-items:baseline}
.mvv-row:last-child{border-bottom:1px solid var(--hair)}
.mvv-row .tag{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.42em;color:var(--wine)}
.mvv-row p{font-size:clamp(16px,2.2vw,22px);font-weight:300;letter-spacing:.14em;line-height:1.9}
.credo{display:grid;grid-template-columns:repeat(auto-fit,minmax(172px,1fr));gap:28px;margin-top:52px}
.credo-item{border-top:1px solid var(--ink);padding-top:18px}
.credo-item .c-no{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;letter-spacing:.12em;color:var(--wine)}
.credo-item h3{margin-top:10px;font-size:15px;font-weight:600;letter-spacing:.1em}
.credo-item p{margin-top:10px;font-size:12.5px;font-weight:300;letter-spacing:.06em;line-height:1.95;color:var(--sub)}
.creed{margin:46px auto 0;font-size:12.5px;letter-spacing:.2em;color:var(--sub)}
.creed span{display:block;margin-top:12px;font-size:clamp(15px,2vw,19px);color:var(--wine);letter-spacing:.16em;font-weight:400}
.way-line{margin-top:30px;font-size:clamp(16px,2.2vw,22px);font-weight:400;letter-spacing:.18em;color:var(--wine)}
.remain-row{display:grid;grid-template-columns:130px 1fr auto;gap:34px;align-items:center;padding:26px 0;border-top:1px solid var(--hair);text-decoration:none;color:inherit}
.remain-row:last-child{border-bottom:1px solid var(--hair)}
.remain-row:hover .hub-arw{transform:translateX(6px)}
.rm-name{display:block;font-weight:700;font-size:16px;letter-spacing:.02em}
.rm-what{display:block;margin-top:6px;font-size:13.5px;font-weight:300;letter-spacing:.1em;color:var(--sub)}
.emblem{width:110px;height:auto;display:block}
.emblem .em-l{stroke:var(--wine);stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
.emblem .em-d{fill:#fff;stroke:var(--wine);stroke-width:1.4}
.emblem .em-f{fill:rgba(100,31,49,.45)}
.emblem .em-c{fill:rgba(213,156,170,.18)}
/* ---- Aboutページ:一本の線(静けさの演出) ---- */
#pg-about{position:relative}
#pg-about .concept-hero{padding:96px 0 18vh}
#pg-about .sec.tight{padding:17vh 0}
#threadSvg{position:absolute;left:0;top:0;pointer-events:none;z-index:0}
#threadPath{fill:none;stroke:var(--wine);stroke-width:1.3;opacity:.75}
.thmark{opacity:0;transition:opacity 1.2s ease}
.thmark.lit{opacity:.55}
.tm-l{fill:none;stroke:var(--wine);stroke-width:1.2;stroke-linecap:round}
.tm-f{fill:rgba(100,31,49,.4)}
.emblem .em-l{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.6s ease}
.emblem.drawn .em-l{stroke-dashoffset:0}
.emblem .em-d,.emblem .em-f,.emblem .em-c{opacity:0;transition:opacity 1s .9s}
.emblem.drawn .em-d,.emblem.drawn .em-f,.emblem.drawn .em-c{opacity:1}
.emblem.drawn{animation:embreathe 9s ease-in-out 2.4s infinite;transform-origin:center}
@keyframes embreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.012)}}

.recover{position:relative;overflow:hidden;background:var(--navy);color:#eef1f4;text-align:center;padding:22vh 0}
.recover::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 46%,rgba(213,156,170,.10),transparent 58%)}
.recover .wrap{position:relative;z-index:1}
.aring-bg{position:absolute;left:50%;top:46%;width:min(58vw,430px);height:auto;transform:translate(-50%,-50%);opacity:.4}
.aring-bg circle{fill:none;stroke:#d59caa;stroke-width:.8;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 2.4s ease .4s}
.recover.in .aring-bg circle{stroke-dashoffset:0}
.recover.in .aring-bg{animation:ringbreathe 9s ease-in-out 2.8s infinite}
@keyframes ringbreathe{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.4}50%{transform:translate(-50%,-50%) scale(1.014);opacity:.52}}
.r-pre{font-size:clamp(13px,1.8vw,16px);letter-spacing:.26em;color:rgba(238,241,244,.65)}
.r-word{margin-top:28px;font-size:clamp(34px,6vw,62px);font-weight:300;letter-spacing:.14em;color:#eef1f4;text-shadow:0 0 34px rgba(213,156,170,.35)}
.r-lead{margin:36px auto 0;max-width:40em;font-size:clamp(13px,1.5vw,15px);font-weight:300;line-height:2.3;letter-spacing:.1em;color:rgba(238,241,244,.66)}
.concept-line{margin-top:48px;font-size:clamp(15px,2.2vw,20px);letter-spacing:.2em;color:#d59caa}

/* ---- サービス一覧(ハブ) ---- */
.hub-row{display:grid;grid-template-columns:auto 1fr auto;gap:26px;align-items:center;padding:30px 0;border-top:1px solid var(--hair);text-decoration:none;color:inherit;transition:opacity .3s}
.hub-row:last-of-type{border-bottom:1px solid var(--hair)}
a.hub-row:hover .hub-arw{transform:translateX(6px)}
.hub-no{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;letter-spacing:.12em;color:var(--wine)}
.hub-main h3{font-size:clamp(17px,2.2vw,23px);font-weight:700;letter-spacing:.02em;display:inline}
.hub-main .role{font-size:12px;letter-spacing:.18em;color:var(--sub);margin-left:14px}
.hub-main p{margin-top:8px;font-size:13px;font-weight:300;letter-spacing:.08em;color:var(--sub)}
.hub-arw{color:var(--wine);transition:transform .3s}
.hub-soon{font-size:11px;letter-spacing:.14em;color:rgba(38,28,20,.68)}

/* ---- 会社概要 ---- */
.co-table{margin-top:48px;border-top:1px solid var(--hair)}
.co-row{display:grid;grid-template-columns:200px 1fr;gap:26px;padding:22px 0;border-bottom:1px solid var(--hair)}
.co-row dt{font-size:12px;letter-spacing:.24em;color:var(--sub);padding-top:2px}
.co-row dd{font-size:14px;font-weight:300;letter-spacing:.08em;line-height:2}
.co-note{margin-top:26px;font-size:11.5px;letter-spacing:.1em;color:rgba(38,28,20,.62)}

/* ---- お問い合わせ ---- */
.form{margin-top:52px;max-width:640px}
.f-field{margin-bottom:30px}
.f-field label{display:block;font-size:12px;letter-spacing:.22em;margin-bottom:10px}
.f-field label .req{color:var(--wine);font-size:10px;letter-spacing:.1em;margin-left:8px}
.f-field label .opt{color:rgba(38,28,20,.62);font-size:10px;letter-spacing:.1em;margin-left:8px}
.f-field input,.f-field textarea{width:100%;background:#fff;border:1px solid var(--hair);padding:14px 16px;font-size:14px;font-family:inherit;letter-spacing:.06em;color:var(--ink);transition:border-color .3s}
.f-field input:focus,.f-field textarea:focus{outline:none;border-color:var(--wine)}
.f-field textarea{min-height:170px;resize:vertical;line-height:1.9}
.f-hint{margin-top:8px;font-size:11.5px;letter-spacing:.08em;color:rgba(38,28,20,.66)}
.f-err{display:none;margin-top:8px;font-size:11.5px;letter-spacing:.08em;color:#a4452e}
.f-field.error input,.f-field.error textarea{border-color:#a4452e}
.f-field.error .f-err{display:block}
.f-submit{display:inline-block;background:var(--wine);color:#f6f4ef;border:none;padding:17px 52px;font-size:14px;letter-spacing:.3em;font-family:inherit;cursor:pointer;transition:background .3s}
.f-submit:hover{background:#7d2f42}
.f-submit:disabled{opacity:.55;cursor:default}
.f-submit:disabled:hover{background:var(--wine)}
.f-hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.cf-turnstile{margin-bottom:26px}
.f-fail{display:none;margin-top:18px;font-size:12.5px;font-weight:300;letter-spacing:.08em;line-height:2;color:#a4452e}
.f-fail.show{display:block}
.f-done{display:none;margin-top:34px;border:1px solid rgba(100,31,49,.45);padding:26px 28px;font-size:13px;font-weight:300;letter-spacing:.08em;line-height:2.1}
.f-done.show{display:block}

/* ---- フッター ---- */
footer{background:var(--navy);color:rgba(238,241,244,.75);padding:58px 0 42px}
.f-grid{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;align-items:flex-start}
.f-logo{font-size:13px;font-weight:600;letter-spacing:.42em;color:#eef1f4}
.f-concept{margin-top:14px;font-size:12px;font-weight:300;letter-spacing:.14em;color:rgba(238,241,244,.55)}
.f-nav{display:flex;gap:26px;flex-wrap:wrap}
.f-nav a{font-size:12px;letter-spacing:.18em;color:inherit;text-decoration:none;transition:color .3s}
.f-nav a:hover{color:var(--wine-l)}
.copyright{margin-top:44px;font-size:11px;letter-spacing:.14em;opacity:.72}

/* ---- リビール ---- */
.rv{opacity:0;transform:translateY(24px);transition:opacity .8s ease,transform .8s cubic-bezier(.22,1,.36,1)}
.rv.in{opacity:1;transform:none}

@media (max-width:720px){
  .hd-in{height:56px}
  .hd-nav{gap:16px}
  .hd-nav a{font-size:11px;letter-spacing:.08em}
  .hd-nav a[data-nav="company"]{display:none}
  .sec{padding:68px 0}
  .fit-grid{grid-template-columns:1fr;gap:20px}
  .next-grid{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr;gap:28px}
  .flow::before{top:0;bottom:0;left:4px;right:auto;width:1px;height:auto}
  .f-step{padding-left:26px}
  .f-dot{position:absolute;left:0;top:3px}
  .mvv-row{grid-template-columns:1fr;gap:12px;padding:30px 0}
  .co-row{grid-template-columns:1fr;gap:6px}
  .hub-row{grid-template-columns:auto 1fr;row-gap:4px}
  .hub-arw,.hub-soon{grid-column:2;justify-self:start}
  .step-head h3{font-size:16px}
  .diag svg{min-width:620px}
  .glass{padding:2px 20px}
  .remain-row{grid-template-columns:78px 1fr auto;gap:16px}
  .emblem{width:74px}
}
@media (prefers-reduced-motion:reduce){
  .rv{transition:none;opacity:1;transform:none}
  .diag .node,.diag .c-line,.diag .c-messy,.diag .cap,.diag .pd,.diag .gnode,.diag .node rect{transition:none}
  .diag .orbit,.diag .sdot,.diag .swapdot,.diag .fdot,.diag .vcone,.diag .orbit2,.diag .adep,.diag .person,.cta-flow .cdot,.emblem.drawn,.recover.in .aring-bg{animation:none}
  .thmark,.aring-bg circle,.emblem .em-l,.emblem .em-d,.emblem .em-f,.emblem .em-c{transition:none}
  .diag.built .swapdot{opacity:1}
  .diag.built .orbit,.diag.built .orbit2{opacity:1}
  .diag .vp,.diag .bar,.diag .mech,.diag .nm,.diag .nm-go,.diag .nm-dot,.diag .acard,.diag .fog,.diag .ffrag,.diag .fword,.diag .person,.diag .frame-r{transition:none}
}

/* ---- プライバシーポリシー(完全静的・動きなし) ---- */
.policy{max-width:760px}
.policy-quote{margin:44px 0 56px;padding-left:22px;border-left:2px solid var(--wine)}
.policy-quote p:first-child{font-size:clamp(15px,1.9vw,19px);font-weight:400;letter-spacing:.12em;line-height:2.1}
.policy-quote p+p{margin-top:12px;font-size:13px;font-weight:300;letter-spacing:.08em;line-height:2.1;color:var(--sub)}
.policy h2{margin:52px 0 14px;padding-top:26px;border-top:1px solid var(--hair);font-size:15.5px;font-weight:600;letter-spacing:.12em}
.policy p,.policy li{font-size:13.5px;font-weight:300;letter-spacing:.06em;line-height:2.2;color:rgba(38,28,20,.82)}
.policy>p:first-of-type{margin-top:8px}
.policy ul{margin-top:10px;padding-left:1.3em}
.policy li{margin:4px 0}
.policy .dates{margin-top:52px;font-size:12.5px;color:var(--sub)}
.f-consent{margin:-4px 0 28px;font-size:12px;font-weight:300;letter-spacing:.08em;line-height:2;color:var(--sub)}
.f-consent a{color:var(--wine)}

/* サービス一覧: 役割一行+About導線 */
.hub-line{margin-top:7px;font-size:12.5px;font-weight:300;letter-spacing:.08em;line-height:1.9;color:var(--sub)}
.hub-bridge{margin-top:64px;padding-top:36px;border-top:1px solid var(--hair)}
.hb-q{font-size:clamp(16px,2.2vw,21px);font-weight:300;letter-spacing:.16em}
.hb-a{display:inline-block;margin-top:16px;font-size:13px;font-weight:300;letter-spacing:.12em;color:var(--wine);text-decoration:none;border-bottom:1px solid rgba(100,31,49,.35);padding-bottom:2px;transition:border-color .3s}
.hb-a:hover{border-color:var(--wine)}

/* ---- ロゴの世界観(タイポグラフィック暫定) ---- */
.hd-logo{font-family:var(--serif);font-size:19px;font-weight:600;letter-spacing:.1em;color:var(--wine)}
.f-logo{font-family:var(--serif);font-size:17px;font-weight:600;letter-spacing:.12em}
/* 信念の声(明朝) */
.creed span,.r-pre,.r-word,.concept-line,.hb-q,.f-concept,.policy-quote p:first-child{font-family:var(--serif)}
/* 葉マーカー(「残るもの」専用) */
.leafm{width:13px;height:13px;display:inline-block;vertical-align:-1px;margin-left:8px}
.leafm path{fill:rgba(100,31,49,.4)}
/* 刻印(About結び・紙のエンボス) */
.emboss-wrap{text-align:center;padding:40px 0 96px}
.emboss{display:inline-block;font-family:var(--serif);font-size:clamp(88px,12vw,132px);line-height:1;font-weight:600;color:#efe9dd;text-shadow:0 1px 1px rgba(255,255,255,.9),0 -1px 1px rgba(38,28,20,.28);user-select:none}

/* アクセシビリティ: フォーカス可視 */
a:focus-visible,button:focus-visible{outline:2px solid var(--wine);outline-offset:3px;border-radius:2px}

/* ---- 代表メッセージ(文章が主役・写真は脇役) ---- */
.rep{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:72px;align-items:start;margin-top:42px;padding-right:28px}
.rep-title{font-family:var(--serif);font-size:clamp(20px,2.8vw,29px);font-weight:600;letter-spacing:.14em;line-height:2;text-wrap:balance}
.rep-txt p{margin-top:1.7em;font-size:13.5px;font-weight:300;letter-spacing:.09em;line-height:2.35;color:rgba(38,28,20,.86);max-width:36em}
.rep-close{font-family:var(--serif);letter-spacing:.14em;line-height:2.3;margin-top:2.4em !important}
.rep-close.stanza{margin-top:3.4em !important}
.rep-txt p.rep-sign{margin-top:4.6em;font-size:12px;font-weight:300;letter-spacing:.24em;color:var(--sub)}
.rep-ph{margin:52px 0 0}
.rep-ph img{width:100%;height:auto;display:block;border-radius:3px}
@media (max-width:720px){
  .rep{grid-template-columns:1fr;gap:40px;padding-right:0}
  .rep-ph{max-width:270px}
}
