@charset "utf-8";
/* ============================================================
   受け継がれたものに、新しい物語を。
   Design System — 生成りの紙、墨の文字、濃藍のしるし
   ============================================================ */

/* ---------- 1. Design Tokens ---------- */
:root{
  /* 色 */
  --c-base:      #F7F6F2;   /* 生成り（紙） */
  --c-base-deep: #F1EFE8;   /* 生成り・沈め */
  --c-paper:     #FDFCFA;   /* 白に近い紙（カード面） */
  --c-ink:       #2C2C2C;   /* 墨色 */
  --c-ink-2:     #5A5852;   /* 墨・薄 */
  --c-ink-3:     #8B887F;   /* 墨・淡（補助文字） */
  --c-rule:      #E2DFD6;   /* 罫線 */
  --c-rule-2:    #D3CFC3;   /* 罫線・濃 */
  --c-indigo:    #1E2D4A;   /* 濃藍（アクセント／信用） */
  --c-indigo-2:  #33456B;   /* 濃藍・明 */
  --c-moss:      #2D3E35;   /* 深緑（第二アクセント） */
  --c-moss-2:    #47604F;
  --c-clay:      #A8734A;   /* 土・木（差し色／実績タグ） */

  /* 字 */
  --f-mincho: "Shippori Mincho", "Yu Mincho", "游明朝", "YuMincho",
              "Hiragino Mincho ProN", "MS PMincho", serif;
  --f-gothic: "BIZ UDPGothic", "BIZ UDPゴシック", "Hiragino Sans",
              "Noto Sans JP", "Yu Gothic", "Meiryo", sans-serif;
  --fs-body: 1.0625rem;      /* 17px */
  --lh-body: 1.9;

  /* 間 */
  --gutter: clamp(1.25rem, 5vw, 4rem);
  --wrap: 1180px;
  --wrap-narrow: 720px;
  --sec-y: clamp(5rem, 11vw, 9.5rem);

  /* 動き */
  --ease: cubic-bezier(.22,.61,.36,1);
  --dur: .8s;
}

/* ---------- 2. Reset & Base ---------- */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; overflow-x:hidden; }
body{
  margin:0;
  background:var(--c-base);
  color:var(--c-ink);
  font-family:var(--f-gothic);
  font-size:var(--fs-body);
  line-height:var(--lh-body);
  letter-spacing:.04em;
  font-feature-settings:"palt" 1;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img,svg,video{ display:block; max-width:100%; height:auto; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }
ul,ol{ list-style:none; margin:0; padding:0; }
h1,h2,h3,h4,p,figure,dl,dd{ margin:0; }
table{ border-collapse:collapse; width:100%; }

::selection{ background:var(--c-indigo); color:var(--c-base); }

:focus-visible{
  outline:2px solid var(--c-indigo);
  outline-offset:3px;
  border-radius:2px;
}

.skip-link{
  position:absolute; left:1rem; top:-4rem; z-index:200;
  background:var(--c-indigo); color:#fff;
  padding:.75rem 1.25rem; border-radius:2px; font-size:.9375rem;
  transition:top .2s;
}
.skip-link:focus{ top:1rem; }

/* 紙の質感（極薄のノイズ） */
body::before{
  content:""; position:fixed; inset:0; z-index:0; pointer-events:none;
  opacity:.5; mix-blend-mode:multiply;
  background-image: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='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.055'/%3E%3C/svg%3E");
}

/* ---------- 3. Typography ---------- */
.mincho{ font-family:var(--f-mincho); font-weight:500; letter-spacing:.09em; line-height:1.62; }

.sec-label{
  font-family:var(--f-gothic);
  font-size:.75rem; font-weight:700; letter-spacing:.24em;
  color:var(--c-indigo); text-transform:uppercase;
  display:flex; align-items:center; gap:.9em; margin-bottom:1.6rem;
}
.sec-label::before{
  content:""; width:2.25rem; height:1px; background:var(--c-indigo); opacity:.55;
}
.sec-label .ja{
  font-size:.8125rem; letter-spacing:.16em; color:var(--c-ink-3); font-weight:500;
}

.sec-title{
  font-family:var(--f-mincho); font-weight:500;
  font-size:clamp(1.6rem, 3.6vw, 2.5rem);
  line-height:1.55; letter-spacing:.08em; color:var(--c-ink);
  margin-bottom:1.5rem;
}
.sec-lead{
  max-width:38em; color:var(--c-ink-2); font-size:1rem; line-height:2;
}

.eyebrow{
  font-size:.6875rem; letter-spacing:.22em; font-weight:700;
  color:var(--c-ink-3); text-transform:uppercase;
}

/* ---------- 4. Layout ---------- */
.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gutter); position:relative; z-index:1; }
.wrap-narrow{ max-width:var(--wrap-narrow); }
.section{ padding-block:var(--sec-y); position:relative; scroll-margin-top:5.5rem; }
.section--paper{ background:var(--c-paper); }
.section--deep{ background:var(--c-base-deep); }
.section--ink{ background:var(--c-indigo); color:#EDEBE4; }
.section--ink .sec-title{ color:#fff; }
.section--ink .sec-label{ color:#A9B6D0; }
.section--ink .sec-label::before{ background:#A9B6D0; }

.rule{ height:1px; background:var(--c-rule); border:0; margin:0; }

/* ---------- 5. Header ---------- */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:100;
  transition:background .5s var(--ease), box-shadow .5s var(--ease), padding .5s var(--ease);
  padding-block:1.4rem;
}
.site-header::after{
  content:""; position:absolute; inset:auto 0 0 0; height:1px;
  background:var(--c-rule); opacity:0; transition:opacity .5s var(--ease);
}
.site-header.is-solid{
  background:rgba(247,246,242,.92);
  backdrop-filter:saturate(1.4) blur(14px);
  -webkit-backdrop-filter:saturate(1.4) blur(14px);
  padding-block:.9rem;
}
.site-header.is-solid::after{ opacity:1; }
.site-header.is-hidden{ transform:translateY(-100%); }
.site-header{ transition:transform .45s var(--ease), background .5s var(--ease), padding .5s var(--ease); }

.header-inner{ display:flex; align-items:center; justify-content:space-between; gap:1.5rem; }

.brand{ display:flex; align-items:center; gap:.75rem; }
.brand__mark{ width:34px; height:34px; flex:none; }
.brand__mark path,.brand__mark rect,.brand__mark line{ vector-effect:non-scaling-stroke; }
.brand__name{
  font-family:var(--f-mincho); font-size:1.1875rem; letter-spacing:.045em;
  line-height:1.25; white-space:nowrap;
}
.brand__name small{ display:block; font-family:var(--f-gothic); font-size:.5625rem; letter-spacing:.14em; color:var(--c-ink-3); margin-top:.3em; }

.gnav{ display:flex; align-items:center; gap:clamp(1.1rem,2.4vw,2.1rem); }
.gnav a{
  font-size:.875rem; letter-spacing:.1em; position:relative; padding-block:.35rem;
  color:var(--c-ink);
}
.gnav a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:var(--c-indigo); transform:scaleX(0); transform-origin:right;
  transition:transform .45s var(--ease);
}
.gnav a:hover::after,.gnav a[aria-current="page"]::after{ transform:scaleX(1); transform-origin:left; }
.gnav a[aria-current="page"]{ color:var(--c-indigo); }

.btn-contact{
  background:var(--c-indigo); color:#fff !important;
  padding:.7rem 1.4rem; font-size:.8125rem; letter-spacing:.12em;
  border-radius:1px; transition:background .35s var(--ease);
}
.btn-contact::after{ display:none; }
.btn-contact:hover{ background:var(--c-indigo-2); }

.nav-toggle{ display:none; width:44px; height:44px; position:relative; z-index:120; }
.nav-toggle span{
  position:absolute; left:11px; width:22px; height:1.5px; background:var(--c-ink);
  transition:transform .4s var(--ease), opacity .3s;
}
.nav-toggle span:nth-child(1){ top:17px; }
.nav-toggle span:nth-child(2){ top:26px; }
.nav-toggle[aria-expanded="true"] span:nth-child(1){ transform:translateY(4.5px) rotate(17deg); }
.nav-toggle[aria-expanded="true"] span:nth-child(2){ transform:translateY(-4.5px) rotate(-17deg); }

/* メニュー展開中はヘッダーの backdrop-filter を解除
   （filter系はfixed子要素の包含ブロックを作ってしまうため） */
body.nav-open .site-header{
  background:transparent; backdrop-filter:none; -webkit-backdrop-filter:none; transform:none;
}
body.nav-open .site-header::after{ opacity:0; }
body.nav-open .brand{ position:relative; z-index:120; }

/* ---------- 6. Hero ---------- */
.hero{
  position:relative; min-height:100svh; display:flex; align-items:flex-end;
  overflow:hidden; background:var(--c-base);
}
.hero__media{ position:absolute; inset:0; z-index:0; overflow:hidden; }
.hero__media video{ width:100%; height:100%; object-fit:cover; }
/* 素材差し替えまでの「静かなループ」— 土壁と光のゆらぎ */
.hero__ambient{
  position:absolute; inset:-10%;
  background:
    radial-gradient(54% 48% at 18% 20%, rgba(226,186,132,.52), transparent 62%),
    radial-gradient(46% 42% at 84% 56%, rgba(45,62,53,.40), transparent 64%),
    radial-gradient(76% 58% at 48% 108%, rgba(26,40,66,.55), transparent 70%),
    linear-gradient(158deg,#F4EEE2 0%,#DBD0BA 40%,#A69C88 100%);
  animation:drift 34s ease-in-out infinite alternate;
}
.hero__ambient::after{
  content:""; position:absolute; inset:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.7' numOctaves='4'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23g)' opacity='.13'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}
@keyframes drift{
  0%{ transform:scale(1.04) translate3d(0,0,0); }
  100%{ transform:scale(1.13) translate3d(-2.2%,-1.6%,0); }
}
.hero__veil{
  position:absolute; inset:0; z-index:1;
  background:linear-gradient(to top, rgba(28,28,28,.62) 0%, rgba(28,28,28,.22) 42%, rgba(28,28,28,.10) 100%);
}
.hero__inner{ position:relative; z-index:2; width:100%; padding-bottom:clamp(4.5rem,10vh,8rem); padding-top:9rem; }
.hero__copy{
  font-family:var(--f-mincho); font-weight:500; color:#fff;
  font-size:clamp(1.78rem, 6.6vw, 4.35rem);
  line-height:1.55; letter-spacing:.08em;
  text-shadow:0 2px 30px rgba(0,0,0,.28);
}
.hero__copy span{ display:block; overflow:hidden; }
.hero__copy span i{
  display:block; font-style:normal;
  transform:translateY(110%);
  animation:riseIn 1.35s var(--ease) forwards;
}
.hero__copy span:nth-child(1) i{ animation-delay:.35s; }
.hero__copy span:nth-child(2) i{ animation-delay:.55s; }
@keyframes riseIn{ to{ transform:translateY(0); } }

.hero__sub{
  margin-top:2.2rem; max-width:34em; color:rgba(255,255,255,.9);
  font-size:1rem; line-height:2.05; letter-spacing:.06em;
  opacity:0; animation:fadeIn 1.4s var(--ease) 1.05s forwards;
}
.hero__en{
  position:absolute; z-index:2; right:var(--gutter); bottom:clamp(4.5rem,10vh,8rem);
  writing-mode:vertical-rl; font-size:.6875rem; letter-spacing:.4em;
  color:rgba(255,255,255,.62); text-transform:uppercase;
  opacity:0; animation:fadeIn 1.4s var(--ease) 1.3s forwards;
}
@keyframes fadeIn{ to{ opacity:1; } }

.scroll-cue{
  position:absolute; left:var(--gutter); bottom:0; z-index:3;
  width:1px; height:clamp(3rem,7vh,5rem); background:rgba(255,255,255,.28); overflow:hidden;
}
.scroll-cue::after{
  content:""; position:absolute; inset:0; background:#fff;
  animation:cue 2.6s var(--ease) infinite;
}
@keyframes cue{ 0%{ transform:translateY(-100%);} 55%,100%{ transform:translateY(100%);} }

/* ---------- 7. Placeholder Visual（素材差し替え枠） ---------- */
.ph{
  position:relative; overflow:hidden; background:var(--c-base-deep);
  isolation:isolate;
}
.ph::before{
  content:""; position:absolute; inset:0;
  background:
    radial-gradient(58% 62% at 28% 24%, rgba(255,255,255,.42), transparent 60%),
    linear-gradient(150deg, var(--ph-a,#D9D2C4) 0%, var(--ph-b,#B9AF9C) 100%);
  transition:transform 1.2s var(--ease);
}
.ph::after{
  content:""; position:absolute; inset:0; mix-blend-mode:overlay; opacity:.5;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='240' height='240' filter='url(%23p)' opacity='.2'/%3E%3C/svg%3E");
}
.ph__note{
  position:absolute; z-index:2; left:1rem; bottom:.9rem;
  font-size:.625rem; letter-spacing:.16em; color:rgba(255,255,255,.78);
  font-weight:700; text-shadow:0 1px 6px rgba(0,0,0,.3);
}
.ph--clay{ --ph-a:#D9C3AC; --ph-b:#A8734A; }
.ph--moss{ --ph-a:#B9C3B4; --ph-b:#2D3E35; }
.ph--indigo{ --ph-a:#B4BCCB; --ph-b:#1E2D4A; }
.ph--sand{ --ph-a:#E4DCCB; --ph-b:#B0A084; }
.ph--stone{ --ph-a:#CFCCC5; --ph-b:#7C776D; }
.ph--dusk{ --ph-a:#C7B9B4; --ph-b:#6B4F4A; }
.ph--r43{ aspect-ratio:4/3; }
.ph--r32{ aspect-ratio:3/2; }
.ph--r11{ aspect-ratio:1/1; }
.ph--r169{ aspect-ratio:16/9; }
.ph--r45{ aspect-ratio:4/5; }
a:hover .ph::before,.card:hover .ph::before{ transform:scale(1.05); }

/* ---------- 8. Buttons & Links ---------- */
.btn{
  display:inline-flex; align-items:center; gap:1em;
  padding:1.1rem 2.1rem; font-size:.9375rem; letter-spacing:.12em;
  border:1px solid var(--c-ink); border-radius:1px;
  transition:background .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease);
}
.btn svg{ flex:none; transition:transform .4s var(--ease); }
.btn:hover svg{ transform:translateX(4px); }
.btn:hover{ background:var(--c-ink); color:var(--c-base); }
.btn--primary{ background:var(--c-indigo); border-color:var(--c-indigo); color:#fff; }
.btn--primary:hover{ background:var(--c-indigo-2); border-color:var(--c-indigo-2); color:#fff; }
.btn--light{ border-color:rgba(255,255,255,.5); color:#fff; }
.btn--light:hover{ background:#fff; color:var(--c-indigo); border-color:#fff; }
.btn--lg{ padding:1.35rem 2.6rem; font-size:1rem; }

.link-more{
  display:inline-flex; align-items:center; gap:.85em;
  font-size:.875rem; letter-spacing:.12em; color:var(--c-indigo);
  padding-bottom:.35rem; position:relative;
}
.link-more::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px;
  background:currentColor; opacity:.4; transform-origin:right; transition:transform .45s var(--ease);
}
.link-more:hover::after{ transform:scaleX(0); }
.link-more svg{ transition:transform .4s var(--ease); }
.link-more:hover svg{ transform:translateX(5px); }

/* ---------- 9. Reveal ---------- */
.rv{ opacity:0; transform:translateY(26px); transition:opacity 1s var(--ease), transform 1s var(--ease); }
.rv.is-in{ opacity:1; transform:none; }
.rv-d1{ transition-delay:.1s; } .rv-d2{ transition-delay:.2s; }
.rv-d3{ transition-delay:.3s; } .rv-d4{ transition-delay:.4s; }

/* ---------- 10. 理念 / Philosophy ---------- */
.philo{ display:grid; grid-template-columns:.92fr 1.24fr; gap:clamp(2.5rem,6vw,5.5rem); align-items:center; }
.philo__visual{ position:relative; }
.philo__visual .ph{ aspect-ratio:4/5; }
.philo__visual .stamp{
  position:absolute; right:-1.5rem; bottom:-1.5rem; width:clamp(88px,11vw,124px); height:auto;
}
.philo__body p + p{ margin-top:1.6rem; }
.philo__quote{
  font-family:var(--f-mincho); font-size:clamp(1.25rem,2.25vw,1.72rem);
  line-height:1.86; letter-spacing:.07em; margin-bottom:2.2rem;
}
.philo__sign{
  margin-top:2.5rem; padding-top:1.5rem; border-top:1px solid var(--c-rule);
  font-size:.875rem; color:var(--c-ink-2); letter-spacing:.1em;
}
.philo__sign strong{ font-family:var(--f-mincho); font-size:1.15rem; letter-spacing:.14em; margin-left:.6em; color:var(--c-ink); font-weight:500; }

/* ---------- 11. 事業 / Services ---------- */
.services{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1.5rem,3vw,2.75rem); }
.svc{
  background:var(--c-paper); border:1px solid var(--c-rule);
  display:flex; flex-direction:column;
  transition:transform .6s var(--ease), box-shadow .6s var(--ease), border-color .6s var(--ease);
}
.svc:hover{ transform:translateY(-6px); box-shadow:0 22px 48px -26px rgba(44,44,44,.32); border-color:var(--c-rule-2); }
.svc__num{
  font-family:var(--f-mincho); font-size:.8125rem; letter-spacing:.2em; color:var(--c-indigo);
}
.svc__body{ padding:clamp(1.6rem,3vw,2.3rem); display:flex; flex-direction:column; flex:1; gap:1rem; }
.svc__title{
  font-family:var(--f-mincho); font-size:clamp(1.1rem,1.85vw,1.3rem);
  letter-spacing:.08em; line-height:1.66;
}
.svc__title em{ display:block; font-style:normal; font-family:var(--f-gothic); font-size:.625rem; letter-spacing:.2em; color:var(--c-ink-3); margin-top:.7em; }
.svc__text{ font-size:.9375rem; line-height:1.95; color:var(--c-ink-2); flex:1; }
.svc__tags{ display:flex; flex-wrap:wrap; gap:.4rem; }
.tag{
  font-size:.6875rem; letter-spacing:.1em; padding:.3rem .7rem;
  border:1px solid var(--c-rule-2); color:var(--c-ink-2); border-radius:1px;
}
.tag--moss{ border-color:rgba(45,62,53,.3); color:var(--c-moss); }
.tag--indigo{ border-color:rgba(30,45,74,.3); color:var(--c-indigo); }
.tag--clay{ border-color:rgba(168,115,74,.4); color:var(--c-clay); }

/* ---------- 12. Works ---------- */
.works-grid{ display:grid; grid-template-columns:repeat(12,1fr); gap:clamp(1.75rem,3.4vw,3.25rem) clamp(1.5rem,3vw,2.75rem); }
.work{ grid-column:span 6; display:block; }
.work--wide{ grid-column:span 12; }
.work--offset{ margin-top:clamp(0rem,7vw,5.5rem); }
.work__fig{ position:relative; overflow:hidden; }
.work__cat{
  position:absolute; z-index:2; top:1rem; left:1rem;
  background:rgba(247,246,242,.94); color:var(--c-indigo);
  font-size:.6875rem; letter-spacing:.14em; padding:.42rem .85rem; border-radius:1px;
}
.work__meta{ margin-top:1.4rem; display:flex; align-items:baseline; gap:1rem; }
.work__place{ font-size:.75rem; letter-spacing:.16em; color:var(--c-ink-3); }
.work__year{ font-size:.75rem; letter-spacing:.14em; color:var(--c-ink-3); margin-left:auto; }
.work__title{
  font-family:var(--f-mincho); font-size:clamp(1.2rem,2.3vw,1.6rem);
  letter-spacing:.09em; line-height:1.62; margin-top:.55rem;
  transition:color .4s var(--ease);
}
.work:hover .work__title{ color:var(--c-indigo); }
.work__desc{ margin-top:.85rem; font-size:.9375rem; line-height:1.95; color:var(--c-ink-2); }

/* 定量成果 */
.metrics{ display:flex; flex-wrap:wrap; gap:1.75rem 2.5rem; margin-top:1.5rem; padding-top:1.35rem; border-top:1px solid var(--c-rule); }
.metric__val{
  font-family:var(--f-mincho); font-size:clamp(1.5rem,3vw,2.05rem);
  letter-spacing:.04em; color:var(--c-indigo); line-height:1.2; display:flex; align-items:baseline; gap:.15em;
}
.metric__val small{ font-size:.5em; letter-spacing:.08em; }
.metric__key{ font-size:.75rem; letter-spacing:.1em; color:var(--c-ink-3); margin-top:.45rem; }

/* filter */
.filters{ display:flex; flex-wrap:wrap; gap:.6rem; margin-bottom:clamp(2.5rem,5vw,4rem); }
.filters button{
  font-size:.8125rem; letter-spacing:.1em; padding:.65rem 1.35rem;
  border:1px solid var(--c-rule-2); color:var(--c-ink-2); border-radius:1px;
  transition:all .35s var(--ease);
}
.filters button:hover{ border-color:var(--c-ink); color:var(--c-ink); }
.filters button[aria-pressed="true"]{ background:var(--c-indigo); border-color:var(--c-indigo); color:#fff; }
.is-filtered-out{ display:none !important; }

/* ---------- 13. News ---------- */
.news-list{ border-top:1px solid var(--c-rule); }
.news-item{
  display:grid; grid-template-columns:15.5em 1fr; gap:.35rem 1.75rem;
  padding-block:1.15rem; border-bottom:1px solid var(--c-rule);
  align-items:baseline; transition:background .4s var(--ease);
}
.news-item:hover{ background:rgba(255,255,255,.55); }
.news-item__head{ display:flex; align-items:center; gap:.9rem; }
.news-item__date{ font-size:.75rem; letter-spacing:.14em; color:var(--c-ink-3); font-variant-numeric:tabular-nums; }
.cat{
  font-size:.6875rem; letter-spacing:.12em; padding:.3rem .8rem; border-radius:1px;
  border:1px solid currentColor;
}
.cat--press{ color:var(--c-indigo); }
.cat--story{ color:var(--c-clay); }
.cat--progress{ color:var(--c-moss); }
.news-item__title{
  font-family:var(--f-mincho); font-size:clamp(1rem,1.6vw,1.15rem);
  line-height:1.75; letter-spacing:.06em;
  transition:color .4s var(--ease);
}
.news-item:hover .news-item__title{ color:var(--c-indigo); }
.news-item__excerpt{ margin-top:.7rem; font-size:.875rem; line-height:1.9; color:var(--c-ink-2); }

/* 読みもの（記事） */
.article{ max-width:var(--wrap-narrow); margin-inline:auto; }
.article__hero{ max-width:900px; margin-inline:auto; }
.article__body{ font-size:1.0625rem; line-height:2.1; letter-spacing:.045em; }
.article__body > * + *{ margin-top:1.9rem; }
.article__body h2{
  font-family:var(--f-mincho); font-size:clamp(1.3rem,2.6vw,1.7rem);
  letter-spacing:.09em; line-height:1.7; margin-top:3.75rem; padding-top:2.25rem;
  border-top:1px solid var(--c-rule);
}
.article__body h3{ font-family:var(--f-mincho); font-size:1.2rem; letter-spacing:.09em; margin-top:2.75rem; }
.article__body blockquote{
  margin:2.75rem 0; padding:0 0 0 1.85rem; border-left:2px solid var(--c-indigo);
  font-family:var(--f-mincho); font-size:1.2rem; line-height:1.95; letter-spacing:.07em; color:var(--c-ink);
}
.article__body figure{ margin-block:3rem; }
.article__body figcaption{ margin-top:.9rem; font-size:.8125rem; color:var(--c-ink-3); line-height:1.8; }
.article__body strong{ font-weight:700; background:linear-gradient(transparent 62%, rgba(30,45,74,.14) 62%); }

/* ---------- 14. 信頼性 / Partners ---------- */
.trust-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.16); }
.trust-cell{
  background:var(--c-indigo); padding:clamp(1.6rem,3vw,2.4rem) 1.2rem;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.85rem;
  text-align:center; min-height:130px;
}
.trust-cell__mark{ width:38px; height:38px; opacity:.75; }
.trust-cell__name{ font-size:.8125rem; letter-spacing:.09em; line-height:1.7; color:rgba(255,255,255,.9); }
.trust-cell__kind{ font-size:.625rem; letter-spacing:.16em; color:#96A5C2; }

/* ---------- 15. CTA ---------- */
.cta{ position:relative; overflow:hidden; background:var(--c-ink); color:#fff; }
.cta__bg{
  position:absolute; inset:-10%; opacity:.5;
  background:
    radial-gradient(50% 50% at 20% 30%, rgba(30,45,74,.9), transparent 65%),
    radial-gradient(50% 50% at 80% 70%, rgba(45,62,53,.85), transparent 65%);
  animation:drift 40s ease-in-out infinite alternate;
}
.cta__inner{ position:relative; z-index:1; text-align:center; }
.cta__title{ font-family:var(--f-mincho); font-size:clamp(1.6rem,4vw,2.7rem); line-height:1.6; letter-spacing:.09em; }
.cta__lead{ margin:1.75rem auto 0; max-width:36em; color:rgba(255,255,255,.78); font-size:.9375rem; line-height:2.05; }
.cta__routes{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; margin-top:clamp(2.75rem,5vw,4rem); background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.16); text-align:left; }
.route{
  background:rgba(28,28,28,.5); padding:clamp(1.75rem,3vw,2.5rem);
  display:flex; flex-direction:column; gap:.9rem; transition:background .45s var(--ease);
}
.route:hover{ background:rgba(30,45,74,.75); }
.route__for{ font-size:.6875rem; letter-spacing:.18em; color:#A9B6D0; }
.route__title{ font-family:var(--f-mincho); font-size:1.25rem; letter-spacing:.09em; line-height:1.6; }
.route__text{ font-size:.875rem; line-height:1.9; color:rgba(255,255,255,.72); flex:1; }
.route__go{ display:inline-flex; align-items:center; gap:.6em; font-size:.8125rem; letter-spacing:.12em; color:#fff; }
.route__go svg{ transition:transform .4s var(--ease); }
.route:hover .route__go svg{ transform:translateX(5px); }

/* ---------- 16. Page Head ---------- */
.page-head{ padding-top:clamp(9rem,16vh,12rem); padding-bottom:clamp(3rem,6vw,5rem); }
.page-head__en{ font-size:.6875rem; letter-spacing:.28em; color:var(--c-indigo); text-transform:uppercase; }
.page-head__title{
  font-family:var(--f-mincho); font-size:clamp(2rem,5vw,3.15rem);
  letter-spacing:.1em; line-height:1.5; margin-top:1.1rem;
}
.page-head__lead{ margin-top:1.75rem; max-width:40em; color:var(--c-ink-2); line-height:2.05; font-size:1rem; }
.crumbs{ display:flex; gap:.75rem; font-size:.75rem; letter-spacing:.1em; color:var(--c-ink-3); margin-bottom:2rem; flex-wrap:wrap; }
.crumbs a:hover{ color:var(--c-ink); }
.crumbs li:not(:last-child)::after{ content:"／"; margin-left:.75rem; opacity:.6; }
.crumbs ol,.crumbs{ display:flex; }

/* ---------- 17. Company ---------- */
.profile-table th,.profile-table td{
  padding:1.35rem 0; border-bottom:1px solid var(--c-rule);
  text-align:left; vertical-align:top; font-size:.9375rem; line-height:1.95;
}
.profile-table th{
  width:11em; font-weight:400; color:var(--c-ink-3); letter-spacing:.12em; font-size:.875rem;
  padding-right:1.5rem;
}
.profile-table tr:first-child th,.profile-table tr:first-child td{ border-top:1px solid var(--c-rule); }

.history{ border-left:1px solid var(--c-rule); padding-left:clamp(1.5rem,3vw,2.5rem); }
.history li{ position:relative; padding-bottom:2.35rem; }
.history li::before{
  content:""; position:absolute; left:calc(-1 * clamp(1.5rem,3vw,2.5rem) - 4.5px);
  top:.72em; width:8px; height:8px; background:var(--c-base); border:1px solid var(--c-indigo); border-radius:50%;
}
.history__year{ font-size:.75rem; letter-spacing:.16em; color:var(--c-indigo); font-variant-numeric:tabular-nums; }
.history__text{ margin-top:.4rem; font-size:.9375rem; line-height:1.95; }

.media-list li{ border-bottom:1px solid var(--c-rule); padding-block:1.2rem; display:flex; gap:1.5rem; flex-wrap:wrap; align-items:baseline; font-size:.9375rem; }
.media-list li:first-child{ border-top:1px solid var(--c-rule); }
.media-list .m-date{ font-size:.75rem; letter-spacing:.14em; color:var(--c-ink-3); width:6.5em; flex:none; font-variant-numeric:tabular-nums; }
.media-list .m-src{ color:var(--c-indigo); font-size:.8125rem; letter-spacing:.1em; width:11em; flex:none; }

/* ---------- 18. Contact ---------- */
.contact-split{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--c-rule); border:1px solid var(--c-rule); }
.contact-lane{ scroll-margin-top:6rem; background:var(--c-paper); padding:clamp(2rem,4.5vw,3.5rem); display:flex; flex-direction:column; }
.contact-lane--senior{ background:#FBF8F0; }
.lane__for{
  display:inline-flex; align-items:center; gap:.6em; align-self:flex-start;
  font-size:.75rem; letter-spacing:.14em; padding:.45rem 1rem; border-radius:1px;
  background:var(--c-indigo); color:#fff;
}
.lane__for--clay{ background:var(--c-clay); }
.lane__title{ font-family:var(--f-mincho); font-size:clamp(1.35rem,2.8vw,1.85rem); letter-spacing:.09em; line-height:1.6; margin-top:1.5rem; }
.lane__text{ margin-top:1.1rem; color:var(--c-ink-2); font-size:.9375rem; line-height:2; }

/* はじめての方への約束（旧・電話ブロックの位置） */
.assure{
  margin-top:2rem; padding:clamp(1.5rem,2.8vw,2rem) clamp(1.25rem,2.4vw,1.75rem);
  background:#fff; border:2px solid var(--c-clay); border-radius:2px;
}
.assure__title{
  font-family:var(--f-mincho); font-size:1.15rem; letter-spacing:.1em;
  color:var(--c-clay); padding-bottom:.9rem; margin-bottom:1.1rem;
  border-bottom:1px solid rgba(168,115,74,.28);
}
.assure__list{ display:grid; gap:.9rem; }
.assure__list li{
  position:relative; padding-left:1.9rem;
  font-size:1.0625rem; line-height:1.75; letter-spacing:.03em; color:var(--c-ink);
}
.assure__list li::before{
  content:""; position:absolute; left:0; top:.42em;
  width:1.15rem; height:.6rem; border-left:2px solid var(--c-clay);
  border-bottom:2px solid var(--c-clay); transform:rotate(-45deg);
}

.senior-choices{ margin-top:1.75rem; display:grid; gap:.85rem; }
.choice{
  display:flex; align-items:center; gap:1.15rem; padding:1.15rem 1.35rem;
  background:#fff; border:1px solid var(--c-rule-2); border-radius:2px;
  font-size:1.0625rem; letter-spacing:.04em; transition:all .35s var(--ease);
}
.choice:hover{ border-color:var(--c-clay); background:#FFFDF8; transform:translateX(4px); }
.choice__no{
  width:2.1rem; height:2.1rem; flex:none; border-radius:50%; background:var(--c-clay); color:#fff;
  display:grid; place-items:center; font-size:.9375rem; font-family:var(--f-mincho);
}
.choice__arrow{ margin-left:auto; color:var(--c-clay); }

/* form */
.form{ margin-top:2rem; display:grid; gap:1.65rem; }
.field label{ display:block; font-size:.875rem; letter-spacing:.1em; margin-bottom:.65rem; color:var(--c-ink); }
.req{ font-size:.625rem; letter-spacing:.1em; color:#fff; background:var(--c-indigo); padding:.2rem .5rem; margin-left:.6em; border-radius:1px; vertical-align:.12em; }
.opt{ font-size:.625rem; letter-spacing:.1em; color:var(--c-ink-3); border:1px solid var(--c-rule-2); padding:.2rem .5rem; margin-left:.6em; border-radius:1px; vertical-align:.12em; }
.field input,.field select,.field textarea{
  width:100%; font:inherit; font-size:1rem; padding:.95rem 1.05rem;
  background:#fff; border:1px solid var(--c-rule-2); border-radius:2px; color:var(--c-ink);
  transition:border-color .3s, box-shadow .3s;
}
.field textarea{ min-height:11rem; resize:vertical; line-height:1.85; }
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none; border-color:var(--c-indigo); box-shadow:0 0 0 3px rgba(30,45,74,.11);
}
.field__help{ margin-top:.55rem; font-size:.8125rem; color:var(--c-ink-3); line-height:1.75; }
.consent{ display:flex; gap:.85rem; align-items:flex-start; font-size:.875rem; line-height:1.85; color:var(--c-ink-2); }
.consent input{ width:1.15rem; height:1.15rem; margin-top:.35rem; flex:none; accent-color:var(--c-indigo); }
.consent a{ color:var(--c-indigo); text-decoration:underline; text-underline-offset:.25em; }
.form-note{
  margin-top:.5rem; padding:1rem 1.15rem; background:rgba(30,45,74,.05);
  border-left:2px solid var(--c-indigo); font-size:.8125rem; line-height:1.85; color:var(--c-ink-2);
}

.faq{ border-top:1px solid var(--c-rule); }
.faq__item{ border-bottom:1px solid var(--c-rule); }
.faq__q{
  width:100%; text-align:left; padding:1.5rem 3rem 1.5rem 0; position:relative;
  font-size:1rem; letter-spacing:.06em; line-height:1.8;
}
.faq__q::before,.faq__q::after{
  content:""; position:absolute; right:.35rem; top:50%; background:var(--c-indigo);
  transition:transform .4s var(--ease);
}
.faq__q::before{ width:14px; height:1.5px; transform:translateY(-50%); }
.faq__q::after{ width:1.5px; height:14px; transform:translate(6.25px,-50%); }
.faq__q[aria-expanded="true"]::after{ transform:translate(6.25px,-50%) scaleY(0); }
.faq__a{ display:none; padding:0 3rem 1.75rem 0; font-size:.9375rem; line-height:2; color:var(--c-ink-2); }
.faq__q[aria-expanded="true"] + .faq__a{ display:block; }

/* ---------- 19. Footer ---------- */
.site-footer{ background:var(--c-ink); color:rgba(255,255,255,.72); padding-top:clamp(3.5rem,7vw,6rem); }
.footer-top{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1fr; gap:clamp(2rem,4vw,3.5rem); padding-bottom:clamp(3rem,5vw,4.5rem); }
.footer-brand .brand__name{ color:#fff; }
.footer-brand .brand__name small{ color:rgba(255,255,255,.5); }
.footer-brand__addr{ margin-top:1.5rem; font-size:.8125rem; line-height:2; color:rgba(255,255,255,.62); font-style:normal; }
.footer-brand__label{ display:block; font-size:.6875rem; letter-spacing:.2em; color:rgba(255,255,255,.45); margin-bottom:.35rem; }
.footer-brand__tel{ margin-top:1rem; font-family:var(--f-mincho); font-size:1.35rem; letter-spacing:.06em; color:#fff; }
.footer-col h3{ font-size:.6875rem; letter-spacing:.2em; color:rgba(255,255,255,.45); margin-bottom:1.35rem; font-weight:400; }
.footer-col li + li{ margin-top:.85rem; }
.footer-col a{ font-size:.875rem; letter-spacing:.06em; color:rgba(255,255,255,.78); transition:color .3s; }
.footer-col a:hover{ color:#fff; }
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.14); padding-block:1.75rem;
  display:flex; justify-content:space-between; gap:1.5rem; flex-wrap:wrap;
  font-size:.75rem; letter-spacing:.08em; color:rgba(255,255,255,.5);
}
.footer-bottom ul{ display:flex; gap:1.5rem; flex-wrap:wrap; }

/* ---------- 20. Responsive ---------- */
@media (max-width:1000px){
  .services{ grid-template-columns:1fr; }
  .philo{ grid-template-columns:1fr; gap:2.75rem; }
  .philo__visual{ max-width:420px; }
  .cta__routes{ grid-template-columns:1fr; }
  .trust-grid{ grid-template-columns:repeat(2,1fr); }
  .contact-split{ grid-template-columns:1fr; }
  .footer-top{ grid-template-columns:1fr 1fr; }
}
@media (max-width:820px){
  :root{ --fs-body:1.0625rem; }
  .nav-toggle{ display:block; }
  .gnav{
    position:fixed; inset:0; z-index:110;
    background:var(--c-base); flex-direction:column; align-items:flex-start;
    justify-content:center; gap:0; padding:5rem var(--gutter) 3rem;
    transform:translateY(-100%); transition:transform .6s var(--ease);
    overflow-y:auto;
  }
  .gnav.is-open{ transform:none; }
  .gnav a{
    font-family:var(--f-mincho); font-size:1.4rem; letter-spacing:.14em;
    padding-block:1.05rem; width:100%; border-bottom:1px solid var(--c-rule);
  }
  .gnav a::after{ display:none; }
  .btn-contact{ margin-top:2rem; border-bottom:0 !important; width:auto; padding:1.1rem 2rem; font-size:.9375rem; }
  .work{ grid-column:span 12; }
  .work--offset{ margin-top:0; }
  .news-item{ grid-template-columns:1fr; gap:.45rem; padding-block:1.25rem; }
  .hero__en{ display:none; }
  .hero__copy{ letter-spacing:.05em; }
  .philo__visual .stamp{ right:-.5rem; bottom:-.75rem; }
  .hero__sub{ font-size:.9375rem; line-height:1.95; }
  .hero__inner{ padding-top:7rem; }
}
@media (max-width:560px){
  .trust-grid{ grid-template-columns:1fr; }
  .footer-top{ grid-template-columns:1fr; }
  .profile-table th{ width:auto; display:block; border-bottom:0; padding-bottom:.35rem; }
  .profile-table td{ display:block; padding-top:0; }
  .profile-table tr:first-child td{ border-top:0; }
  .metrics{ gap:1.35rem 2rem; }
  .media-list li{ gap:.5rem 1.25rem; }
  .media-list .m-src{ width:auto; }
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
  .rv{ opacity:1; transform:none; }
  .hero__copy span i{ transform:none; }
  .hero__sub,.hero__en{ opacity:1; }
}

@media print{
  .site-header,.scroll-cue,.cta,.nav-toggle{ display:none !important; }
  body{ background:#fff; }
  body::before{ display:none; }
}

/* ---------- 21. ブランドマーク / 落款 ---------- */
.brand__mark .accent{ stroke:var(--mark-accent,#1E2D4A); }
.site-footer .brand__mark{ --mark-accent:#8FA0C0; color:#fff; }
.stamp{ filter:drop-shadow(0 6px 20px rgba(44,44,44,.18)); }

/* 見出し内の縦組みアクセント（PCのみ） */
.vertical-note{
  writing-mode:vertical-rl; font-family:var(--f-mincho);
  letter-spacing:.32em; font-size:.8125rem; color:var(--c-ink-3);
}
@media (max-width:820px){ .vertical-note{ writing-mode:horizontal-tb; letter-spacing:.16em; } }

/* 2カラム（企業情報など） */
.split{ display:grid; grid-template-columns:minmax(0,15rem) minmax(0,1fr); gap:clamp(1.75rem,4vw,4.5rem); align-items:start; }
.split__head .sec-title{ margin-bottom:.75rem; }
@media (max-width:820px){ .split{ grid-template-columns:1fr; gap:1.75rem; } }

/* 情報ボックス */
.note-box{
  background:var(--c-paper); border:1px solid var(--c-rule);
  padding:clamp(1.5rem,3vw,2.25rem); font-size:.9375rem; line-height:2; color:var(--c-ink-2);
}
.note-box strong{ color:var(--c-ink); }

/* 隣接ページ送り */
.pager{ display:flex; justify-content:space-between; gap:1.5rem; flex-wrap:wrap; border-top:1px solid var(--c-rule); padding-top:2rem; margin-top:clamp(3rem,6vw,5rem); }
.pager a{ font-size:.875rem; letter-spacing:.1em; color:var(--c-ink-2); display:inline-flex; gap:.7em; align-items:center; }
.pager a:hover{ color:var(--c-indigo); }

/* ---------- 22. Works グリッド幅ユーティリティ ---------- */
.work--c4{ grid-column:span 4; }
.work--c5{ grid-column:span 5; }
.work--c7{ grid-column:span 7; }
.work--c8{ grid-column:span 8; }
@media (max-width:820px){
  .work--c4,.work--c5,.work--c7,.work--c8{ grid-column:span 12; }
}

/* ---------- 23. 実績詳細 ---------- */
.ba{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(1rem,2.5vw,2rem); }
.ba figcaption{ margin-top:.85rem; font-size:.8125rem; letter-spacing:.12em; color:var(--c-ink-3); }
.ba .lbl{ display:inline-block; font-size:.6875rem; letter-spacing:.16em; padding:.25rem .65rem; border:1px solid var(--c-rule-2); margin-right:.7em; color:var(--c-ink-2); }
.ba .lbl--after{ background:var(--c-indigo); border-color:var(--c-indigo); color:#fff; }
@media (max-width:640px){ .ba{ grid-template-columns:1fr; } }

.metrics-band{ display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--c-rule); border-block:1px solid var(--c-rule); }
.metrics-band .metric{ background:var(--c-base); padding:clamp(1.5rem,3vw,2.4rem) 1.25rem; margin:0; }
.metrics-band .metric__val{ margin:0; }
@media (max-width:820px){ .metrics-band{ grid-template-columns:repeat(2,1fr); } }

/* ---------- 24. 読みもの一覧（1カラム） ---------- */
.journal{ max-width:820px; margin-inline:auto; }
.journal__item{ display:block; padding-bottom:clamp(3rem,6vw,4.75rem); margin-bottom:clamp(3rem,6vw,4.75rem); border-bottom:1px solid var(--c-rule); }
.journal__item:last-of-type{ border-bottom:0; margin-bottom:0; }
.journal__fig{ overflow:hidden; }
.journal__head{ display:flex; align-items:center; gap:1rem; flex-wrap:wrap; margin-top:1.75rem; }
.journal__date{ font-size:.8125rem; letter-spacing:.14em; color:var(--c-ink-3); font-variant-numeric:tabular-nums; }
.journal__title{
  font-family:var(--f-mincho); font-size:clamp(1.35rem,3vw,1.95rem);
  line-height:1.72; letter-spacing:.08em; margin-top:1rem; transition:color .4s var(--ease);
}
.journal__item:hover .journal__title{ color:var(--c-indigo); }
.journal__excerpt{ margin-top:1.15rem; font-size:1rem; line-height:2.05; color:var(--c-ink-2); }
.journal__more{ margin-top:1.5rem; display:inline-flex; align-items:center; gap:.7em; font-size:.8125rem; letter-spacing:.12em; color:var(--c-indigo); }
.journal__item:hover .journal__more svg{ transform:translateX(5px); }
.journal__more svg{ transition:transform .4s var(--ease); }

/* ---------- 25. シニア向け・大きな選択肢 ---------- */
.choice{ cursor:pointer; }
.choice input{ position:absolute; opacity:0; width:1px; height:1px; }
.choice:has(input:checked){ border-color:var(--c-clay); background:#FFF9EF; box-shadow:inset 0 0 0 1px var(--c-clay); }
.choice:has(input:focus-visible){ outline:2px solid var(--c-indigo); outline-offset:3px; }
.choice__no{ transition:transform .3s var(--ease); }
.choice:has(input:checked) .choice__no{ transform:scale(1.08); }

/* シニア向けフォームは一回り大きく */
.form--senior .field label{ font-size:1rem; letter-spacing:.06em; }
.form--senior .field input,
.form--senior .field textarea{ font-size:1.125rem; padding:1.15rem 1.15rem; }
.form--senior .btn{ font-size:1.0625rem; padding:1.35rem 2.4rem; justify-content:center; }
.form--senior .btn--primary{ background:var(--c-clay); border-color:var(--c-clay); }
.form--senior .btn--primary:hover{ background:#96663F; border-color:#96663F; }

.status-note{
  margin-top:1rem; padding:1rem 1.15rem; background:#FFF4E2;
  border-left:3px solid var(--c-clay); font-size:.9375rem; line-height:1.85; color:var(--c-ink);
}


/* ---------- 26. 画像なしの記事一覧（写真を入れると自動で元のレイアウトに戻ります） ---------- */
.journal__item:not(:has(.journal__fig)) .journal__head{ margin-top:0; }
.journal__item:not(:has(.journal__fig)){
  padding-bottom:clamp(2.25rem,4.5vw,3.25rem); margin-bottom:clamp(2.25rem,4.5vw,3.25rem);
}


/* ---------- 27. 送信完了メッセージ ---------- */
.form-thanks{
  margin-top:2rem; padding:clamp(1.75rem,3.2vw,2.5rem);
  background:#fff; border:2px solid var(--c-moss); border-radius:2px;
}
.form-thanks:focus{ outline:none; }
.form-thanks__title{
  font-family:var(--f-mincho); font-size:clamp(1.3rem,2.6vw,1.6rem);
  letter-spacing:.1em; color:var(--c-moss); margin-bottom:1rem;
  display:flex; align-items:center; gap:.7em;
}
.form-thanks__title::before{
  content:""; flex:none; width:1.35rem; height:.72rem;
  border-left:2px solid var(--c-moss); border-bottom:2px solid var(--c-moss);
  transform:rotate(-45deg) translateY(-.15em);
}
.form-thanks__text{ font-size:1rem; line-height:2; color:var(--c-ink-2); }


/* ---------- 28. 実績写真 ---------- */
.work-hero{ margin:0; overflow:hidden; background:var(--c-base-deep); }
.work-hero img{ width:100%; height:auto; }
.article__body figure img{ width:100%; height:auto; background:var(--c-base-deep); }
.ba img{ width:100%; height:auto; }
.credit{
  margin-top:2.5rem !important; padding-top:1.35rem; border-top:1px solid var(--c-rule);
  font-size:.8125rem; line-height:1.9; color:var(--c-ink-3); letter-spacing:.04em;
}
.credit a{ color:var(--c-indigo); text-decoration:underline; text-underline-offset:.25em; }
.credit a:hover{ text-decoration-thickness:2px; }

/* 実績カードの写真 */
.work__fig img{
  width:100%; display:block; object-fit:cover; object-position:center 42%;
  transition:transform 1.2s var(--ease);
}
.work__fig--169 img{ aspect-ratio:16/9; }
.work__fig--32  img{ aspect-ratio:3/2; }
.work:hover .work__fig img{ transform:scale(1.04); }
@media (max-width:640px){
  .work__fig--169 img{ aspect-ratio:3/2; }
}


/* ---------- 29. 代表者経歴 ---------- */
.career-track__list{
  display:grid; gap:1.1rem;
  font-size:.9375rem; line-height:1.95; color:var(--c-ink);
}
.career-track__list > li{ padding-left:1.1rem; position:relative; }
.career-track__list > li::before{
  content:""; position:absolute; left:0; top:.75em;
  width:5px; height:5px; border-radius:50%; background:var(--c-indigo);
}
.career-track__sub{
  margin-top:.6rem; padding-left:1.4rem; display:grid; gap:.5rem;
  font-size:.875rem; color:var(--c-ink-2);
}
.career-track__sub li{ position:relative; }
.career-track__sub li::before{
  content:"→"; position:absolute; left:-1.4rem; color:var(--c-ink-3);
}
.career-track__list a{ color:var(--c-indigo); text-decoration:underline; text-underline-offset:.25em; font-size:.875rem; }
.career-track__list a:hover{ text-decoration-thickness:2px; }

/* ---------- 30. 事業カードの写真 ---------- */
.svc__fig{ overflow:hidden; aspect-ratio:4/3; background:var(--c-base-deep); }
.svc__fig img{
  width:100%; height:100%; object-fit:cover; display:block;
  transition:transform 1.2s var(--ease);
}
.svc:hover .svc__fig img{ transform:scale(1.05); }

/* ---------- 31. 事業カードのバッジ ---------- */
.svc__fig{ position:relative; }
.svc__badge{
  position:absolute; z-index:2; top:1rem; right:1rem;
  background:rgba(247,246,242,.94); color:var(--c-indigo);
  font-size:.6875rem; letter-spacing:.14em; padding:.42rem .85rem; border-radius:1px;
  font-weight:700;
}

/* ---------- 32. 代表ポートレート（実写） ---------- */
.ph > img{
  position:relative; z-index:1;
  width:100%; height:100%; object-fit:cover; display:block;
}
.philo__visual--sm{ max-width:300px; }
@media (max-width:1000px){
  .philo__visual--sm{ max-width:240px; }
}

/* ---------- 33. 代表メッセージの本文サイズ調整 ---------- */
.philo__body--sm p{ font-size:.9375rem; line-height:1.95; }

/* ---------- 34. 署名の2段組み（氏名／英字） ---------- */
.philo__sign--stack{ display:flex; flex-direction:column; gap:.4rem; }
.philo__sign--stack strong{ margin-left:0; font-size:.8125rem; letter-spacing:.18em; color:var(--c-ink-3); font-weight:400; text-transform:uppercase; }
