/* =============================================================
   SINCHAROON — เมนูแบบบ้าน (/menu/)
   ไฟล์นี้แยกจาก style.css ของหน้าเว็บหลักโดยสิ้นเชิง
   1. Tokens & base      6. Sheet (bottom sheet)
   2. Top bar & search   7. Sheet: รายละเอียดแบบบ้าน
   3. Tabs & filters     8. Sheet: รายการที่เลือก
   4. Cards (grid/list)  9. Toast
   5. Dock              10. Responsive
   ============================================================= */

/* ---------- 1. TOKENS & BASE ---------- */
:root{
  --bg:#080F1A;
  --bg-2:#0B1626;
  --surface:#101F33;
  --line:rgba(200,162,93,.18);
  --line-soft:rgba(162,183,207,.15);

  --gold:#C8A25D;
  --gold-soft:#E0C185;
  --gold-deep:#9C7A3C;
  --mist:#A2B7CF;
  --steel:#5A7794;
  --pale:#D6DEE8;
  --white:#F4F7FA;

  --r-lg:20px;
  --r-md:14px;

  --top-h:112px;          /* ความสูงแถบบน (แถวโลโก้ + แถบหมวด) */
  --dock-h:96px;          /* dock ลอยขึ้นมาจากขอบจอ จึงต้องเผื่อที่ว่างท้ายหน้ามากกว่าเดิม */

  --ease:cubic-bezier(.22,.68,.32,1);
  --t:220ms var(--ease);

  /* กระจก — ทุกค่าคำนวณจากสีเดิมด้านบน ไม่ได้เพิ่มสีใหม่ */
  --glass-blur:22px;
  --glass-bg:rgba(16,31,51,.42);      /* --surface โปร่ง 42% */
  --glass-bg-2:rgba(11,22,38,.58);    /* --bg-2 โปร่ง 58% */
  --glass-line:rgba(214,222,232,.14);
  --glass-hi:rgba(255,255,255,.10);   /* เส้นแสงขอบบน */
  --glass-sat:saturate(155%);
}

*,*::before,*::after{box-sizing:border-box;}
/* กัน display ของคลาสไปทับ attribute hidden (เช่น .dock__badge ที่เป็น grid) */
[hidden]{display:none !important;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--top-h) + 16px);}
html,body{max-width:100%;overflow-x:clip;}
body{
  margin:0;
  font-family:'Kanit',system-ui,-apple-system,'Segoe UI',sans-serif;
  font-size:16px;line-height:1.7;
  color:var(--pale);
  background:
    radial-gradient(900px 500px at 82% -8%,rgba(44,75,115,.42),transparent 62%),
    linear-gradient(180deg,#0E1B2C 0%,var(--bg) 60%);
  background-attachment:fixed;
  padding-bottom:calc(var(--dock-h) + env(safe-area-inset-bottom));
  word-break:auto-phrase;
  -webkit-font-smoothing:antialiased;
}
/* ชั้นพื้นหลัง — รูปบ้านเบลอหนักเป็นของให้กระจกด้านบนเอาไปเบลอต่อ
   ทั้งสองชั้นเป็น fixed จึงวาดครั้งเดียว ไม่รีเพนต์ตอนสกรอลล์ */
body::before{
  content:"";position:fixed;inset:-80px;z-index:-2;pointer-events:none;
  background:url("../images/houses/sc-m-01-diamond.webp") center/cover no-repeat;
  filter:blur(42px) saturate(125%) brightness(.42);
}
/* ม่านหรี่ + วงแสงทอง คุมไม่ให้รูปแย่งสายตาและกัน contrast ตัวหนังสือตก */
body::after{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(760px 480px at 82% -6%,rgba(200,162,93,.20),transparent 64%),
    linear-gradient(180deg,rgba(8,15,26,.56) 0%,rgba(8,15,26,.80) 55%,rgba(8,15,26,.92) 100%);
}
img,svg{display:block;max-width:100%;}
/* จำเป็น: ไม่งั้น attribute height ของ <img> จะทับ aspect-ratio ที่ตั้งใน CSS */
img{height:auto;}
h1,h2,h3{margin:0;line-height:1.3;color:var(--white);font-weight:700;text-wrap:balance;}
p{margin:0;text-wrap:pretty;}
/* figure มี margin 1em 40px จาก UA stylesheet — ถ้าไม่รีเซ็ตจะดันตำแหน่งสไลด์ในแกลเลอรีเพี้ยน */
figure,figcaption{margin:0;}
ul,ol{margin:0;padding:0;list-style:none;}
a{color:inherit;text-decoration:none;}
button,input,select,textarea{font:inherit;color:inherit;}
button{cursor:pointer;}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:4px;}
::selection{background:var(--gold);color:var(--bg);}

.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.skip{position:absolute;left:12px;top:-56px;z-index:99;background:var(--gold);color:var(--bg);padding:9px 16px;border-radius:0 0 10px 10px;font-weight:600;transition:top var(--t);}
.skip:focus{top:0;}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:48px;padding:12px 22px;border-radius:999px;border:1px solid transparent;
  font-weight:600;font-size:.94rem;line-height:1.3;white-space:nowrap;
  transition:background-color var(--t),color var(--t),border-color var(--t),filter var(--t);
}
.btn svg{width:17px;height:17px;}
.btn--gold{background:linear-gradient(135deg,var(--gold-soft),var(--gold) 58%,var(--gold-deep));color:var(--bg);}
.btn--gold:hover{filter:brightness(1.07);}
.btn--ghost{border-color:rgba(214,222,232,.26);color:var(--white);background:rgba(255,255,255,.04);}
.btn--ghost:hover{border-color:var(--gold);color:var(--gold-soft);}
.btn--block{width:100%;}

/* ---------- 2. TOP BAR ---------- */
.top{
  position:sticky;top:0;z-index:30;
  background:var(--glass-bg-2);
  border-bottom:1px solid var(--glass-line);
  box-shadow:inset 0 1px 0 var(--glass-hi);
  backdrop-filter:blur(24px) var(--glass-sat);
  -webkit-backdrop-filter:blur(24px) var(--glass-sat);
  padding-top:env(safe-area-inset-top);
}
.top__row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  max-width:1180px;margin-inline:auto;
  padding:10px clamp(12px,3vw,22px);
}
.mk{display:flex;align-items:center;gap:10px;min-width:0;flex:none;}
/* โลโก้ — เส้นขาวบนพื้นกรม จึงไม่ต้องมีกรอบทองครอบ */
.mk__logo{flex:none;height:52px;width:auto;object-fit:contain;}
.mk.has-logo .mk__icon{display:none;}
.mk__icon{
  display:grid;place-items:center;width:38px;height:38px;flex:none;
  border-radius:11px;color:var(--gold);
  border:1px solid var(--line);background:linear-gradient(150deg,rgba(200,162,93,.18),rgba(20,43,77,.5));
}
.mk__icon svg{width:20px;height:20px;}

.top__tools{display:flex;align-items:center;gap:10px;flex:none;justify-content:flex-end;}

/* ปุ่มค้นหา+ตัวกรองเดิมที่ลอยมุมขวาล่าง (.fab) ถูกย้ายไปเป็นปุ่มใน dock แล้ว
   ดูสไตล์ที่หัวข้อ 5. DOCK — id เดิม fab-btn / fab-dot ยังใช้ตัวเดิม JS จึงไม่ต้องแก้ */

.search{
  display:flex;align-items:center;gap:9px;
  width:100%;min-width:0;padding:0 14px;min-height:50px;
  border:1px solid var(--glass-line);border-radius:999px;
  background:var(--glass-bg);
  box-shadow:inset 0 1px 0 var(--glass-hi);
  backdrop-filter:blur(14px) var(--glass-sat);
  -webkit-backdrop-filter:blur(14px) var(--glass-sat);
  transition:border-color var(--t),background-color var(--t);
}
.search:focus-within{border-color:var(--gold);background:rgba(20,43,77,.62);}
.search svg{width:17px;height:17px;flex:none;color:var(--steel);}
.search input{
  flex:1;min-width:0;border:none;background:none;outline:none;
  font-size:16px;color:var(--white);padding:12px 0;
}
.search input::placeholder{color:rgba(162,183,207,.55);}
.search input::-webkit-search-cancel-button{display:none;}
.search__clear{
  flex:none;border:none;background:none;color:var(--steel);
  font-size:.9rem;padding:6px;line-height:1;
}
.search__clear:hover{color:var(--gold-soft);}

.viewsw{
  display:flex;gap:3px;padding:3px;flex:none;
  border:1px solid var(--glass-line);border-radius:999px;
  background:var(--glass-bg);
  box-shadow:inset 0 1px 0 var(--glass-hi);
  backdrop-filter:blur(14px) var(--glass-sat);
  -webkit-backdrop-filter:blur(14px) var(--glass-sat);
}
.viewsw__btn{
  display:grid;place-items:center;width:38px;height:38px;
  border:none;border-radius:999px;background:none;color:var(--steel);
  transition:background-color var(--t),color var(--t);
}
.viewsw__btn svg{width:19px;height:19px;}
.viewsw__btn.is-on{background:var(--gold);color:var(--bg);}

/* ---------- 3. TABS & FILTERS ---------- */
.tabs{
  display:flex;gap:8px;align-items:center;
  max-width:1180px;margin-inline:auto;
  padding:0 clamp(12px,3vw,22px) 10px;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.tabs::-webkit-scrollbar{display:none;}
.tab{
  flex:none;display:inline-flex;align-items:center;gap:7px;
  min-height:40px;padding:8px 16px;border-radius:999px;
  border:1px solid var(--glass-line);
  background:var(--glass-bg);
  box-shadow:inset 0 1px 0 var(--glass-hi);
  backdrop-filter:blur(14px) var(--glass-sat);
  -webkit-backdrop-filter:blur(14px) var(--glass-sat);
  color:var(--pale);font-size:.82rem;font-weight:600;white-space:nowrap;
  transition:color var(--t),border-color var(--t),background-color var(--t);
}
.tab span{
  font-size:.68rem;padding:1px 7px;border-radius:999px;
  background:rgba(162,183,207,.16);color:var(--mist);font-variant-numeric:tabular-nums;
}
.tab:hover{color:var(--white);border-color:var(--line);}
.tab.is-on{background:var(--gold);border-color:var(--gold);color:var(--bg);box-shadow:0 6px 20px -6px rgba(200,162,93,.55);}
.tab.is-on span{background:rgba(8,15,26,.24);color:var(--bg);}

.sf__title{font-size:1.1rem;margin-bottom:16px;}
.filters__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:16px;}
.ff{display:flex;flex-direction:column;gap:6px;min-width:0;}
/* ป้ายพวกนี้เป็นภาษาไทย — ตัวอักษรไทยเป็นคลัสเตอร์ (พยัญชนะ+สระ+วรรณยุกต์)
   ถ้าถ่างมากเหมือนคำภาษาอังกฤษ ตัวจะดูหลุดจากกันและอ่านสะดุด */
.ff label{font-size:.7rem;letter-spacing:.03em;text-transform:uppercase;color:var(--mist);font-weight:500;}
.ff select,.ff input{
  width:100%;min-width:0;min-height:46px;
  padding:11px 14px;border-radius:var(--r-md);
  font-size:16px;color:var(--white);
  background-color:rgba(20,43,77,.46);
  border:1px solid var(--line-soft);
  transition:border-color var(--t);
}
.ff select{
  appearance:none;cursor:pointer;padding-right:38px;
  background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),linear-gradient(135deg,var(--gold) 50%,transparent 50%);
  background-position:calc(100% - 20px) 20px,calc(100% - 14px) 20px;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat;
}
.ff select:focus,.ff input:focus{border-color:var(--gold);outline:none;}
.ff option{background:#0D1B2A;color:var(--white);}

/* กล่อง "ลูกค้าใหม่" — เครื่องออฟฟิศใช้ร่วมกัน ต้องล้างของลูกค้าคนก่อนได้ในปุ่มเดียว
   วางแยกด้วยเส้นคั่นและใช้สีส้มแดง ไม่ใช่ทอง เพื่อไม่ให้ปนกับปุ่มที่ลูกค้าใช้ */
.newcx{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-top:22px;padding-top:18px;
  border-top:1px dashed var(--line-soft);
}
.newcx__txt{flex:1;min-width:200px;display:flex;flex-direction:column;gap:3px;}
.newcx__txt b{font-size:.88rem;color:var(--white);font-weight:700;}
.newcx__txt span{font-size:.74rem;color:var(--steel);line-height:1.5;}
.newcx__btn{
  flex:none;min-height:44px;padding:11px 20px;border-radius:999px;
  border:1px solid rgba(240,147,141,.42);
  background:rgba(240,147,141,.10);color:#F0938D;
  font-size:.86rem;font-weight:700;white-space:nowrap;
  transition:background-color var(--t),color var(--t),border-color var(--t);
}
.newcx__btn:hover{background:rgba(240,147,141,.18);}
.newcx__btn[data-armed="true"]{background:#F0938D;border-color:#F0938D;color:#2A0F0D;}

/* ---------- 4. CARDS ---------- */
.body{max-width:1180px;margin-inline:auto;padding:clamp(16px,2.4vw,26px) clamp(12px,3vw,22px) 40px;}

/* ---------- 4a. หน้าแรก: เลือกสไตล์บ้าน ---------- */
.styles__title{
  font-size:clamp(1.2rem,2.6vw,1.6rem);font-weight:700;
  margin-bottom:16px;line-height:1.35;
}
.styles__title span{
  display:block;font-size:.84rem;font-weight:400;
  color:var(--mist);margin-top:2px;
}
.styles{display:grid;gap:10px;}
.style{
  display:flex;align-items:center;gap:14px;width:100%;
  padding:12px;text-align:left;
  border:1px solid var(--glass-line);border-radius:var(--r-lg);
  background:var(--glass-bg);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 10px 30px -14px rgba(3,8,15,.8);
  backdrop-filter:blur(var(--glass-blur)) var(--glass-sat);
  -webkit-backdrop-filter:blur(var(--glass-blur)) var(--glass-sat);
  color:inherit;
  transition:border-color var(--t),background-color var(--t);
}
.style:hover{border-color:var(--gold);}
.style__thumb{
  flex:none;width:104px;height:88px;overflow:hidden;
  border-radius:var(--r-md);background:var(--bg-2);
}
.style__thumb img{width:100%;height:100%;object-fit:cover;}
.style__body{display:flex;flex-direction:column;gap:4px;min-width:0;flex:1;}
.style__name{
  font-size:clamp(.98rem,2.2vw,1.2rem);font-weight:700;
  text-transform:uppercase;color:var(--white);line-height:1.25;
  letter-spacing:.01em;
}
/* text-wrap:pretty กันคำเดียวโดดอยู่บรรทัดสุดท้าย — span ไม่ได้รับค่าจาก p */
.style__desc{font-size:.82rem;color:var(--mist);line-height:1.55;text-wrap:pretty;}
.style__meta{font-size:.8rem;color:var(--gold-soft);font-variant-numeric:tabular-nums;}
.style__meta b{font-weight:700;}
.style__go{flex:none;width:22px;height:22px;color:var(--steel);}
.style:hover .style__go{color:var(--gold);}

/* ปุ่มกลับไปหน้าเลือกสไตล์ */
.back{
  display:inline-flex;align-items:center;gap:5px;
  min-height:40px;padding:8px 14px 8px 10px;margin-bottom:12px;
  border:1px solid var(--line-soft);border-radius:999px;
  background:transparent;color:var(--mist);
  font-size:.82rem;font-weight:600;
  transition:color var(--t),border-color var(--t);
}
.back svg{width:17px;height:17px;}
.back:hover{color:var(--gold-soft);border-color:var(--gold);}

.cat{margin-bottom:clamp(26px,3.4vw,44px);scroll-margin-top:calc(var(--top-h) + 12px);}
.cat__head{
  display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;
  padding-bottom:12px;margin-bottom:16px;
  border-bottom:1px solid var(--line-soft);
}
.cat__name{
  font-size:clamp(1.15rem,2.4vw,1.6rem);font-weight:700;
  text-transform:uppercase;letter-spacing:.01em;line-height:1.3;
}
.cat__meta{font-size:.82rem;color:var(--mist);}
.cat__meta b{color:var(--gold-soft);font-weight:700;}

.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.6vw,20px);}

.card{
  position:relative;display:flex;flex-direction:column;min-width:0;
  border:1px solid var(--glass-line);border-radius:var(--r-lg);
  background:var(--glass-bg);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 12px 32px -16px rgba(3,8,15,.85);
  backdrop-filter:blur(var(--glass-blur)) var(--glass-sat);
  -webkit-backdrop-filter:blur(var(--glass-blur)) var(--glass-sat);
  overflow:hidden;text-align:left;padding:0;
  transition:border-color var(--t),transform var(--t),box-shadow var(--t);
}
.card:hover{border-color:rgba(200,162,93,.34);box-shadow:inset 0 1px 0 var(--glass-hi),0 18px 44px -18px rgba(3,8,15,.95);}
.card__media{position:relative;background:var(--bg-2);overflow:hidden;}
.card__media::after{           /* skeleton shimmer ระหว่างรอรูป */
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(162,183,207,.05) 30%,rgba(162,183,207,.14) 50%,rgba(162,183,207,.05) 70%);
  background-size:220% 100%;
  animation:shimmer 1.4s linear infinite;
  transition:opacity .35s var(--ease);
}
.card__media.is-ready::after{opacity:0;}
@keyframes shimmer{from{background-position:120% 0}to{background-position:-120% 0}}
.card__img{width:100%;aspect-ratio:3/2;object-fit:cover;opacity:0;transition:opacity .4s var(--ease);}
.card__img.is-ready{opacity:1;}

.card__code{
  position:absolute;top:10px;left:10px;z-index:2;
  padding:5px 11px;border-radius:999px;
  background:rgba(7,15,27,.78);border:1px solid var(--line);
  color:var(--gold-soft);font-size:.64rem;font-weight:700;letter-spacing:.13em;
  backdrop-filter:blur(6px);
}
.card__tags{position:absolute;left:10px;bottom:10px;z-index:2;display:flex;flex-wrap:wrap;gap:5px;max-width:calc(100% - 20px);}
.tag{
  padding:4px 10px;border-radius:999px;font-size:.62rem;font-weight:700;letter-spacing:.06em;
  background:rgba(7,15,27,.82);border:1px solid var(--line-soft);color:var(--pale);
  backdrop-filter:blur(6px);
}
.tag--gold{background:var(--gold);border-color:var(--gold);color:var(--bg);}
.card__fav{
  position:absolute;top:8px;right:8px;z-index:3;
  display:grid;place-items:center;width:38px;height:38px;
  border-radius:50%;border:1px solid var(--line-soft);
  background:rgba(7,15,27,.74);color:var(--pale);
  backdrop-filter:blur(6px);
  transition:color var(--t),background-color var(--t),border-color var(--t);
}
.card__fav svg{width:19px;height:19px;}
.card__fav[aria-pressed="true"]{background:var(--gold);border-color:var(--gold);color:var(--bg);}
.card__fav[aria-pressed="true"] svg{fill:currentColor;}

.card__body{display:flex;flex-direction:column;flex:1;padding:14px 15px 16px;}
.card__col{font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);font-weight:700;}
.card__name{
  font-size:1.06rem;font-weight:700;text-transform:uppercase;letter-spacing:.01em;
  margin:5px 0 12px;line-height:1.25;
}
.card__specs{display:flex;flex-wrap:wrap;gap:5px 8px;margin-bottom:12px;}
.card__specs li{
  display:inline-flex;align-items:center;gap:5px;
  font-size:.74rem;color:var(--mist);
  padding:4px 9px;border-radius:8px;
  background:rgba(214,222,232,.08);border:1px solid rgba(214,222,232,.07);
}
.card__specs b{color:var(--white);font-weight:700;font-variant-numeric:tabular-nums;}
.card__price{
  margin-top:auto;padding-top:11px;border-top:1px solid var(--line-soft);
  display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;
  font-size:1.16rem;font-weight:700;color:var(--gold-soft);font-variant-numeric:tabular-nums;
}
.card__price em{font-style:normal;font-size:.72rem;font-weight:500;color:var(--mist);}
.card__price--ask{font-size:.92rem;color:var(--pale);font-weight:600;}

/* มุมมองรายการ */
.cards--list{grid-template-columns:1fr;gap:10px;}
.cards--list .card{flex-direction:row;align-items:stretch;}
.cards--list .card__media{width:clamp(180px,46%,260px);flex:none;}
.cards--list .card__img{height:100% !important;aspect-ratio:auto;min-height:118px;}
.cards--list .card__tags,.cards--list .card__code{display:none;}
.cards--list .card__body{padding:12px 14px;}
.cards--list .card__name{margin:4px 0 8px;font-size:.98rem;}
.cards--list .card__specs{margin-bottom:8px;}
.cards--list .card__price{padding-top:8px;font-size:1.02rem;}
.cards--list .card__fav{top:6px;right:6px;width:34px;height:34px;}
.cards--list .card__fav svg{width:17px;height:17px;}

.empty{
  padding:44px 20px;text-align:center;color:var(--mist);
  border:1px dashed var(--line);border-radius:var(--r-lg);
}
.empty button,.empty a{
  margin-top:12px;border:none;background:none;color:var(--gold-soft);
  font-size:.92rem;text-decoration:underline;cursor:pointer;
}

.foot{
  max-width:1180px;margin-inline:auto;
  padding:22px clamp(12px,3vw,22px) 30px;
  border-top:1px solid var(--line-soft);
  font-size:.78rem;color:var(--steel);display:grid;gap:5px;
}

/* ---------- 5. DOCK ---------- */
/* แถบลอยไม่ติดขอบจอ + ปุ่มกลางยกนูนพ้นแถบ จึงต้อง overflow:visible */
.dock{
  position:fixed;left:0;right:0;z-index:40;
  bottom:calc(10px + env(safe-area-inset-bottom));
  width:min(520px,calc(100% - 24px));margin-inline:auto;
  display:flex;gap:0;overflow:visible;
  padding:9px 6px;
  border-radius:28px;
  /* ทึบกว่าแถบบน เพราะ dock ลอยทับรูปบ้านที่สว่างได้ตลอดเวลา
     ถ้าใช้ --glass-bg-2 (.58) ป้ายใต้ไอคอนจะอ่านไม่ออกทันทีที่เจอพื้นสว่าง */
  background:rgba(9,18,31,.88);
  border:1px solid var(--glass-line);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 18px 44px -16px rgba(0,0,0,.92);
  backdrop-filter:blur(26px) var(--glass-sat);
  -webkit-backdrop-filter:blur(26px) var(--glass-sat);
}
.dock__b{
  position:relative;flex:1;min-width:0;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;
  min-height:46px;padding:4px 2px;border-radius:18px;border:none;background:none;
  color:var(--mist);font-size:.64rem;font-weight:600;line-height:1.2;
  transition:color var(--t),background-color var(--t);
}
.dock__b svg{width:21px;height:21px;}
.dock__b:hover{color:var(--white);background:rgba(255,255,255,.05);}
.dock__b:active{color:var(--gold-soft);}

/* ปุ่มกลาง — รายการที่เลือก */
.dock__pop{
  position:relative;display:grid;place-items:center;
  width:54px;height:54px;border-radius:50%;
  margin:-32px 0 1px;                       /* ยกขึ้นพ้นขอบบนของแถบ */
  background:linear-gradient(135deg,var(--gold-soft),var(--gold) 58%,var(--gold-deep));
  color:var(--bg);
  box-shadow:0 0 0 6px rgba(9,18,31,.88),0 12px 26px -10px rgba(200,162,93,.85);
  transition:transform var(--t),filter var(--t);
}
.dock__b--cart svg{width:25px;height:25px;}
.dock__b--cart{color:var(--gold-soft);}
.dock__b--cart:hover{background:none;}
.dock__b--cart:hover .dock__pop{filter:brightness(1.07);}
.dock__b--cart:active .dock__pop{transform:scale(.94);}
.dock__b--cart.has-items .dock__pop svg{fill:currentColor;}

.dock__badge{
  position:absolute;top:-3px;right:-5px;
  min-width:20px;height:20px;padding:0 5px;border-radius:999px;
  display:grid;place-items:center;
  background:#F0938D;color:#2A0F0D;border:2px solid rgba(11,22,38,.9);
  font-size:.62rem;font-weight:700;font-variant-numeric:tabular-nums;
}
/* ปุ่มสลับมุมมอง — โชว์ไอคอนของโหมดที่ใช้อยู่ทีละอัน */
#dock-view .dv-list{display:none;}
#dock-view.is-list .dv-grid{display:none;}
#dock-view.is-list .dv-list{display:block;}

/* จุดแดงบนปุ่มค้นหา — บอกว่ามีตัวกรองเปิดค้างอยู่ */
.dock__dot{
  position:absolute;top:3px;right:calc(50% - 17px);
  width:9px;height:9px;border-radius:50%;
  background:#F0938D;border:2px solid rgba(11,22,38,.95);
}

/* ---------- 6. SHEET ---------- */
.sheet{position:fixed;inset:0;z-index:60;}
.sheet[hidden]{display:none;}
.sheet__scrim{position:absolute;inset:0;background:rgba(3,8,15,.62);backdrop-filter:blur(12px) saturate(120%);-webkit-backdrop-filter:blur(12px) saturate(120%);animation:fade .25s var(--ease);}
@keyframes fade{from{opacity:0}to{opacity:1}}
.sheet__panel{
  position:absolute;left:0;right:0;bottom:0;
  display:flex;flex-direction:column;
  max-height:94vh;
  border-radius:26px 26px 0 0;
  border:1px solid var(--glass-line);border-bottom:none;
  background:linear-gradient(180deg,rgba(16,31,51,.72) 0%,rgba(10,19,34,.86) 60%);
  backdrop-filter:blur(30px) var(--glass-sat);
  -webkit-backdrop-filter:blur(30px) var(--glass-sat);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 -28px 70px -30px rgba(0,0,0,.95);
  animation:rise .34s var(--ease);
}
@keyframes rise{from{transform:translateY(100%)}to{transform:none}}
@keyframes pop{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
.sheet__grab{
  flex:none;height:26px;display:grid;place-items:center;cursor:pointer;
}
.sheet__grab::before{content:"";width:46px;height:4px;border-radius:3px;background:rgba(162,183,207,.35);}
.sheet__close{
  position:absolute;top:10px;right:12px;z-index:5;
  display:grid;place-items:center;width:40px;height:40px;
  border-radius:50%;border:1px solid var(--line-soft);
  background:rgba(7,15,27,.72);color:var(--pale);
  backdrop-filter:blur(6px);
  transition:background-color var(--t),color var(--t),border-color var(--t);
}
.sheet__close svg{width:19px;height:19px;}
.sheet__close:hover{background:var(--gold);border-color:var(--gold);color:var(--bg);}
.sheet__panel:focus{outline:none;}
.sheet__scroll{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;}
.sheet__pad{padding:16px clamp(16px,4vw,28px) 22px;}
.sheet__bar{
  flex:none;display:flex;gap:10px;
  padding:12px clamp(16px,4vw,28px) calc(12px + env(safe-area-inset-bottom));
  border-top:1px solid var(--glass-line);
  background:rgba(8,15,26,.62);
  backdrop-filter:blur(24px) var(--glass-sat);
  -webkit-backdrop-filter:blur(24px) var(--glass-sat);
}
.sheet__bar .btn{flex:1;}
.sheet__bar .btn--ghost{flex:0 0 auto;}

/* ---------- 7. SHEET: รายละเอียดแบบบ้าน ---------- */
.gal{position:relative;background:#0A1322;}
.gal__track{
  display:flex;overflow-x:auto;scroll-snap-type:x mandatory;
  /* contain กันปัดเลยรูปสุดท้ายแล้วเบราว์เซอร์สั่ง "ย้อนกลับ" */
  overscroll-behavior-x:contain;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.gal__track::-webkit-scrollbar{display:none;}
.gal__slide{flex:0 0 100%;scroll-snap-align:center;position:relative;}
/* จำกัดความสูงบนจอใหญ่ ไม่งั้นรูปจะกินพื้นที่จนต้องเลื่อนหาสเปกกับราคา */
.gal__slide img{width:100%;aspect-ratio:16/10;max-height:min(48vh,460px);object-fit:contain;background:#0A1322;}
.gal__slide--plan img{background:#F4F7FA;object-fit:contain;}
.gal__cap{
  position:absolute;left:12px;bottom:12px;
  padding:5px 12px;border-radius:999px;
  background:rgba(7,15,27,.82);border:1px solid var(--line-soft);
  font-size:.68rem;letter-spacing:.1em;color:var(--pale);
}
.gal__nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  display:grid;place-items:center;width:40px;height:40px;
  border-radius:50%;border:1px solid rgba(7,15,27,.2);
  background:rgba(7,15,27,.66);color:#fff;
  transition:background-color var(--t);
}
.gal__nav svg{width:20px;height:20px;}
.gal__nav:hover{background:var(--gold);color:var(--bg);}
.gal__nav--prev{left:8px;}
.gal__nav--next{right:8px;}
/* แถบรูปย่อ — เห็นทันทีว่ามีแปลนกี่ชั้นให้ดู ดีกว่าจุดกลมที่ไม่บอกอะไร */
.thumbs{
  display:flex;gap:8px;
  padding:12px clamp(16px,4vw,28px) 0;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.thumbs::-webkit-scrollbar{display:none;}
.thumb{
  flex:none;width:68px;height:46px;padding:0;overflow:hidden;
  border:1px solid var(--line-soft);border-radius:9px;
  background:#0A1322;opacity:.5;
  transition:opacity var(--t),border-color var(--t),box-shadow var(--t);
}
.thumb img{width:100%;height:100%;object-fit:cover;}
.thumb--plan img{object-fit:contain;background:#F4F7FA;}
.thumb:hover{opacity:.8;}
.thumb.is-on{opacity:1;border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);}

.sm__meta{
  font-size:.64rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--gold);font-weight:700;margin-bottom:8px;
}
.sm__meta b{color:var(--steel);font-weight:700;}

/* ชื่อกับราคาอยู่ระดับสายตาเดียวกัน — ราคาคือข้อมูลที่ตัดสินใจเร็วที่สุด */
.sm__head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 16px;}
.sm__name{
  font-size:clamp(1.3rem,3.6vw,1.9rem);font-weight:700;text-transform:uppercase;
  line-height:1.22;flex:1 1 auto;min-width:0;
}
.sm__price{
  flex:none;font-size:clamp(1.15rem,3vw,1.5rem);font-weight:700;
  color:var(--gold-soft);font-variant-numeric:tabular-nums;line-height:1.2;
  white-space:nowrap;
}
.sm__price.is-ask{font-size:.98rem;color:var(--pale);font-weight:600;}
/* หมายเหตุราคา — เดิมเป็นบรรทัดสีจาง ลูกค้ามองข้ามตอนคุยราคา
   ทำเป็นแถบมีกรอบสีทองอ่อน อ่านง่ายขึ้นแต่ยังไม่แย่งความเด่นจากตัวเลขราคา */
.sm__note{
  display:flex;align-items:flex-start;gap:9px;
  margin-top:12px;padding:10px 13px;border-radius:var(--r-md);
  border:1px solid rgba(200,162,93,.26);
  background:rgba(200,162,93,.07);
  font-size:.8rem;line-height:1.55;color:var(--pale);
}
.sm__note svg{flex:none;width:17px;height:17px;margin-top:2px;color:var(--gold);}
.sm__note b{color:var(--gold-soft);font-weight:700;}

.sm__tags{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 18px;}
.sm__tags:empty{display:none;}

.sm__specs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:18px;}
.sm__specs li{
  padding:11px 6px;text-align:center;min-width:0;
  border:1px solid var(--glass-line);border-radius:var(--r-md);
  background:rgba(214,222,232,.07);
  box-shadow:inset 0 1px 0 var(--glass-hi);
}
.sm__specs b{display:block;font-size:1.04rem;color:var(--white);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.25;}
.sm__specs span{display:block;font-size:.64rem;color:var(--mist);margin-top:2px;}

/* ที่ดินขั้นต่ำ / ระยะเวลาก่อสร้าง — เป็นข้อความ ไม่ใช่ตัวเลขล้วน จึงวางเป็นแถวป้าย–ค่า */
.sm__extra{display:grid;gap:8px;margin-bottom:18px;}
.sm__extra li{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 13px;border-radius:var(--r-md);
  border:1px solid var(--glass-line);background:rgba(214,222,232,.05);
}
.sm__extra span{font-size:.78rem;color:var(--mist);}
.sm__extra b{font-size:.9rem;color:var(--white);font-weight:700;text-align:right;}

/* ตาราง รวม / ไม่รวม */
.incl{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:18px;}
.incl__col{
  padding:13px 14px;border-radius:var(--r-md);
  border:1px solid var(--glass-line);background:rgba(214,222,232,.04);
}
.incl__col h4{
  margin:0 0 8px;font-size:.74rem;letter-spacing:.03em;text-transform:uppercase;font-weight:600;
}
.incl__col--yes h4{color:#8FD3A8;}
.incl__col--no h4{color:#F0938D;}
.incl__col ul{display:grid;gap:5px;}
.incl__col li{
  position:relative;padding-left:15px;
  font-size:.8rem;line-height:1.5;color:var(--pale);
}
.incl__col li::before{
  content:"";position:absolute;left:0;top:.62em;
  width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.5;
}
.incl__col--yes li{color:var(--pale);}
.incl__dash{font-size:.9rem;color:var(--steel);}
@media (max-width:420px){
  .incl{grid-template-columns:1fr;}
}

.sm__nav{display:flex;align-items:center;gap:8px;}
.sm__step{
  flex:1;min-width:0;min-height:44px;padding:10px 10px;border-radius:var(--r-md);
  border:1px solid var(--line-soft);background:rgba(255,255,255,.03);
  color:var(--mist);font-size:.8rem;font-weight:600;white-space:nowrap;
  transition:color var(--t),border-color var(--t);
}
.sm__step:hover:not(:disabled){color:var(--gold-soft);border-color:var(--gold);}
.sm__step:disabled{opacity:.32;cursor:not-allowed;}
.sm__pos{
  flex:none;min-width:58px;text-align:center;
  font-size:.8rem;font-weight:700;
  color:var(--steel);font-variant-numeric:tabular-nums;letter-spacing:.06em;
}

/* ---------- 8. SHEET: รายการที่เลือก ---------- */
.sc__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;}
.sc__title{font-size:1.1rem;}
.sc__clear{border:none;background:none;color:var(--mist);font-size:.8rem;text-decoration:underline;padding:4px 2px;}
.sc__clear:hover{color:var(--gold-soft);}
.sc__empty{padding:28px 8px;text-align:center;color:var(--mist);font-size:.9rem;}
/* รายการที่เลือก — การ์ดต่อแบบ ไม่ใช่ตาราง
   ชื่อกับราคาอยู่บรรทัดเดียวกันระดับสายตา สเปคอยู่ล่าง ไม่ต้องเลื่อนซ้ายขวาเลย */
.sclist{display:grid;gap:10px;margin-bottom:22px;}
.sclist__item{
  display:grid;
  grid-template-columns:1fr auto;
  grid-template-areas:
    "name  price"
    "code  drop"
    "specs specs";
  align-items:center;gap:2px 12px;
  padding:13px 15px;border-radius:var(--r-md);
  border:1px solid var(--glass-line);
  background:rgba(214,222,232,.05);
  box-shadow:inset 0 1px 0 var(--glass-hi);
}
.sclist__name{
  grid-area:name;min-width:0;
  font-size:1rem;font-weight:700;color:var(--white);
  text-transform:uppercase;line-height:1.28;
}
.sclist__code{
  grid-area:code;
  font-size:.66rem;letter-spacing:.14em;color:var(--steel);font-weight:600;
}
.sclist__price{
  grid-area:price;text-align:right;white-space:nowrap;
  font-size:1.08rem;font-weight:700;color:var(--gold-soft);
  font-variant-numeric:tabular-nums;line-height:1.2;
}
.sclist__price em{font-style:normal;font-size:.7rem;font-weight:500;color:var(--mist);}
.sclist__drop{
  grid-area:drop;justify-self:end;
  display:grid;place-items:center;width:30px;height:30px;
  border:1px solid var(--glass-line);border-radius:50%;
  background:none;color:var(--steel);font-size:.82rem;line-height:1;
  transition:color var(--t),border-color var(--t),background-color var(--t);
}
.sclist__drop:hover{color:#F0938D;border-color:rgba(240,147,141,.5);background:rgba(240,147,141,.1);}
.sclist__specs{
  grid-area:specs;
  display:flex;flex-wrap:wrap;gap:5px 7px;margin-top:9px;
}
.sclist__specs li{
  font-size:.74rem;color:var(--mist);
  padding:4px 9px;border-radius:8px;
  background:rgba(214,222,232,.07);border:1px solid rgba(214,222,232,.06);
}
.sclist__specs b{color:var(--white);font-weight:700;font-variant-numeric:tabular-nums;}

.btn:disabled{opacity:.5;cursor:not-allowed;}

/* ข้อความคั่นระหว่างรอข้อมูลแบบบ้านจากหลังบ้าน */
.loading{padding:48px 4px;text-align:center;color:var(--mist);font-size:.9rem;}

/* ---------- 8b. VIEWER — ดูรูปเต็มจอ + ซูม ---------- */
.gal__slide img{cursor:zoom-in;}
.gal__zoom{
  position:absolute;right:10px;bottom:10px;z-index:2;pointer-events:none;
  display:inline-flex;align-items:center;gap:6px;
  padding:5px 11px;border-radius:999px;
  background:rgba(7,15,27,.8);border:1px solid var(--line-soft);
  font-size:.66rem;color:var(--pale);letter-spacing:.04em;
  backdrop-filter:blur(6px);
}
.gal__zoom svg{width:14px;height:14px;}

.viewer{
  position:fixed;inset:0;z-index:80;
  display:flex;flex-direction:column;
  background:#04090F;          /* ทึบเต็ม ไม่ให้เนื้อหาข้างหลังรบกวนตอนดูรูป */
  animation:fade .2s var(--ease);
}
.viewer__bar{
  flex:none;display:flex;align-items:center;gap:10px;
  padding:calc(10px + env(safe-area-inset-top)) 12px 10px;
}
.viewer__cap{
  flex:1;min-width:0;font-size:.82rem;color:var(--mist);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.viewer__btn{
  flex:none;display:grid;place-items:center;width:42px;height:42px;
  border-radius:50%;border:1px solid var(--line-soft);
  background:rgba(255,255,255,.05);color:var(--pale);
  transition:background-color var(--t),color var(--t),border-color var(--t);
}
.viewer__btn svg{width:20px;height:20px;grid-area:1/1;}
.viewer__btn:hover{background:var(--gold);border-color:var(--gold);color:var(--bg);}
.viewer .vw-out{display:none;}
.viewer.is-zoom .vw-in{display:none;}
.viewer.is-zoom .vw-out{display:block;}

.viewer__stage{
  flex:1;min-height:0;
  overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  display:flex;                       /* ไม่ใช้ grid — แถว auto ทำให้ max-height:% ใช้ไม่ได้ */
  padding:0 8px calc(14px + env(safe-area-inset-bottom));
}
.viewer__stage img{
  margin:auto;                        /* จัดกึ่งกลางแบบที่ยังเลื่อนดูส่วนบนได้ตอนซูม */
  max-width:100%;
  /* กำหนดเป็นหน่วยหน้าจอตรง ๆ กันปัญหา % ที่ไม่มีตัวอ้างอิง (หัก header ของ viewer) */
  max-height:calc(100vh - 104px);
  max-height:calc(100dvh - 104px);
  cursor:zoom-in;border-radius:6px;
}
.viewer.is-plan .viewer__stage img{background:#F4F7FA;}
/* ซูม = แสดงขนาดจริงของไฟล์ แล้วเลื่อนดูได้ในกรอบ — อ่านตัวหนังสือในแปลนได้ */
.viewer.is-zoom .viewer__stage img{
  /* align-self:flex-start จำเป็น — ถ้าไม่ใส่ flex จะยืดรูปเท่าความสูงกรอบ ซูมแล้วไม่ใหญ่จริง */
  margin:0;align-self:flex-start;
  max-width:none;max-height:none;width:auto;height:auto;cursor:zoom-out;
}

.viewer__nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:2;
  display:grid;place-items:center;width:44px;height:44px;
  border-radius:50%;border:1px solid rgba(7,15,27,.2);
  background:rgba(7,15,27,.7);color:#fff;
  transition:background-color var(--t),color var(--t),opacity var(--t);
}
.viewer__nav svg{width:21px;height:21px;}
.viewer__nav:hover{background:var(--gold);color:var(--bg);}
.viewer__nav--prev{left:10px;}
.viewer__nav--next{right:10px;}
.viewer__nav:disabled{opacity:.25;cursor:not-allowed;}
.viewer.is-zoom .viewer__nav{opacity:0;pointer-events:none;}

/* ---------- 9. TOAST ---------- */
.toast{
  /* ยกให้พ้นปุ่มค้นหาลอย */
  position:fixed;left:50%;bottom:calc(var(--dock-h) + 82px + env(safe-area-inset-bottom));
  transform:translate(-50%,14px);z-index:70;
  padding:11px 20px;border-radius:999px;
  background:var(--gold);color:var(--bg);
  font-size:.86rem;font-weight:700;white-space:nowrap;
  box-shadow:0 14px 34px -16px rgba(0,0,0,.9);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity var(--t),transform var(--t),visibility var(--t);
}
.toast.is-on{opacity:1;visibility:visible;transform:translate(-50%,0);}

/* ---------- 9b. โหมด PC: sheet ไม่เต็มจอ + รายละเอียดแบ่ง 2 คอลัมน์ ---------- */
@media (min-width:900px){
  /* บนจอใหญ่ใช้กล่องลอยกลางจอ ไม่ใช่แผ่นเกาะขอบล่างแบบมือถือ
     ไม่งั้นจะเหลือพื้นที่มืดโล่งครึ่งจอด้านบน */
  .sheet{display:grid;place-items:center;padding:26px;}
  .sheet__panel{
    position:relative;inset:auto;
    width:100%;max-width:660px;max-height:88vh;
    border-radius:24px;border:1px solid var(--line);
    animation:pop .26s var(--ease);
  }
  .sheet__grab{display:none;}          /* ที่จับลากมีไว้สำหรับมือถือ */
  #sheet-model .sheet__panel{max-width:1060px;}
  .sheet__bar{padding-bottom:14px;border-radius:0 0 24px 24px;}

  /* ซ้าย = รูป + แถบรูปย่อ / ขวา = ข้อมูลทั้งหมด */
  #sheet-model .sheet__scroll{
    display:grid;
    grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);
    /* แถวที่ 3 ว่างไว้เป็นตัวซับความสูงส่วนเกิน — คอลัมน์ข้อมูลด้านขวาสูงกว่ารูปเสมอ
       ถ้ามีแค่ 2 แถว ความสูงส่วนเกินจะถูกหารลงแถวรูปกับแถวรูปย่อ
       ดันให้แถบรูปย่อหลุดห่างจากรูปไปเป็นร้อยพิกเซล */
    grid-template-areas:
      "gal    info"
      "thumbs info"
      "specs  info"
      ".      info";
    grid-template-rows:auto auto auto 1fr;
    align-content:start;
    column-gap:clamp(20px,2.2vw,32px);
    padding:clamp(18px,2vw,26px) clamp(20px,2.4vw,30px) 10px;
  }
  /* align-self:start สำคัญ — คอลัมน์ข้อมูลด้านขวาคร่อม 2 แถวและสูงกว่าเสมอ
     ถ้าไม่กำหนด กล่องรูปจะถูกยืดสูงตามไปด้วย เหลือพื้นที่ดำว่างใต้รูป
     และป้าย "แตะเพื่อดูเต็มจอ" ที่เกาะขอบล่างของกล่องจะลอยหลุดจากรูป */
  #sheet-model .gal{grid-area:gal;border-radius:var(--r-md);overflow:hidden;align-self:start;}
  #sheet-model .gal__slide img{max-height:min(52vh,440px);}
  #sheet-model .thumbs{grid-area:thumbs;padding:10px 0 0;align-self:start;}
  #sheet-model .sheet__pad{grid-area:info;padding:2px 0 0;align-self:start;}

  /* แถวสเปคย้ายมาอยู่ใต้แถบรูปย่อฝั่งซ้าย — JS เป็นคนย้ายโหนดให้ (ดู placeSpecs ใน menu.js)
     คอลัมน์ซ้ายกว้างกว่า ช่อง 4 ช่องจึงไม่บีบจนตัวเลขกับป้ายอัดกัน
     และคอลัมน์ขวาเหลือที่ให้ตารางรวม/ไม่รวมมากขึ้น */
  #sheet-model .sm__specs{grid-area:specs;align-self:start;margin:14px 0 0;}

  /* คอลัมน์ขวาแคบลง ชื่อกับราคาจึงวางซ้อนกันอ่านง่ายกว่าดันคนละฝั่ง */
  #sheet-model .sm__head{display:block;}
  #sheet-model .sm__name{font-size:1.7rem;}
  #sheet-model .sm__price{margin-top:6px;white-space:normal;}
  #sheet-model .sm__specs{gap:10px;}
  #sheet-model .sm__nav{margin-top:20px;}
}

/* ---------- 10. RESPONSIVE ---------- */
@media (max-width:900px){
  .cards{grid-template-columns:repeat(2,minmax(0,1fr));}
}

@media (max-width:640px){
  :root{--top-h:108px;}
  .mk__logo{height:44px;}
  .cards{grid-template-columns:1fr;}
  .skel{grid-template-columns:1fr;}
  .skel div{height:250px;}
  /* เต็มจอเฉพาะ sheet รายละเอียดแบบบ้าน เพราะต้องใช้พื้นที่ดูรูปและแปลน
     ส่วน sheet ค้นหา/ตัวกรอง และรายการที่เลือก ให้สูงตามเนื้อหาเท่านั้น */
  #sheet-model .sheet__panel{
    top:0;height:100vh;height:100dvh;max-height:none;
    border-radius:0;border:none;
    padding-top:env(safe-area-inset-top);
  }
  #sheet-model .sheet__grab{display:none;}   /* เต็มจอแล้วใช้ปุ่มกากบาทแทน */
  #sheet-model .sheet__close{top:calc(10px + env(safe-area-inset-top));}
  #sheet-model .sheet__pad{padding-top:20px;}
  /* พื้นที่ดูรูปกว้างขึ้น ช่วยให้แปลนบ้านแนวตั้งอ่านง่าย */
  .gal__slide img{aspect-ratio:4/3;}
  .sm__specs{gap:6px;}
  .sm__specs li{padding:10px 4px;}
  .sm__specs b{font-size:.98rem;}
  .sm__specs span{font-size:.6rem;}
}

@media (max-width:380px){
  .card__specs li{font-size:.7rem;padding:3px 7px;}
  .dock__b{font-size:.63rem;}
}

/* ---------- 11. GLASS FALLBACK ----------
   เบราว์เซอร์ที่ไม่รองรับ backdrop-filter จะเห็นแผ่นโปร่งจนอ่านไม่ออก
   จึงคืนพื้นทึบสีเดิมให้ทุกชิ้นที่เป็นกระจก */
@supports not ((backdrop-filter:blur(4px)) or (-webkit-backdrop-filter:blur(4px))){
  body::before{display:none;}
  body::after{background:linear-gradient(180deg,#0E1B2C 0%,var(--bg) 60%);}
  .top{background:rgba(8,15,26,.97);}
  .dock{background:rgba(7,13,23,.97);}
  .dock__pop{box-shadow:0 0 0 6px rgba(7,13,23,.97),0 12px 26px -10px rgba(200,162,93,.85);}
  .card,.style,.tab,.search,.viewsw{background:var(--surface);}
  .sheet__panel{background:linear-gradient(180deg,var(--surface) 0%,#0A1322 60%);}
  .sheet__bar{background:rgba(8,15,26,.96);}
  .sheet__scrim{background:rgba(3,8,15,.9);}
}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;}
  .card__media::after{display:none;}
  .card__img{opacity:1;}
}
