:root{
  --paper:#0C1116; --paper-2:#121920; --paper-3:#18212B; --ink:#E9EDF1; --ink-2:#AEB8C3; --ink-3:#6F7C8A;
  --navy:#8FB3E3; --navy-2:#B7D0F0; --line:#1F2A35; --line-2:#2E3B49; --dot:143,179,227; --on-navy:#0C1116;
  --serif:"Noto Serif JP","Hiragino Mincho ProN","Yu Mincho",serif;
  --sans:"Noto Sans JP","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;
  --mono:"JetBrains Mono","SFMono-Regular",Menlo,Consolas,monospace;
  --wm-filter:none;
}
@media (prefers-color-scheme: light){
  :root:not([data-theme="dark"]){
    --paper:#F4F6F8; --paper-2:#EAEEF2; --paper-3:#DFE5EB; --ink:#161D25; --ink-2:#48545F; --ink-3:#7A8692;
    --navy:#1D3557; --navy-2:#2B4A78; --line:#D3DAE1; --line-2:#B4BEC9; --dot:29,53,87; --on-navy:#F4F6F8; --wm-filter:invert(1);
  }
}
:root[data-theme="light"]{
  --paper:#F4F6F8; --paper-2:#EAEEF2; --paper-3:#DFE5EB; --ink:#161D25; --ink-2:#48545F; --ink-3:#7A8692;
  --navy:#1D3557; --navy-2:#2B4A78; --line:#D3DAE1; --line-2:#B4BEC9; --dot:29,53,87; --on-navy:#F4F6F8; --wm-filter:invert(1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.9;letter-spacing:.02em;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{max-width:100%}
.wrap{max-width:1120px;margin:0 auto;padding-inline:24px}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;line-height:1.5;margin:0;text-wrap:balance;letter-spacing:.01em}
p{margin:0}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--ink-3);text-transform:uppercase;font-weight:500}
.note{font-size:13px;color:var(--ink-3)}
.lead{max-width:38em;font-size:17px;color:var(--ink-2)}
.lead.s{font-size:15px}
.hstack{display:flex;gap:14px;flex-wrap:wrap;margin-top:32px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 22px;border:1px solid var(--navy);color:var(--navy);font-weight:500;font-size:15px;border-radius:2px;transition:background .2s,color .2s,transform .2s;cursor:pointer;font-family:inherit;background:transparent}
.btn.solid{background:var(--navy);color:var(--on-navy)}
.btn:hover{background:var(--navy);color:var(--on-navy)}
.btn .ar{width:14px;height:14px;transition:transform .2s}
.btn:hover .ar{transform:translateX(3px)}
:focus-visible{outline:2px solid var(--navy);outline-offset:3px}
.tl{color:var(--navy);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:8px}
.tl .ar{width:12px;height:12px;transition:transform .2s}.tl:hover .ar{transform:translateX(3px)}
svg.ar{fill:none;stroke:currentColor;stroke-width:1.6}

/* ---------- header ---------- */
.proto{font-family:var(--mono);background:var(--paper-2);border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.06em;color:var(--ink-3);padding:6px 0;text-align:center}
header{position:sticky;top:0;z-index:20;background:rgba(12,17,22,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);transition:box-shadow .3s}
@media (prefers-color-scheme: light){:root:not([data-theme="dark"]) header{background:rgba(244,246,248,.86)}}
:root[data-theme="light"] header{background:rgba(244,246,248,.86)}
header.scrolled{box-shadow:0 8px 30px rgba(0,0,0,.18)}
.hd{display:flex;align-items:center;justify-content:space-between;height:72px;gap:24px}
.logo{display:flex;align-items:center;gap:12px}
.logo .sym{width:34px;height:34px;display:block}
.logo .wm{height:14px;display:block;filter:var(--wm-filter)}
.logo .jp{font-family:var(--serif);font-weight:600;font-size:13px;color:var(--ink-2);margin-left:4px}
nav.gnav>ul{list-style:none;margin:0;padding:0;display:flex;gap:4px;font-size:14px;font-weight:500}
nav.gnav>ul>li{position:relative}
nav.gnav>ul>li>a{display:block;padding:8px 14px;border-radius:2px;position:relative}
nav.gnav>ul>li>a::after{content:"";position:absolute;left:14px;right:14px;bottom:2px;height:1px;background:var(--navy);transform:scaleX(0);transform-origin:left;transition:transform .25s}
nav.gnav>ul>li>a:hover::after,nav.gnav>ul>li>a.on::after{transform:scaleX(1)}
nav.gnav>ul>li>a.on{color:var(--navy)}
.dd{position:absolute;top:100%;left:0;min-width:240px;background:var(--paper-2);border:1px solid var(--line-2);border-radius:2px;padding:10px 0;margin:6px 0 0;list-style:none;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .2s,transform .2s,visibility .2s;box-shadow:0 20px 40px rgba(0,0,0,.25)}
nav.gnav>ul>li:hover .dd,nav.gnav>ul>li:focus-within .dd{opacity:1;visibility:visible;transform:none}
.dd a{display:block;padding:10px 18px;font-size:13px;font-weight:400}
.dd a small{display:block;font-family:var(--mono);font-size:10px;color:var(--ink-3);letter-spacing:.1em}
.dd a:hover{background:var(--paper-3);color:var(--navy)}
.hd .btn{padding:10px 16px;font-size:13px}
.burger{display:none;width:44px;height:44px;border:1px solid var(--line-2);background:transparent;border-radius:2px;cursor:pointer;position:relative}
.burger i,.burger i::before,.burger i::after{content:"";position:absolute;left:12px;width:20px;height:1.5px;background:var(--ink);transition:transform .3s,opacity .3s}
.burger i{top:21px}.burger i::before{left:0;top:-6px}.burger i::after{left:0;top:6px}
body.menu .burger i{background:transparent}body.menu .burger i::before{transform:translateY(6px) rotate(45deg)}body.menu .burger i::after{transform:translateY(-6px) rotate(-45deg)}
.drawer{display:none;position:fixed;inset:0;top:0;z-index:15;background:var(--paper);padding:100px 24px 40px;overflow:auto}
body.menu .drawer{display:block}
.drawer ul{list-style:none;margin:0;padding:0}
.drawer>ul>li{border-bottom:1px solid var(--line)}
.drawer>ul>li>a{display:block;padding:18px 0;font-family:var(--serif);font-size:20px}
.drawer ul ul{padding:0 0 14px 12px}
.drawer ul ul a{display:block;padding:8px 0;font-size:14px;color:var(--ink-2)}
@media (max-width:960px){nav.gnav,.hd .btn.desk{display:none}.burger{display:block}.logo .jp{display:none}}

/* ---------- sections ---------- */
section{padding-block:88px;border-bottom:1px solid var(--line)}
section.tight{padding-block:56px}
section.last{border-bottom:0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:start}
.grid2.c{align-items:center}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:32px}
.sh{margin-bottom:36px}
.sh h2{font-size:30px;margin-top:12px}
.sh .en{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--navy);text-transform:uppercase}
.sh p.lead{margin-top:16px}
@media (max-width:760px){.grid2,.grid3{grid-template-columns:1fr;gap:32px}section{padding-block:60px}.sh h2{font-size:24px}}

/* page head */
.pagehead{padding-block:64px 48px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,var(--paper-2),var(--paper))}
.crumb{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--ink-3);display:flex;gap:10px;flex-wrap:wrap;margin-bottom:28px}
.crumb a:hover{color:var(--navy)}
.crumb span::before{content:"/";margin-right:10px;color:var(--line-2)}
.pagehead h1{font-size:clamp(30px,4.4vw,48px);line-height:1.35;margin-top:14px}
.pagehead .lead{margin-top:24px}
.pagehead .grid2{align-items:center}

/* statement hero (top) */
.stmt{padding-block:150px 120px;position:relative;overflow:hidden;border-bottom:1px solid var(--line)}
.stmt canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.stmt .wrap{position:relative}
.stmt .tag{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--ink-3);margin-bottom:26px;display:flex;gap:18px;flex-wrap:wrap}
.stmt .tag span::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--navy);margin-right:8px;vertical-align:middle}
.stmt h1{font-size:clamp(38px,7vw,86px);line-height:1.28;letter-spacing:.02em;font-weight:500}
.stmt .en{margin-top:28px;font-size:14px;letter-spacing:.06em;color:var(--ink-3);max-width:44em;line-height:1.7}
.stmt .lead{margin-top:36px}
.stmt .scroll{position:absolute;right:24px;bottom:28px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--ink-3);writing-mode:vertical-rl;display:flex;gap:10px;align-items:center}
.stmt .scroll::after{content:"";width:1px;height:48px;background:var(--ink-3);animation:sl 2s infinite}
@keyframes sl{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
.rise{animation:rise .9s cubic-bezier(.2,.7,.2,1) both}
.rise.d1{animation-delay:.15s}.rise.d2{animation-delay:.3s}.rise.d3{animation-delay:.45s}
@keyframes rise{from{opacity:.001;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (max-width:760px){.stmt{padding-block:80px 70px}.stmt .scroll{display:none}}

/* reveal */
.rv{transform:translateY(18px);opacity:.35;transition:transform .8s cubic-bezier(.2,.7,.2,1),opacity .8s}
.rv.in{transform:none;opacity:1}
@media (prefers-reduced-motion:reduce){.rise,.stmt .scroll::after{animation:none}.rv{transform:none;opacity:1;transition:none}*{scroll-behavior:auto!important}}

/* business cards */
.biz{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-2)}
.biz a{padding:44px 32px 44px 0;border-right:1px solid var(--line);display:block;position:relative;transition:background .3s}
.biz a:nth-child(n+2){padding-left:32px}
.biz a:last-child{border-right:0}
.biz a:hover{background:linear-gradient(180deg,rgba(var(--dot),.06),transparent)}
.biz .k{font-family:var(--serif);font-size:clamp(40px,5vw,60px);font-weight:500;line-height:1.1;letter-spacing:.04em;display:block;transition:color .2s}
.biz .sub{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-3);margin-top:10px;text-transform:uppercase}
.biz p{font-size:14px;color:var(--ink-2);margin-top:20px}
.biz .tl{margin-top:20px}
.biz a:hover .k{color:var(--navy)}
@media (max-width:760px){.biz{grid-template-columns:1fr}.biz a{border-right:0;border-bottom:1px solid var(--line);padding:28px 0!important}.biz a:last-child{border-bottom:0}}

/* values */
.vals{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.vals div{padding:32px 20px 32px 0;border-right:1px solid var(--line)}
.vals div:nth-child(n+2){padding-left:20px}
.vals div:last-child{border-right:0}
.vals .n{font-family:var(--mono);font-size:12px;color:var(--navy);letter-spacing:.2em;display:block}
.vals .k{font-family:var(--serif);font-size:clamp(26px,3vw,36px);font-weight:500;display:block;margin-top:10px;line-height:1.2}
.vals p{font-size:13px;color:var(--ink-2);margin-top:14px;line-height:1.8}
@media (max-width:760px){.vals{grid-template-columns:1fr}.vals div{border-right:0;border-bottom:1px solid var(--line);padding:20px 0!important}.vals div:last-child{border-bottom:0}}

/* facts */
.facts{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.facts div{border-top:1px solid var(--line-2);padding-top:14px}
.facts b{display:block;font-family:var(--mono);font-size:24px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1.3}
.facts span{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ink-3)}
@media (max-width:760px){.facts{grid-template-columns:1fr 1fr}}
.area{display:flex;flex-wrap:wrap;border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.area span{font-family:var(--serif);font-size:22px;padding:18px 28px 18px 0;margin-right:28px;border-right:1px solid var(--line)}
.area span:last-child{border-right:0}

/* def list */
dl.def{margin:0;border-top:1px solid var(--line-2)}
dl.def div{display:grid;grid-template-columns:180px 1fr;gap:24px;padding:20px 0;border-bottom:1px solid var(--line)}
dl.def dt{font-weight:500;color:var(--ink-2);font-size:14px}
dl.def dd{margin:0}
dl.tech dt{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--navy)}
@media (max-width:760px){dl.def div{grid-template-columns:1fr;gap:6px}}
ul.plain{margin:0;padding-left:1.2em}ul.plain li{margin-bottom:6px}

/* steps */
ol.steps{list-style:none;margin:0;padding:0;counter-reset:s;display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
ol.steps.five{grid-template-columns:repeat(5,1fr)}
ol.steps li{counter-increment:s;border-top:1px solid var(--line-2);padding-top:14px;font-size:14px;color:var(--ink-2)}
ol.steps li::before{content:counter(s,decimal-leading-zero);display:block;font-family:var(--mono);color:var(--navy);font-size:20px;margin-bottom:8px}
ol.steps b{display:block;font-weight:700;margin-bottom:6px;font-size:15px;color:var(--ink)}
@media (max-width:760px){ol.steps,ol.steps.five{grid-template-columns:1fr 1fr}}

/* pillars / works / fields / dev */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.pillars div{padding:28px 24px 28px 0;border-right:1px solid var(--line)}
.pillars div:nth-child(n+2){padding-left:24px}
.pillars div:last-child{border-right:0}
.pillars .k{font-family:var(--serif);font-size:24px;font-weight:500;display:block}
.pillars .sub{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-3);text-transform:uppercase;display:block;margin-top:6px}
.pillars p{font-size:14px;color:var(--ink-2);margin-top:12px}
@media (max-width:760px){.pillars{grid-template-columns:1fr}.pillars div{border-right:0;border-bottom:1px solid var(--line);padding:18px 0!important}.pillars div:last-child{border-bottom:0}}
.works{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line-2);border-left:1px solid var(--line-2)}
.works div{padding:18px 16px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .2s}
.works div:hover{background:var(--paper-2)}
.works .n{font-family:var(--mono);font-size:11px;color:var(--navy);letter-spacing:.1em}
.works b{display:block;font-weight:700;font-size:14px;margin-top:6px;line-height:1.5}
.works span{display:block;font-size:12px;color:var(--ink-3);margin-top:4px}
@media (max-width:900px){.works{grid-template-columns:repeat(2,1fr)}}
@media (max-width:480px){.works{grid-template-columns:1fr}}
.fields{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.fields div{border-top:1px solid var(--line-2);padding-top:16px}
.fields .k{font-family:var(--serif);font-size:20px;font-weight:500;display:block}
.fields p{font-size:13px;color:var(--ink-2);margin-top:8px}
@media (max-width:760px){.fields{grid-template-columns:1fr 1fr}}
.dev{display:grid;grid-template-columns:1fr 1fr;gap:32px}
.dev article{border:1px solid var(--line);background:var(--paper-2);padding:28px;border-radius:2px}
.dev .badge{font-family:var(--mono);font-size:10px;letter-spacing:.16em;border:1px solid var(--navy);color:var(--navy);padding:3px 8px;display:inline-block}
.dev h3{font-size:22px;margin-top:14px}
.dev svg,.dev .hero-img{width:100%;height:auto;display:block;margin-top:18px;border-radius:2px;border:1px solid var(--line);background:#0C1116}
.dev ol{margin:16px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;font-size:12px;color:var(--ink-2)}
.dev ol li{border-top:1px solid var(--line-2);padding-top:8px}
.dev ol li b{display:block;font-family:var(--mono);font-size:10px;color:var(--navy);letter-spacing:.1em;margin-bottom:4px}
.dev .cap{font-size:11px;color:var(--ink-3);margin-top:12px;font-family:var(--mono)}
@media (max-width:760px){.dev{grid-template-columns:1fr}}
.photo{margin:0}
.photo img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;display:block}
.photo figcaption{display:none}
/* pagehead with photo: photo bleeds to the right edge and dissolves into the ground */
.pagehead{position:relative;overflow:hidden}
.pagehead:has(.photo){min-height:540px;display:flex;align-items:center}
.pagehead:has(.photo) .wrap{width:100%}
.pagehead:has(.photo) .grid2{grid-template-columns:minmax(0,600px);position:static}
.pagehead:has(.photo) .grid2>div{position:relative;z-index:1}
.pagehead:has(.photo) .crumb{position:relative;z-index:1}
.pagehead .photo{position:absolute;top:0;right:0;bottom:0;width:58%;z-index:0}
.pagehead .photo img{height:100%;aspect-ratio:auto;
  -webkit-mask-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.35) 22%,#000 55%),linear-gradient(to top,transparent 0%,#000 30%);
  mask-image:linear-gradient(to right,transparent 0%,rgba(0,0,0,.35) 22%,#000 55%),linear-gradient(to top,transparent 0%,#000 30%);
  -webkit-mask-composite:source-in;mask-composite:intersect}
@media (max-width:900px){
  .pagehead:has(.photo){display:block;min-height:0;padding-bottom:0}
  .pagehead .photo{position:relative;width:auto;margin:32px -24px 0;height:280px}
  .pagehead .photo img{-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 25%,#000 70%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0%,#000 25%,#000 70%,transparent 100%)}
}
.diagram{background:var(--paper-2);border:1px solid var(--line);padding:28px;border-radius:2px}
.diagram svg{width:100%;height:auto;display:block}
.diagram .cap{margin-top:14px;font-size:13px;color:var(--ink-3)}

/* news */
.news{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-2)}
.news li{border-bottom:1px solid var(--line)}
.news a{display:grid;grid-template-columns:110px 96px 1fr 20px;gap:20px;align-items:center;padding:18px 0;font-size:15px;transition:color .2s}
.news a:hover{color:var(--navy)}
.news time{font-family:var(--mono);color:var(--ink-3);font-size:13px}
.news .cat{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--navy);border:1px solid var(--line-2);padding:3px 8px;text-align:center;border-radius:2px}
@media (max-width:760px){.news a{grid-template-columns:1fr;gap:6px}.news .cat{width:max-content}.news .ar{display:none}}
.article{max-width:720px}
.article h1{font-size:28px;margin-top:14px}
.article .body{margin-top:32px;color:var(--ink-2);font-size:16px}
.article .body p{margin-bottom:1.2em}

/* timeline */
.tl-list{list-style:none;margin:0;padding:0;border-left:1px solid var(--line-2);margin-left:6px}
.tl-list li{position:relative;padding:0 0 28px 28px}
.tl-list li::before{content:"";position:absolute;left:-4px;top:12px;width:7px;height:7px;border-radius:50%;background:var(--navy)}
.tl-list time{font-family:var(--mono);font-size:12px;color:var(--navy);letter-spacing:.08em;display:block}
.tl-list b{display:block;font-weight:700;margin-top:4px}
.tl-list p{font-size:14px;color:var(--ink-2)}
.offices{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.offices div{border-top:1px solid var(--line-2);padding-top:16px}
.offices .k{font-family:var(--serif);font-size:20px;display:block}
.offices .en{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-3)}
.offices p{font-size:14px;color:var(--ink-2);margin-top:10px}
@media (max-width:760px){.offices{grid-template-columns:1fr}}
.message{display:grid;grid-template-columns:1fr 2fr;gap:56px;align-items:start}
.message .portrait{margin:0 0 6px;position:relative;max-width:340px}
.message .portrait::before{content:"";position:absolute;inset:8% -10% 0 -10%;background:radial-gradient(closest-side,rgba(var(--dot),.22),rgba(var(--dot),.06) 60%,transparent);z-index:0}
.message .portrait img{position:relative;z-index:1;width:100%;aspect-ratio:4/5;object-fit:contain;object-position:bottom;display:block;
  -webkit-mask-image:radial-gradient(ellipse 62% 72% at 50% 34%,#000 62%,transparent 100%);mask-image:radial-gradient(ellipse 62% 72% at 50% 34%,#000 62%,transparent 100%)}
@media (max-width:760px){.message .portrait{max-width:260px}}
.message .name{font-family:var(--serif);font-size:22px;margin-top:8px}
.message .role{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-3)}
.message .body p{margin-bottom:1.2em;color:var(--ink-2)}
.message .sign{font-family:var(--serif);font-size:15px;margin-top:8px;color:var(--ink)}
@media (max-width:760px){.message{grid-template-columns:1fr;gap:24px}}

/* recruit */
.jobcard{border:1px solid var(--line-2);border-radius:2px;padding:32px;background:var(--paper-2);display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}
.jobcard h3{font-size:22px}
.jobcard .tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.jobcard .tags span{font-family:var(--mono);font-size:10px;letter-spacing:.1em;border:1px solid var(--line-2);padding:3px 8px;border-radius:2px;color:var(--ink-2)}
@media (max-width:760px){.jobcard{grid-template-columns:1fr}}
details.faq{border-bottom:1px solid var(--line)}
details.faq summary{cursor:pointer;list-style:none;padding:18px 0;font-weight:500;display:flex;justify-content:space-between;gap:16px;align-items:center}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:"+";font-family:var(--mono);color:var(--navy);font-size:18px;transition:transform .2s}
details.faq[open] summary::after{transform:rotate(45deg)}
details.faq .a{padding:0 0 18px;color:var(--ink-2);font-size:15px}

/* form */
.form{display:flex;flex-direction:column;gap:8px}
.form label{font-size:14px;font-weight:500;color:var(--ink-2);margin-top:12px}
.form label em{font-style:normal;font-size:10px;color:var(--on-navy);background:var(--navy);padding:1px 6px;margin-left:8px;border-radius:2px;letter-spacing:.1em}
.form input,.form select,.form textarea{font:inherit;font-size:15px;padding:12px 14px;border:1px solid var(--line-2);background:var(--paper);color:var(--ink);border-radius:2px;transition:border-color .2s}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(var(--dot),.18)}
.form .chk{display:flex;gap:8px;align-items:center;font-weight:400;margin-top:16px}
.form button{margin-top:16px;align-self:flex-start}
.kinds{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:8px}
.kinds label{border:1px solid var(--line-2);padding:14px;border-radius:2px;cursor:pointer;font-size:13px;text-align:center;margin:0;transition:border-color .2s,background .2s}
.kinds input{display:none}
.kinds input:checked+span{color:var(--navy)}
.kinds label:has(input:checked){border-color:var(--navy);background:rgba(var(--dot),.08)}
@media (max-width:760px){.kinds{grid-template-columns:1fr 1fr}}
.contactcards{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.contactcards div{border:1px solid var(--line);padding:24px;border-radius:2px;background:var(--paper-2)}
.contactcards .k{font-family:var(--serif);font-size:18px;display:block}
.contactcards .v{font-family:var(--mono);font-size:22px;margin-top:8px;display:block;letter-spacing:.04em}
.contactcards p{font-size:13px;color:var(--ink-3);margin-top:6px}
@media (max-width:760px){.contactcards{grid-template-columns:1fr}}

.icon{width:44px;height:44px;display:block;margin-bottom:14px;fill:none;stroke:var(--navy);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.fields .icon,.pillars .icon{width:36px;height:36px;margin-bottom:10px}
/* pickup */
.pick{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.pick a{display:block;border:1px solid var(--line-2);border-radius:2px;padding:22px 24px;background:var(--paper-2);transition:border-color .2s,transform .2s;position:relative}
.pick a:hover{border-color:var(--navy);transform:translateY(-2px)}
.pick .en{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--navy)}
.pick b{display:block;font-family:var(--serif);font-size:18px;font-weight:500;margin-top:8px;line-height:1.5}
.pick p{font-size:13px;color:var(--ink-3);margin-top:8px}
@media (max-width:760px){.pick{grid-template-columns:1fr}}
/* compare table */
.cmp{overflow-x:auto;border:1px solid var(--line-2);border-radius:2px}
.cmp table{border-collapse:collapse;width:100%;min-width:720px;font-size:14px}
.cmp th,.cmp td{padding:16px 18px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}
.cmp thead th{background:var(--paper-2);font-family:var(--serif);font-size:18px;font-weight:500}
.cmp thead th small{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-3);font-weight:400;margin-top:4px}
.cmp tbody th{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink-3);font-weight:500;white-space:nowrap;width:140px}
.cmp tbody tr:last-child td,.cmp tbody tr:last-child th{border-bottom:0}
.cmp td{color:var(--ink-2)}
.tools{display:flex;flex-wrap:wrap;gap:8px}
.tools span{font-family:var(--mono);font-size:12px;letter-spacing:.04em;border:1px solid var(--line-2);padding:6px 12px;border-radius:2px;color:var(--ink-2)}
.skip{position:absolute;left:-999px;top:8px;background:var(--navy);color:var(--on-navy);padding:8px 12px;z-index:50}
.skip:focus{left:8px}
@media print{header,.drawer,.band,.pagetop,.proto,.related,.stmt canvas{display:none!important}.view{display:block!important}body{background:#fff;color:#000}}
.gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.gallery{gap:3px!important}
.gallery figure{margin:0;position:relative;overflow:hidden}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.gallery figure:hover img{transform:scale(1.04)}
.gallery figure::after{content:"";position:absolute;inset:auto 0 0 0;height:55%;background:linear-gradient(to top,rgba(8,12,16,.82),transparent);pointer-events:none}
.gallery figcaption{position:absolute;left:14px;bottom:12px;z-index:1;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:#E9EDF1}
.gallery.three{grid-template-columns:repeat(3,1fr)}
.gallery.three img{aspect-ratio:3/2}
@media (max-width:760px){.gallery,.gallery.three{grid-template-columns:1fr 1fr}}
.fields.img div{border-top:0;padding-top:0}
.fields.img img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;margin-bottom:14px;-webkit-mask-image:linear-gradient(to bottom,#000 60%,transparent);mask-image:linear-gradient(to bottom,#000 60%,transparent)}
.fields.img .icon{display:none}
.path{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.path img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;margin-bottom:14px;-webkit-mask-image:linear-gradient(to bottom,#000 65%,transparent);mask-image:linear-gradient(to bottom,#000 65%,transparent)}
.path .n{font-family:var(--mono);font-size:11px;color:var(--navy);letter-spacing:.14em}
.path b{display:block;font-family:var(--serif);font-size:20px;font-weight:500;margin-top:6px}
.path p{font-size:14px;color:var(--ink-2);margin-top:8px}
@media (max-width:760px){.path{grid-template-columns:1fr}}
/* CEO block: photo grounded in a full-height panel that bleeds to the screen edge */
.ceo{padding:0}
.ceo-grid{display:grid;grid-template-columns:minmax(0,44%) minmax(0,1fr);min-height:660px}
.ceo.rev .ceo-grid{grid-template-columns:minmax(0,1fr) minmax(0,44%)}
.ceo.rev .ceo-photo{order:2}
.ceo-photo{margin:0;position:relative;overflow:hidden;background:linear-gradient(180deg,var(--paper-2),var(--paper-3))}
.ceo-photo::before{content:"";position:absolute;inset:0;background-image:linear-gradient(var(--line-2) 1px,transparent 1px),linear-gradient(90deg,var(--line-2) 1px,transparent 1px);background-size:56px 56px;opacity:.45;
  -webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,#000,transparent 75%);mask-image:radial-gradient(ellipse 70% 60% at 50% 40%,#000,transparent 75%)}
.ceo-photo img{position:absolute;left:50%;bottom:0;transform:translateX(-50%);height:94%;width:auto;max-width:none;display:block}
.ceo-text{align-self:center;padding:96px max(24px,calc((100vw - 1120px)/2 + 24px)) 96px 72px;max-width:none}
.ceo.rev .ceo-text{padding:96px 72px 96px max(24px,calc((100vw - 1120px)/2 + 24px))}
.ceo-text .sh{margin-bottom:28px}
.ceo-quote{font-family:var(--serif);font-size:clamp(26px,3vw,36px);line-height:1.5;font-weight:500;margin-bottom:28px;text-wrap:balance}
.ceo-text .body{max-width:36em}
.ceo-text .body p{margin-bottom:1.2em;color:var(--ink-2)}
.ceo-sign{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line-2);padding-top:18px;margin-top:12px;max-width:36em}
.ceo-sign .role{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--ink-3)}
.ceo-sign .name{font-family:var(--serif);font-size:22px}
.ceo-sign .en-name{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--ink-3)}
@media (max-width:900px){
  .ceo-grid,.ceo.rev .ceo-grid{grid-template-columns:1fr;min-height:0}
  .ceo.rev .ceo-photo{order:0}
  .ceo-photo{height:440px}
  .ceo-text,.ceo.rev .ceo-text{padding:48px 24px 64px}
}
/* related */
.related{padding-block:56px;border-bottom:1px solid var(--line);background:var(--paper-2)}
.related .grid3 a{display:block;border:1px solid var(--line-2);padding:22px 24px;border-radius:2px;background:var(--paper);transition:border-color .2s,transform .2s}
.related .grid3 a:hover{border-color:var(--navy);transform:translateY(-2px)}
.related .grid3 .en{font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--ink-3)}
.related .grid3 b{display:block;font-family:var(--serif);font-size:18px;font-weight:500;margin-top:6px}

/* band + footer */
.band{background:var(--paper-2);border-top:1px solid var(--line-2);position:relative;overflow:hidden}
.band .shin{position:absolute;right:24px;bottom:0;width:130px;height:auto;opacity:.95}
@media (max-width:760px){.band .shin{width:80px;right:8px}}
footer{padding-block:56px 32px;font-size:13px;color:var(--ink-3);border-top:1px solid var(--line)}
.fgrid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px}
.fgrid h4{font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--ink-3);font-weight:500;margin-bottom:14px}
.fgrid ul{list-style:none;margin:0;padding:0}
.fgrid li{margin-bottom:8px}
.fgrid a:hover{color:var(--navy)}
.fgrid .co{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.fgrid .co .sym{width:28px}.fgrid .co .wm{height:12px;filter:var(--wm-filter)}
.fbot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:40px;padding-top:20px;font-family:var(--mono);font-size:11px;letter-spacing:.06em}
@media (max-width:760px){.fgrid{grid-template-columns:1fr 1fr}}
.pagetop{position:fixed;right:20px;bottom:20px;width:44px;height:44px;border:1px solid var(--line-2);background:var(--paper);border-radius:2px;display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;z-index:10;cursor:pointer}
.pagetop.show{opacity:1;visibility:visible}
.pagetop svg{width:14px;height:14px;fill:none;stroke:var(--ink);stroke-width:1.6}
.view{display:block}
/* CEO block v2: no cutout. The section takes the studio backdrop's color so the uncut photo sits in it seamlessly */
.ceo{background:#E6ECF5;border-bottom:0;
  --ink:#141B24;--ink-2:#46515D;--ink-3:#6E7A87;--line:#CED7E2;--line-2:#B7C3D1;--navy:#1D3557;--on-navy:#F4F6F8;color:var(--ink)}
.ceo .eyebrow,.ceo .sh .en{color:var(--navy)}
.ceo-photo{background:none}
.ceo-photo::before{content:none}
.ceo-photo img{left:0;top:0;bottom:auto;transform:none;width:100%;height:100%;max-width:100%;object-fit:cover;object-position:50% 8%;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 3%,#000 97%,transparent 100%);
  mask-image:linear-gradient(to right,transparent 0,#000 3%,#000 97%,transparent 100%)}
@media (max-width:900px){
  .ceo-photo{height:480px}
  .ceo-photo img{-webkit-mask-image:linear-gradient(to bottom,#000 80%,transparent);mask-image:linear-gradient(to bottom,#000 80%,transparent)}
}
/* CEO v2.1: 右端を少し長めに溶かす／モバイルは頭を切らない */
.ceo-photo img{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 3%,#000 90%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 3%,#000 90%,transparent 100%)}
.ceo.rev .ceo-photo img{-webkit-mask-image:linear-gradient(to right,transparent 0,#000 10%,#000 97%,transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 10%,#000 97%,transparent 100%)}
@media (max-width:900px){.ceo-photo img,.ceo.rev .ceo-photo img{object-position:50% 0;-webkit-mask-image:linear-gradient(to bottom,#000 80%,transparent);mask-image:linear-gradient(to bottom,#000 80%,transparent)}}
/* CEO v2.2: 写真を本文幅の中に収めて小さく */
@media (min-width:901px){
.ceo-grid,.ceo.rev .ceo-grid{max-width:1120px;margin:0 auto;padding:96px 24px;min-height:0;grid-template-columns:minmax(0,36%) minmax(0,1fr);column-gap:72px;align-items:center}
.ceo.rev .ceo-grid{grid-template-columns:minmax(0,1fr) minmax(0,36%)}
.ceo-photo{aspect-ratio:4/5;height:auto;align-self:center}
.ceo-text,.ceo.rev .ceo-text{padding:0}
.ceo-photo img,.ceo.rev .ceo-photo img{-webkit-mask-image:radial-gradient(ellipse 75% 80% at 50% 45%,#000 70%,transparent 100%);mask-image:radial-gradient(ellipse 75% 80% at 50% 45%,#000 70%,transparent 100%)}
}
@media (max-width:900px){.ceo-photo{height:360px}}
@media (min-width:901px){
.ceo-photo img,.ceo.rev .ceo-photo img{
-webkit-mask-image:linear-gradient(to right,transparent 0,#000 14%,#000 86%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 10%,#000 82%,transparent 100%);-webkit-mask-composite:source-in;
mask-image:linear-gradient(to right,transparent 0,#000 14%,#000 86%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 10%,#000 82%,transparent 100%);mask-composite:intersect}
}
/* CEO v2.3: 会社情報は引きの全身寄り（2:3） */
@media (min-width:901px){.ceo:not(.rev) .ceo-photo{aspect-ratio:2/3}}
@media (max-width:900px){.ceo:not(.rev) .ceo-photo{height:440px}.ceo:not(.rev) .ceo-photo img{object-position:50% 10%}}
@media (max-width:900px){.ceo:not(.rev) .ceo-photo{width:72%;height:auto;aspect-ratio:2/3;margin:32px auto 0}
.ceo:not(.rev) .ceo-photo img{object-position:50% 0;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 12%,#000 88%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 8%,#000 80%,transparent 100%);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent 0,#000 12%,#000 88%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 8%,#000 80%,transparent 100%);mask-composite:intersect}}
/* CEO v2.4: 会社情報=正面（3:4）、採用=笑顔（2:3）、両方とも本文幅に収める */
@media (min-width:901px){.ceo:not(.rev) .ceo-photo{aspect-ratio:3/4}.ceo.rev .ceo-photo{aspect-ratio:2/3}}
@media (max-width:900px){.ceo .ceo-photo,.ceo.rev .ceo-photo{width:72%;height:auto;margin:32px auto 0}
.ceo:not(.rev) .ceo-photo{aspect-ratio:3/4}.ceo.rev .ceo-photo{aspect-ratio:2/3}
.ceo .ceo-photo img,.ceo.rev .ceo-photo img{object-position:50% 0;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 12%,#000 88%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 8%,#000 80%,transparent 100%);-webkit-mask-composite:source-in;mask-image:linear-gradient(to right,transparent 0,#000 12%,#000 88%,transparent 100%),linear-gradient(to bottom,transparent 0,#000 8%,#000 80%,transparent 100%);mask-composite:intersect}}
/* ===== Apps / eforms ===== */
.shot{margin:0;background:#0F1A2B;border:1px solid var(--line-2);border-radius:10px;padding:10px;box-shadow:0 20px 50px -20px rgba(0,0,0,.45)}
.shot img{display:block;width:100%;height:auto;border-radius:4px}
.shot figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:#9AA7B5;padding:10px 4px 2px}
.shot.tall{max-width:420px;justify-self:center}
.pagehead .shot{position:relative;z-index:1;align-self:center}
.sub-h{display:block;font-size:.62em;color:var(--ink-2);margin-top:6px}
.pain{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.pain div{border-top:2px solid var(--navy);padding-top:16px}
.pain b{display:block;font-family:var(--serif);font-size:24px}
.pain span{color:var(--ink-2);font-size:14px}
.feature{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:56px;align-items:center;margin-bottom:72px}
.feature.rev{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.feature.rev .ft{order:2}
.feature .num{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--navy)}
.feature h3{font-size:26px;margin:10px 0 16px}
.feature p{color:var(--ink-2);margin-bottom:12px}
.ticks{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:12px}
.ticks li{border-left:2px solid var(--navy);padding-left:14px;font-size:14px;color:var(--ink-2)}
.ticks b{display:block;color:var(--ink);font-size:15px}
.shots2{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,6fr);gap:16px;align-items:start}
.shots2 .shot.tall{max-width:none}
.sec6{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.sec6 div{border:1px solid var(--line);background:var(--paper-2);padding:22px 24px;border-radius:4px}
.sec6 b{display:block;font-family:var(--serif);font-size:19px}
.sec6 span{font-size:13px;color:var(--ink-2)}
.price{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center;background:#0F1A2B;color:#F4F6F8;border-radius:6px;padding:56px}
.price .eyebrow{color:#C9A54E}
.p-unit{font-size:18px;color:#B9C4D0;margin-top:16px}
.p-num{font-family:var(--mono);font-size:clamp(56px,8vw,96px);font-weight:500;line-height:1.05;letter-spacing:-.02em}
.p-num span{font-family:var(--sans);font-size:.55em;color:#C9A54E;margin-left:6px;font-weight:700}
.p-tax{font-size:12px;color:#9AA7B5}
.p-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.p-list li{font-size:18px;font-weight:700;border-bottom:1px solid #22344D;padding-bottom:12px}
@media (max-width:900px){
  .feature,.feature.rev{grid-template-columns:1fr;gap:24px;margin-bottom:56px}.feature.rev .ft{order:0}
  .pain,.sec6{grid-template-columns:1fr}.price{grid-template-columns:1fr;padding:32px 24px;gap:28px}
  .shots2{grid-template-columns:1fr}
}
.grid3.four{grid-template-columns:repeat(4,1fr);gap:20px}
@media (max-width:900px){.grid3.four{grid-template-columns:1fr 1fr}}
.dev.one{grid-template-columns:minmax(0,760px)}
@media (min-width:901px){.biz{grid-template-columns:repeat(4,1fr)}.biz .k{font-size:clamp(34px,3.6vw,48px)}.biz a{padding-right:24px}.biz a:nth-child(n+2){padding-left:24px}}
@media (min-width:761px) and (max-width:900px){.biz{grid-template-columns:1fr 1fr}}
.article .body figure{margin:28px 0 32px}
.article .body figure img{display:block;width:100%;height:auto;border-radius:4px}
.article .body figcaption{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:var(--ink-3);margin-top:10px}
.article .body ul{margin:0 0 1.2em;padding-left:1.2em}
.article .body li{margin-bottom:.6em}
.article .body li b{color:var(--ink)}

.gallery.two{grid-template-columns:1fr 1fr}.gallery.two img{aspect-ratio:3/2}
#profile dd,.offices p{word-break:keep-all;overflow-wrap:anywhere}
