:root{
  --brand:#6C5CE7; --brand2:#FF7AA2; --ok:#16A34A;
  --bg:#fafafa; --text:#111827; --muted:#6b7280;
  --card:#fff; --border:#eee;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Inter,'Helvetica Neue',Arial,'Noto Sans','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;color:var(--text);background:#fff}
a{text-decoration:none;color:inherit}
.container{max-width:1160px;margin:0 auto;padding:16px}

/* Header & Geo banner */
.header{position:sticky;top:0;background:#fff;border-bottom:1px solid var(--border);z-index:50}
.header .bar{display:flex;align-items:center;gap:16px;padding:8px 0}
.header .logo img{height:36px}
.header nav{margin-left:auto;display:flex;gap:12px}
nav a{padding:8px 12px;border-radius:10px;color:#4b5563}
nav a.active, nav a:hover{background:#f5f5ff;color:var(--brand)}
.geo-banner{background:#f8f7ff;border-bottom:1px solid #ecebff;font-size:14px;color:#4f46e5}
.geo-banner .container{display:flex;align-items:center;gap:8px;padding:8px 16px}
.geo-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#6C5CE7;box-shadow:0 0 0 4px rgba(108,92,231,.12)}

/* Titles */
.section-title{font-weight:700;font-size:16px;margin:14px 0 8px}

/* City bar */
.citybar{display:flex;gap:8px;flex-wrap:wrap}
.citybar a{background:#f8f8ff;border:1px solid #ecebff;color:#4f46e5;padding:8px 12px;border-radius:10px}
.citybar a.active{background:#ede9fe;border-color:#ddd6fe}

/* Cards grid */
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(min-width:768px){.grid{grid-template-columns:repeat(4,1fr)}}

.card{border:1px solid var(--border);border-radius:16px;overflow:hidden;background:var(--card);transition:box-shadow .2s}
.card:hover{box-shadow:0 6px 22px rgba(0,0,0,.06)}
.photo{position:relative;aspect-ratio:4/5;background:#f8f8f8}
.photo img,.photo video{width:100%;height:100%;object-fit:cover;display:block}
.badges{position:absolute;top:8px;right:8px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;max-width:75%}
.badge{padding:4px 8px;border-radius:999px;font-size:12px;background:rgba(255,255,255,.9);border:1px solid #e5e7eb;color:#374151}
.badge.ok{background:var(--ok);border-color:var(--ok);color:#fff}
.badge.outline-ok{border-color:var(--ok);color:var(--ok);background:rgba(22,163,74,.06)}

/* 在线小绿点：只有 online 时显示 */
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:transparent}
.dot.online{background:var(--ok);box-shadow:0 0 0 4px rgba(22,163,74,.12)}

/* Small flags on top-right */
.flags{display:flex;gap:4px;margin-left:6px}
.flag{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:4px;background:rgba(0,0,0,.6);color:#fff;font-size:12px}
.flag.v{background:#16A34A}
.flag.hot{background:#ef4444}
.flag.new{background:#f59e0b}
.flag.rec{background:#6C5CE7}
.flag.out{background:#10b981}

/* Meta area */
.meta{padding:10px 12px}
.meta h3{margin:0 0 4px;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sub{color:#666;margin:0 0 6px;font-size:13px}
.price{font-weight:800;color:#6C5CE7;margin-bottom:6px;font-size:18px}
.pill{margin-left:8px;font-size:12px;background:#F1F5FF;color:#6C5CE7;padding:2px 8px;border-radius:999px}
.tags{display:flex;gap:6px;flex-wrap:wrap}
.tags span{display:inline-block;background:#F5F5F5;border-radius:999px;padding:2px 8px;font-size:12px;color:#374151}

/* Boxes */
.box{border:1px solid var(--border);border-radius:14px;padding:12px;background:#fff}
.kv{display:flex;gap:8px;flex-wrap:wrap}
.kv div{background:#f9fafb;border:1px dashed #e5e7eb;border-radius:10px;padding:8px 10px;font-size:13px}

/* Buttons */
.cta{display:flex;gap:8px;flex-wrap:wrap}
.btn{padding:10px 14px;border-radius:12px;border:1px solid #e5e7eb;background:#fff}
.btn.primary{background:linear-gradient(90deg,#6C5CE7,#FF7AA2);color:#fff;border:none}
.price.big{font-size:22px}

/* Detail two-column layout with 60/40 */
.detail{display:grid;gap:16px}
.detail.detail--6040{grid-template-columns:60% 40%}
@media(max-width:900px){.detail.detail--6040{grid-template-columns:1fr}}

/* Carousel (slideshow) */
.carousel{position:relative;border:1px solid var(--border);border-radius:16px;overflow:hidden;background:#000}
.carousel-track{display:flex;transition:transform .35s ease}
.carousel-item{min-width:100%;aspect-ratio:4/5;background:#111;display:flex;align-items:center;justify-content:center}
.carousel-item img,.carousel-item video{width:100%;height:100%;object-fit:cover}
.car-btn{position:absolute;top:50%;transform:translateY(-50%);border:none;background:rgba(255,255,255,.85);width:36px;height:36px;border-radius:50%;cursor:pointer}
.car-prev{left:10px} .car-next{right:10px}
.car-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;gap:6px;justify-content:center}
.car-dots button{width:8px;height:8px;border-radius:50%;border:none;background:rgba(255,255,255,.5);cursor:pointer}
.car-dots button.active{background:#fff}

/* 预约表单 */
.reserve-form .form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.reserve-form .form-row.two{flex-direction:row;gap:10px}
.reserve-form .form-row.two > div{flex:1}
.reserve-form label{font-size:13px;color:#374151}
.reserve-form input,.reserve-form select,.reserve-form textarea{
  padding:10px;border:1px solid #e5e7eb;border-radius:10px;font-size:14px;outline:none
}
.reserve-form .radios{display:flex;gap:16px;align-items:center}

/* 浮动固钉预约按钮 */
.floating-cta{
  position:fixed;right:18px;bottom:18px;z-index:60;
  display:inline-flex;align-items:center;justify-content:center;
  width:56px;height:56px;border-radius:999px;
  background:linear-gradient(90deg,#6C5CE7,#FF7AA2);color:#fff;font-weight:700;
  box-shadow:0 10px 28px rgba(0,0,0,.18);
}
.floating-cta:hover{transform:translateY(-2px)}
@media(max-width:640px){.floating-cta{width:52px;height:52px;font-size:14px}}

.small{font-size:12px;color:#6b7280}
.breadcrumb{font-size:13px;color:#6b7280;margin:8px 0}
.breadcrumb a{color:#6c5ce7}

/* Filters */
.filter-form{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.filter-form select,.filter-form input{padding:8px 10px;border:1px solid #e5e7eb;border-radius:10px}

/* Footer center */
.footer{margin:36px 0 24px;color:#6b7280;font-size:13px;text-align:center}
.footer .links{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:6px}
.footer .links a{color:#6b7280}
.footer .links a:hover{color:#374151}
