/* =============================================================================
   株式会社タスプラ コーポレートサイト 共通CSS
   方向: 案1「木漏れ日ナチュラル」— 生成り×砂色の地 / オリーブ1系統 / 墨茶の文字
   基準系: 1rem=16px・余白は 8px グリッド(--s-*)から換算 / モーションは1本統一(M1)
   ============================================================================= */

:root{
  /* --- 色(差し色はオリーブ1系統のみ) --- */
  --c-bg:#F5F0E6;          /* 生成り */
  --c-sand:#EBE3D3;        /* 砂色 */
  --c-sand-deep:#DFD4BF;
  --c-paper:#FBF8F1;       /* カード面 */
  --c-olive:#55634A;       /* 差し色 */
  --c-olive-deep:#465239;
  --c-olive-tint:rgba(85,99,74,.10);
  --c-ink:#2E2A24;         /* 墨茶(本文・見出し) */
  --c-ink-2:#4A443A;
  --c-muted:#6B6152;        /* 砂色地 4.76:1 / 生成り地 5.35:1 */
  --c-field-line:#8C806B;   /* 入力欄の枠 生成り 3.41:1 / カード面 3.66:1 */
  --c-line:#D5C9B3;        /* 罫線 */
  --c-line-soft:rgba(46,42,36,.10);
  --c-on-olive:#F5F0E6;
  --ink-rgb:46,42,36;

  /* --- 書体 --- */
  --f-mincho:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
  --f-sans:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",system-ui,sans-serif;
  --f-en:"Cormorant Garamond","Shippori Mincho",serif;

  /* --- 余白(8pxグリッド) --- */
  --s-1:.25rem; --s-2:.5rem; --s-3:.75rem; --s-4:1rem; --s-5:1.5rem; --s-6:2rem;
  --s-7:3rem; --s-8:4rem; --s-9:5rem; --s-10:6rem; --s-11:8rem;
  --section-y:clamp(5rem,4rem + 5vw,8.5rem);
  --container:1160px;
  --gutter:clamp(1.25rem,5vw,3.5rem);
  --header-h:84px;
  --curve-h:clamp(36px,6vw,96px);

  /* --- 角丸 --- */
  --r-sm:6px; --r-md:14px; --r-lg:22px;
  --r-arch:999px 999px var(--r-lg) var(--r-lg);

  /* --- 影(淡く・墨茶ティント) --- */
  --shadow-soft:0 1px 1px rgba(var(--ink-rgb),.03),0 18px 40px -28px rgba(var(--ink-rgb),.22);

  /* --- モーション(1本統一) --- */
  --ease:cubic-bezier(.19,1,.22,1);
  --dur:.4s;
  --dur-reveal:1.1s;

  /* --- 装飾アセット(色は background-color で着色するマスク) --- */
  --noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .18 0 0 0 0 .16 0 0 0 0 .14 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  --plus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.25' stroke-linecap='round'%3E%3Cpath d='M12.4 2.4c-.5 6.3-.2 12.7.1 19.2'/%3E%3Cpath d='M2.6 11.7c6.4.6 12.6.4 18.8-.3'/%3E%3C/svg%3E");
  --wave-a:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1440V50C1290 96 1110 112 900 86C690 60 520 30 330 44C200 54 90 78 0 96Z'/%3E%3C/svg%3E");
  --wave-b:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath d='M0 0H1440V90C1300 62 1150 40 960 52C760 64 600 104 400 98C240 93 110 66 0 46Z'/%3E%3C/svg%3E");
  --wave-up:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 120' preserveAspectRatio='none'%3E%3Cpath d='M0 120V72C120 42 300 22 480 34C700 48 880 96 1100 90C1250 86 1360 62 1440 44V120Z'/%3E%3C/svg%3E");
  --leaves:url("/assets/img/leaves.svg");
  --pebble:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cpath d='M20 9Q50 3 78 3Q91 2 93 15Q97 42 97 70Q97 85 84 88Q55 95 27 96Q12 97 9 84Q4 55 4 26Q4 11 20 9Z'/%3E%3C/svg%3E");
}

/* =============================================================================
   ベース
   ============================================================================= */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%; scroll-padding-top:calc(var(--header-h) + 16px);}
body{
  margin:0; background:var(--c-bg); color:var(--c-ink);
  font-family:var(--f-sans); font-size:.9375rem; line-height:2; letter-spacing:.05em;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
/* 紙の質感(ごく薄いグレイン) */
body::after{
  content:""; position:fixed; inset:0; z-index:200; pointer-events:none;
  background-image:var(--noise); opacity:.05; mix-blend-mode:multiply;
}
img,svg{display:block; max-width:100%; height:auto;}
a{color:inherit; text-decoration:none;}
h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0;}
ul,ol{padding:0; list-style:none;}
button{font:inherit; color:inherit;}
::selection{background:var(--c-olive); color:var(--c-on-olive);}
:focus-visible{outline:2px solid var(--c-olive); outline-offset:3px; border-radius:2px;}
.sr-only{position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;}
.skip-link{position:absolute; left:var(--s-4); top:-60px; z-index:300; padding:var(--s-2) var(--s-4); background:var(--c-ink); color:var(--c-bg); border-radius:var(--r-sm); font-size:.8125rem;}
.skip-link:focus{top:var(--s-4);}

.container{width:100%; max-width:calc(var(--container) + var(--gutter)*2); margin-inline:auto; padding-inline:var(--gutter);}
.container--narrow{max-width:calc(880px + var(--gutter)*2);}

/* 和文の折り返しを文節単位に(見出しの単語途中改行を防ぐ) */
h1,h2,h3,.phrase{word-break:auto-phrase; line-break:strict;}
/* 本文・表も文節単位で折り返す(長いURL・メールだけは必要時に任意位置で折る) */
p,li,dd,dt,th,td,address,figcaption{overflow-wrap:anywhere; line-break:strict; text-wrap:pretty;}
/* 短い本文・見出しセルだけ文節で折る(長文は通常の和文組みのまま=右端がガタつかない) */
.hero-lead,.sec-lead,.card-desc,.page-intro,.step-desc,.prose p,.form-note,.plan-note,.plan-meta dd,.outline-table dt,.outline-table dd,.legal-table th,.footer-col li,.footer-col address,.notfound p{word-break:auto-phrase;}
.legal-table th,.footer-col h2{word-break:keep-all; overflow-wrap:anywhere;}
.br-pc{display:inline;}
@media (max-width:767px){ .br-pc{display:none;} }
.nowrap{white-space:nowrap;}

/* =============================================================================
   セクション / やわらかい曲線の境界
   ============================================================================= */
.section{position:relative; padding-block:var(--section-y); isolation:isolate;}
.section--sand{background:var(--c-sand);}
.section--cream{background:var(--c-bg);}
/* 上辺の曲線: 直前のセクション色(--prev)で波形を描く */
.curve-top{padding-top:calc(var(--section-y) + var(--curve-h)*.6);}
.curve-top::before{
  content:""; position:absolute; left:0; right:0; top:-1px; height:var(--curve-h); z-index:0;
  background:var(--prev,var(--c-bg));
  -webkit-mask:var(--wave-a) top/100% 100% no-repeat; mask:var(--wave-a) top/100% 100% no-repeat;
  pointer-events:none;
}
.curve-top.curve-b::before{-webkit-mask-image:var(--wave-b); mask-image:var(--wave-b);}
.curve-bottom{padding-bottom:calc(var(--section-y) + var(--curve-h)*.6);}
.curve-bottom::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:var(--curve-h); z-index:0;
  background:var(--next,var(--c-bg));
  -webkit-mask:var(--wave-up) bottom/100% 100% no-repeat; mask:var(--wave-up) bottom/100% 100% no-repeat;
  pointer-events:none;
}
.section > .container{position:relative; z-index:1;}

/* 木漏れ日の影(枝葉のシルエットをぼかして重ねる) */
.leaf-shadow{
  position:absolute; z-index:0; pointer-events:none;
  width:min(720px,70vw); aspect-ratio:800/640;
  background:var(--c-ink); opacity:.065; filter:blur(7px);
  -webkit-mask:var(--leaves) center/contain no-repeat; mask:var(--leaves) center/contain no-repeat;
}

/* =============================================================================
   見出し様式(英字ラベル+和文見出し+短い罫線)
   ============================================================================= */
.eyebrow{
  display:inline-flex; align-items:center; gap:var(--s-3);
  font-family:var(--f-en); font-weight:500; font-size:.8125rem; line-height:1;
  letter-spacing:.32em; text-transform:uppercase; color:var(--c-olive);
}
.eyebrow::before{
  content:""; width:12px; height:12px; flex:none; background:currentColor;
  -webkit-mask:var(--plus) center/contain no-repeat; mask:var(--plus) center/contain no-repeat;
}
.heading{
  margin-top:var(--s-4);
  font-family:var(--f-mincho); font-weight:500;
  font-size:clamp(1.75rem,1.3rem + 1.4vw,2.375rem); line-height:1.5; letter-spacing:.12em;
  display:flex; align-items:center; gap:var(--s-5);
}
.heading::after{content:""; width:56px; height:1px; background:var(--c-ink); opacity:.45; flex:none;}
.heading--plain::after{display:none;}
.sec-head{margin-bottom:clamp(2.5rem,2rem + 2vw,4rem);}
.sec-head--split{display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--s-6) var(--s-8); align-items:end;}
.sec-head--split .sec-lead{padding-bottom:.5rem;}
.sec-head--center{text-align:center;}
.sec-head--center .heading{justify-content:center;}
.sec-head--center .heading::after{display:none;}
.sec-lead{color:var(--c-ink-2); max-width:34em;}
.prose p + p{margin-top:var(--s-5);}
.prose{color:var(--c-ink-2);}

/* 手描き風の小さな＋ */
.deco-plus{
  position:absolute; width:26px; height:26px; color:var(--c-olive); background:currentColor; opacity:.75;
  -webkit-mask:var(--plus) center/contain no-repeat; mask:var(--plus) center/contain no-repeat;
  pointer-events:none;
}
.deco-plus--sm{width:16px; height:16px; opacity:.55;}

/* =============================================================================
   ボタン・リンク
   ============================================================================= */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:var(--s-3);
  min-height:56px; padding:0 var(--s-6) 0 var(--s-6);
  border-radius:999px; border:1px solid transparent;
  font-family:var(--f-sans); font-weight:500; font-size:.9375rem; letter-spacing:.14em; line-height:1;
  cursor:pointer; transition:opacity var(--dur) var(--ease), background-color var(--dur) var(--ease);
}
.btn:hover{opacity:.78;}
.btn .icon{width:18px; height:18px; flex:none;}
.btn .arrow{width:18px; height:10px; flex:none; transition:transform var(--dur) var(--ease);}
.btn:hover .arrow{transform:translateX(3px);}
.btn--primary{background:var(--c-olive); color:var(--c-on-olive); padding-inline:var(--s-6) var(--s-6);}
.btn--ghost{border-color:rgba(var(--ink-rgb),.55); color:var(--c-ink); min-height:52px;}
.btn--light{background:var(--c-bg); color:var(--c-olive-deep);}
.btn--wide{min-width:260px;}
.btn[disabled]{opacity:.55; cursor:progress;}

.link-arrow{
  display:inline-flex; align-items:center; gap:var(--s-4);
  font-weight:500; letter-spacing:.14em; font-size:.875rem;
  transition:opacity var(--dur) var(--ease);
}
.link-arrow:hover{opacity:.7;}
.link-arrow .circle{
  width:44px; height:44px; border-radius:50%; display:grid; place-items:center;
  background:var(--c-olive); color:var(--c-on-olive); flex:none;
}
.link-arrow .circle svg{width:16px; height:10px;}
.text-link{color:var(--c-olive-deep); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:.3em; transition:opacity var(--dur) var(--ease);}
.text-link:hover{opacity:.7;}

/* =============================================================================
   ヘッダー
   ============================================================================= */
.site-header{
  position:sticky; top:0; z-index:100;
  border-bottom:1px solid transparent;
  transition:border-color var(--dur) var(--ease);
}
/* 背景のぼかしは疑似要素に持たせる(header本体に backdrop-filter を付けると固定配置のスマホメニューの基準が header になるため) */
.site-header::before{
  content:""; position:absolute; inset:0; z-index:-1;
  background:rgba(245,240,230,.86);
  -webkit-backdrop-filter:saturate(1.1) blur(10px); backdrop-filter:saturate(1.1) blur(10px);
}
.site-header.is-scrolled{border-bottom-color:var(--c-line-soft);}
.header-inner{display:flex; align-items:center; justify-content:space-between; height:var(--header-h); gap:var(--s-6);}
.brand{display:block; flex:none; transition:opacity var(--dur) var(--ease);}
.brand:hover{opacity:.7;}
.brand img{height:30px; width:auto;}
.site-nav ul{display:flex; align-items:center; gap:clamp(1.5rem,3vw,2.75rem);}
.site-nav a{font-size:.875rem; font-weight:500; letter-spacing:.16em; transition:opacity var(--dur) var(--ease);}
.site-nav a:hover{opacity:.65;}
.site-nav .nav-link{position:relative; padding-block:var(--s-2);}
.site-nav .nav-link[aria-current="page"]::after{
  content:""; position:absolute; left:50%; bottom:-4px; width:5px; height:5px; margin-left:-2.5px;
  border-radius:50%; background:var(--c-olive);
}
.site-nav .nav-cta{
  display:inline-flex; align-items:center; min-height:44px; padding:0 var(--s-5);
  border-radius:999px; background:var(--c-olive); color:var(--c-on-olive);
}
.site-nav .nav-cta[aria-current="page"]{background:var(--c-olive-deep);}
.nav-toggle{display:none;}

@media (max-width:767px){
  :root{--header-h:64px;}
  .brand img{height:24px;}
  .nav-toggle{
    display:inline-flex; align-items:center; justify-content:center; gap:var(--s-2);
    width:48px; height:48px; margin-right:-10px; padding:0; border:0; background:none; cursor:pointer;
    position:relative; z-index:2;
  }
  .nav-toggle .bars{position:relative; width:24px; height:10px;}
  .nav-toggle .bars::before,.nav-toggle .bars::after{
    content:""; position:absolute; left:0; width:100%; height:1px; background:var(--c-ink);
    transition:transform var(--dur) var(--ease), top var(--dur) var(--ease);
  }
  .nav-toggle .bars::before{top:0;}
  .nav-toggle .bars::after{top:9px;}
  .nav-open .nav-toggle .bars::before{top:4.5px; transform:rotate(25deg);}
  .nav-open .nav-toggle .bars::after{top:4.5px; transform:rotate(-25deg);}
  .site-nav{
    position:fixed; inset:var(--header-h) 0 0 0; z-index:1;
    background:var(--c-bg);
    padding:var(--s-8) var(--gutter) var(--s-7);
    opacity:0; visibility:hidden; transition:opacity var(--dur) var(--ease), visibility 0s linear var(--dur);
  }
  .nav-open .site-nav{opacity:1; visibility:visible; transition:opacity var(--dur) var(--ease);}
  .site-nav ul{flex-direction:column; align-items:stretch; gap:0;}
  .site-nav li{border-bottom:1px solid var(--c-line);}
  .site-nav li:last-child{border-bottom:0; margin-top:var(--s-7);}
  .site-nav .nav-link{display:block; padding:var(--s-5) 0; font-family:var(--f-mincho); font-size:1.25rem; letter-spacing:.14em;}
  .site-nav .nav-link[aria-current="page"]::after{left:auto; right:4px; top:50%; bottom:auto; margin-top:-2.5px;}
  .site-nav .nav-cta{display:flex; justify-content:center; min-height:56px; font-size:.9375rem;}
  .nav-open{overflow:hidden;}
}

/* =============================================================================
   トップ: ファーストビュー
   ============================================================================= */
.hero{position:relative; overflow:hidden; padding-top:clamp(2.5rem,1rem + 4vw,4.5rem); padding-bottom:calc(var(--curve-h) + clamp(1.5rem,1rem + 2vw,3rem));}
.hero .leaf-shadow{top:-60px; right:-120px;}
.hero-grid{
  position:relative; z-index:1;
  display:grid; grid-template-columns:minmax(0,1.08fr) minmax(0,1fr); align-items:center;
  gap:clamp(2rem,5vw,5rem);
}
.hero-copy{position:relative; padding-bottom:var(--s-4);}
.hero-title{
  font-family:var(--f-mincho); font-weight:500;
  font-size:clamp(1.9rem,1rem + 3vw,3.625rem); line-height:1.55; letter-spacing:.08em;
  margin-left:-.06em;
}
.hero-en{
  margin-top:var(--s-4);
  font-family:var(--f-en); font-style:italic; font-weight:500;
  font-size:clamp(1.25rem,1rem + .8vw,1.75rem); letter-spacing:.06em; line-height:1.2; color:var(--c-muted);
}
.hero-lead{margin-top:var(--s-6); max-width:30em; color:var(--c-ink-2); font-size:1rem; line-height:2.1;}
.hero-actions{margin-top:var(--s-7);}
.hero-visual{position:relative; justify-self:end; width:min(100%,468px); margin-right:clamp(0px,2vw,24px);}
.hero-visual .arch{aspect-ratio:3/4;}
.hero-visual .arch-line{inset:-18px -22px 22px 22px;}
.hero-visual .deco-plus--sm{left:-8px; bottom:12%; top:auto;}
.hero-est{
  position:absolute; right:-34px; top:50%; transform:translateY(-50%);
  writing-mode:vertical-rl; font-family:var(--f-en); font-size:.75rem; letter-spacing:.42em; color:var(--c-muted);
  text-transform:uppercase; white-space:nowrap;
}
.hero-stroke{position:absolute; left:-46%; top:5%; width:52%; height:auto; color:var(--c-olive); opacity:.55; pointer-events:none;}

/* アーチ型の写真フレーム */
.arch{position:relative; z-index:1; border-radius:var(--r-arch); overflow:hidden; background:var(--c-sand-deep);}
.arch img{width:100%; height:100%; object-fit:cover;}
.arch-line{position:absolute; z-index:0; border:1px solid var(--c-olive); opacity:.4; border-radius:var(--r-arch); pointer-events:none;}

@media (max-width:900px){
  .hero-grid{grid-template-columns:1fr;}
  .hero-visual{justify-self:center; width:min(86%,400px); margin:var(--s-4) auto 0; order:-1;}
  .hero-stroke,.hero-est{display:none;}
  .hero-visual .deco-plus{left:-28px;}
}
@media (max-width:767px){
  .hero{padding-top:var(--s-5);}
  .hero-visual{width:min(78%,340px);}
  .hero-visual .arch-line{inset:-12px -14px 14px 14px;}
  .hero-lead{font-size:.9375rem;}
  .hero-actions .btn{width:100%;}
}

/* =============================================================================
   トップ: 事業(カードを足すだけで増やせる / 1枚のときは大判)
   ============================================================================= */
.business-list{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--s-6);}
.business-card{
  position:relative; display:flex; flex-direction:column;
  background:var(--c-paper); border-radius:var(--r-lg); overflow:hidden;
  box-shadow:var(--shadow-soft); border:1px solid rgba(var(--ink-rgb),.06);
}
.business-card .card-media{position:relative; aspect-ratio:16/10; overflow:hidden; background:var(--c-sand-deep);}
.business-card .card-media img{width:100%; height:100%; object-fit:cover; transition:opacity var(--dur) var(--ease);}
.business-card:hover .card-media img{opacity:.88;}
.business-card .card-body{position:relative; display:flex; flex-direction:column; flex:1; padding:clamp(1.75rem,1.2rem + 2vw,3.5rem);}
.card-top{display:flex; align-items:center; justify-content:space-between; gap:var(--s-4);}
.tag{
  display:inline-flex; align-items:center; min-height:28px; padding:0 var(--s-4);
  border:1px solid var(--c-olive); border-radius:999px; color:var(--c-olive-deep);
  font-size:.75rem; font-weight:500; letter-spacing:.16em; line-height:1;
}
.card-no{font-variant-numeric:lining-nums; font-family:var(--f-en); font-style:italic; font-size:1rem; letter-spacing:.1em; color:var(--c-muted);}
.card-kind{margin-top:var(--s-6); font-size:.875rem; font-weight:500; letter-spacing:.16em; color:var(--c-ink-2); line-height:1.6;}
.card-name{margin-top:var(--s-2); font-family:var(--f-mincho); font-weight:500; font-size:clamp(2rem,1.5rem + 1.4vw,2.75rem); letter-spacing:.18em; line-height:1.3;}
.card-desc{margin-top:var(--s-5); padding-top:var(--s-5); border-top:1px solid var(--c-line); color:var(--c-ink-2); max-width:32em;}
.card-link{margin-top:auto; padding-top:var(--s-6);}
.card-link a::after{content:""; position:absolute; inset:0; z-index:1;} /* カード全体をクリック可能に */

.business-card:only-child{grid-column:1 / -1; display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr);}
.business-card:only-child .card-media{aspect-ratio:auto; min-height:460px;}
.business-card:only-child .card-media img{position:absolute; inset:0;}
.business-card:only-child .card-media img{object-position:50% 38%;}
.business-card:only-child .card-body{padding:clamp(2rem,1.2rem + 3vw,4.5rem);}
.business-card:only-child .deco-plus{right:clamp(2rem,4vw,4rem); bottom:clamp(2rem,4vw,3.5rem);}

@media (max-width:900px){
  .business-card:only-child .card-media img{position:static;}
  .business-card:only-child{grid-template-columns:1fr;}
  .business-card:only-child .card-media{min-height:0; aspect-ratio:4/3;}
}
@media (max-width:767px){ .business-list{grid-template-columns:1fr;} }

/* =============================================================================
   トップ: 私たちの想い
   ============================================================================= */
.philosophy-grid{display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:clamp(2.5rem,6vw,6rem); align-items:center;}
.philosophy-grid .prose{max-width:30em; font-size:1rem; line-height:2.2;}
.philosophy-grid .btn{margin-top:var(--s-7);}
.blob-visual{position:relative; width:min(100%,440px); justify-self:center;}
.blob{position:relative; z-index:1; aspect-ratio:1/1.04; overflow:hidden; background:var(--c-sand-deep);
  -webkit-mask:var(--pebble) center/100% 100% no-repeat; mask:var(--pebble) center/100% 100% no-repeat;}
.blob img{transform:scale(1.02);}
.blob img{width:100%; height:100%; object-fit:cover;}
.blob-line{position:absolute; inset:-4% -5% -3% -3%; z-index:0; width:108%; height:107%; color:var(--c-olive); opacity:.45; transform:rotate(-7deg); pointer-events:none; overflow:visible;}
.blob-visual .deco-plus{right:-6px; top:4%;}
.blob-visual .deco-plus--sm{left:2%; bottom:4%; right:auto; top:auto;}
@media (max-width:900px){
  .philosophy-grid{grid-template-columns:1fr;}
  .blob-visual{width:min(82%,380px);}
}

/* =============================================================================
   代表メッセージ(写真を片側へ裁ち落とし)
   ============================================================================= */
.message{position:relative; display:grid; grid-template-columns:minmax(0,1.08fr) minmax(0,1fr); align-items:center; gap:clamp(2.5rem,6vw,6rem);}
.message-photo{position:relative; margin-left:calc(-1 * var(--bleed, 0px));}
.message-photo .frame{overflow:hidden; aspect-ratio:1200/990; border-radius:0 clamp(140px,17vw,280px) var(--r-lg) 0; background:var(--c-sand-deep);}
.message-photo img{width:100%; height:100%; object-fit:cover; object-position:40% 50%;}
.message-photo .deco-plus{right:-44px; top:18%;}
.message-body{max-width:31em;}
.message-body .prose{margin-top:var(--s-6); font-size:1rem; line-height:2.2;}
.sign{margin-top:var(--s-7); display:flex; justify-content:flex-end; align-items:baseline; gap:var(--s-2); font-family:var(--f-mincho);}
.sign-role{font-size:.875rem; letter-spacing:.18em; color:var(--c-ink-2);}
.sign-name{font-size:1.625rem; letter-spacing:.2em; font-weight:500;}
.message-wrap{--bleed:max(var(--gutter), calc((100vw - var(--container)) / 2));}
@media (max-width:900px){
  .message{grid-template-columns:1fr;}
  .message-photo{margin-right:calc(var(--gutter) * 1.5);}
  .message-body{max-width:none;}
}

/* =============================================================================
   お問い合わせ帯(濃いオリーブ地)
   ============================================================================= */
.cta-band{
  position:relative; isolation:isolate; overflow:hidden; text-align:center;
  background:var(--c-olive); color:var(--c-on-olive);
  padding-block:calc(var(--section-y) + var(--curve-h)*.6);
}
.cta-band::before{
  content:""; position:absolute; left:0; right:0; top:-1px; height:var(--curve-h); z-index:1; background:var(--prev,var(--c-bg));
  -webkit-mask:var(--wave-b) top/100% 100% no-repeat; mask:var(--wave-b) top/100% 100% no-repeat;
}
.cta-band::after{
  content:""; position:absolute; left:0; right:0; bottom:-1px; height:var(--curve-h); z-index:1; background:var(--next,var(--c-bg));
  -webkit-mask:var(--wave-up) bottom/100% 100% no-repeat; mask:var(--wave-up) bottom/100% 100% no-repeat;
}
.cta-band .leaf-shadow{left:-140px; top:-40px; opacity:.16; transform:scaleX(-1);}
.cta-band .leaf-shadow--r{left:auto; right:-200px; top:auto; bottom:-120px; transform:rotate(160deg); opacity:.12;}
.cta-band .container{position:relative; z-index:2;}
.cta-band .eyebrow{color:var(--c-on-olive); opacity:.85;}
.cta-text{
  margin:var(--s-5) auto 0; max-width:22em;
  font-family:var(--f-mincho); font-weight:500;
  font-size:clamp(1.375rem,1.05rem + 1.1vw,2rem); line-height:1.85; letter-spacing:.12em;
}
.cta-band .btn{margin-top:var(--s-7);}
.cta-band .deco-plus{color:var(--c-on-olive); opacity:.55;}
.cta-band .deco-plus.p1{right:16%; top:30%;}
.cta-band .deco-plus.p2{left:14%; bottom:30%;}
@media (max-width:767px){ .cta-band .deco-plus.p1{right:8%; top:14%;} .cta-band .deco-plus.p2{display:none;} }

/* =============================================================================
   フッター
   ============================================================================= */
.site-footer{background:var(--c-bg); padding-top:clamp(3.5rem,3rem + 2vw,5rem); font-size:.8125rem; line-height:1.9;}
.footer-grid{display:grid; grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr) minmax(0,1.3fr); gap:var(--s-7) var(--s-6);}
.footer-brand img{height:28px; width:auto;}
.footer-catch{margin-top:var(--s-5); font-family:var(--f-mincho); font-size:.9375rem; letter-spacing:.14em; color:var(--c-ink-2);}
.footer-col h2{font-family:var(--f-mincho); font-size:.875rem; font-weight:600; letter-spacing:.16em; padding-bottom:var(--s-3); margin-bottom:var(--s-4); position:relative;}
.footer-col h2::after{content:""; position:absolute; left:0; bottom:0; width:20px; height:1px; background:var(--c-olive);}
.footer-col li + li{margin-top:var(--s-2);}
.footer-col a{color:var(--c-ink-2); transition:opacity var(--dur) var(--ease);}
.footer-col a:hover{opacity:.65;}
.footer-col address{font-style:normal; color:var(--c-ink-2);}
.footer-bottom{
  margin-top:clamp(3rem,2.5rem + 2vw,4.5rem); padding-block:var(--s-5) var(--s-6);
  border-top:1px solid var(--c-line);
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--s-3) var(--s-6);
  font-size:.75rem; color:var(--c-muted); letter-spacing:.08em;
}
.footer-legal{display:flex; flex-wrap:wrap; gap:var(--s-2) var(--s-5);}
.footer-legal a{transition:opacity var(--dur) var(--ease);}
.footer-legal a:hover{opacity:.65;}
.footer-legal a[aria-current="page"]{color:var(--c-ink);}
@media (max-width:900px){ .footer-grid{grid-template-columns:repeat(2,minmax(0,1fr));} .footer-brand{grid-column:1 / -1;} }
@media (max-width:480px){ .footer-grid{gap:var(--s-6) var(--s-5);} .footer-grid > .footer-col:last-child{grid-column:1 / -1;} .footer-bottom{flex-direction:column; align-items:flex-start;} }

/* =============================================================================
   下層ページ: ページ見出し
   ============================================================================= */
.page-head{position:relative; overflow:hidden; padding-top:clamp(2rem,1rem + 3vw,4rem); padding-bottom:calc(var(--curve-h) + clamp(1.5rem,1rem + 2vw,3rem));}
.page-head--simple{padding-top:clamp(2rem,1rem + 3vw,3.5rem); padding-bottom:calc(var(--curve-h) + clamp(.5rem,.5rem + 1vw,1.5rem));}
.page-head .leaf-shadow{top:-80px; right:-160px; width:min(620px,70vw);}
.page-head-grid{position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr); gap:clamp(2rem,6vw,6rem); align-items:center;}
.breadcrumb ol{display:flex; flex-wrap:wrap; gap:var(--s-2); font-size:.75rem; letter-spacing:.1em; color:var(--c-muted);}
.breadcrumb li + li::before{content:"/"; margin-right:var(--s-2); opacity:.6;}
.breadcrumb a{transition:opacity var(--dur) var(--ease);}
.breadcrumb a:hover{opacity:.65;}
.page-head .eyebrow{margin-top:var(--s-7);}
.page-title{
  margin-top:var(--s-4);
  font-family:var(--f-mincho); font-weight:500;
  font-size:clamp(2rem,1.3rem + 2.4vw,3.25rem); line-height:1.45; letter-spacing:.12em;
}
.page-title .sub{display:block; font-size:clamp(.9375rem,.85rem + .3vw,1.125rem); letter-spacing:.2em; color:var(--c-ink-2); margin-bottom:var(--s-2);}
.page-sub{
  margin-top:var(--s-5); display:flex; align-items:center; gap:var(--s-4);
  font-family:var(--f-mincho); font-size:clamp(1rem,.9rem + .4vw,1.1875rem); letter-spacing:.14em; color:var(--c-olive-deep);
}
.page-sub::before{content:""; width:32px; height:1px; background:currentColor; flex:none;}
.page-intro{margin-top:var(--s-6); max-width:32em; color:var(--c-ink-2); font-size:1rem; line-height:2.1;}
.page-visual{position:relative; width:min(100%,360px); justify-self:end;}
.page-visual .arch{aspect-ratio:4/5;}
.page-visual .arch-line{inset:-14px -16px 16px 16px;}
.page-visual .deco-plus{left:-34px; top:18%;}
.page-head--simple .page-head-grid{grid-template-columns:1fr;}
@media (max-width:767px){ .page-visual .deco-plus{display:none;} .page-sub{font-size:.9375rem; letter-spacing:.06em; gap:var(--s-3);} .page-sub::before{width:20px;} }
@media (max-width:900px){
  .page-head-grid{grid-template-columns:1fr;}
  .page-visual{justify-self:start; width:min(64%,300px);}
}

/* 会社概要の冒頭: 見出しを写真の足元に揃え、写真を次のセクションへ食い込ませる */
.page-head--company{padding-bottom:calc(var(--curve-h) * .6);}
.page-head--company .page-head-grid{align-items:end; grid-template-columns:minmax(0,1fr) clamp(260px,24vw,340px);}
.page-head--company .page-title{font-size:clamp(2.25rem,1.4rem + 3vw,4rem); letter-spacing:.16em;}
.page-head--company .head-rule{display:block; width:min(100%,520px); height:1px; margin-top:var(--s-7); background:var(--c-line);}
.page-head--company .page-visual{width:100%; z-index:3;}
@media (max-width:900px){
  .page-head--company .page-head-grid{grid-template-columns:1fr;}
  .page-head--company .page-visual{width:min(64%,300px);}
  .page-head--company .head-rule{display:none;}
}
.page-head--company .leaf-shadow{display:none;}

/* =============================================================================
   カケサポ: 5つのステップ
   ============================================================================= */
.steps-layout{display:grid; grid-template-columns:minmax(0,4fr) minmax(0,7fr); gap:clamp(2.5rem,6vw,6rem); align-items:start;}
.steps-aside{position:sticky; top:calc(var(--header-h) + 32px);}
.steps-aside .arch{margin-top:var(--s-7); aspect-ratio:3/4; width:min(100%,320px);}
.step-list{border-top:1px solid var(--c-line);}
.step{display:grid; grid-template-columns:5.5rem minmax(0,1fr); gap:var(--s-5); padding-block:clamp(1.75rem,1.4rem + 1.2vw,2.5rem); border-bottom:1px solid var(--c-line);}
.step-no{font-family:var(--f-en); font-style:italic; font-variant-numeric:lining-nums; font-weight:500; font-size:2.75rem; line-height:1; letter-spacing:-.02em; color:var(--c-olive);}
.step-title{font-family:var(--f-mincho); font-weight:600; font-size:clamp(1.125rem,1rem + .4vw,1.3125rem); letter-spacing:.1em; line-height:1.6;}
.step-desc{margin-top:var(--s-3); color:var(--c-ink-2);}
@media (max-width:900px){
  .steps-layout{grid-template-columns:1fr;}
  .steps-aside{position:static;}
  .steps-aside .arch{display:none;}
}
@media (max-width:480px){ .step{grid-template-columns:3.25rem minmax(0,1fr); gap:var(--s-4);} .step-no{font-size:2.125rem;} }

/* =============================================================================
   カケサポ: 料金プラン(3枚均等)
   ============================================================================= */
.plan-list{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:var(--s-5);}
.plan{
  position:relative; display:flex; flex-direction:column;
  background:var(--c-paper); border-radius:var(--r-lg); border:1px solid rgba(var(--ink-rgb),.07);
  box-shadow:var(--shadow-soft); padding:clamp(1.75rem,1.4rem + 1vw,2.5rem);
}
.plan-name{font-family:var(--f-mincho); font-weight:600; font-size:1.25rem; letter-spacing:.12em; line-height:1.5;}
.plan-price{
  margin-top:var(--s-5); padding-block:var(--s-5); border-block:1px solid var(--c-line);
  font-family:var(--f-mincho); font-weight:500; font-size:clamp(1.5rem,1.2rem + .8vw,1.875rem); letter-spacing:.04em; line-height:1.3;
  font-variant-numeric:lining-nums;
}
.plan-meta{margin-top:var(--s-5); display:grid; grid-template-columns:auto minmax(0,1fr); gap:var(--s-3) var(--s-5); font-size:.875rem; line-height:1.7;}
.plan-meta dt{color:var(--c-muted); letter-spacing:.12em; white-space:nowrap;}
.plan-meta dd{color:var(--c-ink); font-weight:500;}
.plan-meter{margin-top:auto; padding-top:var(--s-6); display:flex; gap:6px;}
.plan-meter span{flex:1; height:4px; border-radius:2px; background:var(--c-line);}
.plan-meter span.on{background:var(--c-olive);}
.plan-meter-label{font-variant-numeric:lining-nums; display:flex; justify-content:space-between; margin-top:var(--s-2); font-family:var(--f-en); font-size:.75rem; letter-spacing:.14em; color:var(--c-muted);}
@media (max-width:900px){ .plan-list{grid-template-columns:1fr; max-width:520px; margin-inline:auto;} }

.delivery{
  margin-top:clamp(3rem,2.5rem + 2vw,4.5rem);
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2.2fr); gap:var(--s-5) var(--s-8);
  padding-top:clamp(2rem,1.6rem + 1.4vw,3rem); border-top:1px solid var(--c-line);
}
.delivery h3{font-family:var(--f-mincho); font-weight:600; font-size:1.25rem; letter-spacing:.12em; line-height:1.6;}
.delivery-body{color:var(--c-ink-2);}
.delivery-body ul{margin-top:var(--s-4);}
.delivery-body li{padding-block:var(--s-2); border-bottom:1px dashed var(--c-line);}
.delivery-body li:last-child{border-bottom:0;}
.plan-note{margin-top:var(--s-7); font-size:.875rem; color:var(--c-ink-2);}
@media (max-width:767px){ .delivery{grid-template-columns:1fr;} }

/* =============================================================================
   会社概要
   ============================================================================= */
.philo-layout{display:grid; grid-template-columns:auto minmax(0,1fr); gap:clamp(2.5rem,7vw,7rem); align-items:start;}
.philo-vertical{
  writing-mode:vertical-rl; font-family:var(--f-mincho); font-weight:500;
  font-size:clamp(1.75rem,1.2rem + 1.6vw,2.5rem); letter-spacing:.32em; line-height:1.6;
  padding-left:var(--s-5); border-left:1px solid var(--c-line); white-space:nowrap;
}
.philo-text{max-width:38em; padding-top:var(--s-2);}
.philo-layout{max-width:calc(1000px + var(--gutter)*2);}
.philo-text .prose{margin-top:var(--s-7); font-size:1rem; line-height:2.2;}
@media (max-width:767px){
  .philo-layout{grid-template-columns:1fr;}
  .philo-vertical{writing-mode:horizontal-tb; border-left:0; padding-left:0; letter-spacing:.12em; white-space:normal; font-size:1.625rem; order:2;}
  .philo-text{display:contents;}
  .philo-text .sec-head{order:1;}
  .philo-text .prose{order:3; margin-top:0;}
}

.outline-table{
  background:var(--c-paper); border-radius:var(--r-lg); border:1px solid rgba(var(--ink-rgb),.07);
  box-shadow:var(--shadow-soft); padding:var(--s-3) clamp(1.5rem,1rem + 2vw,3rem);
}
.outline-table .row{display:grid; grid-template-columns:11em minmax(0,1fr); gap:var(--s-5); padding-block:var(--s-5); border-bottom:1px solid var(--c-line);}
.outline-table .row:last-child{border-bottom:0;}
.outline-table dt{font-weight:500; letter-spacing:.14em; color:var(--c-ink);}
.outline-table dd{color:var(--c-ink-2);}
@media (max-width:600px){ .outline-table .row{grid-template-columns:1fr; gap:var(--s-1);} .outline-table dt{font-size:.8125rem; color:var(--c-muted);} }

/* =============================================================================
   お問い合わせ
   ============================================================================= */
.contact-grid{display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2.5rem,6vw,6rem); align-items:start;}
.contact-aside{position:sticky; top:calc(var(--header-h) + 32px);}
.contact-aside .arch{margin-top:var(--s-7); width:min(100%,300px); aspect-ratio:3/4;}
.contact-aside .page-intro{max-width:26em;}
.form-card{
  background:var(--c-paper); border-radius:var(--r-lg); border:1px solid rgba(var(--ink-rgb),.07);
  box-shadow:var(--shadow-soft); padding:clamp(1.75rem,1.2rem + 2.4vw,3.5rem);
}
.field + .field{margin-top:var(--s-6);}
.field label{display:flex; align-items:center; gap:var(--s-3); font-size:.875rem; font-weight:500; letter-spacing:.12em;}
.req,.opt{display:inline-flex; align-items:center; min-height:20px; padding:0 8px; border-radius:999px; font-size:.6875rem; letter-spacing:.1em; line-height:1;}
.req{background:var(--c-olive); color:var(--c-on-olive);}
.opt{border:1px solid var(--c-line); color:var(--c-muted);}
.field input,.field textarea{
  display:block; width:100%; margin-top:var(--s-3);
  padding:var(--s-4) var(--s-4); min-height:54px;
  font:inherit; font-size:1rem; letter-spacing:.04em; line-height:1.7; color:var(--c-ink);
  background:var(--c-bg); border:1px solid var(--c-field-line); border-radius:var(--r-sm);
  transition:border-color var(--dur) var(--ease), background-color var(--dur) var(--ease);
  -webkit-appearance:none; appearance:none;
}
.field textarea{min-height:200px; resize:vertical;}
.field input:focus,.field textarea:focus{outline:none; border-color:var(--c-olive); background:var(--c-paper); box-shadow:0 0 0 3px var(--c-olive-tint);}
.field input::placeholder,.field textarea::placeholder{color:var(--c-muted);}
.hp-field{position:absolute!important; left:-10000px; top:auto; width:1px; height:1px; overflow:hidden;}
.form-noscript{margin-bottom:var(--s-6); padding:var(--s-4) var(--s-5); border-radius:var(--r-sm); background:#F3E6DC; color:#7A3E22; border:1px solid #DDBFA9; font-size:.875rem; line-height:1.9;}
.form-note{margin-top:var(--s-6); font-size:.8125rem; line-height:1.9; color:var(--c-ink-2);}
.cf-turnstile{margin-top:var(--s-5); min-height:65px;}
.form-actions{margin-top:var(--s-6);}
.form-actions .btn{width:100%;}
.form-status{margin-top:var(--s-5); font-size:.875rem; line-height:1.9; border-radius:var(--r-sm);}
.form-status:empty{display:none;}
@media (max-width:480px){ .form-card{margin-inline:calc(var(--gutter) * -.5); padding:var(--s-6) var(--s-5);} }
.form-status.is-success,.form-status.is-error{padding:var(--s-4) var(--s-5);}
.form-status.is-success{background:var(--c-olive-tint); color:var(--c-olive-deep); border:1px solid rgba(85,99,74,.35);}
.form-status.is-error{background:#F3E6DC; color:#7A3E22; border:1px solid #DDBFA9;}
@media (max-width:900px){
  .contact-grid{grid-template-columns:minmax(0,1fr);}
  .contact-aside{position:static;}
  .contact-aside .arch{display:none;}
}

/* =============================================================================
   法務ページ(特商法・プライバシーポリシー)
   ============================================================================= */
.legal-card{
  background:var(--c-paper); border-radius:var(--r-lg); border:1px solid rgba(var(--ink-rgb),.07);
  box-shadow:var(--shadow-soft); padding:clamp(1.5rem,1rem + 2.4vw,3.5rem);
}
.legal-table{width:100%; border-collapse:collapse; font-size:.9375rem;}
.legal-table th,.legal-table td{text-align:left; vertical-align:top; padding:var(--s-5) 0; border-bottom:1px solid var(--c-line); line-height:1.95;}
.legal-table tr:last-child th,.legal-table tr:last-child td{border-bottom:0;}
.legal-table th{width:15em; padding-right:var(--s-6); font-weight:500; letter-spacing:.1em; color:var(--c-ink);}
.legal-table td{color:var(--c-ink-2);}
@media (max-width:600px){
  .legal-table th,.legal-table td{display:block; width:auto; padding:0;}
  .legal-table th{padding-top:var(--s-5); font-size:.8125rem; color:var(--c-muted); border-bottom:0;}
  .legal-table td{padding:var(--s-1) 0 var(--s-5);}
}
.policy{color:var(--c-ink-2);}
.policy > p:first-child{color:var(--c-ink);}
.policy h2{
  margin-top:var(--s-8); padding-bottom:var(--s-3); border-bottom:1px solid var(--c-line);
  font-family:var(--f-mincho); font-weight:600; font-size:1.1875rem; letter-spacing:.1em; line-height:1.6; color:var(--c-ink);
}
.policy h2 + *{margin-top:var(--s-4);}
.policy ul,.policy ol{margin-top:var(--s-3);}
.policy ul li{position:relative; padding-left:1.25em;}
.policy ul li::before{content:""; position:absolute; left:.25em; top:.95em; width:5px; height:5px; border-radius:50%; background:var(--c-olive); opacity:.7;}
.policy ol{counter-reset:pol;}
.policy ol li{position:relative; padding-left:1.75em; counter-increment:pol;}
.policy ol li::before{content:counter(pol) "."; position:absolute; left:0; font-family:var(--f-sans); font-weight:500; font-variant-numeric:lining-nums tabular-nums; color:var(--c-olive);}
.policy > * + *{margin-top:var(--s-4);}
.policy > h2{margin-top:var(--s-8);}
.policy li + li{margin-top:var(--s-2);}
.policy address{font-style:normal; margin-top:var(--s-4); padding:var(--s-5); background:var(--c-bg); border-radius:var(--r-sm);}
.policy .enacted{margin-top:var(--s-7); text-align:right; font-size:.875rem; color:var(--c-muted);}


/* カケサポ: ご注意(料金プラン直下の小さめの注記) */
.caution{margin-top:var(--s-6); padding:var(--s-5) clamp(1.25rem,1rem + 1vw,2rem); border:1px solid var(--c-line); border-radius:var(--r-md); background:rgba(235,227,211,.45); font-size:.8125rem; line-height:1.9; color:var(--c-ink-2);}
.caution-title{font-weight:500; letter-spacing:.16em; color:var(--c-ink); margin-bottom:var(--s-2);}
.caution li{position:relative; padding-left:1.1em;}
.caution li + li{margin-top:var(--s-2);}
.caution li::before{content:"※"; position:absolute; left:0; color:var(--c-muted);}

/* プライバシーポリシー: 委託先の表 */
.table-scroll{overflow-x:auto; -webkit-overflow-scrolling:touch;}
.policy-table{width:100%; min-width:520px; border-collapse:collapse; font-size:.875rem; line-height:1.8;}
.policy-table th,.policy-table td{text-align:left; vertical-align:top; padding:var(--s-3) var(--s-4); border-bottom:1px solid var(--c-line);}
.policy-table thead th{background:var(--c-bg); font-weight:500; letter-spacing:.1em; color:var(--c-ink); white-space:nowrap;}
.policy-table td:last-child{white-space:nowrap;}
@media (max-width:600px){
  .policy-table{min-width:0;}
  .policy-table thead{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0);}
  .policy-table tr{display:block; padding:var(--s-3) 0; border-bottom:1px solid var(--c-line);}
  .policy-table td{display:grid; grid-template-columns:6.5em minmax(0,1fr); gap:var(--s-3); padding:var(--s-1) 0; border:0; white-space:normal!important;}
  .policy-table td{grid-template-columns:7.5em minmax(0,1fr);}
  .policy-table td::before{content:attr(data-label); color:var(--c-muted); font-size:.75rem; letter-spacing:.04em; word-break:keep-all; line-height:1.6;}
}
.policy p + p{margin-top:var(--s-3);}
.policy strong{color:var(--c-ink); font-weight:500;}
.policy a{word-break:break-all;}

/* =============================================================================
   404
   ============================================================================= */
.notfound{position:relative; overflow:hidden; min-height:calc(100svh - var(--header-h) - 120px); display:grid; place-items:center; text-align:center; padding-block:var(--s-10);}
.notfound .leaf-shadow{top:-40px; right:-160px;}
.notfound-code{font-family:var(--f-en); font-style:italic; font-size:clamp(4.5rem,3rem + 6vw,8rem); line-height:1; letter-spacing:.04em; color:var(--c-olive);}
.notfound h1{margin-top:var(--s-5); font-family:var(--f-mincho); font-weight:500; font-size:clamp(1.375rem,1.1rem + 1vw,1.875rem); letter-spacing:.12em; line-height:1.6;}
.notfound p{margin-top:var(--s-4); color:var(--c-ink-2);}
.notfound .btn{margin-top:var(--s-7);}

/* =============================================================================
   リビール(下から静かにフェードイン・JS有効時のみ)
   ============================================================================= */
.js [data-reveal]{opacity:0; transform:translateY(24px); transition:opacity var(--dur-reveal) var(--ease), transform var(--dur-reveal) var(--ease); transition-delay:calc(var(--d,0) * .1s);}
.js [data-reveal].is-in,.reveal-fallback [data-reveal]{opacity:1; transform:none;}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important; animation-duration:.01ms!important; scroll-behavior:auto!important;}
  .js [data-reveal]{opacity:1; transform:none;}
}

@media (max-width:767px){
  body{font-size:.9375rem; line-height:1.95;}
  .sec-head--split{grid-template-columns:1fr; gap:var(--s-4);}
  .heading{gap:var(--s-4);}
  .heading::after{width:36px;}
}
