:root{
  --bg:#0b0b0e;
  --bg-2:#141419;
  --paper:#f5f2ec;
  --paper-2:#ebe6dd;
  --ink:#141416;
  --ink-soft:#4a4a52;
  --white:#f7f4ef;
  --muted:#a6a3ab;
  --red:#b3202f;
  --red-deep:#7d1420;
  --line:rgba(255,255,255,.14);
  --line-dark:rgba(20,20,22,.14);
  --serif:"Shippori Mincho","Hiragino Mincho ProN","Yu Mincho",serif;
  --sans:"Noto Sans JP","Hiragino Kaku Gothic ProN","Hiragino Sans",sans-serif;
  --en:"Cormorant Garamond","Times New Roman",serif;
  --max:1180px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--paper);line-height:1.9;font-size:15.5px;letter-spacing:.02em;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:500;line-height:1.35}
p{margin:0}
.wrap{width:min(var(--max),calc(100% - 48px));margin:0 auto}
.en{font-family:var(--en);letter-spacing:.18em;text-transform:uppercase;font-weight:500}

/* header */
.header{position:fixed;inset:0 0 auto 0;z-index:50;padding:22px 0;transition:background .35s,padding .35s,box-shadow .35s;color:var(--white)}
.header .wrap{display:flex;align-items:center;justify-content:space-between}
.header.is-scrolled{background:rgba(11,11,14,.86);backdrop-filter:blur(12px);padding:12px 0;box-shadow:0 1px 0 var(--line)}
.brand{display:flex;align-items:baseline;gap:12px}
.brand .mark{font-family:var(--en);font-size:28px;letter-spacing:.24em;font-weight:600;line-height:1}
.brand .mark b{color:var(--red);font-weight:600}
.brand .sub{font-size:10.5px;letter-spacing:.22em;color:var(--muted);text-transform:uppercase;font-family:var(--en)}
.nav{display:flex;gap:34px;align-items:center}
.nav a{font-size:13px;letter-spacing:.14em;position:relative;padding:4px 0}
.nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--red);transition:width .3s}
.nav a:hover::after{width:100%}
.nav .cta{border:1px solid var(--line);padding:9px 20px;border-radius:2px;transition:background .3s,border-color .3s}
.nav .cta:hover{background:var(--red);border-color:var(--red)}
.nav .cta::after{display:none}
.burger{display:none;background:none;border:0;color:var(--white);width:40px;height:40px;cursor:pointer;padding:0}
.burger span{display:block;height:1px;background:currentColor;margin:6px auto;width:24px;transition:.3s}
body.nav-open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.nav-open .burger span:nth-child(2){opacity:0}
body.nav-open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* hero */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;color:var(--white);background:var(--bg);overflow:hidden}
.hero__bg{position:absolute;inset:0;background:url(../img/hero-stage.jpg) center 40%/cover no-repeat;transform:scale(1.04);animation:heroIn 2.4s ease-out forwards}
@keyframes heroIn{from{transform:scale(1.1);opacity:.4}to{transform:scale(1.04);opacity:1}}
.hero__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,11,14,.55) 0%,rgba(11,11,14,.25) 40%,rgba(11,11,14,.92) 100%)}
.hero__body{position:relative;padding:160px 0 96px;width:100%}
.hero .eyebrow{font-size:12px;color:#d7d3cc;margin-bottom:26px;display:flex;align-items:center;gap:14px}
.hero .eyebrow::before{content:"";width:40px;height:1px;background:var(--red)}
.hero h1{font-family:var(--serif);font-size:clamp(34px,5.6vw,72px);letter-spacing:.06em;line-height:1.3;font-weight:500}
.hero h1 small{display:block;font-size:.42em;letter-spacing:.2em;color:#d7d3cc;margin-top:18px;font-family:var(--en);text-transform:uppercase}
.hero .lead{max-width:640px;margin-top:30px;color:#dcd8d1;font-size:15px;line-height:2.1}
.hero .actions{display:flex;gap:16px;margin-top:40px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:14px;padding:15px 30px;border:1px solid var(--white);font-size:13px;letter-spacing:.16em;border-radius:2px;transition:.3s}
.btn svg{width:16px;height:16px;transition:transform .3s}
.btn:hover svg{transform:translateX(5px)}
.btn--solid{background:var(--red);border-color:var(--red)}
.btn--solid:hover{background:var(--red-deep);border-color:var(--red-deep)}
.btn--ghost:hover{background:rgba(255,255,255,.1)}
.btn--dark{border-color:var(--ink);color:var(--ink)}
.btn--dark:hover{background:var(--ink);color:var(--white)}
.hero__scroll{position:absolute;right:40px;bottom:40px;font-size:10px;letter-spacing:.3em;writing-mode:vertical-rl;color:#bdb8b0;display:flex;align-items:center;gap:12px}
.hero__scroll::after{content:"";width:1px;height:56px;background:linear-gradient(var(--red),transparent);animation:drop 2s infinite}
@keyframes drop{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}}

/* sections */
.section{padding:120px 0}
.section--dark{background:var(--bg);color:var(--white)}
.section--paper2{background:var(--paper-2)}
.sec-head{display:flex;align-items:baseline;gap:26px;margin-bottom:60px;flex-wrap:wrap}
.sec-head .num{font-family:var(--en);font-size:13px;letter-spacing:.2em;color:var(--red)}
.sec-head h2{font-family:var(--serif);font-size:clamp(26px,3.2vw,38px);letter-spacing:.08em}
.sec-head .en-title{font-size:11px;color:var(--muted);letter-spacing:.3em;margin-left:auto}
.section--dark .sec-head .en-title{color:#8f8b93}

/* news ticker */
.news{background:var(--bg-2);color:var(--white);padding:26px 0;border-top:1px solid var(--line)}
.news .wrap{display:grid;grid-template-columns:120px 1fr;gap:30px;align-items:start}
.news .label{font-size:11px;letter-spacing:.3em;padding-top:6px;color:#bdb8b0}
.news ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.news li{display:grid;grid-template-columns:110px 1fr;gap:20px;font-size:13.5px;align-items:baseline}
.news time{font-family:var(--en);letter-spacing:.14em;color:#bdb8b0}
.news li a{border-bottom:1px solid transparent;transition:.3s}
.news li a:hover{border-color:var(--red)}
.tag{display:inline-block;font-size:10px;letter-spacing:.16em;padding:2px 8px;border:1px solid var(--line);margin-right:12px;vertical-align:middle;color:#d7d3cc}

/* philosophy */
.philo{position:relative;overflow:hidden}
.philo__intro{display:grid;grid-template-columns:1.05fr .95fr;gap:70px;align-items:center;margin-bottom:90px}
.philo__intro h3{font-family:var(--serif);font-size:clamp(22px,2.4vw,30px);letter-spacing:.06em;line-height:1.7}
.philo__intro h3 em{font-style:normal;color:var(--red)}
.philo__intro p{color:var(--ink-soft);margin-top:24px;line-height:2.1}
.philo__intro .quote{font-family:var(--serif);font-size:16px;color:var(--ink);border-left:2px solid var(--red);padding-left:22px;margin-top:34px;line-height:2}
.philo__intro .quote cite{display:block;font-style:normal;font-size:11.5px;color:var(--muted);letter-spacing:.14em;margin-top:8px}
.philo__img{position:relative}
.philo__img img{aspect-ratio:4/3;object-fit:cover;width:100%;border-radius:2px}
.philo__img .sub{position:absolute;right:-24px;bottom:-34px;width:44%;aspect-ratio:4/3;object-fit:cover;border:6px solid var(--paper);box-shadow:0 20px 50px rgba(0,0,0,.18)}
.values{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark)}
.value{padding:44px 30px;border-right:1px solid var(--line-dark);position:relative;transition:background .4s}
.value:last-child{border-right:0}
.value:hover{background:rgba(179,32,47,.05)}
.value .n{font-family:var(--en);font-size:12px;letter-spacing:.24em;color:var(--red)}
.value h4{font-family:var(--serif);font-size:20px;margin:18px 0 16px;letter-spacing:.06em;line-height:1.6}
.value p{font-size:13.5px;color:var(--ink-soft);line-height:2}
.xmark{margin-top:90px;padding:56px;background:var(--bg);color:var(--white);display:grid;grid-template-columns:auto 1fr;gap:56px;align-items:center;border-radius:2px;position:relative;overflow:hidden}
.xmark::before{content:"X";position:absolute;right:-30px;top:-70px;font-family:var(--en);font-size:360px;color:rgba(255,255,255,.04);font-weight:600;line-height:1}
.xmark .big{font-family:var(--en);font-size:120px;line-height:.9;color:var(--red);font-weight:600}
.xmark h4{font-family:var(--serif);font-size:24px;letter-spacing:.08em}
.xmark p{color:#cfcac2;margin-top:14px;font-size:14px;line-height:2.1}
.xmark .chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.xmark .chips span{font-size:12px;letter-spacing:.14em;border:1px solid var(--line);padding:5px 14px;border-radius:999px}

/* business */
.biz{display:grid;grid-template-columns:1fr 1fr;min-height:640px}
.biz + .biz{margin-top:0}
.biz__media{position:relative;overflow:hidden;background:var(--bg)}
.biz__media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s ease}
.biz:hover .biz__media img{transform:scale(1.04)}
.biz__media .logo{position:absolute;left:36px;bottom:32px;height:64px;width:auto;filter:drop-shadow(0 6px 20px rgba(0,0,0,.6))}
.biz__body{padding:80px 72px;display:flex;flex-direction:column;justify-content:center}
.biz--rev .biz__media{order:2}
.biz__body .kicker{font-family:var(--en);font-size:12px;letter-spacing:.3em;color:var(--red);display:flex;align-items:center;gap:14px}
.biz__body .kicker::before{content:"";width:30px;height:1px;background:var(--red)}
.biz__body h3{font-family:var(--serif);font-size:clamp(26px,2.8vw,36px);letter-spacing:.06em;margin:20px 0 6px;line-height:1.5}
.biz__body h3 small{display:block;font-family:var(--en);font-size:13px;letter-spacing:.24em;color:var(--muted);text-transform:uppercase;margin-top:6px}
.biz__body .desc{margin-top:26px;line-height:2.1;color:inherit;opacity:.9}
.biz__body .list{display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;margin:30px 0 0;padding:0;list-style:none;font-size:13.5px}
.biz__body .list li{padding-left:18px;position:relative}
.biz__body .list li::before{content:"";position:absolute;left:0;top:.95em;width:8px;height:1px;background:var(--red)}
.biz__body .foot{margin-top:38px;display:flex;gap:18px;align-items:center;flex-wrap:wrap}
.biz__body .note{font-size:12px;color:var(--muted);letter-spacing:.06em}
.biz--xpt{background:var(--bg);color:var(--white)}
.biz--zero{background:var(--paper);color:var(--ink)}
.gallery{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;padding:8px}
.gallery img{aspect-ratio:3/2;object-fit:cover;width:100%;filter:saturate(.95)}
.gallery img.tall{grid-column:span 2;grid-row:span 1}
.biz--xpt .gallery{background:var(--bg)}

/* history */
.timeline{position:relative;display:grid;grid-template-columns:repeat(2,1fr);gap:0 80px}
.timeline::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line-dark)}
.tl{padding:0 0 40px;position:relative}
.tl:nth-child(odd){text-align:right;padding-right:0}
.tl:nth-child(even){margin-top:70px}
.tl time{font-family:var(--en);font-size:20px;letter-spacing:.16em;color:var(--red);font-weight:600}
.tl h4{font-family:var(--serif);font-size:17px;margin-top:6px;letter-spacing:.06em}
.tl p{font-size:13px;color:var(--ink-soft);margin-top:6px;line-height:1.9}
.tl::after{content:"";position:absolute;top:14px;width:9px;height:9px;border-radius:50%;background:var(--red);box-shadow:0 0 0 5px var(--paper-2)}
.tl:nth-child(odd)::after{right:-45px}
.tl:nth-child(even)::after{left:-45px}

/* vision */
.vision{position:relative;overflow:hidden}
.vision__bg{position:absolute;inset:0;background:url(../img/cards.jpg) right center/cover no-repeat;opacity:.28}
.vision__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,var(--bg) 0%,rgba(11,11,14,.9) 45%,rgba(11,11,14,.5) 100%)}
.vision .wrap{position:relative}
.vision h3{font-family:var(--serif);font-size:clamp(24px,3vw,38px);letter-spacing:.08em;line-height:1.5;max-width:760px}
.vision .lead{max-width:640px;color:#cfcac2;margin-top:22px;line-height:2.1}
.vcols{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);margin-top:64px;border:1px solid var(--line)}
.vcol{background:rgba(11,11,14,.8);padding:38px 32px;backdrop-filter:blur(4px)}
.vcol .n{font-family:var(--en);font-size:12px;letter-spacing:.3em;color:var(--red)}
.vcol h4{font-family:var(--serif);font-size:20px;margin:16px 0 12px;letter-spacing:.06em;line-height:1.6}
.vcol p{font-size:13.5px;color:#cfcac2;line-height:2}
.vision .banner{margin-top:56px;font-family:var(--en);font-size:clamp(16px,2.4vw,26px);letter-spacing:.34em;display:flex;align-items:center;gap:24px;color:#e9e5de}
.vision .banner::before,.vision .banner::after{content:"";height:1px;background:var(--line);flex:1}

/* company */
.company{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start}
.dl{display:grid;grid-template-columns:150px 1fr;border-top:1px solid var(--line-dark);margin:0}
.dl dt,.dl dd{padding:18px 0;border-bottom:1px solid var(--line-dark);margin:0;font-size:14px}
.dl dt{letter-spacing:.12em;color:var(--ink-soft);font-size:12.5px;padding-top:21px}
.dl dd ul{margin:0;padding:0;list-style:none;display:grid;gap:4px}
.dl dd ul li{padding-left:16px;position:relative}
.dl dd ul li::before{content:"";position:absolute;left:0;top:.95em;width:7px;height:1px;background:var(--red)}
.map{aspect-ratio:1/1;background:var(--paper-2);position:relative;border-radius:2px;overflow:hidden}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0;filter:grayscale(1) contrast(1.05)}
.map .addr{position:absolute;left:0;right:0;bottom:0;padding:18px 22px;background:rgba(11,11,14,.85);color:var(--white);font-size:13px;letter-spacing:.06em;line-height:1.8}
.map .addr .en{display:block;font-size:10.5px;color:#bdb8b0;letter-spacing:.24em;margin-bottom:6px}

/* contact */
.contact{display:grid;grid-template-columns:.9fr 1.1fr;gap:80px}
.contact h3{font-family:var(--serif);font-size:clamp(22px,2.2vw,28px);letter-spacing:.08em;line-height:1.6}
.contact .lead{color:#cfcac2;margin-top:22px;line-height:2.1}
.contact .kinds{margin:34px 0 0;padding:0;list-style:none;display:grid;gap:12px}
.contact .kinds li{display:flex;gap:16px;align-items:baseline;font-size:14px;border-bottom:1px solid var(--line);padding-bottom:12px}
.contact .kinds li b{font-family:var(--en);letter-spacing:.2em;color:var(--red);font-weight:600;min-width:34px}
.contact .social{margin-top:40px;display:flex;gap:14px;flex-wrap:wrap}
.contact .social a{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--line);padding:9px 16px;font-size:12.5px;letter-spacing:.1em;border-radius:2px;transition:.3s}
.contact .social a:hover{border-color:var(--red);background:rgba(179,32,47,.15)}
.contact .social svg{width:14px;height:14px}
.form{display:grid;gap:22px;background:var(--bg-2);padding:44px;border:1px solid var(--line);border-radius:2px}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.form label{display:block;font-size:12px;letter-spacing:.14em;color:#bdb8b0}
.form label>input,.form label>select,.form label>textarea{margin-top:8px}
.form label .req{color:var(--red);margin-left:6px;font-size:10px}
.form input,.form select,.form textarea{width:100%;background:var(--bg);border:1px solid var(--line);color:var(--white);padding:13px 14px;font:inherit;font-size:14px;letter-spacing:.02em;border-radius:2px;outline:none;transition:border-color .3s}
.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--red)}
.form textarea{min-height:150px;resize:vertical}
.form select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#bdb8b0 50%),linear-gradient(135deg,#bdb8b0 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat}
.form .agree{font-size:12px;color:#bdb8b0;display:flex;gap:10px;align-items:center}
.form .agree input{width:auto}
.form .btn{justify-content:center;width:100%;cursor:pointer;font-family:inherit;color:var(--white)}
.form .msg{font-size:13px;color:#e9e5de;background:rgba(179,32,47,.2);padding:12px 16px;border:1px solid var(--red);border-radius:2px;display:none}
.form .msg.show{display:block}

/* footer */
.footer{background:#08080a;color:#bdb8b0;padding:64px 0 32px;border-top:1px solid var(--line)}
.footer .top{display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;align-items:flex-start}
.footer .brand{color:var(--white)}
.footer .brand .mark{font-size:24px}
.footer .desc{font-size:12.5px;line-height:2;margin-top:16px;max-width:360px}
.footer .cols{display:flex;gap:64px;flex-wrap:wrap}
.footer .col h5{font-family:var(--en);font-size:11px;letter-spacing:.3em;color:#8f8b93;margin:0 0 14px;font-weight:600}
.footer .col a{display:block;font-size:13px;margin-bottom:8px;transition:color .3s}
.footer .col a:hover{color:var(--white)}
.footer .bottom{margin-top:56px;padding-top:22px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;letter-spacing:.12em;flex-wrap:wrap;gap:12px}
.totop{position:fixed;right:28px;bottom:28px;width:46px;height:46px;border:1px solid var(--line);background:rgba(11,11,14,.8);color:var(--white);display:grid;place-items:center;opacity:0;pointer-events:none;transition:.3s;z-index:40;border-radius:2px;backdrop-filter:blur(8px)}
.totop.show{opacity:1;pointer-events:auto}
.totop svg{width:16px;height:16px}

/* reveal */
html:not(.no-js) .reveal{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s ease}
.reveal.in{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.12s}
.reveal[data-delay="2"]{transition-delay:.24s}
.reveal[data-delay="3"]{transition-delay:.36s}

/* responsive */
@media (max-width:1024px){
  .values{grid-template-columns:1fr 1fr}
  .value:nth-child(2){border-right:0}
  .value:nth-child(-n+2){border-bottom:1px solid var(--line-dark)}
  .biz{grid-template-columns:1fr}
  .biz__media{min-height:360px}
  .biz--rev .biz__media{order:0}
  .biz__body{padding:56px 40px}
  .gallery{grid-template-columns:repeat(3,1fr)}
  .company,.contact{grid-template-columns:1fr;gap:48px}
  .map{aspect-ratio:16/10}
}
@media (max-width:820px){
  .nav{position:fixed;inset:0;background:rgba(11,11,14,.96);flex-direction:column;justify-content:center;gap:28px;transform:translateX(100%);transition:transform .4s;z-index:-1}
  .nav a{font-size:17px}
  body.nav-open .nav{transform:none}
  .burger{display:block}
  .header{z-index:60}
  .hero__body{padding:140px 0 90px}
  .hero h1{font-size:clamp(28px,8.4vw,34px);letter-spacing:.03em}
  .hero .eyebrow{font-size:10px;letter-spacing:.1em}
  .hero__scroll{display:none}
  .section{padding:80px 0}
  .philo__intro{grid-template-columns:1fr;gap:56px}
  .philo__img .sub{right:0}
  .values{grid-template-columns:1fr}
  .value{border-right:0;border-bottom:1px solid var(--line-dark)}
  .value:last-child{border-bottom:0}
  .xmark{grid-template-columns:1fr;padding:40px 28px;gap:24px}
  .xmark .big{font-size:80px}
  .timeline{grid-template-columns:1fr;padding-left:28px}
  .timeline::before{left:0}
  .tl,.tl:nth-child(odd){text-align:left}
  .tl:nth-child(even){margin-top:0}
  .tl::after,.tl:nth-child(odd)::after,.tl:nth-child(even)::after{left:-32px;right:auto}
  .vcols{grid-template-columns:1fr}
  .form{padding:28px 22px}
  .form .row{grid-template-columns:1fr}
  .news .wrap{grid-template-columns:1fr;gap:10px}
  .news li{grid-template-columns:1fr;gap:2px}
  .dl{grid-template-columns:110px 1fr}
  .biz__body .list{grid-template-columns:1fr}
}
@media (max-width:820px){br.pc{display:none}}
