/* 静かな精度：組版・細部のモーション。基盤は style.css / design-refresh.css。 */
:root{ --ease-o:cubic-bezier(.2,.7,.2,1); }
html{ scrollbar-color:var(--c-sky) transparent; }
::selection{ background:var(--c-teal-soft); color:var(--c-navy-ink); }
body{ line-break:strict; word-break:normal; }

/* 組版 */
h1,h2,h3,h4,.hero-title,.h2,.rep-band-name,.case-title{ font-feature-settings:"palt" 1; letter-spacing:.02em; }
.hero-title,.h2{ letter-spacing:.03em; }
h1,h2,h3{ text-wrap:balance; }
h1,h2,h3,.hero-lead,.lead,.service-situation,.cta-band-lead,.hero-note,.rep-band-text{ word-break:auto-phrase; overflow-wrap:break-word; }
.hero-lead,.lead,.service-situation,.cta-band-lead,.hero-note,.rep-band-text{ text-wrap:pretty; }
.price,.stat-num,.step-num,.flow-step-num,.card-num,.service-index,.table td,.price-table td{ font-variant-numeric:tabular-nums lining-nums; }
.container > p:not([class]){ max-width:40em; }

/* eyebrow：番号＋ヘアライン＋英字 */
main{ counter-reset:sec; }
.eyebrow::before{ content:""; display:inline-block; width:24px; height:1px; background:currentColor; vertical-align:middle; margin-right:10px; }
.section-head .eyebrow{ counter-increment:sec; }
.section-head .eyebrow::before{
  content:counter(sec,decimal-leading-zero); width:auto; height:auto; margin:0; padding-right:44px; vertical-align:baseline;
  background:linear-gradient(currentColor,currentColor) right 10px center/24px 1px no-repeat; font-variant-numeric:tabular-nums;
}

/* h2の弧：水色バー＋金の点 */
.h2::after{
  width:56px; height:4px; border-radius:0;
  background:radial-gradient(circle 2px at 2px 2px,var(--c-gold) 96%,transparent) 0 0/4px 4px no-repeat,
    linear-gradient(var(--bar,var(--c-teal)),var(--bar,var(--c-teal))) 8px 1px/48px 2px no-repeat;
}
.h2--light{ --bar:var(--c-sky); }

/* ヘッダー */
.site-header{ transition:box-shadow .25s var(--ease-o),transform .35s var(--ease-o); view-transition-name:site-header; }
.site-header.is-hidden{ transform:translateY(-100%); }
.site-header:focus-within{ transform:none; }
@supports (animation-timeline:scroll()){
  .site-header::before,.site-header::after{ content:""; position:absolute; left:0; right:0; pointer-events:none; animation:sp linear both; animation-timeline:scroll(root); }
  .site-header::before{ bottom:-2px; height:2px; background:var(--c-teal); }
  .site-header::after{ bottom:-4px; height:6px; background:radial-gradient(circle 3px at calc(100% - 3px) 50%,var(--c-gold) 96%,transparent); }
}
@keyframes sp{ from{ transform:translateX(-100%); } to{ transform:none; } }
@media (min-width:1000px){
  .nav-link{ position:relative; }
  .nav-link:hover,.nav-link:focus-visible{ background:none; }
  .nav-link::after{ content:""; position:absolute; left:9px; right:9px; bottom:4px; height:1.5px; background:var(--c-teal); transform:scaleX(0); transform-origin:left; transition:transform .35s var(--ease-o); }
  .nav-link:hover::after,.nav-link:focus-visible::after,.nav-link[aria-current]::after,.has-dropdown:focus-within > .nav-link::after{ transform:none; }
}

/* ボタン・リンク */
.btn{ position:relative; overflow:hidden; isolation:isolate; }
.btn::before{ content:""; position:absolute; inset:0; z-index:-1; background:var(--fill,transparent); transform:scaleX(0); transform-origin:left; transition:transform .45s var(--ease-o); }
.btn:hover::before{ transform:none; }
.btn:hover{ transform:none; }
.btn:active{ transform:scale(.98); }
.btn svg{ transition:transform .3s var(--ease-o); }
.btn:hover svg{ transform:translateX(4px); }
.btn--primary{ --fill:var(--c-navy-ink); }
.btn--primary:hover{ background:var(--c-navy); }
.btn--ghost{ --fill:var(--c-bg-soft); }
.btn--ghost:hover{ background:#fff; }
.btn--outline{ --fill:var(--c-teal-soft); }
.btn--outline:hover{ background:transparent; }
.btn--ghost-dark{ --fill:rgba(255,255,255,.12); }
.btn--ghost-dark:hover{ background:transparent; }
.cta-band .btn--primary{ --fill:var(--c-teal-soft); }
.cta-band .btn--primary:hover{ background:#fff; }
.card-link{
  text-decoration:none; background:linear-gradient(var(--c-teal-deep),var(--c-teal-deep)) 0 calc(100% - 9px)/100% 1px no-repeat;
  transition:background-size .3s var(--ease-o);
}
.card-link:hover,.card-link:focus-visible{ background-size:100% 2px; }
.footer-col li a,.footer-bottom a{ background:linear-gradient(currentColor,currentColor) 0 calc(50% + 12px)/0 1px no-repeat; transition:background-size .35s var(--ease-o),color .25s; }
.footer-col a:hover,.footer-bottom a:hover{ text-decoration:none; background-size:100% 1px; }

/* スクロールリビール */
html.js-motion [data-reveal]{ opacity:0; transform:translateY(16px); }
html.js-motion [data-reveal].is-in{ opacity:1; transform:none; transition:opacity .7s var(--ease-o) var(--d,0s),transform .9s var(--ease-o) var(--d,0s); }

/* 相談の流れ：弧を思わせる細い実線 */
.step .step-num{ background:#fff; border:1.5px solid var(--c-navy); color:var(--c-navy); box-shadow:none; }
@media (min-width:860px){
  .step:not(:last-child)::after{ top:22px; height:1px; background:var(--c-line); transform-origin:left; transition:transform 1.2s var(--ease-o) .3s; }
  html.js-motion .step:not(.is-in)::after{ transform:scaleX(0); }
}

/* お客様の声・FAQ */
.voice-mark{ font-size:64px; color:color-mix(in srgb,var(--c-sky) 45%,transparent); }
.voice-name::before{ content:""; display:inline-block; width:16px; height:1px; background:currentColor; vertical-align:middle; margin-right:8px; }
.faq summary::after{ transform-origin:center; }
.faq details[open] summary::after{ content:"+"; transform:rotate(45deg); }
@supports (interpolate-size:allow-keywords) and selector(::details-content){
  .faq details{ interpolate-size:allow-keywords; }
  .faq details::details-content{ height:0; overflow:hidden; transition:height .35s var(--ease-o),content-visibility .35s allow-discrete; }
  .faq details[open]::details-content{ height:auto; }
}

/* CTAバンド */
.cta-band{ border-top-width:2px; }
.cta-band .container{ position:relative; }
.cta-arc{ position:absolute; right:-40px; bottom:-30px; width:min(520px,70vw); opacity:.15; pointer-events:none; }
.cta-arc path{ stroke-dasharray:1; }
html.js-motion .cta-band:not(.is-in) .cta-arc path{ stroke-dashoffset:1; }
.cta-band.is-in .cta-arc path{ transition:stroke-dashoffset 1.6s var(--ease-o); }

/* ページ遷移 */
@view-transition{ navigation:auto; }
::view-transition-old(root),::view-transition-new(root){ animation-duration:.25s; }

@media print{ [data-reveal],[data-reveal] *{ opacity:1 !important; transform:none !important; } .site-header{ position:static !important; transform:none !important; } .site-header::before,.site-header::after{ display:none !important; } }
@media (prefers-reduced-motion:reduce){
  @view-transition{ navigation:none; }
  .site-header::before,.site-header::after{ display:none; }
  .site-header.is-hidden{ transform:none; }
  [data-reveal]{ opacity:1 !important; transform:none !important; }
  .cta-arc path{ stroke-dashoffset:0 !important; }
  .step::after{ transform:none !important; }
}

/* ===== 下層ページ（トップ以外。body.is-home を除外） ===== */
/* A 左軸の統一 */
body:not(.is-home) .section-head--center{ margin-inline:0; text-align:left; max-width:760px; }
body:not(.is-home) .section-head--center .h2::after{ left:0; transform:none; }
body:not(.is-home) .container--narrow{ max-width:var(--w-container); }
body:not(.is-home) .container--narrow > *{ max-width:var(--w-narrow); }
body:not(.is-home) .container--narrow > .table-wrap,body:not(.is-home) .container--narrow > .price-table-wrap,body:not(.is-home) .container--narrow > .cards,body:not(.is-home) .container--narrow > .steps,body:not(.is-home) .container--narrow > .calc,body:not(.is-home) .container--narrow > .blog-cards{ max-width:none; }
body:not(.is-home) .center:not(.cta-band),body:not(.is-home) .hero-actions.center{ text-align:left; justify-content:flex-start; }
body:not(.is-home) .lead[style*="margin-inline:auto"]{ margin-inline:0 !important; }
body:not(.is-home) .eyebrow[style*="justify-content:center"]{ justify-content:flex-start !important; }
body:not(.is-home) .card[style*="text-align:center"],body:not(.is-home) .mt-block[style*="text-align:center"],body:not(.is-home) .price-plan[style*="text-align:center"]{ text-align:left !important; }
body:not(.is-home) .price-plan[style*="margin-inline:auto"]{ margin-inline:0 !important; }
body:not(.is-home) .cards--3{ justify-content:flex-start; }
body:not(.is-home) .faq,body:not(.is-home) .mt-block[style*="margin-inline:auto"]{ margin-inline:0 !important; }
body:not(.is-home) .office-photo{ max-width:420px; }
body:not(.is-home) .faq-nav{ justify-content:flex-start; margin-inline:0; }
body:not(.is-home) .step{ text-align:left; }
body:not(.is-home) .step .step-num{ margin-inline:0; }
@media (min-width:860px){
body:not(.is-home) .step:not(:last-child)::after{ left:56px; width:calc(100% - 48px); }
}
@media (max-width:699px){
body:not(.is-home) .step{ padding-left:64px; min-height:60px; }
body:not(.is-home) .step .step-num{ position:absolute; left:0; top:0; margin-top:0; }
body:not(.is-home) .step h3{ margin-top:0; }
}
/* B 要点ボックス */
body:not(.is-home) .summary-box{ background:none; border:0; border-block:1px solid var(--c-line); border-radius:0; padding:24px 0; max-width:var(--w-narrow); }
body:not(.is-home) .summary-box > p{ font-size:var(--fs-eyebrow); letter-spacing:var(--ls-eyebrow); text-transform:none; color:var(--c-teal-deep); font-weight:700; margin-bottom:16px; }
body:not(.is-home) .summary-box > p::before{ content:""; display:inline-block; width:24px; height:1px; background:currentColor; vertical-align:middle; margin-right:10px; }
body:not(.is-home) .summary-box ul{ gap:10px; }
body:not(.is-home) .summary-box li{ padding-left:20px; }
body:not(.is-home) .summary-box li::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--c-sky); top:.75em; }
body:not(.is-home) .section:has(> .container > .summary-box:only-child){ padding-block:clamp(32px,4vw,48px) 0; }
/* C ページ冒頭 */
body:not(.is-home) .page-hero{ --ph:clamp(64px,7vw,84px); position:relative; overflow:hidden; background:#fff; border-bottom:1px solid var(--c-line); padding-block:40px var(--ph); }
body:not(.is-home) .page-hero::before{ content:""; position:absolute; inset:0; pointer-events:none; background:repeating-linear-gradient(to bottom,transparent 0 47px,rgba(31,95,139,.05) 47px 48px); -webkit-mask-image:radial-gradient(ellipse 50% 90% at 22% 45%,#000 30%,transparent 100%); mask-image:radial-gradient(ellipse 50% 90% at 22% 45%,#000 30%,transparent 100%); }
body:not(.is-home) .page-hero .container{ position:relative; }
body:not(.is-home) .page-hero .h2{ font-size:clamp(30px,4vw,48px); line-height:1.4; font-feature-settings:"palt" 1; }
body:not(.is-home) .page-hero .lead{ max-width:40em; color:var(--c-muted); }
body:not(.is-home) .page-hero::after{ content:""; position:absolute; bottom:14px; right:max(var(--gutter),calc((100% - var(--w-container)) / 2 + var(--gutter))); width:min(360px,40%); height:48px; pointer-events:none; opacity:.5; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 360 48' preserveAspectRatio='none'%3E%3Cpath d='M0 40C90 46 210 34 358 8' stroke='%2339B8C8' stroke-width='2' vector-effect='non-scaling-stroke' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat; animation:pgh-draw 1.4s cubic-bezier(.2,.7,.2,1) .4s both; }
body:not(.is-home) .page-hero .container::after{ content:""; position:absolute; right:calc(var(--gutter) - 4px); bottom:calc(50px - var(--ph)); width:8px; height:8px; border-radius:50%; background:var(--c-gold); pointer-events:none; animation:pgh-pop .4s ease-out 1.7s both; }
@keyframes pgh-draw { from{ clip-path:inset(0 100% 0 0); } to{ clip-path:inset(0); } }
@keyframes pgh-pop { from{ transform:scale(0); } to{ transform:scale(1); } }
@media (max-width:699px){
body:not(.is-home) .page-hero::after,body:not(.is-home) .page-hero .container::after{ display:none; }
body:not(.is-home) .page-hero{ --ph:48px; }
}
body:not(.is-home) .breadcrumb li:not(:last-child)::after{ content:"/"; color:#a9bcc6; margin-left:6px; font-size:.9em; }
body:not(.is-home) .breadcrumb [aria-current="page"]{ color:var(--c-ink); font-weight:500; }
body.is-post .page-hero .container > *{ max-width:544px; margin-inline:auto; }
body.is-post .page-hero .container > .eyebrow{ display:block; }
body.is-post .page-hero .h2{ font-size:clamp(24px,3.4vw,32px); }
/* D 表 */
body:not(.is-home) .table thead th{ background:none; border-bottom:1.5px solid var(--c-navy-ink); color:var(--c-muted); font-size:12px; letter-spacing:.08em; font-weight:700; }
body:not(.is-home) .table tbody tr:hover{ background:#f7fbfd; }
body:not(.is-home) .table td,body:not(.is-home) .table th{ font-variant-numeric:tabular-nums; }
body:not(.is-home) .table tbody th,body:not(.is-home) .table tbody td:first-child{ font-weight:700; color:var(--c-navy-ink); }
/* E 注意書き */
body:not(.is-home) .notice-box{ background:none; border:0; border-left:2px solid var(--c-gold); border-radius:0; padding:14px 18px; color:var(--c-ink); }
/* F カード類 */
body:not(.is-home) .card{ background:#fff; border:1px solid var(--c-line); border-radius:var(--radius); transition:border-color .3s; }
body:not(.is-home) .card:hover{ border-color:var(--c-sky); }
body:not(.is-home) .card:has(> p:only-child)::before{ content:""; width:6px; height:6px; border-radius:50%; background:var(--c-sky); }
body:not(.is-home) .svc-card{ position:relative; overflow:hidden; transition:border-color .3s,background .3s; }
body:not(.is-home) .svc-card:hover{ transform:none; box-shadow:none; border-color:var(--c-sky); }
body:not(.is-home) a.svc-card::before{ content:""; position:absolute; left:0; right:0; top:0; height:2px; background:var(--c-teal); transform:scaleX(0); transform-origin:left; transition:transform .5s var(--ease-o); }
body:not(.is-home) a.svc-card:hover::before,body:not(.is-home) a.svc-card:focus-visible::before{ transform:none; }
body:not(.is-home) .svc-card .card-link::after{ content:"→"; margin-left:6px; display:inline-block; transition:transform .3s var(--ease-o); }
body:not(.is-home) .svc-card:hover .card-link::after{ transform:translateX(4px); }
/* G 個別ページ */
body:not(.is-home) .contact-form input[type="text"],body:not(.is-home) .contact-form input[type="email"],body:not(.is-home) .contact-form select{ height:48px; padding-block:0; }
body:not(.is-home) .contact-form input[type="text"],body:not(.is-home) .contact-form input[type="email"],body:not(.is-home) .contact-form select,body:not(.is-home) .contact-form textarea{ border-width:1px; border-radius:6px; }
body:not(.is-home) .contact-form input:focus-visible,body:not(.is-home) .contact-form select:focus-visible,body:not(.is-home) .contact-form textarea:focus-visible{ border-color:var(--c-navy); box-shadow:0 0 0 3px var(--c-teal-soft); }
body:not(.is-home) .form-required,body:not(.is-home) .form-optional{ font-size:10.5px; font-weight:500; padding:1px 7px; background:none; border:1px solid var(--c-sky); color:var(--c-teal-deep); }
body:not(.is-home) .form-optional{ border-color:var(--c-line); color:var(--c-muted); }
body:not(.is-home) .contact-choice{ background:#fff; }
body:not(.is-home) .calc-result{ background:#fff; border:1px solid var(--c-line); }
body:not(.is-home) .calc-total{ text-align:left; border-top:1px solid var(--c-navy-ink); }
body:not(.is-home) .calc-total-num{ font-family:var(--ff-serif); font-variant-numeric:tabular-nums; }
body:not(.is-home) .blog-card{ transition:border-color .3s; }
body:not(.is-home) .blog-card:hover{ transform:none; box-shadow:none; border-color:var(--c-sky); }
body:not(.is-home) .blog-card-thumb img{ transition:transform .6s var(--ease-o); }
@media (hover:hover){
body:not(.is-home) .blog-card:hover .blog-card-thumb img{ transform:scale(1.03); }
}
body:not(.is-home) .blog-card-cat{ letter-spacing:.08em; }
body:not(.is-home) .blog-card-meta,body:not(.is-home) .post-meta{ letter-spacing:.04em; font-variant-numeric:tabular-nums; }
@media (min-width:860px){
body:not(.is-home) .profile-grid{ grid-template-columns:360px 1fr; }
}
body:not(.is-home) .profile-photo{ border-radius:64px 8px 8px 8px; box-shadow:none; }
@media (prefers-reduced-motion:reduce){
body:not(.is-home) .page-hero::after,body:not(.is-home) .page-hero .container::after{ animation:none; }
body:not(.is-home) .svc-card::before,body:not(.is-home) .svc-card .card-link::after,body:not(.is-home) .blog-card-thumb img{ transition:none; }
}

/* freee認定アドバイザー バッジ（ロゴは加工しない：影・枠・角丸・フィルタ不可） */
.freee-badge { display:block; max-width:100%; height:auto; }
.freee-badge--about { width:128px; height:128px; margin:16px 13px 0 0; }
.freee-cert { display:flex; align-items:center; gap:32px; }
.freee-cert-text { flex:1 1 auto; min-width:0; }
.freee-badge--service { flex:0 0 auto; width:120px; height:120px; margin:12px; }
@media (max-width:640px){
  .freee-cert { flex-direction:column; align-items:flex-start; gap:8px; }
  .freee-badge--service { width:96px; height:96px; margin:10px; }
}
/* 下層：白セクション同士の区切りヘアライン、「もっと見る」リンクの余白（トップと同じ指定） */
body:not(.is-home) .hl-top{ position:relative; }
body:not(.is-home) .hl-top::before{ content:""; position:absolute; top:0; left:max(var(--gutter),calc((100% - var(--w-container))/2 + var(--gutter))); right:max(var(--gutter),calc((100% - var(--w-container))/2 + var(--gutter))); height:1px; background:var(--c-line); }
body:not(.is-home) .home-detail-link{ margin-top:24px; }
/* 金額列（td.num 右寄せ）がある表は、見出しも同じ右寄せにして列の縦位置をそろえる */
.table:has(td.num) thead th:not(:first-child){ text-align:right; }
