/* ==========================================================================
   Sichuan Retreat — design system (A1 "white paper, four doors")
   ========================================================================== */

:root{
  --cream:#F7F4EE;
  --cream-2:#F1EDE4;
  --paper:#FBF9F4;
  --ink:#22201C;
  --body:#43403A;
  --green:#2D5016;
  --green-dp:#1F3A0F;
  --muted:#6E6A5E;
  --line:rgba(34,32,28,.14);
  --line-2:rgba(34,32,28,.2);
  --serif:"Playfair Display","Songti SC","STSong","SimSun",Georgia,serif;
  --sans:"Inter",-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;
  --pad:clamp(20px,4.5vw,72px);
  --max:1320px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  background:var(--cream);color:var(--ink);
  font-family:var(--sans);font-weight:300;font-size:16px;line-height:1.7;
  letter-spacing:.004em;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
[id]{scroll-margin-top:80px}
figure{margin:0}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.narrow{max-width:820px;margin:0 auto;padding:0 var(--pad)}

/* ---------- header ---------- */
header{position:sticky;top:0;z-index:50;background:rgba(247,244,238,.93);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.bar{max-width:var(--max);margin:0 auto;padding:0 var(--pad);height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.brand{font-family:var(--serif);font-size:15px;letter-spacing:.16em;text-transform:uppercase;color:var(--green);white-space:nowrap;display:inline-flex;align-items:center;min-height:44px}
.bar nav{display:flex;align-items:center;gap:clamp(14px,2vw,32px)}
.bar nav a{font-size:14px;letter-spacing:.06em;color:var(--muted);padding:12px 0;min-height:44px;display:inline-flex;align-items:center;transition:color .3s;position:relative}
.bar nav a:hover,.bar nav a[aria-current="page"]{color:var(--green)}
.bar nav a[aria-current="page"]::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:var(--green)}
.bar .nav-book{color:var(--green);font-size:14px;letter-spacing:.06em;border-bottom:1px solid var(--green);padding-bottom:3px;min-height:44px;display:inline-flex;align-items:center}
.burger{display:none;width:44px;height:44px;padding:11px 9px;flex-direction:column;justify-content:space-between;cursor:pointer}
.burger span{display:block;height:1px;background:var(--ink);transition:transform .35s,opacity .3s}
#navToggle{position:absolute;opacity:0;pointer-events:none}
.mobile-menu{display:none}

/* ---------- typography ---------- */
.eyebrow,.kicker{font-size:14px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
h1{font-family:var(--serif);font-weight:400;font-size:clamp(2.15rem,6.4vw,5rem);line-height:1.04;letter-spacing:-.015em}
h2{font-family:var(--serif);font-weight:400;font-size:clamp(1.55rem,3vw,2.5rem);line-height:1.2;letter-spacing:-.01em}
h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.2rem,1.9vw,1.6rem);line-height:1.3;letter-spacing:-.005em}
.lede{font-size:clamp(16px,1.2vw,17.5px);line-height:1.75;color:var(--body);max-width:46ch}
.lede .cn{display:inline-block;font-family:var(--serif);color:var(--green);margin-right:.4em}
.prose p{font-size:clamp(16px,1.1vw,17px);line-height:1.85;color:var(--body)}
.prose p + p{margin-top:1.1em;text-indent:1.4em}
.prose .drop::first-letter{font-family:var(--serif);font-size:3em;line-height:.9;float:left;margin:.06em .12em 0 0;color:var(--green)}

/* ---------- animation (first screen only) ---------- */
.fade{opacity:0;animation:fadeUp .95s cubic-bezier(.2,.7,.3,1) forwards}
.d1{animation-delay:.05s}.d2{animation-delay:.16s}.d3{animation-delay:.27s}.d4{animation-delay:.4s}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}

/* ---------- home hero ---------- */
.hero{min-height:calc(100svh - 64px);display:flex;flex-direction:column;justify-content:space-between;padding-top:clamp(36px,6.4vh,84px);padding-bottom:clamp(26px,3.6vh,48px)}
.hero h1{margin-top:clamp(16px,2.8vh,32px);max-width:19ch}
.hero h1 .sc{color:var(--green)}
.hero .lede{margin-top:clamp(16px,2.2vh,24px)}

/* four doors */
.gates{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(10px,1.6vw,24px);margin-top:clamp(32px,4.6vh,60px)}
.gate{display:block;background:none;border:0;text-align:left;padding:0;cursor:pointer;font-family:inherit;color:inherit}
.gate .ph{position:relative;overflow:hidden;background:var(--cream-2)}
.gate .ph img{width:100%;height:clamp(150px,20vh,260px);object-fit:cover;filter:saturate(.82) contrast(.98);transition:transform 1.1s cubic-bezier(.2,.7,.3,1),filter .7s}
.gate:hover .ph img,.gate:focus-visible .ph img{transform:scale(1.05);filter:saturate(1) contrast(1)}
.gate .zi{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:clamp(22px,2vw,32px);color:#FBF9F4;text-shadow:0 2px 18px rgba(0,0,0,.45);letter-spacing:.1em;transition:opacity .45s}
.gate:hover .zi,.gate:focus-visible .zi{opacity:0}
.gate .meta{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:13px;border-top:1px solid var(--line);padding-top:10px}
.gate .nm{font-size:14px;letter-spacing:.13em;text-transform:uppercase;color:var(--green)}
.gate .cn{font-family:var(--serif);font-size:14px;color:var(--muted)}
.gate .desc{font-size:14px;color:var(--muted);margin-top:5px;line-height:1.55}

/* hero foot */
.hero-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-top:clamp(26px,3.6vh,44px);padding-top:16px;border-top:1px solid var(--line);font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.hero-foot .cta{color:var(--green);border-bottom:1px solid var(--green);padding-bottom:3px;min-height:44px;display:inline-flex;align-items:center}

/* ---------- inner page hero ---------- */
.phero{padding:clamp(34px,7vh,86px) 0 clamp(22px,3.4vh,36px);border-bottom:1px solid var(--line)}
.phero .eyebrow{color:var(--green)}
.phero h1{font-size:clamp(2rem,5.2vw,3.9rem);margin-top:clamp(14px,2.4vh,26px);max-width:22ch}
.phero .lede{margin-top:clamp(16px,2.4vh,24px)}
.phero .ph-meta{display:flex;flex-wrap:wrap;gap:clamp(20px,3.4vw,48px);margin-top:clamp(22px,3.4vh,34px);padding-top:18px;border-top:1px solid var(--line)}
.phero .ph-meta div{font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.phero .ph-meta b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(1.1rem,1.7vw,1.45rem);color:var(--green);letter-spacing:0;text-transform:none;margin-bottom:3px}

/* ---------- sections ---------- */
.section{padding-block:clamp(44px,7.4vh,96px)}
.section + .section{border-top:1px solid var(--line)}
.sec-head{display:flex;justify-content:space-between;align-items:flex-end;gap:26px;flex-wrap:wrap;margin-bottom:clamp(24px,3.6vh,40px)}
.sec-head h2{max-width:21ch;margin-top:10px}
.sec-head p{font-size:15px;color:var(--muted);max-width:36ch;line-height:1.75}

/* split : image + text */
.split{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(26px,5vw,70px);align-items:center}
.split.rev{grid-template-columns:1fr 1.25fr}
.split .fig{position:relative;overflow:hidden}
.split .fig img{width:100%;aspect-ratio:4/3;object-fit:cover}
.split .fig .tag{position:absolute;left:0;bottom:0;background:var(--cream);color:var(--green);font-family:var(--serif);font-size:14px;letter-spacing:.16em;padding:10px 16px}
.split h2{margin-top:12px}
.split .body{font-size:clamp(16px,1.1vw,17px);line-height:1.8;color:var(--body);margin-top:16px}
.split .body + .body{margin-top:.9em}

/* rows : price / facts */
.rows{list-style:none;margin-top:22px;border-top:1px solid var(--line-2)}
.rows li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--line-2);font-size:15px;color:var(--body)}
.rows li em{font-style:normal;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.rows li b{font-weight:400;color:var(--green);white-space:nowrap}

/* timeline */
.timeline{border-top:1px solid var(--line)}
.trow{display:grid;grid-template-columns:110px 1fr 1.45fr;gap:clamp(14px,3vw,42px);padding:clamp(18px,2.4vh,26px) 0;border-bottom:1px solid var(--line);align-items:baseline}
.trow .t{font-family:var(--serif);font-size:15px;color:var(--green);letter-spacing:.04em;font-variant-numeric:tabular-nums}
.trow .h{font-size:clamp(16px,1.2vw,18px)}
.trow .d{font-size:15px;color:var(--muted);line-height:1.7}

/* cards3 */
.cards3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,2vw,26px)}
.card3{position:relative;overflow:hidden;display:block}
.card3 img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.7,.3,1)}
.card3:hover img{transform:scale(1.04)}
.card3 .cap{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(to top,rgba(24,20,15,.8),rgba(24,20,15,0));padding:clamp(16px,2.2vw,28px) clamp(14px,1.8vw,22px) clamp(14px,1.8vw,20px);color:#FBF9F4}
.card3 .cap b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(1.05rem,1.6vw,1.35rem)}
.card3 .cap span{display:block;font-size:14px;color:rgba(251,249,244,.84);margin-top:6px;line-height:1.6}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 28px;background:var(--green);color:var(--cream);font-size:14px;letter-spacing:.13em;text-transform:uppercase;transition:background .35s}
.btn:hover{background:var(--green-dp)}
.btn-ghost{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 28px;border:1px solid var(--line-2);color:var(--ink);font-size:14px;letter-spacing:.13em;text-transform:uppercase;transition:border-color .35s,color .35s}
.btn-ghost:hover{border-color:var(--green);color:var(--green)}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}

/* cta band */
.cta-band{background:var(--green);color:#E8E4D6;padding:clamp(42px,7vh,84px) 0}
.cta-band .inner{display:flex;justify-content:space-between;align-items:center;gap:clamp(22px,4vw,60px);flex-wrap:wrap}
.cta-band h2{color:var(--paper);font-size:clamp(1.45rem,2.7vw,2.3rem);max-width:24ch}
.cta-band p{font-size:15px;line-height:1.75;color:rgba(232,228,214,.92);margin-top:10px;max-width:40ch}
.cta-band .btn{background:var(--paper);color:var(--green)}
.cta-band .btn:hover{background:#fff}

/* footer */
footer{padding:clamp(44px,7vh,88px) 0 34px;background:var(--green);color:#E8E4D6}
.f-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:clamp(26px,4.8vw,64px)}
footer .brand-cn{font-family:var(--serif);font-size:clamp(1.4rem,2.4vw,2.1rem);color:var(--paper);letter-spacing:.12em}
footer p{font-size:14.5px;line-height:1.8;color:rgba(232,228,214,.86);margin-top:12px;max-width:34ch}
footer h4{font-size:14px;letter-spacing:.16em;text-transform:uppercase;color:rgba(232,228,214,.82);margin-bottom:14px;font-weight:400}
footer ul{list-style:none}
footer li{font-size:14.5px;margin-bottom:9px;color:rgba(232,228,214,.9)}
footer a{min-height:44px;display:inline-flex;align-items:center;transition:color .3s}
footer a:hover{color:#fff}
footer .fine{margin-top:clamp(32px,5vh,60px);padding-top:18px;border-top:1px solid rgba(232,228,214,.22);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:14px;letter-spacing:.06em;color:rgba(232,228,214,.84)}

/* ---------- responsive ---------- */
@media (max-width:1000px){
  .split,.split.rev{grid-template-columns:1fr}
  .cards3{grid-template-columns:1fr 1fr}
  .f-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:900px){
  .gates{grid-template-columns:1fr 1fr;gap:10px}
  .gate .ph img{height:34vw;min-height:132px}
  .gate .desc{-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
  .trow{grid-template-columns:76px 1fr;gap:10px 16px}
  .trow .d{grid-column:2;margin-top:-4px}
}
@media (max-width:640px){
  .bar nav{display:none}
  .burger{display:flex}
  .hero{min-height:calc(100svh - 64px);padding-top:30px}
  .hero h1{max-width:100%;font-size:clamp(1.85rem,8.4vw,2.55rem)}
  .gates{grid-template-columns:1fr;gap:0;margin-top:28px}
  .gate{display:flex;align-items:flex-start;gap:14px;min-height:96px;padding:15px 0;border-bottom:1px solid var(--line)}
  .gate .ph{width:64px;flex:0 0 64px}
  .gate .ph img{height:64px;width:64px}
  .gate .zi{font-size:19px}
  .gate .info{flex:1}
  .gate .meta{margin-top:0;padding-top:0;border-top:0;flex-direction:column;align-items:flex-start;gap:2px}
  .gate .cn{order:-1}
  .hero-foot{flex-direction:column;align-items:flex-start;gap:12px;font-size:15px;line-height:1.6}
  .gate .desc{font-size:15px}
  .gate .meta{margin-bottom:3px}
  footer p,footer li{font-size:15px}
  .rows li,.trow .d,.sec-head p,.note li{font-size:15px}
  .cards3{grid-template-columns:1fr}
  .card3 img{aspect-ratio:16/10}
  .split .fig{order:-1}
  .f-grid{grid-template-columns:1fr;gap:28px}
  .btn,.btn-ghost{width:100%}
  .cta-band .btn{width:100%}
  .mobile-menu{display:block;position:fixed;inset:64px 0 auto 0;background:var(--cream);border-bottom:1px solid var(--line);transform:translateY(-102%);transition:transform .4s cubic-bezier(.3,.8,.2,1);z-index:40;padding:8px var(--pad) 24px}
  #navToggle:checked ~ .mobile-menu{transform:none}
  .mobile-menu a{display:flex;align-items:center;min-height:56px;border-bottom:1px solid var(--line);font-size:16px;letter-spacing:.03em}
  .mobile-menu a:last-child{border-bottom:0;color:var(--green)}
  #navToggle:checked ~ header .bar .burger span:nth-child(1){transform:translateY(10px) rotate(45deg)}
  #navToggle:checked ~ header .bar .burger span:nth-child(2){opacity:0}
  #navToggle:checked ~ header .bar .burger span:nth-child(3){transform:translateY(-10px) rotate(-45deg)}
}
