:root{
  --ink:#201E1A;
  --ink-soft:#514E45;
  --ink-faint:#84806F;
  --paper:#EFF1EA;
  --surface:#F8F9F3;
  --line:#DBDCCF;
  --indigo:#1F394F;
  --indigo-deep:#152537;
  --indigo-mid:#2C4C67;
  --indigo-tint:#DEE6EA;
  --moss:#53664A;
  --moss-tint:#E0E6D8;
  --clay:#9C5233;
  --clay-tint:#EFDCCE;
  --paper-on-dark:#EDE9DD;
  --font-display:"Shippori Mincho","Hiragino Mincho ProN","YuMincho","Yu Mincho",serif;
  --font-body:"Hiragino Kaku Gothic ProN","Yu Gothic","Meiryo",sans-serif;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  line-height:1.8;
  -webkit-font-smoothing:antialiased;
}
img,svg{display:block;max-width:100%;}
a{color:inherit;}
.wrap{max-width:1180px;margin:0 auto;padding:0 32px;}
@media (max-width:640px){.wrap{padding:0 20px;}}

/* ---- nav ---- */
header.site-nav{
  position:sticky;top:0;z-index:40;
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);
}
.nav-row{display:flex;align-items:center;justify-content:space-between;height:76px;}
.logo{font-family:var(--font-display);font-size:1.28rem;font-weight:600;letter-spacing:.04em;color:var(--ink);text-decoration:none;}
.logo span{display:block;font-family:var(--font-body);font-size:.62rem;letter-spacing:.22em;color:var(--ink-faint);margin-top:2px;text-transform:uppercase;}
nav.nav-links{display:flex;align-items:center;gap:6px;}
nav.nav-links a{
  font-size:.85rem;color:var(--ink-soft);text-decoration:none;
  padding:9px 14px;border-radius:3px;position:relative;
}
nav.nav-links a:not(.cta):hover,nav.nav-links a.is-active{color:var(--ink);}
nav.nav-links a:not(.cta)::after{
  content:"";position:absolute;left:14px;right:14px;bottom:6px;height:1px;
  background:var(--indigo-mid);transform:scaleX(0);transform-origin:left;
  transition:transform .25s ease;
}
nav.nav-links a:not(.cta):hover::after,nav.nav-links a.is-active::after{transform:scaleX(1);}
nav.nav-links a.cta{
  background:var(--indigo);color:var(--paper-on-dark);font-weight:600;
  padding:10px 20px;margin-left:6px;
}
nav.nav-links a.cta:hover{background:var(--indigo-deep);}
@media (max-width:900px){
  nav.nav-links a:not(.cta){display:none;}
  nav.nav-links{gap:10px;}
}

/* ---- page header (non-home pages) ---- */
.page-head{padding:64px 0 40px;border-bottom:1px solid var(--line);}
.page-head .eyebrow{margin-bottom:16px;}
.page-head h1{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.8rem,4vw,2.6rem);margin:0 0 16px;text-wrap:balance;
}
.page-head p{font-size:1rem;color:var(--ink-soft);max-width:56ch;margin:0;}
.breadcrumb{font-size:.78rem;color:var(--ink-faint);margin-bottom:18px;}
.breadcrumb a{text-decoration:none;color:var(--ink-faint);}
.breadcrumb a:hover{color:var(--indigo-mid);}

/* ---- hero (home) ---- */
.hero{position:relative;overflow:hidden;padding:88px 0 64px;}
.hero-blob{
  position:absolute;inset:-10% -10% -30% -10%;z-index:0;pointer-events:none;
  background:
    radial-gradient(ellipse 46% 40% at 22% 18%, rgba(31,57,79,.30), transparent 62%),
    radial-gradient(ellipse 40% 46% at 78% 30%, rgba(83,102,74,.22), transparent 60%),
    radial-gradient(ellipse 50% 40% at 55% 85%, rgba(156,82,51,.14), transparent 65%);
  filter:blur(46px);
}
.hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;}
@media (max-width:900px){.hero-inner{grid-template-columns:1fr;}}
.eyebrow{
  font-size:.72rem;letter-spacing:.2em;color:var(--indigo-mid);font-weight:700;
  text-transform:uppercase;margin-bottom:18px;display:flex;align-items:center;gap:10px;
}
.eyebrow::before{content:"";width:24px;height:1px;background:var(--indigo-mid);}
h1.hero-title{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(2.1rem,4.6vw,3.6rem);line-height:1.42;letter-spacing:.01em;
  margin:0 0 22px;text-wrap:balance;color:var(--ink);
}
.hero-sub{font-size:1.02rem;color:var(--ink-soft);max-width:44ch;margin:0 0 32px;}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;}
.btn{
  display:inline-flex;align-items:center;gap:8px;
  padding:14px 26px;border-radius:2px;font-size:.9rem;font-weight:600;
  text-decoration:none;transition:transform .18s ease,background .18s ease,color .18s ease;
  border:1px solid transparent;cursor:pointer;
}
.btn-primary{background:var(--indigo);color:var(--paper-on-dark);}
.btn-primary:hover{background:var(--indigo-deep);transform:translateY(-1px);}
.btn-ghost{border-color:var(--ink);color:var(--ink);background:transparent;}
.btn-ghost:hover{background:var(--ink);color:var(--paper);}

/* ---- photo placeholder ---- */
.photo-slot{
  position:relative;border-radius:2px;overflow:hidden;
  background:repeating-linear-gradient(135deg, var(--indigo-tint), var(--indigo-tint) 3px, var(--surface) 3px, var(--surface) 18px);
  border:1px solid var(--line);
}
.photo-slot.h-tall{aspect-ratio:4/5;}
.photo-slot.h-wide{aspect-ratio:16/10;}
.photo-slot.h-sq{aspect-ratio:1/1;}
.photo-slot.h-bar{aspect-ratio:21/6;}
.photo-slot img{width:100%;height:100%;object-fit:cover;display:block;}
.photo-slot.has-image{background:none;}
.photo-cap{
  position:absolute;left:10px;bottom:10px;
  background:rgba(32,30,26,.78);color:var(--paper-on-dark);
  font-size:.68rem;letter-spacing:.04em;padding:5px 10px;border-radius:2px;
}

/* ---- section shells ---- */
section{padding:76px 0;}
@media (max-width:640px){section{padding:52px 0;}}
h2.sec-title{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.5rem,2.6vw,2rem);margin:0 0 14px;text-wrap:balance;
}
h3.sub-title{
  font-family:var(--font-display);font-weight:600;font-size:1.3rem;margin:0 0 12px;
}
p.sec-lead{font-size:.98rem;color:var(--ink-soft);max-width:56ch;margin:0 0 44px;}
.sec-head-row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:44px;}
.sec-head-row p.sec-lead{margin-bottom:0;}
.prose{max-width:68ch;}
.prose p{font-size:.94rem;color:var(--ink-soft);margin:0 0 16px;}

/* ---- stance band ---- */
.stance{background:var(--indigo);color:var(--paper-on-dark);}
.stance .wrap{text-align:center;padding:20px 32px;}
.stance p{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.25rem,2.6vw,1.7rem);line-height:1.9;
  max-width:34ch;margin:0 auto;text-wrap:balance;
}

/* ---- business cards ---- */
.biz-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.biz-grid.cols-3{grid-template-columns:repeat(3,1fr);}
@media (max-width:1000px){.biz-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:640px){.biz-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:420px){.biz-grid{grid-template-columns:1fr;}}
.biz-card{
  background:var(--surface);padding:26px 20px;transition:background .2s ease;
  display:flex;flex-direction:column;gap:10px;
}
.biz-card:hover{background:var(--paper);}
.biz-num{font-size:.7rem;letter-spacing:.1em;color:var(--ink-faint);font-variant-numeric:tabular-nums;}
.biz-card h3{font-family:var(--font-display);font-size:1rem;margin:0;font-weight:600;line-height:1.5;}
.biz-card p{font-size:.8rem;color:var(--ink-soft);margin:0;flex:1;line-height:1.7;}
.biz-card .biz-link{font-size:.75rem;color:var(--indigo-mid);font-weight:600;text-decoration:none;}
.biz-card.is-muted{opacity:.68;}
.biz-card.is-muted h3{font-size:.94rem;}
.biz-card .biz-note{font-size:.68rem;color:var(--ink-faint);margin:0;line-height:1.6;}
.biz-card.is-active{background:var(--paper);}

/* ---- FDE pillar detail blocks ---- */
.pillar{
  display:grid;grid-template-columns:.85fr 1.15fr;gap:48px;align-items:center;
  padding:56px 0;border-bottom:1px solid var(--line);
}
.pillar:last-child{border-bottom:none;}
.pillar:nth-child(even){grid-template-columns:1.15fr .85fr;}
.pillar:nth-child(even) .pillar-media{order:2;}
@media (max-width:820px){
  .pillar,.pillar:nth-child(even){grid-template-columns:1fr;}
  .pillar:nth-child(even) .pillar-media{order:0;}
}
.pillar-num{font-family:var(--font-display);font-size:.85rem;color:var(--indigo-mid);margin-bottom:10px;}
.pillar h3{font-family:var(--font-display);font-size:1.4rem;font-weight:600;margin:0 0 14px;text-wrap:balance;}
.pillar p{font-size:.92rem;color:var(--ink-soft);margin:0 0 12px;}
.pillar ul{margin:14px 0 0;padding-left:18px;font-size:.86rem;color:var(--ink-soft);}
.pillar li{margin-bottom:6px;}

/* ---- case feature / case list ---- */
.case-feature{
  display:grid;grid-template-columns:.9fr 1.1fr;gap:52px;align-items:center;
  background:var(--indigo-deep);color:var(--paper-on-dark);border-radius:2px;
  padding:48px;
}
@media (max-width:860px){.case-feature{grid-template-columns:1fr;padding:32px;}}
.case-feature .eyebrow{color:#9FB6C6;}
.case-feature .eyebrow::before{background:#9FB6C6;}
.case-feature h3{
  font-family:var(--font-display);font-weight:600;
  font-size:clamp(1.3rem,2.4vw,1.65rem);margin:0 0 18px;text-wrap:balance;
}
.case-feature dl{margin:0 0 26px;display:flex;flex-direction:column;gap:12px;}
.case-feature dt{font-size:.7rem;letter-spacing:.1em;color:#9FB6C6;text-transform:uppercase;margin-bottom:3px;}
.case-feature dd{margin:0;font-size:.9rem;color:#E6E9E3;line-height:1.75;}
.case-feature .btn-ghost{border-color:#8FA6B6;color:#E6E9E3;}
.case-feature .btn-ghost:hover{background:#E6E9E3;color:var(--indigo-deep);}
.anon-badge{
  display:inline-block;font-size:.68rem;letter-spacing:.05em;color:#C9D3C0;
  border:1px solid #3E5567;padding:3px 10px;border-radius:20px;margin-bottom:16px;
}
.anon-badge.on-light{color:var(--moss);border-color:var(--moss);}

.case-detail dl{display:flex;flex-direction:column;gap:22px;margin:0 0 32px;}
.case-detail dt{font-size:.72rem;letter-spacing:.1em;color:var(--indigo-mid);text-transform:uppercase;font-weight:700;margin-bottom:6px;}
.case-detail dd{margin:0;font-size:.94rem;color:var(--ink-soft);line-height:1.85;}

/* ---- team ---- */
.team-list{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:8px;}
.profile-row{
  background:var(--surface);display:grid;grid-template-columns:250px 1fr;gap:36px;
  padding:36px 34px;transition:background .2s ease;
}
.profile-row:hover{background:var(--paper);}
@media (max-width:760px){.profile-row{grid-template-columns:1fr;gap:16px;padding:28px 24px;}}
.p-num{font-size:.72rem;color:var(--ink-faint);font-variant-numeric:tabular-nums;margin-bottom:10px;}
.p-role{font-size:.7rem;letter-spacing:.09em;color:var(--indigo-mid);text-transform:uppercase;font-weight:700;margin-bottom:8px;}
.p-name{font-family:var(--font-display);font-size:1.32rem;font-weight:600;margin:0;}
.career-pills{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px;}
.career-pill{font-size:.72rem;background:var(--paper);border:1px solid var(--line);padding:4px 11px;border-radius:20px;color:var(--ink-soft);}
.profile-row p.bio{font-size:.87rem;color:var(--ink-soft);margin:0;line-height:1.85;}
.badge-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px;}
.badge{font-size:.72rem;background:var(--indigo-tint);color:var(--indigo);padding:4px 11px;border-radius:20px;font-weight:600;}

/* ---- news ---- */
.news-list{border-top:1px solid var(--line);}
.news-row{
  display:flex;gap:24px;align-items:baseline;padding:22px 0;
  border-bottom:1px solid var(--line);font-size:.9rem;text-decoration:none;color:inherit;
}
a.news-row:hover .news-title{color:var(--indigo-mid);}
.news-date{color:var(--ink-faint);font-variant-numeric:tabular-nums;flex:0 0 96px;font-size:.8rem;}
.news-tag{
  flex:0 0 auto;font-size:.68rem;color:var(--moss);background:var(--moss-tint);
  padding:3px 9px;border-radius:2px;font-weight:700;
}
.news-title{color:var(--ink-soft);transition:color .15s ease;}

/* ---- company info table ---- */
.info-table{width:100%;border-collapse:collapse;margin:24px 0;}
.info-table tr{border-bottom:1px solid var(--line);}
.info-table tr:first-child{border-top:1px solid var(--line);}
.info-table th{
  text-align:left;padding:16px 20px 16px 0;width:220px;vertical-align:top;
  font-size:.82rem;color:var(--ink-faint);font-weight:600;white-space:nowrap;
}
.info-table td{padding:16px 0;font-size:.92rem;color:var(--ink);vertical-align:top;}
@media (max-width:600px){
  .info-table th{width:auto;display:block;padding-bottom:4px;}
  .info-table td{display:block;padding-top:0;padding-bottom:16px;}
}

/* ---- quote / disclaimer blocks ---- */
.article-quote{
  border-left:3px solid var(--indigo-mid);background:var(--indigo-tint);
  padding:18px 24px;margin:28px 0;border-radius:0 2px 2px 0;
}
.article-quote p{margin:0;font-size:.9rem;color:var(--indigo);line-height:1.85;}
.disclaimer{
  border:1px solid var(--line);background:var(--surface);
  padding:22px 24px;margin:28px 0;border-radius:2px;
}
.disclaimer .d-label{font-size:.7rem;letter-spacing:.08em;color:var(--clay);text-transform:uppercase;font-weight:700;margin-bottom:8px;display:block;}
.disclaimer p{margin:0;font-size:.86rem;color:var(--ink-soft);line-height:1.85;}

/* ---- future-scope note (business/others) ---- */
.scope-note{
  border:1px dashed var(--line);background:transparent;
  padding:18px 22px;margin:0 0 40px;border-radius:2px;
  font-size:.86rem;color:var(--ink-faint);
}
.scope-note strong{color:var(--ink-soft);}

/* ---- contact form (static) ---- */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start;}
@media (max-width:860px){.contact-grid{grid-template-columns:1fr;}}
.form-field{margin-bottom:20px;}
.form-field label{display:block;font-size:.8rem;color:var(--ink-soft);margin-bottom:7px;font-weight:600;}
.form-field input,.form-field select,.form-field textarea{
  width:100%;padding:12px 14px;border:1px solid var(--line);border-radius:2px;
  background:var(--surface);color:var(--ink);font-family:var(--font-body);font-size:.9rem;
}
.form-field textarea{min-height:120px;resize:vertical;}
.form-note{font-size:.78rem;color:var(--ink-faint);margin-top:20px;}
.contact-info dt{font-size:.72rem;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase;margin-bottom:4px;}
.contact-info dd{margin:0 0 24px;font-size:.94rem;color:var(--ink);}

/* ---- CTA footer ---- */
.cta-band{background:var(--ink);color:var(--paper-on-dark);text-align:center;}
.cta-band h2{
  font-family:var(--font-display);font-weight:600;font-size:clamp(1.6rem,3.4vw,2.3rem);
  margin:0 0 26px;text-wrap:balance;
}
footer.site-footer{background:var(--ink);color:#B7B3A5;padding:40px 0 34px;border-top:1px solid #38352D;}
.foot-grid{display:flex;justify-content:space-between;gap:32px;flex-wrap:wrap;font-size:.82rem;}
.foot-brand .logo{color:var(--paper-on-dark);}
.foot-brand span{color:#8B8778;}
.foot-meta p{margin:4px 0;color:#948F7F;}
.foot-links{display:flex;gap:22px;flex-wrap:wrap;}
.foot-links a{color:#B7B3A5;text-decoration:none;font-size:.82rem;}
.foot-links a:hover{color:var(--paper-on-dark);}
.foot-copy{margin-top:28px;padding-top:20px;border-top:1px solid #38352D;font-size:.72rem;color:#726E60;}

@media (prefers-reduced-motion:no-preference){
  .reveal{animation:rise .6s cubic-bezier(.2,.7,.3,1) both;}
}
@keyframes rise{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}}
