:root{
  --bg:#ffffff;--bg-alt:#f5f7fa;--text:#1f2a3a;--muted:#5a6678;--line:#dfe4ec;
  --navy:#14325c;--navy-d:#0e2546;--accent-bg:#eef3fa;
  --radius:8px;
  --font:"Noto Sans JP","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",Meiryo,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:76px;-webkit-text-size-adjust:100%}
body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.85;letter-spacing:.02em;font-size:16px}
a{color:var(--navy)}
.container{width:min(1080px,100% - 48px);margin-inline:auto}
.sp{display:none}
p,li,dd{text-wrap:pretty}
.skip{position:absolute;left:-999px;top:8px;background:var(--navy);color:#fff;padding:8px 14px;z-index:100}
.skip:focus{left:8px}
:focus-visible{outline:2px solid var(--navy);outline-offset:3px}

/* header */
.nav{position:sticky;top:0;z-index:50;background:#fff;border-bottom:1px solid var(--line)}
.nav__inner{width:min(1080px,100% - 48px);margin:auto;height:68px;display:flex;align-items:center;gap:16px}
.nav__brand{text-decoration:none;color:var(--text);display:flex;align-items:baseline;gap:10px}
.nav__name{font-weight:700;font-size:1.1rem;letter-spacing:.08em}
.nav__sub{font-size:.75rem;color:var(--muted);letter-spacing:.12em}
.nav nav{margin-left:auto}
.nav__menu{display:flex;gap:4px;list-style:none;align-items:center}
.nav__menu a{text-decoration:none;color:var(--text);font-size:.9rem;padding:8px 12px;border-radius:4px}
.nav__menu a:hover{color:var(--navy);background:var(--bg-alt)}
.nav__menu .nav__cta{background:var(--navy);color:#fff;margin-left:8px;padding:8px 18px}
.nav__menu .nav__cta:hover{background:var(--navy-d);color:#fff}
.nav__toggle{display:none;margin-left:auto;background:none;border:0;width:44px;height:44px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.nav__toggle span{width:22px;height:2px;background:var(--text);transition:.25s}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;padding:13px 28px;border-radius:4px;font-weight:700;font-size:.95rem;text-decoration:none;min-height:48px;transition:background .2s,color .2s,border-color .2s}
.btn--primary{background:var(--navy);color:#fff;border:1px solid var(--navy)}
.btn--primary:hover{background:var(--navy-d)}
.btn--outline{background:#fff;color:var(--navy);border:1px solid var(--navy)}
.btn--outline:hover{background:var(--accent-bg)}

/* hero */
.hero{padding:88px 0 80px;border-bottom:1px solid var(--line)}
.hero__inner{display:grid;grid-template-columns:1.5fr 1fr;gap:56px;align-items:center}
.eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.14em;color:var(--navy);margin-bottom:14px;text-transform:uppercase}
.hero__name{font-size:clamp(2.2rem,5vw,3.2rem);font-weight:700;line-height:1.25;letter-spacing:.08em;color:var(--text)}
.hero__en{display:block;font-size:.4em;font-weight:500;color:var(--muted);letter-spacing:.2em;margin-top:6px}
.hero__catch{font-size:clamp(1.3rem,2.8vw,1.75rem);font-weight:700;color:var(--navy);margin:26px 0 18px;line-height:1.5;padding-left:16px;border-left:4px solid var(--navy)}
.hero__lead{color:var(--muted);margin-bottom:32px;max-width:620px}
.hero__cta{display:flex;gap:12px;flex-wrap:wrap}
.hero__card{border:1px solid var(--line);border-radius:var(--radius);padding:28px;background:var(--bg-alt)}
.hero__card h2{font-size:.85rem;color:var(--muted);font-weight:700;letter-spacing:.1em;margin-bottom:12px}
.roles{list-style:none}
.roles li{padding:14px 0;border-top:1px solid var(--line)}
.roles li:first-child{border-top:0}
.roles b{display:block;color:var(--text);font-size:1rem}
.roles span{font-size:.85rem;color:var(--muted)}

/* numbers */
.numbers{padding:48px 0 36px}
.numbers__grid{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--radius)}
.num{padding:24px 16px;text-align:center;border-left:1px solid var(--line)}
.num:first-child{border-left:0}
.num__v b{font-size:2.3rem;font-weight:700;color:var(--navy);font-variant-numeric:tabular-nums;line-height:1.2}
.num__v span{font-size:.95rem;font-weight:700;color:var(--navy);margin-left:3px}
.num__l{font-size:.84rem;color:var(--muted);line-height:1.6;margin-top:6px}
.numbers__note{font-size:.75rem;color:var(--muted);margin-top:12px;text-align:right}

/* sections */
.section{padding:88px 0}
.section--alt{background:var(--bg-alt);border-block:1px solid var(--line)}
.sec-head{margin-bottom:36px}
.sec-head h2,.contact h2{font-size:clamp(1.6rem,3.4vw,2rem);font-weight:700;line-height:1.4;margin-bottom:8px;color:var(--text)}
.sec-head p{color:var(--muted)}

/* tabs */
.tabs{display:flex;gap:0;overflow-x:auto;border-bottom:1px solid var(--line);margin-bottom:28px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.tab{flex:0 0 auto;background:none;border:0;border-bottom:3px solid transparent;color:var(--muted);padding:12px 18px;font:inherit;font-size:.92rem;font-weight:500;cursor:pointer;min-height:48px;margin-bottom:-1px}
.tab:hover{color:var(--navy)}
.tab[aria-selected="true"]{color:var(--navy);border-bottom-color:var(--navy);font-weight:700}
.skill-panel{display:grid;grid-template-columns:1fr 1.4fr;gap:40px;animation:fade .3s ease}
@keyframes fade{from{opacity:0}}
.skill-panel h3{font-size:1.3rem;margin-bottom:8px}
.skill-panel .desc{color:var(--muted);font-size:.95rem}
.skill-list{list-style:none;border-top:1px solid var(--line)}
.skill-list li{padding:14px 0;border-bottom:1px solid var(--line)}
.skill-list .nm{font-weight:700;display:block}
.skill-list .ev{display:block;font-size:.88rem;color:var(--muted)}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.tag{font-size:.78rem;padding:3px 10px;border-radius:3px;background:#fff;border:1px solid var(--line);color:var(--text)}
.section--alt .tag{background:#fff}

/* works */
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px}
.chip{background:#fff;border:1px solid var(--line);color:var(--text);padding:7px 16px;border-radius:999px;font:inherit;font-size:.88rem;cursor:pointer;min-height:40px}
.chip:hover{border-color:var(--navy)}
.chip[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.chip .cnt{margin-left:6px;opacity:.7;font-size:.8rem}
.works{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:start}
.work{background:#fff;border:1px solid var(--line);border-radius:var(--radius);transition:border-color .2s}
.work:hover{border-color:#b8c4d6}
.work.hide{display:none}
.work__btn{all:unset;box-sizing:border-box;display:block;width:100%;padding:24px 26px;cursor:pointer}
.work__btn:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}
.work__top{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px}
.badge{font-size:.74rem;font-weight:700;color:var(--navy);background:var(--accent-bg);padding:2px 10px;border-radius:3px}
.period{font-size:.78rem;color:var(--muted)}
.work h3{font-size:1.08rem;line-height:1.55;color:var(--text)}
.work .client{font-size:.84rem;color:var(--muted);margin:4px 0 10px}
.work .sum{font-size:.92rem;color:var(--text)}
.work .more{display:inline-flex;align-items:center;gap:8px;margin-top:14px;font-size:.85rem;font-weight:700;color:var(--navy)}
.work .more i{width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .25s}
.work.open .more i{transform:rotate(-135deg) translateY(-2px)}
.work__detail{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}
.work.open .work__detail{grid-template-rows:1fr}
.work__detail>div{overflow:hidden}
.detail{margin:0 26px 24px;border-top:1px solid var(--line)}
.detail dl{display:grid;gap:14px;padding-top:18px}
.detail dt{font-size:.78rem;font-weight:700;color:var(--navy);letter-spacing:.08em}
.detail dd{font-size:.92rem}
.detail ul{padding-left:1.2em}
.detail a{word-break:break-all}
.detail .tags{margin-top:4px}
.works__note{font-size:.78rem;color:var(--muted);margin-top:20px}

/* approach */
.flow{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:40px}
.flow li{padding:24px 20px;border-left:1px solid var(--line)}
.flow li:first-child{border-left:0}
.flow__no{font-size:.8rem;font-weight:700;color:var(--navy);letter-spacing:.1em}
.flow h3{font-size:1rem;margin:4px 0 8px}
.flow p{font-size:.86rem;color:var(--muted);line-height:1.75}
.strengths{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.card-s{border:1px solid var(--line);border-left:3px solid var(--navy);border-radius:var(--radius);padding:24px 26px;background:#fff}
.card-s h3{font-size:1.05rem;margin-bottom:6px}
.card-s p{font-size:.92rem;color:var(--muted)}

/* contact */
.contact__inner{text-align:center;max-width:720px}
.contact__inner>p{color:var(--muted)}
.contact__btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:28px}

.footer{padding:28px 0;font-size:.84rem;color:var(--muted)}
.footer .container{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.footer a{color:var(--muted);text-decoration:none}
.footer a:hover{color:var(--navy)}

/* reveal（控えめ） */
.reveal{opacity:0;transform:translateY(10px);transition:opacity .6s ease,transform .6s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}

/* responsive */
@media (max-width:960px){
  .hero__inner{grid-template-columns:1fr;gap:36px}
  .flow{grid-template-columns:1fr 1fr}
  .flow li{border-left:0;border-top:1px solid var(--line)}
  .flow li:nth-child(-n+2){border-top:0}
  .flow li:nth-child(even){border-left:1px solid var(--line)}
  .flow li:last-child{grid-column:1/-1;border-left:0}
  .skill-panel{grid-template-columns:1fr;gap:24px}
  .works{grid-template-columns:1fr}
}
@media (max-width:760px){
  .sp{display:inline}
  .container,.nav__inner{width:calc(100% - 40px)}
  .nav__toggle{display:flex}
  .nav nav{position:absolute;left:0;right:0;top:68px;margin:0}
  .nav__menu{flex-direction:column;align-items:stretch;background:#fff;border-bottom:1px solid var(--line);padding:8px 20px 16px;display:none}
  .nav__menu.open{display:flex}
  .nav__menu a{display:block;padding:14px 8px;font-size:1rem;border-bottom:1px solid var(--line);border-radius:0}
  .nav__menu .nav__cta{margin:12px 0 0;text-align:center;border-radius:4px;border-bottom:0}
  .nav__toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav__toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
  .nav__toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .hero{padding:56px 0 56px}
  .numbers__grid{grid-template-columns:1fr 1fr}
  .num:nth-child(3){border-left:0}
  .num:nth-child(n+3){border-top:1px solid var(--line)}
  .num__v b{font-size:2rem}
  .numbers__note{text-align:left}
  .section{padding:64px 0}
  .strengths{grid-template-columns:1fr}
  .btn{flex:1 1 auto}
  .work__btn{padding:20px}
  .detail{margin:0 20px 20px}
}
@media (max-width:480px){
  .flow{grid-template-columns:1fr}
  .flow li,.flow li:nth-child(even){border-left:0;border-top:1px solid var(--line)}
  .flow li:first-child{border-top:0}
  .num__l br{display:none}
}
