:root{
  --bg:#fbfaf7;--bg-alt:#f2efe8;--ink:#17171a;--ink-soft:#4c4b50;--muted:#8a8891;
  --line:#e3dfd6;--red:#b4231c;--red-dark:#8e1a15;--white:#fff;
  --serif:"Cormorant Garamond","Noto Serif JP",Georgia,serif;
  --sans:"Inter","Noto Sans JP",system-ui,-apple-system,"Segoe UI",sans-serif;
  --max:1120px;--radius:4px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.65;font-size:16px;font-weight:300}
img,svg{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3{font-weight:400;line-height:1.15}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.eyebrow{display:flex;align-items:center;gap:12px;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--red);font-weight:500;margin-bottom:18px}
.eyebrow::before{content:"";width:28px;height:1px;background:var(--red)}
h2{font-family:var(--serif);font-size:clamp(32px,4vw,46px);letter-spacing:-.01em;margin-bottom:22px}
.lead{font-size:18px;color:var(--ink-soft);max-width:640px}
section{padding:104px 0;scroll-margin-top:72px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 26px;font-size:14px;letter-spacing:.06em;font-weight:500;border:1px solid var(--ink);border-radius:var(--radius);transition:all .25s}
.btn.primary{background:var(--ink);color:var(--white)}
.btn.primary:hover{background:var(--red);border-color:var(--red)}
.btn.ghost:hover{background:var(--ink);color:var(--white)}

/* nav */
.nav{position:sticky;top:0;z-index:50;background:rgba(251,250,247,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:72px}
.brand{display:flex;align-items:center;gap:12px}
.brand svg{width:34px;height:34px}
.brand .name{font-family:var(--serif);font-size:24px;letter-spacing:.08em;font-weight:500}
.brand .kanji{font-size:12px;color:var(--muted);letter-spacing:.3em;margin-left:4px}
.menu{display:flex;align-items:center;gap:34px;font-size:14px;letter-spacing:.04em}
.menu a{color:var(--ink-soft);transition:color .2s}
.menu a:hover{color:var(--red)}
.lang{display:flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;font-size:12px;letter-spacing:.1em}
.lang a{padding:6px 12px;color:var(--muted)}
.lang a.on{background:var(--ink);color:var(--white)}
.burger{display:none;width:40px;height:40px;border:0;background:none;cursor:pointer;flex-direction:column;justify-content:center;gap:6px}
.burger span{display:block;height:1px;background:var(--ink)}

/* hero */
.hero{position:relative;padding:120px 0 110px;overflow:hidden;border-bottom:1px solid var(--line)}
.hero .wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:60px;align-items:center}
.hero h1{font-family:var(--serif);font-size:clamp(44px,6vw,76px);letter-spacing:-.015em;margin-bottom:28px}
.hero h1 em{font-style:italic;color:var(--red)}
.hero p{font-size:19px;color:var(--ink-soft);max-width:560px;margin-bottom:40px}
.hero .cta{display:flex;gap:14px;flex-wrap:wrap}
.hero .meta{display:flex;gap:40px;margin-top:64px;padding-top:28px;border-top:1px solid var(--line)}
.hero .meta div{font-size:13px;color:var(--muted);letter-spacing:.05em}
.hero .meta strong{display:block;font-family:var(--serif);font-size:26px;color:var(--ink);font-weight:500;letter-spacing:0}
.fuji{width:100%;max-width:460px;margin:0 auto}

/* about */
.about .wrap{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start}
.about p+p{margin-top:18px}
.about p{color:var(--ink-soft)}
.pillars{display:grid;gap:26px;padding-top:12px}
.pillar{padding-left:22px;border-left:1px solid var(--red)}
.pillar h3{font-size:17px;font-weight:500;margin-bottom:6px}
.pillar p{font-size:15px;color:var(--ink-soft)}

/* services */
.services{background:var(--ink);color:var(--white)}
.services .eyebrow{color:#e5a9a4}.services .eyebrow::before{background:#e5a9a4}
.services .lead{color:#b9b7bd}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:#2d2d33;margin-top:56px;border:1px solid #2d2d33}
.service{background:var(--ink);padding:40px 30px}
.service .n{font-family:var(--serif);font-size:15px;color:#e5a9a4;letter-spacing:.15em;margin-bottom:26px}
.service h3{font-size:19px;font-weight:500;margin-bottom:12px}
.service p{font-size:14.5px;color:#b9b7bd}

/* sectors */
.sectors{background:var(--bg-alt)}
.chips{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:52px}
.chip{background:var(--white);border:1px solid var(--line);padding:30px 28px;border-radius:var(--radius);transition:border-color .25s,transform .25s}
.chip:hover{border-color:var(--red);transform:translateY(-3px)}
.chip .jp{font-family:var(--serif);font-size:13px;color:var(--red);letter-spacing:.25em;margin-bottom:12px}
.chip h3{font-size:18px;font-weight:500;margin-bottom:8px}
.chip p{font-size:14.5px;color:var(--ink-soft)}
.sectors .note{margin-top:30px;font-size:14px;color:var(--muted)}

/* why */
.why .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;align-items:center}
.steps{display:grid;gap:0;border-top:1px solid var(--line)}
.step{display:grid;grid-template-columns:70px 1fr;gap:20px;padding:26px 0;border-bottom:1px solid var(--line)}
.step .k{font-family:var(--serif);font-size:30px;color:var(--red)}
.step h3{font-size:17px;font-weight:500;margin-bottom:6px}
.step p{font-size:15px;color:var(--ink-soft)}

/* team */
.team{background:var(--bg-alt);border-top:1px solid var(--line)}
.people{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:56px}
.person{background:var(--white);border:1px solid var(--line);padding:38px 32px;border-radius:var(--radius)}
.avatar{width:120px;height:120px;border-radius:50%;object-fit:cover;object-position:center 20%;margin-bottom:26px;border:3px solid var(--white);box-shadow:0 0 0 1px var(--line)}
.person.ceo .avatar{box-shadow:0 0 0 1px var(--red)}
.person h3{font-size:21px;font-weight:500;margin-bottom:4px}
.person .role{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--red);font-weight:500;margin-bottom:16px}
.person .loc{font-size:13px;color:var(--muted);margin-bottom:16px}
.person p{font-size:14.5px;color:var(--ink-soft);margin-bottom:22px}
.person a.mail{font-size:14px;color:var(--ink);border-bottom:1px solid var(--line);padding-bottom:2px;transition:border-color .2s}
.person a.mail:hover{border-color:var(--red);color:var(--red)}

/* contact */
.contact{text-align:center}
.contact h2{font-size:clamp(36px,5vw,58px)}
.contact .lead{margin:0 auto 40px}
.contact .cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:64px;text-align:left}
.contact .card{background:var(--bg);padding:34px 30px}
.contact .card .t{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.contact .card div,.contact .card a{font-size:16px;color:var(--ink)}
.contact .card a:hover{color:var(--red)}

footer{border-top:1px solid var(--line);padding:36px 0;font-size:13px;color:var(--muted)}
footer .wrap{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;line-height:1.9}
footer a:hover{color:var(--red)}

@media (max-width:900px){
  section{padding:76px 0}
  .menu{display:none;position:absolute;top:72px;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--line);padding:20px 24px 28px;flex-direction:column;align-items:flex-start;gap:18px}
  .menu.open{display:flex}
  .burger{display:flex}
  .hero{padding:48px 0 56px}
  .hero .wrap,.about .wrap,.why .wrap{grid-template-columns:1fr;gap:44px}
  .fuji{order:-1;max-width:200px;margin:0}
  .hero .meta{gap:24px;flex-wrap:wrap}
  .grid4{grid-template-columns:1fr 1fr}
  .chips,.people,.contact .cards{grid-template-columns:1fr}
}
@media (max-width:560px){.grid4{grid-template-columns:1fr}.brand .kanji{display:none}}

/* trust strip */
.trust{border-bottom:1px solid var(--line);background:var(--white)}
.trust .wrap{display:grid;grid-template-columns:repeat(4,1fr);gap:28px;padding-top:30px;padding-bottom:30px}
.trust .wrap>div{display:flex;gap:14px;align-items:flex-start;font-size:13.5px;color:var(--ink-soft)}
.trust .ti{flex:0 0 40px;height:40px;display:flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:50%;font-size:18px;font-family:var(--serif);color:var(--red)}
.trust strong{display:block;font-weight:500;color:var(--ink);font-size:14.5px}
@media (max-width:900px){.trust .wrap{grid-template-columns:1fr 1fr;gap:18px}}
@media (max-width:560px){.trust .wrap{grid-template-columns:1fr}}

/* vcard */
.hint{font-size:13.5px;color:var(--muted);margin-top:14px}
.vc{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line)}
.btn.small{padding:10px 16px;font-size:12.5px}
.vc img{width:64px;height:64px;flex:0 0 64px}

/* faq */
.faq{border-top:1px solid var(--line)}
.qa{max-width:800px;margin-top:40px;border-top:1px solid var(--line)}
.qa details{border-bottom:1px solid var(--line)}
.qa summary{cursor:pointer;list-style:none;padding:22px 40px 22px 0;font-size:17px;font-weight:500;position:relative}
.qa summary::-webkit-details-marker{display:none}
.qa summary::after{content:"+";position:absolute;right:4px;top:18px;font-family:var(--serif);font-size:26px;color:var(--red);transition:transform .25s}
.qa details[open] summary::after{transform:rotate(45deg)}
.qa p{padding:0 40px 24px 0;color:var(--ink-soft);font-size:15.5px}

/* gallery (ready for photos) */
.gallery{background:var(--bg-alt)}
.shots{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:48px}
.shots figure{margin:0;overflow:hidden;border-radius:var(--radius);background:var(--white)}
.shots img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .5s}
.shots figure:hover img{transform:scale(1.03)}
.shots figcaption{padding:12px 14px;font-size:13px;color:var(--muted)}
@media (max-width:900px){.shots{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.shots{grid-template-columns:1fr}}

/* commitments */
.commit{background:var(--white);border-top:1px solid var(--line)}
.cgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:52px}
.cgrid .c{padding:30px 28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);position:relative}
.cgrid .c::before{content:"";position:absolute;left:28px;top:0;width:36px;height:2px;background:var(--red)}
.cgrid h3{font-size:17px;font-weight:500;margin-bottom:10px}
.cgrid p{font-size:14.5px;color:var(--ink-soft)}
@media (max-width:900px){.cgrid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.cgrid{grid-template-columns:1fr}}
/* legal page */
.legal{padding:80px 0}.legal .wrap{max-width:760px}.legal h1{font-family:var(--serif);font-size:40px;margin-bottom:28px}.legal h2{font-size:24px;margin:40px 0 12px}.legal p{color:var(--ink-soft);margin-bottom:12px}

/* frameworks strip */
.frameworks{background:var(--ink);color:var(--white);border-top:1px solid #2d2d33}
.frameworks .wrap{padding-top:34px;padding-bottom:34px}
.fw-title{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:#e5a9a4;margin-bottom:20px}
.frameworks ul{list-style:none;display:grid;grid-template-columns:repeat(6,1fr);gap:18px}
.frameworks li{border-left:1px solid #3a3a41;padding-left:14px}
.frameworks b{display:block;font-weight:500;font-size:13.5px}
.frameworks span{font-size:12.5px;color:#b9b7bd}
@media (max-width:1000px){.frameworks ul{grid-template-columns:repeat(3,1fr)}}
@media (max-width:560px){.frameworks ul{grid-template-columns:1fr 1fr}}

/* selection */
.select{background:var(--white);border-top:1px solid var(--line)}
.select .wrap{display:grid;grid-template-columns:.9fr 1.1fr;gap:80px;align-items:start}
.crit{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.crit>div{padding-top:18px;border-top:1px solid var(--ink)}
.crit span{font-family:var(--serif);font-size:15px;color:var(--red);letter-spacing:.15em}
.crit h3{font-size:17px;font-weight:500;margin:10px 0 8px}
.crit p{font-size:14.5px;color:var(--ink-soft)}
@media (max-width:900px){.select .wrap{grid-template-columns:1fr;gap:40px}.crit{grid-template-columns:1fr}}

/* base / map */
.base .wrap{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.facts{list-style:none;margin-top:30px;display:grid;gap:16px}
.facts li{padding-left:18px;border-left:1px solid var(--red)}
.facts b{display:block;font-weight:500;font-size:15.5px}
.facts span{font-size:14.5px;color:var(--ink-soft)}
.mapbox{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.map{width:100%;height:auto}
@media (max-width:900px){.base .wrap{grid-template-columns:1fr;gap:36px}}

/* team extras */
.hint .leaf{color:#3a6b3a}.hint b{color:var(--ink);font-weight:500}
.vlinks{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.cardlink{font-size:13px;color:var(--ink-soft);border-bottom:1px solid var(--line)}
.cardlink:hover{color:var(--red);border-color:var(--red)}
.vc img{border:1px solid var(--line);padding:3px;background:#fff;border-radius:4px}

/* contact form */
.cform{max-width:760px;margin:0 auto;text-align:left;display:grid;gap:16px}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cform label{display:grid;gap:6px}
.cform label span{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.cform input,.cform select,.cform textarea{font:inherit;font-size:15px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--white);color:var(--ink);width:100%}
.cform input:focus,.cform select:focus,.cform textarea:focus{outline:none;border-color:var(--ink)}
.cform textarea{resize:vertical}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.fbar{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:6px}
.fnote{font-size:13.5px;color:var(--muted)}.fnote a{border-bottom:1px solid var(--line)}
.fstatus{font-size:14px;min-height:20px;color:var(--ink-soft)}
.fstatus.ok{color:#3a6b3a}.fstatus.err{color:var(--red)}
@media (max-width:560px){.f2{grid-template-columns:1fr}}

/* clickable avatar */
.avlink{display:inline-block;position:relative;margin-bottom:26px}
.avlink .avatar{margin-bottom:0;transition:transform .25s,box-shadow .25s}
.avlink:hover .avatar{transform:scale(1.03);box-shadow:0 0 0 2px var(--red)}
.avcap{display:block;margin-top:8px;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--red);font-weight:500}
.hint .tip{color:var(--ink)}
.menu{gap:26px;font-size:13.5px}

/* vision */
.vision{background:var(--bg-alt);border-top:1px solid var(--line)}
.vision .wrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:70px;align-items:start}
.vision blockquote{margin:0;font-family:var(--serif);font-size:21px;line-height:1.55;color:var(--ink);position:relative;padding-left:28px;border-left:2px solid var(--red)}
.vision blockquote p+p{margin-top:18px}
.sign{display:flex;align-items:center;gap:14px;margin-top:28px;padding-left:28px}
.sign img{width:56px;height:56px;border-radius:50%;object-fit:cover;object-position:center 20%}
.sign strong{display:block;font-weight:500}.sign span{font-size:13px;color:var(--muted)}
html[lang="ja"] .vision blockquote{font-family:"Noto Serif JP",serif;font-size:17px;line-height:1.9}
@media (max-width:900px){.vision .wrap{grid-template-columns:1fr;gap:28px}.vision blockquote{font-size:19px}}
