/* Trang nhóm "dir": CSS riêng theo từng trang (không sửa dental.css để tránh xung đột). */

/* thuộc tính hidden luôn thắng display của các lớp trang chủ / danh sách */
.is-home [hidden], .dir-page [hidden], .lr[hidden], .frow[hidden], .vc[hidden], .grid4[hidden], .news[hidden] { display: none !important; }

.is-home .vgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.is-home .vc { min-width: 0; }
.is-home .vc .br { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 900px) { .is-home .vgrid { grid-template-columns: minmax(0, 1fr); } }

/* Trang chủ: bài đăng mới là liên kết */
.is-home a.frow { color: inherit; text-decoration: none; }
.is-home a.frow:hover .tt > span { color: var(--blue); }
.is-home .tabs .tab { cursor: pointer; }
.is-home .vc .ti a { color: inherit; }
.is-home .vc .ti a:hover { color: var(--blue); }
.is-home .askbox form { margin: 0; }
.is-home .askbox .inp { display: flex; align-items: center; gap: 8px; }
.is-home .news .feat .img { text-decoration: none; }
.is-home .brand .lg img { width: 100%; height: 100%; object-fit: cover; border-radius: inherit; }

/* Danh sách nha khoa: nút Lưu / sắp xếp trong thanh công cụ */
.lr .act .mini-i .ibtn { width: auto; height: auto; border: 0; background: transparent; padding: 0; font-size: 11px; color: var(--ink-3); display: inline-flex; gap: 3px; align-items: center; }
.lr .act .mini-i .ibtn i { font-size: 12px; }
.lr .act .mini-i a { display: inline-flex; gap: 3px; align-items: center; color: var(--ink-3); }
.lr .act .mini-i form { display: inline-flex; }
.tbar .fsel select { height: 28px; }
.tbar .fsel#nearBtn, button.fsel { font-family: inherit; }

@media (max-width: 760px) {
  .tbar .r { flex-wrap: wrap; }
  .is-home .fs-track { grid-auto-columns: 46%; }
}

.lr .deal { width: auto; max-width: 100%; flex-wrap: wrap; }

@media (max-width: 900px) { .dgrid2 { grid-template-columns: minmax(0, 1fr) !important; } }
.dgrid2 > * { min-width: 0; }
.dgrid2 .bh .r { margin-left: auto; }
@media (max-width: 760px) { .dgrid2 .bh { flex-wrap: wrap; } }
.dgrid2 + p .btn { white-space: normal; height: auto; min-height: 36px; padding: 8px 12px; text-align: left; max-width: 100%; }

/* Hồ sơ: ảnh bìa có chữ — giới hạn dòng để không tràn, lớp phủ tối cho chữ dễ đọc */
.pcover .txt b { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pcover .txt small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Khung đặt hẹn kiểu demo: ô nhập có icon, nhãn ẩn (còn cho trình đọc màn hình) */
.bk .bd .form-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.bk .bd .inp-i { position: relative; }
.bk .bd .inp-i > i { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); font-size: 16px; color: var(--ink-3); pointer-events: none; z-index: 1; }
.bk .bd .inp-i:not(.no-ic) .form-control { padding-left: 34px; }
.bk .bd .form-control { height: 36px; font-size: 13px; }
.bk .bd textarea.form-control { height: 56px; }
.bk .bd #bkCode { border-style: dashed; border-color: var(--mint); background: var(--mint-s); color: var(--mint-d, var(--ink)); }
.bk .bd .choice-group { width: 100%; }

/* Đầu trang: "Tỉnh khác" mở hộp giải thích (không phải liên kết chết) */
.prov { position: relative; display: inline-flex; }
.prov summary { list-style: none; cursor: pointer; display: inline-flex; gap: 6px; align-items: center; color: inherit; font-size: inherit; }
.prov summary::-webkit-details-marker { display: none; }
.prov .pop { position: absolute; left: 0; top: calc(100% + 8px); z-index: 60; width: 270px; background: #fff; color: var(--ink); border: 1px solid var(--line); border-radius: var(--r); box-shadow: var(--sh-2, 0 8px 24px rgba(0,0,0,.15)); padding: 12px 14px; display: grid; gap: 6px; font-size: 13px; line-height: 1.45; }
.prov .pop b { font-size: 13px; }
.prov .pop span { color: var(--ink-2); }
.prov .pop a { color: var(--blue); font-weight: var(--fw-semi); display: inline-flex; gap: 5px; align-items: center; }


/* Chân trang: dải xanh có ô nhận voucher (Zalo / email) */
.f1 .fnl { margin-left: auto; min-width: 0; }
.f1 .fnl form { margin: 0; }
.f1 .fnl .form-grid { display: flex; gap: 0; align-items: stretch; background: #fff; border-radius: var(--r); overflow: hidden; height: 38px; }
.f1 .fnl .form-grid > div { margin: 0; padding: 0; }
.f1 .fnl .form-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.f1 .fnl .form-control { border: 0; border-radius: 0; height: 38px; padding: 0 12px; width: 190px; font-size: 13px; box-shadow: none; }
.f1 .fnl .form-control + .form-control { border-left: 1px solid var(--line); }
.f1 .fnl button[type=submit] { border: 0; background: var(--ink); color: #fff; font: inherit; font-weight: var(--fw-semi); padding: 0 14px; height: 38px; border-radius: 0; width: auto; box-shadow: none; white-space: nowrap; }
.f1 .fnl button[type=submit] svg, .f1 .fnl button[type=submit] i { display: none; }
.f1 .fnl [data-form-message] .alert { margin: 6px 0 0; padding: 6px 10px; font-size: 12px; position: absolute; right: 24px; z-index: 5; max-width: 340px; }
@media (max-width: 900px) {
  .f1 .wrap { flex-wrap: wrap; }
  .f1 .fnl { margin-left: 0; width: 100%; }
  .f1 .fnl .form-grid > div:first-child { flex: 1; } .f1 .fnl .form-control { width: 100%; }
}
.f5 .r { align-items: center; }
.f5 .r .by { line-height: 1; }

/* Đặt hẹn nhanh (trang chủ) dùng cùng kiểu ô nhập có icon như khung đặt hẹn hồ sơ */
.qbook .bd .form-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.qbook .bd .inp-i { position: relative; }
.qbook .bd .inp-i > i { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); font-size: 16px; color: var(--ink-3); pointer-events: none; z-index: 1; }
.qbook .bd .inp-i:not(.no-ic) .form-control { padding-left: 34px; }
.qbook .bd .form-control { height: 36px; font-size: 13px; }
.qbook .bd .inp-i.no-ic { display: none; }

/* Bộ lọc khu vực: thu gọn danh sách xã/phường của các vùng chưa chọn */
.fb:not(.open) .ck.sub.more { display: none; }
.fb .more-btn { border: 0; background: none; font: inherit; font-size: 12px; font-weight: var(--fw-semi); color: var(--blue); cursor: pointer; padding: 6px 0 2px; display: inline-flex; gap: 4px; align-items: center; }
.pager .gap { display: inline-grid; place-items: center; min-width: 34px; height: 34px; color: var(--ink-3); }

/* Trang chủ (điện thoại): tiêu đề voucher dài không đẩy thẻ rộng ra ngoài màn hình */
.is-home .vc .r { min-width: 0; }
.is-home .vc .ti a { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }

/* Hồ sơ: thẻ Flash Sale đứng riêng (như demo) — chừa chỗ cho logo, chữ số vừa khung */
.fsrow .fs .art { padding-top: 56px; }
.fsrow .fs .big { font-size: 26px; }

/* Hồ sơ: dải ảnh nhỏ chỉ 8 ô, ô cuối "+N" mở hết */
.gal .thumbs:not(.open) button.x { display: none; }
.gal .thumbs button.all { aspect-ratio: 4 / 3; }
.gal .thumbs button.all[hidden] { display: none; }

/* Hồ sơ chưa xác thực: biểu mẫu báo sai / yêu cầu gỡ nằm ngay trong khối Nguồn thông tin */
.baosai { margin-top: 12px; padding: 12px 14px; border: 1px dashed var(--line); border-radius: var(--r-s); background: var(--bg-2); display: grid; gap: 8px; }
.baosai > b { display: flex; gap: 6px; align-items: center; font-size: 13px; }
.baosai > b i { color: var(--rose); }
.baosai .form-grid { grid-template-columns: minmax(0, 1fr); }
.legal > .baosai { display: grid; gap: 8px; }
.baosai .cms-form, .baosai .form-grid > div { width: 100%; min-width: 0; }
.baosai .form-grid > div { display: block; }
.baosai .form-label { display: block; margin-bottom: 3px; }
.vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Chân trang (điện thoại): ô nhận voucher xếp 2 ô nhập + nút Gửi dưới, không bị cắt */
.f1 .fnl { position: relative; }
.f1 .fnl [data-form-message] .alert { right: 0; }
@media (max-width: 900px) {
  .f1 .fnl .form-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); height: auto; background: transparent; border-radius: 0; overflow: visible; gap: 6px; }
  .f1 .fnl .form-control { width: 100%; border-radius: var(--r-s); background: #fff; border-left: 0 !important; }
  .f1 .fnl .form-grid > div:last-child { grid-column: 1 / -1; }
  .f1 .fnl button[type=submit] { width: 100%; border-radius: var(--r-s); }
  .f1 .fnl [data-form-message] .alert { position: static; max-width: none; }
}
@media (max-width: 760px) {
  .f3 .wrap, .f4 .wrap { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .f5 .wrap { height: auto; flex-wrap: wrap; padding-top: 12px; padding-bottom: 76px; gap: 8px 14px; }
  .f5 .r { margin-left: 0; flex-wrap: wrap; gap: 8px 14px; width: 100%; }
}

/* ===== địa chỉ cũ (trước sáp nhập): nhỏ, mờ ===== */
.oldaddr{font-size:12px;color:var(--ink-3);font-weight:var(--fw-normal);line-height:1.4;margin-top:2px}

/* ===== logo 2 dòng: "nha khoa" trên, "Quảng Ngãi" dưới ===== */
.logo .lt{display:flex;flex-direction:column;line-height:1.08;white-space:normal}
.logo .l1{font-size:.62em;font-weight:var(--fw-semi);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
.logo .l2{font-size:1.05em;font-weight:var(--fw-semi);letter-spacing:-.4px}

/* ===== nút định vị trong ô tìm kiếm ===== */
.hsearch .loc-btn{border:0;background:transparent;padding:0;display:flex;align-items:center;cursor:pointer;color:var(--ink-3)}
.hsearch .loc-btn i{color:var(--mint);font-size:18px}
.hsearch .loc-btn:hover i{color:var(--mint-d,#0c9c79)}
.hsearch .loc-btn.busy i{animation:locpulse 1s ease-in-out infinite}
@keyframes locpulse{50%{opacity:.35;transform:scale(.8)}}

/* ===== popup đặt hẹn ===== */
dialog.bkdlg{border:0;padding:0;border-radius:var(--r);width:min(440px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto;box-shadow:0 24px 70px rgba(10,20,50,.35);color:var(--ink)}
dialog.bkdlg::backdrop{background:rgba(10,20,50,.55);backdrop-filter:blur(2px)}
.bkdlg .hd{display:flex;align-items:center;gap:10px;padding:14px 16px;background:linear-gradient(120deg,var(--mint),#13b58f);color:#fff}
.bkdlg .hd .ic{width:38px;height:38px;border-radius:var(--r);background:rgba(255,255,255,.2);display:grid;place-items:center;font-size:21px;flex:none}
.bkdlg .hd b{display:block;font-size:15px}
.bkdlg .hd small{display:block;font-size:12px;opacity:.9}
.bkdlg .hd .x{margin-left:auto;border:0;background:rgba(255,255,255,.18);color:#fff;width:32px;height:32px;border-radius:var(--r-s);cursor:pointer;font-size:16px;flex:none}
.bkdlg .bd{padding:14px 16px 16px}
.bkdlg .note{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--ink-3);margin-top:10px}
.bkdlg .alt{display:flex;justify-content:center;gap:6px;margin-top:10px;font-size:13px;color:var(--ink-2)}
.bkdlg .alt a{color:var(--blue);font-weight:var(--fw-semi)}
.mnav button.book{border:0;background:none;font:inherit;padding:0;cursor:pointer}

/* ===== khối Tải ứng dụng (chân trang máy tính) ===== */
.fapp{background:linear-gradient(135deg,#eefaf6 0%,#eef4ff 100%);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.fapp-in{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:18px;align-items:stretch;padding:26px 0}
.fapp-eyebrow{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:var(--fw-semi);letter-spacing:.09em;text-transform:uppercase;color:var(--mint)}
.fapp-intro h3{margin:6px 0 6px;font-size:21px;line-height:1.2;letter-spacing:-.4px;color:var(--ink);font-weight:var(--fw-semi)}
.fapp-intro h3 b{color:var(--mint)}
.fapp-intro p{margin:0 0 12px;color:var(--ink-2);font-size:13px;line-height:1.55;max-width:46ch}
.fapp-intro ul{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.fapp-intro li{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:var(--fw-semi);color:var(--ink-2)}
.fapp-intro li i{width:24px;height:24px;border-radius:var(--r-s);background:#fff;display:grid;place-items:center;color:var(--mint);font-size:15px;box-shadow:var(--sh-1)}
/* thẻ: hàng trên = QR + lời mời; hàng dưới = 2 nút cửa hàng cùng cỡ → hai thẻ luôn thẳng hàng */
.fapp-card{display:grid;grid-template-columns:104px 1fr;gap:14px;align-content:space-between;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px;box-shadow:var(--sh-1)}
.fapp-card.vip{border-color:#ead9a4;box-shadow:inset 0 3px 0 var(--gold,#c9a227),var(--sh-1)}
.fapp-card .qr{width:104px;height:104px;border:1px solid var(--line);border-radius:var(--r-s);overflow:hidden;background:#fff}
.fapp-card .qr svg{display:block;width:100%;height:100%}
.fapp-card .txt{min-width:0;align-self:center}
.fapp-card .txt b{display:block;font-size:14px;color:var(--ink);margin-bottom:3px}
.fapp-card .txt small{display:block;font-size:12px;line-height:1.5;color:var(--ink-3)}
.fapp-card .stores{grid-column:1/-1}
.stores{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sbtn{display:flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 10px;background:#fff;border:1px solid var(--line);border-radius:var(--r);color:var(--ink);transition:border-color .15s,background .15s}
.sbtn:hover{border-color:var(--mint);background:#f3fbf8}
.sbtn i{font-size:22px;color:var(--ink)}
.sbtn.ios i{color:var(--ink)}
.sbtn.and i{color:var(--mint)}
.sbtn span{display:flex;flex-direction:column;line-height:1.15;font-size:13px;font-weight:var(--fw-semi);text-align:left}
.sbtn small{display:block;font-size:11px;font-weight:var(--fw-semi);color:var(--ink-3)}
.fapp-m{display:none}
.appbar{display:none}

@media (max-width:960px){
  .fapp-in{grid-template-columns:1fr 1fr}
  .fapp-intro{grid-column:1/-1}
}
@media (max-width:760px){
  .fapp{display:none}
  /* dòng tải app gọn ở chân trang điện thoại: cả app cho người dùng và app cho nha khoa VIP */
  .fapp-m{display:block;background:linear-gradient(135deg,#eefaf6,#eef4ff);border-top:1px solid var(--line)}
  .fapp-m .wrap{padding-top:14px;padding-bottom:14px;display:grid;gap:12px}
  .fapp-m .t{display:flex;align-items:center;gap:10px}
  .fapp-m .t>i{flex:none;width:34px;height:34px;border-radius:var(--r);background:var(--mint);color:#fff;display:grid;place-items:center;font-size:19px}
  .fapp-m .t b{display:block;font-size:13px;color:var(--ink)}
  .fapp-m .t small{display:block;font-size:11px;color:var(--ink-3)}
  .fapp-m .grp{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px;display:grid;gap:8px}
  .fapp-m .grp.vip{border-color:#ead9a4;box-shadow:inset 0 3px 0 var(--gold,#c9a227)}
  .fapp-m .grp>b{font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px}
  .fapp-m .sbtn{height:40px}
  .fapp-m .sbtn small{display:none}
  .fapp-m .sbtn span{font-size:13px}
  /* dải mời tải app đầu trang: nền vector phẳng (icon ẩn nhẹ), logo / chữ / nút là mã */
  .appbar.on{display:flex;align-items:center;gap:9px;height:68px;padding:0 10px 0 4px;color:#fff;position:relative;z-index:60;overflow:hidden;
    background:#0e8f9f url('../img/appbar.svg') center/cover no-repeat}
  .appbar .ic{flex:none;width:36px;height:36px;border-radius:var(--r);background:#fff;color:var(--mint);display:grid;place-items:center;font-size:21px;box-shadow:0 2px 8px rgba(0,60,90,.25)}
  .appbar .tx{min-width:0;flex:1;max-width:none;text-shadow:0 1px 3px rgba(0,50,80,.35)}
  .appbar .tx b{display:block;font-size:13px;line-height:1.2;font-weight:var(--fw-semi)}
  .appbar .tx small{display:block;font-size:11px;opacity:.95;margin-top:1px}
  .appbar .go{flex:none;margin-left:auto;background:#fff;color:#0a5fc2;font-weight:var(--fw-semi);font-size:13px;padding:9px 14px;border-radius:var(--r);box-shadow:0 3px 10px rgba(0,60,120,.3);position:relative}
  .appbar .x{flex:none;background:none;border:0;color:#fff;opacity:.85;font-size:14px;width:30px;height:36px;display:grid;place-items:center;cursor:pointer;padding:0}
}

@media (max-width:370px){.appbar .tx b{font-size:11px;white-space:nowrap}.appbar .tx small{font-size:11px;white-space:nowrap}}

/* ===== trang Liên hệ (dental) ===== */
.ct-head{margin:14px 0 16px}
.ct-head h1{margin:4px 0 6px;font-size:26px;letter-spacing:-.6px;font-weight:var(--fw-semi);color:var(--ink)}
.ct-head p{margin:0;color:var(--ink-2);font-size:14px;max-width:62ch}
.ct-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:start}
.ct-info{display:grid;gap:10px}
.ct-card{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;color:inherit;transition:border-color .15s,box-shadow .15s}
a.ct-card:hover{border-color:var(--mint);box-shadow:var(--sh-1)}
.ct-card .ic{flex:none;width:40px;height:40px;border-radius:var(--r);display:grid;place-items:center;font-size:20px}
.ct-card small{display:block;font-size:11px;font-weight:var(--fw-semi);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.ct-card b{display:block;font-size:15px;color:var(--ink);word-break:break-word}
.ct-card em{display:block;font-style:normal;font-size:12px;color:var(--ink-3);margin-top:1px}
.ct-card .go{margin-left:auto;color:var(--ink-4);font-size:14px}
.ct-card.hot{border-color:#b7e6d9;background:linear-gradient(135deg,#f3fbf8,#fff)}
.ct-card.hot b{font-size:19px;color:var(--mint)}
.ct-quick{margin-top:6px;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;display:grid;gap:2px}
.ct-quick h2{margin:0 0 6px;font-size:13px;font-weight:var(--fw-semi);color:var(--ink)}
.ct-quick a{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);color:inherit}
.ct-quick a:first-of-type{border-top:0}
.ct-quick a>i{flex:none;width:30px;height:30px;border-radius:var(--r-s);background:var(--bg-2);color:var(--mint);display:grid;place-items:center;font-size:17px}
.ct-quick a b{display:block;font-size:13px;color:var(--ink)}
.ct-quick a small{display:block;font-size:11px;color:var(--ink-3)}
.ct-quick a:hover b{color:var(--blue)}
.ct-form{background:#fff;border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-1)}
.ct-form .hd{display:flex;align-items:center;gap:10px;padding:14px 16px;background:linear-gradient(120deg,var(--mint),#13b58f);color:#fff}
.ct-form .hd .ic{flex:none;width:38px;height:38px;border-radius:var(--r);background:rgba(255,255,255,.2);display:grid;place-items:center;font-size:20px}
.ct-form .hd b{display:block;font-size:15px}
.ct-form .hd small{display:block;font-size:12px;opacity:.92}
.ct-form .bd{padding:14px 16px 16px}
.ct-map{margin:16px 0 4px;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.ct-map iframe{display:block;width:100%;height:320px;border:0}
@media (max-width:960px){.ct-grid{grid-template-columns:1fr}}
@media (max-width:760px){.ct-head h1{font-size:22px}.ct-card b{font-size:14px}.ct-card.hot b{font-size:18px}.ct-map iframe{height:240px}}

/* ===== Đặt hẹn: hình thức "Nha khoa sắp xếp" / "Bạn chọn lịch" ===== */
.cms-form .choice-group.dl-seg{grid-template-columns:1fr 1fr}
.cms-form .dl-seg .choice::before{content:none}
.cms-form .dl-seg .choice{padding:9px 6px;text-align:center;line-height:1.25}
.dl-free{margin-top:8px;padding:10px 12px;background:#f7faf9;border:1px dashed #b7e6d9;border-radius:var(--r)}
.dl-free>b{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink)}
.dl-free>b i{color:var(--mint)}
.dl-free .chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}
.dl-free .chip{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;font-size:13px;cursor:pointer;background:#fff}
.dl-free .chip:has(input:checked){border-color:var(--mint);background:#e9f8f3;color:var(--mint-d,#0c9c79);font-weight:var(--fw-semi)}
.dl-free small{display:block;font-size:11px;color:var(--ink-3);line-height:1.4}
.cms-form [hidden]{display:none!important}

/* khung Flash Sale ở hồ sơ nha khoa: thẻ chỉ hiện logo + nhãn + mức ưu đãi (tiêu đề, mô tả, đồng hồ, nút đã nằm bên phải) */
.fsrow .fs .art{justify-content:center;padding-top:40px}
.fsrow .fs .big{font-size:34px}
.fsrow .fs .big.long{font-size:24px}

/* ===== nút Lên đầu trang + vị trí nút trợ lý (trợ lý nằm TRÊN nút Lên đầu trang, không đè nhau) ===== */
.to-top{position:fixed;right:20px;bottom:20px;z-index:59;width:44px;height:44px;border:1px solid var(--line);border-radius:var(--r);background:#fff;color:var(--ink-2);box-shadow:var(--sh-2);display:grid;place-items:center;font-size:18px;cursor:pointer;padding:0;transition:color .15s,border-color .15s,transform .15s}
.to-top[hidden]{display:none}
.to-top:hover{color:var(--mint);border-color:var(--mint);transform:translateY(-2px)}
.cb-fab{bottom:76px}
.cb-panel{bottom:144px;max-height:calc(100vh - 166px)}
@media (max-width:760px){
  .to-top{right:12px;bottom:80px;width:42px;height:42px}
  .cb-fab{bottom:132px;right:12px}
  .cb-panel{bottom:196px}
}

/* Chọn tỉnh (chế độ toàn quốc) */
.prov .pop.provpop { width: 360px; max-height: min(70vh, 520px); overflow: auto; gap: 4px; }
.prov .provpop .grp { font-size:11px; font-weight: var(--fw-semi); letter-spacing: .04em; text-transform: uppercase; color: var(--ink-3); margin-top: 8px; }
.prov .provpop .plist { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2px 8px; }
.prov .provpop a { color: var(--ink); font-weight: var(--fw-medium); padding: 4px 6px; border-radius: var(--r-s); }
.prov .provpop a:hover, .prov .provpop a.on { background: var(--bg-2); color: var(--blue); font-weight: var(--fw-semi); }
.provgrp { margin: 0 0 10px; }
.provgrp > b { display: block; font-size: 12px; color: var(--ink-3); margin-bottom: 6px; }

/* Nhãn Super VIP: một tông tím hoàng gia (vàng–đen dành riêng cho VIP) */
.bdg.sup { background: linear-gradient(135deg, #2a1e63, #4a31b8); color: #efeaff; border-color: #2a1e63; }
.bdg.sup i { color: #cbbdff; }

/* ---- khối dưới danh sách: thế mạnh + quyền lợi + mời nâng cấp (partials/list-promo.ejs) — nền sáng, màu thương hiệu ---- */
.lp{margin:36px 0 8px;display:grid;gap:20px}
.lp-hd{max-width:720px}
.lp-hd .eyebrow{color:var(--mint)}
.lp-hd h2{margin:2px 0 6px}
.lp-hd p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.55}
.lp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.lp-c{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:10px;row-gap:2px;align-items:start;position:relative;overflow:hidden;transition:box-shadow .15s,transform .15s}
.lp-c::before{content:none}
.lp-c:hover{box-shadow:none;transform:none}
.lp-c.k-mint{--lc:var(--mint)} .lp-c.k-or{--lc:var(--orange)} .lp-c.k-blue{--lc:var(--blue)} .lp-c.k-rose{--lc:var(--rose)}
.lp-ic{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:16px;grid-row:1/3}
.lp-c b{font-size:13px;margin:0;align-self:end}
.lp-c p{margin:0;font-size:12px;color:var(--ink-3);line-height:1.4;grid-column:2}

/* mời nâng cấp: thẻ sáng, nền mint nhạt → trắng → cam nhạt; nút cam/mint như phần còn lại của site */
.lp-up{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;background:radial-gradient(circle at 100% 0%,var(--orange-s) 0,transparent 42%),linear-gradient(120deg,var(--mint-s) 0%,#fff 62%);border:1px solid #cfe8df;border-radius:var(--r);padding:24px}
.lp-up:has(.lp-plans){grid-template-columns:minmax(0,.95fr) minmax(0,1.25fr);align-items:start}
.lp-tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:var(--fw-semi);letter-spacing:.04em;text-transform:uppercase;color:var(--orange);background:var(--orange-s);padding:4px 9px;border-radius:99px}
.lp-up h3{margin:10px 0 6px;font-size:22px;letter-spacing:-.5px;line-height:1.2;color:var(--ink)}
.lp-up-l>p{margin:0;color:var(--ink-2);font-size:13px;line-height:1.55}
.lp-bl{display:grid;gap:8px;margin-top:14px}
.lp-bl span{display:flex;gap:9px;align-items:flex-start;background:rgba(255,255,255,.8);border:1px solid #dfece7;border-radius:var(--r);padding:8px 10px;font-size:13px;color:var(--ink);line-height:1.45}
.lp-bl span i{color:var(--mint);font-size:17px;flex:none;margin-top:1px}
.lp-cta{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}
.lp-plans{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.lp-plan{display:grid;gap:4px;align-content:start;background:#fff;border:1px solid var(--line);border-top:3px solid var(--pc,var(--mint));border-radius:var(--r);padding:13px;color:var(--ink);transition:box-shadow .15s,transform .15s}
.lp-plan:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}
.lp-plan.p0{--pc:var(--mint)} .lp-plan.p1{--pc:var(--orange)} .lp-plan.p2{--pc:#c99a1c} .lp-plan.p3{--pc:var(--violet)}
.lp-plan .pn{display:flex;gap:7px;align-items:center;font-weight:var(--fw-semi);font-size:14px}
.lp-plan .pn i{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:15px;background:color-mix(in srgb,var(--pc) 14%,#fff);color:var(--pc)}
.lp-plan em{font-style:normal;font-size:11px;color:var(--pc);font-weight:var(--fw-semi)}
.lp-plan ul{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px;font-size:12px;color:var(--ink-2)}
.lp-plan ul li{display:flex;gap:6px;align-items:flex-start;line-height:1.4}
.lp-plan ul li i{color:var(--pc);font-size:13px;flex:none;margin-top:1px}
.lp-links{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.lp-links span{font-size:12px;font-weight:var(--fw-semi);color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;margin-right:4px}
.lp-links a{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;background:#fff;border:1px solid var(--line);border-radius:var(--r);font-size:13px;font-weight:var(--fw-semi);color:var(--ink-2)}
.lp-links a i{font-size:15px;color:var(--mint)}
.lp-links a:hover{border-color:var(--mint);color:var(--mint-d)}
@media (max-width:960px){.lp-grid{grid-template-columns:repeat(2,1fr)}.lp-up:has(.lp-plans){grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){
  .lp{margin-top:26px;gap:14px}
  .lp-grid{display:grid;grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:72%;overflow-x:auto;gap:10px;margin:0 calc(var(--gut,12px)*-1);padding:2px var(--gut,12px) 6px;scroll-snap-type:x mandatory;scrollbar-width:none}
  .lp-grid::-webkit-scrollbar{display:none}
  .lp-c{scroll-snap-align:start;padding:14px}
  .lp-up{padding:18px 14px}
  .lp-up h3{font-size:18px}
  .lp-plans{grid-auto-flow:column;grid-template-columns:none;grid-auto-columns:72%;overflow-x:auto;margin:0 -14px;padding:2px 14px 6px;scrollbar-width:none;scroll-snap-type:x mandatory}
  .lp-plans::-webkit-scrollbar{display:none}
  .lp-plan{scroll-snap-align:start}
  .lp-cta .btn{flex:1;justify-content:center}
  .lp-links{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin:0 calc(var(--gut,12px)*-1);padding:0 var(--gut,12px)}
  .lp-links::-webkit-scrollbar{display:none}
  .lp-links a,.lp-links span{flex:none;white-space:nowrap}
}
.lp-up:not(:has(.lp-plans)) .lp-bl{grid-template-columns:1fr 1fr}
@media (max-width:760px){.lp-up:not(:has(.lp-plans)) .lp-bl{grid-template-columns:1fr}}

/* menu chính nhiều mục: không xuống dòng; thu gọn khoảng cách khi hẹp */
nav.menu a{white-space:nowrap}
@media (max-width:1240px){nav.menu a{padding:0 8px;gap:5px;font-size:13px}nav.menu a i{font-size:16px}}

/* khối "Bạn là nha sĩ?" (trang Nha sĩ): nền sáng, hợp tông */
.join{background:linear-gradient(110deg,var(--mint-s) 0%,#fff 60%,var(--orange-s) 140%);color:var(--ink);border:1px solid #cfe8df}
.join .ic{background:#fff;color:var(--mint);box-shadow:0 2px 8px rgba(20,33,61,.08)}
.join b{color:var(--ink)}
.join small{color:var(--ink-2)}
.join ol{color:var(--ink-2)}
.join ol li::before{background:var(--mint);color:#fff}


/* ---- Bài đăng mới (trang chủ): ô icon màu + 2 cột, dễ quét mắt ---- */
#feed{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;padding:4px 14px}
#feed .frow{grid-template-columns:42px minmax(0,1fr);grid-template-areas:"tile tt" "tile fr";gap:2px 12px;padding:11px 0;border-bottom:1px solid var(--line-2);align-items:start;border-radius:0}
#feed .frow:hover{background:none}
#feed .frow:hover .tt>span{color:var(--blue)}
#feed .frow:nth-last-child(-n+2):not([hidden]){border-bottom:0}
.ftile{grid-area:tile;width:42px;height:42px;border-radius:10px;display:grid;place-items:center;font-size:21px}
.ftile.ty-n{background:var(--mint-s);color:var(--mint)} .ftile.ty-l{background:var(--blue-s);color:var(--blue)} .ftile.ty-v{background:#e1f3f8;color:#0e8fb3} .ftile.ty-d{background:var(--violet-s);color:var(--violet)} .ftile.ty-s{background:var(--rose-s);color:var(--rose)} .ftile.ty-t{background:var(--orange-s);color:var(--orange)}
#feed .frow .tt{grid-area:tt}
#feed .frow .tt small{flex-wrap:wrap;gap:4px 10px;margin-top:2px;align-items:center}
.fk{font-size:11px;font-weight:var(--fw-semi);letter-spacing:.03em;text-transform:uppercase;padding:1px 6px;border-radius:3px}
.fk.ty-n{background:var(--mint-s);color:var(--mint-d)} .fk.ty-l{background:var(--blue-s);color:var(--blue-d)} .fk.ty-v{background:#e1f3f8;color:#0e8fb3} .fk.ty-d{background:var(--violet-s);color:var(--violet)} .fk.ty-s{background:var(--rose-s);color:var(--rose)} .fk.ty-t{background:var(--orange-s);color:var(--orange)}
#feed .frow .fr{grid-area:fr;display:flex;gap:12px;font-size:11px;color:var(--ink-3);align-items:center;flex-wrap:wrap}
#feed .frow .fr i{font-size:12px;margin-right:3px;color:var(--ink-4)}
#feed .frow .fr .pl{color:var(--ink-2)}
#feed .frow .fr .pl i{color:var(--rose)}
@media (max-width:760px){#feed{grid-template-columns:1fr;padding:2px 10px}#feed .frow:nth-last-child(-n+2):not([hidden]){border-bottom:1px solid var(--line-2)}}

/* ---- Chân trang: khối hỗ trợ & thanh toán, giới thiệu, bản quyền ---- */
.f2 .about p{display:none}
.f2 .about .tag{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:var(--fw-semi);color:var(--mint-d);background:var(--mint-s);padding:3px 8px;border-radius:99px;margin:8px 0 10px}
.f6{border-top:1px solid var(--line-2);background:var(--bg-2)}
.f6 .wrap{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding-top:22px;padding-bottom:22px}
.f6 .blk{display:block;padding:2px 22px;border-left:1px solid var(--line)}
.f6 .blk:first-child{border-left:0;padding-left:0}
.f6 .blk summary{display:flex;align-items:center;gap:10px;list-style:none;cursor:default;margin-bottom:10px}
.f6 .blk summary::-webkit-details-marker{display:none}
.f6 .blk summary .cv{display:none;margin-left:auto;font-size:13px;color:var(--ink-3);transition:transform .2s}
.f6 .blk .ic{flex:none;width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:16px}
.f6 .blk h6,.f6 .blk .bh6{margin:0;font-size:13px;font-weight:var(--fw-semi);color:var(--ink)}
.f6 .blk ul{list-style:none;margin:0;padding:0 0 0 40px;display:grid;gap:5px;font-size:13px;color:var(--ink-2);line-height:1.45}
.f6 .blk li::before{content:none}
.f6 .blk a{color:var(--ink-2)} .f6 .blk a:hover{color:var(--blue)}
.f4{background:#fff;border-top:1px solid var(--line-2)}
.f4 .wrap{grid-template-columns:minmax(0,1fr);gap:8px;padding-top:16px;padding-bottom:14px}
.f4 .txt{columns:3;column-gap:32px;font-size:11px;color:var(--ink-3);line-height:1.6}
.f4 .txt p{margin:0 0 7px}
.f4 .txt b{color:var(--ink-2)}
.f5{background:var(--bg-2);color:var(--ink-3);font-size:11px;border-top:1px solid var(--line)}
.f5 .wrap{height:auto;min-height:46px;padding-top:10px;padding-bottom:10px;flex-wrap:wrap;gap:6px 18px}
.f5 .cp{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center}
.f5 .cp b{color:var(--ink-2);font-weight:var(--fw-semi)}
.f5 a{color:var(--ink-3)} .f5 a:hover{color:var(--ink)}
.f5 .r{gap:14px}
.f5 .r .by{color:var(--ink-4);font-size:11px;padding-left:14px;border-left:1px solid var(--line)}
@media (max-width:960px){.f6 .wrap{grid-template-columns:1fr 1fr;row-gap:18px}.f6 .blk:nth-child(odd){border-left:0;padding-left:0}.f4 .txt{columns:2}}
@media (max-width:760px){.f6 .wrap{grid-template-columns:1fr;gap:0;padding-top:6px;padding-bottom:6px}.f6 .blk,.f6 .blk:nth-child(odd){padding:0;border-left:0;border-top:1px solid var(--line)}.f6 .blk:first-child{border-top:0}.f6 .blk summary{cursor:pointer;margin:0;padding:11px 2px;min-height:44px}.f6 .blk summary .cv{display:block}.f6 .blk[open] summary .cv{transform:rotate(180deg)}.f6 .blk ul{padding:0 2px 12px 40px}.f4 .txt{columns:1}.f5 .r .by{border:0;padding:0;width:100%}}

/* mục "Bảng giá" chỉ hiện trên menu điện thoại (máy tính đã có ở thanh trên cùng) */
nav.menu a.mo{display:none}
@media (max-width:760px){nav.menu a.mo{display:flex}}

/* nút Nhắn tin trên hồ sơ cơ sở */
.chatbox{margin:12px 0}
.chatbtn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;box-sizing:border-box;min-height:48px;padding:0 20px;border:0;border-radius:var(--r);background:var(--mint)!important;color:#fff!important;font-size:15px;font-weight:var(--fw-semi);letter-spacing:-.1px;cursor:pointer;box-shadow:inset 0 -2px 0 rgba(0,0,0,.14),0 10px 20px -12px rgba(12,156,121,.9);transition:transform .15s,box-shadow .15s,background .15s}
.chatbtn>i{font-size:23px}
.chatbtn:hover{background:var(--mint-d)!important;transform:translateY(-1px);box-shadow:inset 0 -2px 0 rgba(0,0,0,.14),0 14px 24px -12px rgba(12,156,121,.95)}
.chatbtn:focus-visible{outline:3px solid var(--mint-s);outline-offset:2px}
.chatnote{display:block;margin-top:7px;font-size:12px;line-height:1.5;color:var(--ink-3);text-align:center}

/* thẻ nha khoa: nhãn không rớt dọc; địa chỉ tối đa 2 dòng; đánh giá + chi nhánh một hàng riêng */
.bdg{white-space:nowrap}
.cc .bd .nm{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px}
.cc .bd .nm a{min-width:0;overflow-wrap:anywhere}
.cc .bd .ad{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cc .bd .mt{display:flex;flex-wrap:wrap;gap:3px 12px;font-size:12px;color:var(--ink-3);margin-top:4px;align-items:center}
.cc .bd .mt .rt,.cc .bd .mt .brc{display:inline-flex;gap:3px;align-items:center;white-space:nowrap;margin:0}
.cc .facts{display:flex;flex-wrap:wrap;gap:3px 10px}.cc .facts span{white-space:nowrap}

/* phân trang gọn (partials/pager.ejs): máy tính ‹ 1 … 14 [15] 16 … 40 ›; điện thoại ‹ Trang 15/40 › */
.pager{flex-wrap:wrap;align-items:center}
.pager .pgx{display:none;font-size:13px;color:var(--ink-2);padding:0 6px;white-space:nowrap}
.pager .pgx b{color:var(--ink)}
@media (max-width:640px){
  .pager{gap:8px}
  .pager .n,.pager .gap{display:none}
  .pager .pgx{display:inline-block}
  .pager a.pv,.pager a.nx{min-width:44px;height:44px}
}

/* Chọn tỉnh nằm trong ô tìm kiếm của đầu trang (một chỗ duy nhất, không còn lặp ở thanh trên) */
.hsearch{overflow:visible}
.hsearch>button[type=submit]{border-radius:0 calc(var(--r) - 1.5px) calc(var(--r) - 1.5px) 0}
.hsearch .prov{display:flex;position:relative}
.hsearch .prov summary.sel{border-left:1px solid var(--line);padding:0 12px;height:100%;display:flex;align-items:center;gap:6px;font-size:13px;font-weight:var(--fw-semi);color:var(--ink-2);white-space:nowrap;cursor:pointer;list-style:none}
.hsearch .prov summary.sel:hover,.hsearch .prov[open] summary.sel{background:#fff}
.hsearch .prov summary.sel i.ph-map-pin{padding:0;font-size:14px;color:var(--mint)}
.hsearch .prov summary.sel i.cv{padding:0;font-size:11px;color:var(--ink-3)}
.hsearch .prov .pop{left:auto;right:0}
.hsearch .prov .pop.provpop{width:360px}

/* Đặt hẹn nhanh: ô gợi ý nha khoa */
.qb-clinic { position: relative; }
.qb-sug { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; background: #fff; border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 14px 34px rgba(15, 30, 60, .16); max-height: 330px; overflow-y: auto; padding: 4px; }
.qb-sug[hidden], .qb-picked[hidden] { display: none; }
.qb-it { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; background: none; border: 0; border-radius: 9px; padding: 8px; cursor: pointer; font: inherit; color: var(--ink); }
.qb-it:hover, .qb-it.on { background: #eef4ff; }
.qb-it img, .qb-it .lg { flex: none; width: 38px; height: 38px; border-radius: 9px; object-fit: contain; background: #f4f7fb; border: 1px solid var(--line); display: grid; place-items: center; color: var(--ink-3); font-size: 18px; }
.qb-it .tx { min-width: 0; display: grid; gap: 1px; }
.qb-it b { font-size: 14px; line-height: 1.3; font-weight: var(--fw-semi); overflow-wrap: anywhere; }
.qb-it b i { color: var(--mint, #0c9c79); font-size: 14px; vertical-align: -1px; }
.qb-it b em { font-style: normal; font-size: 11px; font-weight: var(--fw-semi); color: #1f62d6; background: #e8f0ff; border-radius: 999px; padding: 1px 7px; margin-left: 4px; white-space: nowrap; }
.qb-it small { font-size: 12px; color: var(--ink-3); line-height: 1.35; overflow-wrap: anywhere; }
.qb-none { display: flex; gap: 6px; align-items: flex-start; padding: 8px 10px 6px; font-size: 12px; line-height: 1.4; color: var(--ink-2); border-top: 1px dashed var(--line); margin-top: 2px; }
.qb-none i { color: #d98a1c; font-size: 14px; margin-top: 1px; flex: none; }
.qb-picked { font-size: 12px; color: var(--mint, #0c9c79); margin: 4px 2px 0; display: flex; align-items: center; gap: 5px; }
.qb-picked button { margin-left: auto; background: none; border: 0; color: #1f62d6; font: inherit; font-weight: var(--fw-semi); cursor: pointer; padding: 2px 4px; }

/* T2-001: ô tìm kiếm lớn (.sbar: trang 404, /tim-kiem) xếp 1 cột trên điện thoại — nút "Tìm" bị bóp 20px, ô khu vực thiếu chiều cao */
@media (max-width: 960px) {
  .sbar > button { min-height: 46px; justify-content: center; font-size: 14px; cursor: pointer; }
  .sbar > .ar { border-left: 0; border-top: 1px solid var(--line); min-height: 44px; }
  .sbar > .q { border-bottom: 0; }
}
/* T2-002: thanh tab kết quả tìm kiếm — các tab bị co lại đè lên nhau; giữ đúng cỡ và cuộn ngang */
.stabs { scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.stabs::-webkit-scrollbar { display: none; }
.stabs a { flex: none; }
/* T2-003: đầu khối (.box>.bh) có nhãn bên phải ("Chỉ khách đã khám thật"…) tràn mép hộp trên điện thoại → cho xuống dòng */
@media (max-width: 560px) {
  .box > .bh { flex-wrap: wrap; row-gap: 4px; }
  .box > .bh h2 { min-width: 0; flex: 1 1 auto; }
  .box > .bh .r { max-width: 100%; }
  .lp-cta .btn { white-space: normal; text-align: center; min-width: 0; }
}

/* T2-008: thanh menu chính (12 mục) rộng ~1075px làm cả trang tràn ngang 60–80px ở khổ 961–1180px (iPad ngang 1024, laptop nhỏ):
   ẩn biểu tượng cho vừa hết các mục; nếu vẫn thiếu chỗ thì thanh tự cuộn ngang (không kéo cả trang). */
@media (min-width: 961px) and (max-width: 1180px) {
  nav.menu a i { display: none; }
  nav.menu a { padding: 0 9px; }
  nav.menu { overflow-x: auto; scrollbar-width: none; }
  nav.menu::-webkit-scrollbar { display: none; }
}

/* T2-009: thẻ voucher trong hồ sơ nha khoa (cột chính hẹp khi có thanh bên, ~630px ở khổ 1024) bị chia 2 cột quá chật: chữ cụt "HSD 08/1", nút "Dùng mã" tràn ra ngoài thẻ → số cột tự co theo chỗ */
@media (min-width: 961px) {
  .box .vlist { grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
}

/* Logo thương hiệu (biểu tượng răng xanh): ảnh SVG thay ô màu + icon cũ */
.logo img.mk{width:36px;height:36px;border-radius:9px;display:block;background:none;box-shadow:none;object-fit:contain}

/* Bộ ảnh (hồ sơ nha khoa, tin rao): hiện TRỌN bức ảnh (không cắt mặt/đầu người), phần thừa hai bên lấp bằng chính ảnh đó làm mờ */
.gal .main{background:#0f1a30}
.gal .slide{background:#0f1a30}
.gal .slide::before{content:"";position:absolute;inset:-24px;background:var(--bg) center/cover no-repeat;filter:blur(26px) brightness(.7) saturate(1.1)}
.gal .slide img{object-fit:contain;z-index:1}
.gal .slide .cap{z-index:2}

/* Mẫu B — lưới ảnh + xem lớn (bài review): partials/gallery-b.ejs, p-gallery.js */
.gb{display:grid;grid-template-columns:2fr 1fr 1fr;grid-template-rows:1fr 1fr;gap:6px;aspect-ratio:16/8;margin:0 0 16px;border-radius:var(--r);overflow:hidden;background:#0f1a30}
.gb[data-n="2"]{grid-template-columns:1fr 1fr;grid-template-rows:1fr;aspect-ratio:16/7}
.gb[data-n="3"]{grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr}
.gb-i{position:relative;padding:0;border:0;background:#0f1a30;cursor:zoom-in;overflow:hidden}
.gb[data-n="3"] .gb-i:first-child,.gb[data-n="4"] .gb-i:first-child,.gb[data-n="5"] .gb-i:first-child{grid-row:span 2}
.gb[data-n="4"]{grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr 1fr}
.gb[data-n="4"] .gb-i:first-child{grid-row:span 3}
.gb-i img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s}
.gb-i:hover img{transform:scale(1.04)}
.gb-i:focus-visible{outline:3px solid var(--mint);outline-offset:-3px}
.gb-all{position:absolute;left:10px;bottom:10px;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:var(--r-s);background:#fff;color:var(--ink);font-size:13px;font-weight:var(--fw-semi);box-shadow:0 4px 12px rgba(0,0,0,.25)}
.gb-more{position:absolute;inset:0;display:grid;place-items:center;background:rgba(15,26,48,.6);color:#fff;font-size:18px;font-weight:var(--fw-semi)}
.lbx{position:fixed;inset:0;z-index:160;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:rgba(7,13,26,.95);color:#fff;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))}
.lbx[hidden]{display:none}
.lbx-top{display:flex;justify-content:space-between;align-items:center;font-weight:var(--fw-semi)}
.lbx-x{width:38px;height:38px;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:18px;cursor:pointer;display:grid;place-items:center}
.lbx-st{position:relative;display:grid;place-items:center;min-height:0}
.lbx-st img{max-width:100%;max-height:100%;object-fit:contain;border-radius:3px}
.lbx-n{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border:0;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font-size:20px;cursor:pointer;display:grid;place-items:center}
.lbx-n.p{left:0}.lbx-n.n{right:0}
.lbx.one .lbx-n{display:none}
.lbx-cap{text-align:center;font-size:13px;color:#c3cde3;padding-top:8px;min-height:1.5em}
@media (max-width:640px){.gb{aspect-ratio:4/3;grid-template-columns:1fr 1fr;grid-template-rows:2fr 1fr}.gb .gb-i:first-child{grid-column:1/-1;grid-row:1!important}.gb .gb-i:nth-child(n+4){display:none}.gb[data-n="2"]{grid-template-rows:1fr}.gb[data-n="2"] .gb-i:first-child{grid-column:auto}}
.score-end{margin-top:26px}

/* Mẫu C — slider "phim ảnh" cho nha khoa VIP: cột ảnh nhỏ bên trái, ảnh lớn có thanh tiến độ + chú thích ngay trên ảnh */
.gal.gal-c{display:grid;grid-template-columns:104px minmax(0,1fr);grid-template-areas:"rail main" "rail cats";gap:10px 12px;align-items:start}
.gal-c .main{grid-area:main;aspect-ratio:3/2;max-height:540px;width:100%}
.gal-c .cats{grid-area:cats;margin:0}
.gal-c .thumbs{grid-area:rail;grid-template-columns:1fr;grid-auto-rows:70px;gap:6px;align-content:start;overflow-y:auto;scrollbar-width:none;align-self:stretch;height:0;min-height:100%}
.gal-c .thumbs button{border:2px solid transparent;border-radius:var(--r-s);opacity:.62;transition:opacity .15s,border-color .15s}
.gal-c .thumbs button.on{border-color:var(--mint);opacity:1}
.gal-c .thumbs button.x{display:block}
.gal-c .thumbs .all{display:none}
.gal-c .slide .cap{left:0;right:0;bottom:0;padding:34px 16px 14px;border-radius:0;background:linear-gradient(to top,rgba(7,13,26,.82),transparent);font-size:14px;font-weight:var(--fw-semi);z-index:3}
.gal-c .count{top:12px;right:12px;bottom:auto}
.gal-c .nav{background:rgba(7,13,26,.5);color:#fff;z-index:4}
.gal-c .gprog{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.28);z-index:5}
.gal-c .gprog i{display:block;height:100%;background:var(--mint);transition:width .35s}
@media (max-width:760px){
  .gal.gal-c{grid-template-columns:1fr;grid-template-areas:"main" "rail" "cats"}
  .gal-c .thumbs{grid-auto-flow:column;grid-auto-columns:84px;grid-template-columns:none;grid-auto-rows:58px;overflow-x:auto;overflow-y:hidden}
}
.chatbook{display:flex;justify-content:center;gap:8px;width:100%;margin-top:8px;height:42px}

/* Điểm ghi nhận của ban biên tập (cuối bài review): vòng điểm + thanh tiêu chí + bộ đếm (p-count.js) */
.score.score-end{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:26px;align-items:center;margin:30px 0 8px;padding:22px 24px;background:linear-gradient(135deg,#f3fbf8,#fff 60%);border:1px solid #cfeadf;border-radius:var(--r);box-shadow:var(--sh-1)}
.sc-main{display:flex;align-items:center;gap:16px}
.sc-ring{position:relative;flex:none;width:118px;height:118px}
.sc-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.sc-ring circle{fill:none;stroke-width:9;stroke-linecap:round}
.sc-ring .trk{stroke:#dcebe5}
.sc-ring .val{stroke:var(--mint);stroke-dasharray:100;stroke-dashoffset:calc(100 - var(--p));transition:stroke-dashoffset 1.3s cubic-bezier(.2,.7,.2,1)}
.sc-ring b{position:absolute;inset:0;display:grid;place-content:center;text-align:center;font-size:32px;font-weight:var(--fw-semi);letter-spacing:-1px;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
.sc-ring b small{display:block;margin-top:3px;font-size:11px;font-weight:var(--fw-semi);letter-spacing:0;color:var(--ink-3)}
.sc-txt{display:grid;gap:3px}
.sc-txt b{font-size:14px;color:var(--ink);line-height:1.3}
.sc-txt small{font-size:12px;line-height:1.45;color:var(--ink-3)}
.sc-grade{display:inline-flex;align-items:center;gap:5px;width:fit-content;padding:3px 10px;border-radius:999px;background:var(--mint);color:#fff;font-size:12px;font-weight:var(--fw-semi);letter-spacing:.02em}
.sc-crit{display:grid;gap:13px}
.sc-row{display:grid;grid-template-columns:minmax(0,170px) minmax(0,1fr) 38px;gap:12px;align-items:center;font-size:13px;color:var(--ink-2)}
.sc-row>b{text-align:right;font-size:15px;color:var(--ink);font-variant-numeric:tabular-nums}
.sc-bar{display:block;height:9px;border-radius:999px;background:#dfe9e5;overflow:hidden}
.sc-bar u{display:block;height:100%;width:var(--w);border-radius:inherit;background:linear-gradient(90deg,#13b58f,#0c9c79);transition:width 1.2s cubic-bezier(.2,.7,.2,1)}
.sc-row:nth-child(2) .sc-bar u{background:linear-gradient(90deg,#3d86f0,#1f62d6)}
.sc-row:nth-child(3) .sc-bar u{background:linear-gradient(90deg,#9a82f0,#6b4fd8)}
.sc-row:nth-child(4) .sc-bar u{background:linear-gradient(90deg,#f5a45a,#ef7d1a)}
.score.pre .sc-ring .val{stroke-dashoffset:100;transition:none}
.score.pre .sc-bar u{width:0;transition:none}
@media (max-width:760px){.score.score-end{grid-template-columns:1fr;padding:18px 16px}.sc-row{grid-template-columns:minmax(0,120px) minmax(0,1fr) 34px;gap:8px}.sc-ring{width:100px;height:100px}.sc-ring b{font-size:27px}}
@media (prefers-reduced-motion:reduce){.sc-ring .val,.sc-bar u{transition:none}}
/* Bài viết: cột bài chiếm hết cột trái (hết khoảng trống trước thanh bên), chỉ khối chữ giữ độ rộng dễ đọc */
.p-post .abody{max-width:none}
.p-post .abody .prose{max-width:760px}

/* Mẫu D: dải ảnh gọn 200×150 cho hồ sơ Đã xác thực / Chưa xác thực (chủ hồ sơ mới thấy ảnh của hồ sơ chưa xác thực) */
.gs{position:relative}
.gs-track{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:2px}
.gs-track::-webkit-scrollbar{display:none}
.gs-i{position:relative;flex:none;width:200px;height:150px;padding:0;border:0;border-radius:var(--r-s);overflow:hidden;background:#0f1a30;cursor:zoom-in;scroll-snap-align:start}
.gs-i::before{content:"";position:absolute;inset:-16px;background:var(--bg) center/cover no-repeat;filter:blur(14px) brightness(.8)}
.gs-i img{position:relative;width:100%;height:100%;object-fit:contain;display:block}
.gs-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:34px;height:34px;border:0;border-radius:50%;background:rgba(14,22,40,.78);color:#fff;display:grid;place-items:center;cursor:pointer}
.gs-nav.p{left:-6px}.gs-nav.n{right:-6px}
.gs-note{display:flex;gap:8px;align-items:flex-start;margin:10px 0 0;padding:9px 12px;border-radius:var(--r-s);background:#fff6e6;border:1px solid #f3d9a4;color:#7a4b00;font-size:13px;line-height:1.5}
.gs-note i{flex:none;margin-top:2px}
@media (max-width:760px){.gs-i{width:150px;height:112px}.gs-nav{display:none}}
/* Khung "Nha khoa thường nhận khách vào": chiếm trọn hàng của biểu mẫu (trước đây bị kẹt nửa cột), khung giờ gọn một dòng */
.cms-form .dl-free,.dl-free{grid-column:1/-1;width:100%;box-sizing:border-box;margin-top:2px}
.dl-free .chips{gap:6px}
.dl-free .chip{flex:1 1 auto;white-space:nowrap;font-weight:var(--fw-medium);font-size:12px;line-height:1.3;padding:6px 10px}
.dl-free .chip input{margin:0;flex:none;width:14px;height:14px}

/* Chân trang: 4 cột liên kết là mục gập — mở sẵn trên máy tính, đóng sẵn trên điện thoại */
.f2 details.fcol>summary{list-style:none;cursor:default}
.f2 details.fcol>summary::-webkit-details-marker{display:none}
@media (max-width:760px){
  .f2 .wrap{grid-template-columns:minmax(0,1fr);gap:0;padding-top:6px;padding-bottom:6px}
  .f2 .about{padding-bottom:12px}
  .f2 details.fcol{border-top:1px solid var(--line)}
  .f2 details.fcol:first-of-type{border-top:0}
  .f2 details.fcol>summary{display:flex;align-items:center;gap:8px;min-height:46px;padding:0 2px;margin:0;cursor:pointer}
  .f2 details.fcol>summary::after{content:"";margin-left:auto;width:7px;height:7px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(45deg);transition:transform .2s;margin-right:4px}
  .f2 details.fcol[open]>summary::after{transform:rotate(-135deg)}
  .f2 details.fcol>.tree{padding:0 2px 12px}
}
/* Báo sai / gỡ hồ sơ: nút phân đoạn chọn một trong hai chế độ */
.bs-hd{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}
.bs-seg{display:inline-flex;background:#fff;border:1px solid var(--line);border-radius:var(--r-s);padding:2px;gap:2px}
.bs-seg button{display:inline-flex;align-items:center;gap:5px;border:0;background:none;font:inherit;font-size:12px;font-weight:var(--fw-semi);color:var(--ink-2);padding:5px 10px;border-radius:calc(var(--r-s) - 1px);cursor:pointer}
.bs-seg button i{font-size:14px;color:var(--ink-3)}
.bs-seg button.on{background:var(--blue);color:#fff}
.bs-seg button.on i{color:#fff}
.bs-hint{margin:0;font-size:12px;color:var(--ink-3)}
.bs [hidden]{display:none!important}
