:root{--ivory:#FBF7EF;--ink:#1D1A17;--ink2:#14110F;--red:#9B1B17;--red2:#7d1411;--gold:#B8914A;--gold2:#E3C58B;--line:#E6DCC8;--text:#1D1A17;--mut:#6b6258;--serif:"Noto Serif SC","Source Han Serif SC","Songti SC","STSong","SimSun",serif;--sans:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;--w:1240px}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{font-family:var(--sans);color:var(--text);background:var(--ivory);line-height:1.75;font-size:16px;-webkit-font-smoothing:antialiased}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.wrap{width:100%;max-width:var(--w);margin:0 auto;padding:0 40px}
.narrow{max-width:920px}
.serif{font-family:var(--serif);font-weight:700;letter-spacing:.03em}
.center{text-align:center;margin-top:48px}

/* top bar + header */
.topbar{background:var(--red);color:var(--ivory);font-size:13px;letter-spacing:.08em}
.topbar .wrap{height:40px;display:flex;align-items:center;justify-content:space-between}
.hd{position:sticky;top:0;z-index:50;background:var(--ivory);border-bottom:1px solid var(--line)}
.hd-in{display:flex;align-items:center;height:88px;gap:28px}
.brand{flex:none}.brand img{height:52px;width:auto;max-width:none}
.nav{display:flex;align-items:center;gap:22px;margin-left:auto;font-size:14.5px;letter-spacing:.05em}
.nav a{padding:6px 0;color:var(--ink);position:relative;transition:color .2s;white-space:nowrap}
.nav a:not(.nav-ai)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform .3s}
.nav a:hover,.nav a.on{color:var(--red)}
.nav a:hover::after,.nav a.on::after{transform:scaleX(1)}
.nav-ai{margin-left:4px;background:var(--red);color:var(--ivory)!important;padding:10px 22px!important;font-size:14px;letter-spacing:.1em;transition:background .2s}
.nav-ai:hover{background:var(--red2)}
.burger{display:none;margin-left:auto;width:44px;height:44px;position:relative}
.burger i{position:absolute;left:10px;right:10px;height:2px;background:var(--ink);transition:transform .3s}
.burger i:nth-child(1){top:16px}.burger i:nth-child(2){top:26px}
.menu-open .burger i:nth-child(1){transform:translateY(5px) rotate(45deg)}
.menu-open .burger i:nth-child(2){transform:translateY(-5px) rotate(-45deg)}

/* common */
.eyebrow{display:inline-block;font-size:13px;letter-spacing:.3em;color:var(--red);font-weight:500}
.eyebrow.gold{color:var(--gold2)}
.more{display:inline-block;color:var(--red);border-bottom:1px solid var(--red);padding-bottom:4px;letter-spacing:.12em;font-size:15px;transition:letter-spacing .25s}
.more:hover{letter-spacing:.2em}
.more.gold{color:var(--gold2);border-color:var(--gold2)}
.btn{display:inline-flex;align-items:center;height:56px;padding:0 40px;font-size:16px;letter-spacing:.12em;transition:all .25s}
.btn.pri{background:var(--red);color:var(--ivory)}.btn.pri:hover{background:var(--red2)}
.btn.line{border:1px solid var(--ink)}.btn.line:hover{background:var(--ink);color:var(--ivory)}
.cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:48px}
.sec{padding:120px 0}
.sec.alt{background:#F4EDDD}
.sec h2,.crim h2,.cta-band h2{font-size:clamp(30px,3.8vw,48px);line-height:1.4;margin-top:18px}
.shead{margin-bottom:56px}
.shead.row{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap}
.grid2{display:grid;grid-template-columns:1fr 1.2fr;gap:72px;align-items:start}
.grid2.mid{align-items:center}

/* hero */
.hero{padding:88px 0 96px}
.hero-in{display:flex;flex-wrap:wrap;gap:64px;align-items:center}
.hero-copy{flex:1 1 560px;min-width:0}
.kicker{display:flex;align-items:center;gap:14px;font-size:13px;letter-spacing:.3em;color:var(--red)}
.kicker i{width:48px;height:1px;background:var(--gold);display:block}
.hero h1{margin:28px 0 0;font-family:var(--serif);font-weight:900;font-size:clamp(46px,6.4vw,92px);line-height:1.14;letter-spacing:.04em}
.hero h1 em{font-style:normal;color:var(--red)}
.lead{margin-top:36px;max-width:520px;font-size:18px;color:#5b534a;line-height:2}
.hero-side{flex:1 1 420px;min-width:0;display:flex;justify-content:center}
.hcard{position:relative;width:440px;max-width:100%;padding:0 28px 28px 0}
.hframe{position:absolute;inset:28px 0 0 28px;border:1px solid var(--gold)}
.hphoto{position:relative;background:var(--red);aspect-ratio:4/5;overflow:hidden}
.hphoto img{width:100%;height:100%;object-fit:cover;object-position:top}
.hnote{position:absolute;left:-36px;bottom:56px;background:var(--ivory);padding:20px 26px;box-shadow:0 20px 40px rgba(60,20,10,.14);max-width:300px}
.hnote b{display:block;font-family:var(--serif);font-size:22px}
.hnote span{display:block;font-size:13px;letter-spacing:.14em;color:var(--red);margin:2px 0 8px}
.hnote p{font-size:13px;color:#5b534a;line-height:1.7}

.pillars4{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pillars4 .wrap{display:grid;grid-template-columns:repeat(4,1fr)}
.pillars4 .wrap>div{padding:44px 32px;border-right:1px solid var(--line)}
.pillars4 .wrap>div:first-child{padding-left:0}
.pillars4 .wrap>div:last-child{border-right:0}
.pillars4 i{display:block;font-style:normal;font-family:var(--serif);color:var(--gold);font-size:15px;letter-spacing:.2em}
.pillars4 b{display:block;font-family:var(--serif);font-size:26px;margin-top:10px}

.about-txt{font-size:18px;line-height:2.1;color:#3b352e}
.about-txt p{margin-bottom:24px}
.about-txt .mut{color:var(--mut)}

/* crimson 361 */
.crim{background:var(--red);color:var(--ivory);padding:112px 0 120px}
.tri2{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid rgba(251,247,239,.35);margin-top:8px}
.tri2>div{padding:48px 40px 0}
.tri2>div:first-child{padding-left:0}
.tri2>div+div{border-left:1px solid rgba(251,247,239,.35)}
.tri2 b{display:block;font-family:var(--serif);font-weight:900;font-size:clamp(120px,14vw,200px);line-height:.9;color:var(--gold2)}
.tri2 h3{font-family:var(--serif);font-size:28px;margin-top:28px}
.tri2 p{margin-top:10px;color:rgba(251,247,239,.82);line-height:1.9}

/* cards */
.tgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px 28px}
.tcard{display:block}
.tph{aspect-ratio:3/4;overflow:hidden;background:var(--line)}
.tph img{width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.tcard:hover .tph img{transform:scale(1.05)}
.tcard h3{font-family:var(--serif);font-size:22px;margin:18px 0 2px}
.tcard p{color:#8a7f72;font-size:14px;line-height:1.6}
.offers{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.offer{display:block;background:#fff;border:1px solid var(--line);overflow:hidden;transition:transform .4s,box-shadow .4s}
.offer:hover{transform:translateY(-6px);box-shadow:0 24px 40px -24px rgba(60,20,10,.35)}
.offer img{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:top}
.offer span{display:block;padding:14px 18px;font-family:var(--serif);font-size:15px;border-top:1px solid var(--line)}
.ngrid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}
.ncard{display:block;background:#fff;border:1px solid var(--line);overflow:hidden;transition:transform .4s,box-shadow .4s}
.ncard:hover{transform:translateY(-6px);box-shadow:0 24px 40px -24px rgba(60,20,10,.35)}
.nimg{aspect-ratio:4/3;overflow:hidden;background:var(--line)}
.nimg img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.ncard:hover .nimg img{transform:scale(1.06)}
.nt{padding:20px 20px 24px}
.nt h3{font-family:var(--serif);font-size:17px;line-height:1.5;margin-top:8px}
.tag{display:inline-block;font-size:12px;letter-spacing:.14em;color:var(--red);font-weight:500}
.fgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.fcard,.mosaic a{position:relative;display:block;overflow:hidden;background:#222}
.fcard{aspect-ratio:4/3}
.fcard img,.mosaic img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.fcard span,.mosaic span{position:absolute;left:0;right:0;bottom:0;padding:18px 24px;background:rgba(29,26,23,.72);color:var(--ivory);font-family:var(--serif);font-size:18px;line-height:1.4}
.fcard:hover img,.mosaic a:hover img{transform:scale(1.06)}
.mosaic{display:flex;gap:24px;flex-wrap:wrap}
.mbig{flex:1.5 1 480px;aspect-ratio:4/3}
.mbig span{padding:28px 32px;font-size:22px}
.mcol{flex:1 1 300px;display:flex;flex-direction:column;gap:24px}
.mcol a{flex:1;min-height:200px}
.mcol img{position:absolute;inset:0}

.cta-band{background:var(--ink);color:var(--ivory);padding:104px 0}
.cta-in{display:flex;flex-wrap:wrap;gap:48px;align-items:center;justify-content:space-between}
.cta-band h2{font-weight:900;margin-top:18px}
.phone{font-family:var(--serif);font-size:clamp(34px,4.4vw,56px);color:var(--gold2);letter-spacing:.04em;line-height:1.2}
.mut-l{margin:12px 0 32px;color:rgba(251,247,239,.7)}

/* inner page head */
.ph{padding:96px 0 72px;border-bottom:1px solid var(--line);background:var(--ivory);position:relative}
.ph::after{content:"";position:absolute;left:max(40px,calc((100vw - var(--w))/2 + 40px));bottom:-1px;width:96px;height:3px;background:var(--red)}
.ph h1{font-family:var(--serif);font-weight:900;font-size:clamp(38px,5.2vw,64px);letter-spacing:.06em;line-height:1.25;margin-top:16px}
.ph p{margin-top:18px;color:var(--mut);max-width:640px;font-size:17px}

/* detail & prose */
.back{display:inline-block;margin-bottom:40px;color:var(--mut);font-size:14px;letter-spacing:.08em;transition:color .2s}
.back:hover{color:var(--red)}
.person{display:grid;grid-template-columns:minmax(260px,420px) 1fr;gap:72px;align-items:start}
.pph{background:var(--line);position:relative}
.pph img{width:100%}
.pph.offer-big{background:#fff;border:1px solid var(--line)}
.pinfo h1{font-size:clamp(34px,4.4vw,52px);margin:12px 0 28px}
.art-t{font-size:clamp(30px,4.2vw,48px);line-height:1.4;margin:14px 0 36px}
.narrow-p{max-width:760px;margin-bottom:48px}
.big{font-size:clamp(18px,1.8vw,22px);line-height:2;font-family:var(--serif)}
.prose{font-size:17px;line-height:2}
.prose p{margin-bottom:1.1em}
.prose h2,.prose h3,.prose h4{font-family:var(--serif);font-weight:700;line-height:1.5}
.prose h2{font-size:30px;margin:2.2em 0 .7em;padding-bottom:12px;border-bottom:1px solid var(--line)}
.prose h3{font-size:24px;margin:1.8em 0 .6em;color:var(--red)}
.prose h4{font-size:20px;margin:1.6em 0 .5em}
.prose h2:first-child,.prose h3:first-child{margin-top:0}
.prose figure{margin:2em 0}
.prose img{margin:0 auto;border:1px solid var(--line);background:#fff}
.prose strong{font-weight:700}
.prose.kv p{padding:14px 0;border-bottom:1px solid var(--line);margin:0;font-size:18px}
.prose.intro p{font-family:var(--serif);font-size:clamp(18px,1.8vw,22px);line-height:2.1}
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.gallery figure{overflow:hidden;aspect-ratio:4/3;background:#222}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .8s}
.gallery figure:hover img{transform:scale(1.05)}
.culgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 64px;border-top:1px solid var(--line)}
.cul{padding:28px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:110px 1fr;gap:16px}
.cul span{font-family:var(--serif);color:var(--red);font-size:17px}
.tl{position:relative;margin-top:8px;border-left:1px solid var(--gold);padding-left:44px}
.tl li{position:relative;padding-bottom:48px}
.tl li::before{content:"";position:absolute;left:-50px;top:14px;width:11px;height:11px;background:var(--red);box-shadow:0 0 0 5px var(--ivory)}
.tl i{display:block;font-style:normal;font-family:var(--serif);font-size:34px;color:var(--gold);line-height:1.2}
.tl h4{font-family:var(--serif);font-size:19px;margin:6px 0 6px}
.tl p{color:var(--mut)}
.clist>div{padding:30px 0;border-bottom:1px solid var(--line)}
.clist>div:first-child{border-top:1px solid var(--line)}
.clist span{display:block;font-size:13px;letter-spacing:.24em;color:var(--mut);margin-bottom:8px}
.clist .phone{color:var(--red);display:inline-block}
.clist p{font-family:var(--serif);font-size:20px}
.cqr{justify-self:center;text-align:center}
.cqr img{width:240px;border:1px solid var(--line);padding:14px;background:#fff}
.cqr span{display:block;margin-top:14px;font-size:14px;letter-spacing:.2em;color:var(--mut)}

/* footer */
.ft{background:var(--ink2);color:rgba(251,247,239,.65);padding:72px 0 0;font-size:14.5px}
.ft-in{display:grid;grid-template-columns:1.4fr 1.4fr 1fr auto;gap:56px}
.ft-brand img{height:52px;width:auto;margin-bottom:20px}
.ft h5{color:var(--ivory);font-weight:500;letter-spacing:.2em;margin-bottom:16px;font-size:14px}
.ft-col p{margin-bottom:6px}
.ft-links{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}
.ft-links a:hover{color:var(--gold2)}
.ft-qr{text-align:center}
.ft-qr img{width:108px;background:#fff;padding:6px}
.ft-qr span{display:block;margin-top:8px;font-size:12px;letter-spacing:.2em}
.ft-bot{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:56px;padding-top:24px;padding-bottom:28px;border-top:1px solid rgba(251,247,239,.12);font-size:13px;color:rgba(251,247,239,.5)}
.ft-bot a:hover{color:var(--gold2)}

/* reveal */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.reveal.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* responsive */
@media(max-width:1200px){
 .burger{display:block}
 .nav{position:absolute;top:100%;left:0;right:0;background:var(--ivory);flex-direction:column;align-items:stretch;gap:0;padding:8px 40px 28px;margin:0;border-bottom:1px solid var(--line);max-height:calc(100vh - 88px);overflow:auto;transform:translateY(-12px);opacity:0;pointer-events:none;transition:all .3s}
 .menu-open .nav{transform:none;opacity:1;pointer-events:auto}
 .nav a{padding:15px 0;border-bottom:1px solid var(--line);font-size:16px}
 .nav a::after{display:none}
 .nav-ai{margin:18px 0 0!important;text-align:center;border-bottom:0!important}
}
@media(max-width:980px){
 .sec{padding:84px 0}
 .grid2{grid-template-columns:1fr;gap:36px}
 .tgrid,.offers,.ngrid,.fgrid{grid-template-columns:repeat(2,1fr)}
 .pillars4 .wrap{grid-template-columns:1fr 1fr}
 .pillars4 .wrap>div{padding:32px 24px;border-bottom:1px solid var(--line)}
 .pillars4 .wrap>div:nth-child(odd){padding-left:0}
 .tri2{grid-template-columns:1fr}
 .tri2>div,.tri2>div:first-child{padding:36px 0;border-left:0;border-bottom:1px solid rgba(251,247,239,.25)}
 .tri2>div+div{border-left:0}
 .person{grid-template-columns:1fr;gap:36px}
 .pph{max-width:420px}
 .culgrid{grid-template-columns:1fr}
 .ft-in{grid-template-columns:1fr 1fr;gap:40px}
 .gallery{grid-template-columns:repeat(2,1fr)}
 .hnote{left:0;bottom:28px}
}
@media(max-width:640px){
 .wrap{padding:0 20px}
 .topbar .tb-addr{display:none}
 .hd-in{height:68px}.brand img{height:40px}
 .nav{padding:8px 20px 24px;max-height:calc(100vh - 68px)}
 .hero{padding:56px 0 64px}
 .hero-in{gap:48px}
 .ph{padding:64px 0 48px}
 .ph::after{left:20px}
 .sec{padding:64px 0}
 .crim{padding:72px 0 80px}
 .shead{margin-bottom:36px}
 .tgrid,.offers,.ngrid,.fgrid{gap:14px}
 .tgrid{gap:28px 14px}
 .pillars4 b{font-size:20px}
 .gallery{grid-template-columns:1fr}
 .cul{grid-template-columns:1fr;gap:4px}
 .tl{padding-left:30px}.tl li::before{left:-36px}
 .ft-in{grid-template-columns:1fr}
 .tcard h3{font-size:18px}
 .btn{height:50px;padding:0 28px;font-size:15px}
 .cta-band{padding:72px 0}
 .hcard{padding:0 16px 16px 0}.hframe{inset:16px 0 0 16px}
}
