/* ===================== Nine Mansion v6 · compact + readable (layered last) ===================== */
:root{--display:"Lora",Georgia,"Times New Roman",serif;--serif:"Lora",Georgia,"Times New Roman",serif}
body{font-size:16px;line-height:26px}
/* v7: Bodoni Moda / Cormorant hairlines were hard to read, so headings use Lora (even stroke) at the original weights */
/* compact spacing and sizes */
section{padding:72px 0}
h2{font-size:44px;line-height:1.08;margin-top:10px}
.lead{font-size:17px;line-height:27px;margin-top:14px}
.eyebrow{font-size:12px}
.about .grid{gap:56px}
.collage{height:460px}
.facts{margin-top:26px}.facts div{padding:14px 0}.facts b{font-size:30px;line-height:34px}
.signature{font-size:22px;margin-top:18px}
.tour .grid{margin-top:34px;gap:56px}
.tour .stage{top:96px;height:calc(100vh - 150px);max-height:600px}
.chap{min-height:52vh}
.chap h3{font-size:38px}.chap p{font-size:16px;line-height:26px;margin-top:10px}
.chap .thumbs img{width:80px;height:60px}
.details .grid{margin-top:30px;gap:28px}.spec{margin-top:30px}.spec div{padding:18px}.spec b{font-size:34px;line-height:38px}
.panel{padding:28px}.panel h3{font-size:26px}.amen{gap:10px 20px;margin-top:18px}.amen li{font-size:15px}.amen li i{width:28px;height:28px;font-size:14px}
.pkg{margin-top:32px;gap:28px}.pkg .card{padding:30px}.pkg .card .amt{font-size:52px;line-height:56px}.pkg .note{padding:26px}
.strip{padding:30px 28px 6px}.strip figure{height:300px}
.stacks{gap:38px 28px;margin-top:36px}.stack .pile{aspect-ratio:4/3.8}.stack .meta{margin-top:16px}.stack .meta b{font-size:23px}
.cal-wrap{margin-top:30px;gap:28px}.month h4{font-size:22px}.day{font-size:14px}
.price-grid{margin-top:30px}.price{padding:26px 22px}.price h3{font-size:24px}.price .amt.big{font-size:46px;line-height:50px}
.route-grid{margin-top:30px;gap:40px}.origin{padding:16px 20px;margin-bottom:10px}.origin h3{font-size:22px}.park{margin-top:16px;padding:16px 0}.park h3{font-size:22px}
.mapframe{margin-top:30px;height:340px}
.mapcard{margin-top:20px}.mapstage{aspect-ratio:16/9.5}.placecard{padding:22px 22px}.placecard h3{font-size:26px;line-height:30px;min-height:60px}.placecard .walk b{font-size:36px}.plist{max-height:200px}
.acc{margin-top:26px;padding:4px 26px}.acc summary{font-size:21px;padding:16px 0}
.contact .grid{margin-top:26px;gap:44px}.links{gap:8px}.links a{padding:13px 20px;font-size:16px}.addr-card{padding:26px}
.archwrap{height:185vh}
.hero-title{padding-top:88px}.hero-title h1{font-size:54px}.hero-over h2{font-size:58px}.hero-over{padding-bottom:48px}
.tag{padding:110px 0}
@media (max-width:980px){section{padding:56px 0}h2{font-size:34px}.collage{height:340px}.chap{min-height:auto}.tour .stage{height:50vh}.strip figure{height:220px}.hero-title h1{font-size:34px}.hero-over h2{font-size:38px}}

/* faster gate: draw ~0.9 s, open right after */
#gate.go .draw{animation-duration:.9s}
#gate .leaf{transition:transform 1.15s var(--curve),opacity .9s ease .25s}
#gate.go .name{animation:fadeup .7s var(--curve) .45s forwards}

/* ===================== reviews as chat ===================== */
.reviews .grid{display:grid;grid-template-columns:1fr 420px;gap:56px;align-items:center;margin-top:28px}
.score{display:flex;align-items:baseline;gap:14px}
.score b{font-family:var(--display);font-weight:500;font-size:84px;line-height:1;color:var(--ink)}
.score .stars{font-size:22px;letter-spacing:4px;color:#C9A227}
.score small{display:block;font-size:14px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2)}
.cats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 18px;margin-top:22px}
.cats div{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding:8px 0;font-size:15px;font-weight:500}
.cats div span{font-weight:700}
.mentions{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}
.mentions span{padding:8px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);font-size:14px;font-weight:500}
.phone{position:relative;height:520px;border-radius:34px;background:#fff;border:8px solid #1C2430;box-shadow:0 40px 80px -40px rgba(28,36,48,.55);overflow:hidden;display:flex;flex-direction:column}
.phone .bar{display:flex;align-items:center;gap:10px;padding:14px 16px;background:#F4F1EB;border-bottom:1px solid var(--line)}
.phone .bar img{width:36px;height:36px;border-radius:999px;background:#fff;object-fit:contain;padding:3px;border:1px solid var(--line)}
.phone .bar b{font-size:15px;font-weight:600;display:block}.phone .bar span{font-size:12px;color:#2E8B57;font-weight:500}
.chat{flex:1;padding:16px 14px;display:flex;flex-direction:column;justify-content:flex-end;gap:10px;overflow:hidden;background:linear-gradient(#FBF9F5,#F6F2EA)}
.msg{max-width:84%;padding:10px 14px;border-radius:16px;font-size:14.5px;line-height:21px;font-weight:500;box-shadow:0 6px 14px -10px rgba(0,0,0,.35);animation:pop .45s var(--curve) both;transform-origin:left bottom}
.msg.in{align-self:flex-start;background:#fff;border-bottom-left-radius:4px}
.msg.out{align-self:flex-end;background:#1C2430;color:#fff;border-bottom-right-radius:4px;transform-origin:right bottom}
.msg.sys{align-self:center;background:#FBF1DC;color:#6E5212;font-size:13px;border-radius:999px;padding:6px 14px}
.msg .who{display:block;font-size:12px;font-weight:700;color:var(--champ);margin-bottom:2px}
.msg.out .who{color:#E7D3A8}
.msg .stars{color:#C9A227;letter-spacing:2px}
.msg .ph{white-space:normal}
.typing{align-self:flex-start;background:#fff;border-radius:16px;padding:12px 14px;display:flex;gap:4px;animation:pop .3s var(--curve) both}
.typing i{width:7px;height:7px;border-radius:999px;background:#9AA3AD;animation:blinkdot 1s infinite}
.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}
@keyframes pop{from{opacity:0;transform:scale(.6) translateY(12px)}to{opacity:1;transform:none}}
@keyframes blinkdot{0%,100%{opacity:.3}50%{opacity:1}}
.chat .gone{transition:opacity .4s,transform .4s;opacity:0;transform:translateY(-10px)}
@media (max-width:980px){.reviews .grid{grid-template-columns:1fr}.phone{height:460px}.cats{grid-template-columns:1fr 1fr}.score b{font-size:64px}}

/* v7: "Getting here" fits one screen — smaller illustrated map, tighter route cards */
.route-grid{grid-template-columns:1fr 1fr;gap:36px;margin-top:22px;align-items:start}
.routes svg{display:block;width:auto;height:min(430px,calc(100vh - 290px));min-height:300px;max-width:100%;margin:0 auto}
.origin{padding:12px 18px;margin-bottom:8px}.origin h3{font-size:20px}.origin .eta{font-size:14px;margin-top:2px}.origin .go{margin-top:8px}
.origin .go .btn{padding:8px 14px;font-size:11px}
#getting-here .hint{font-size:13px;margin-top:4px}
.park{margin-top:14px;padding:12px 0;gap:16px}.park i{width:42px;height:42px;font-size:18px}.park h3{font-size:20px}.park p{font-size:14px}
.mapframe{margin-top:18px;height:280px}
@media (max-width:980px){.routes svg{height:auto;width:100%;min-height:0;max-height:none}}
.routes .home{transform:none;position:static;display:inline}   /* the walk-map .home rule (v4) was shifting this SVG pin */
