/* ==========================================================================
   MODULE: catalog   (scope: .m-catalog)
   ফিল্টারেবল ফেব্রিক ক্যাটালগ — ফিল্টার বার + ১১টি কার্ড (এক স্ক্রিন)
   ========================================================================== */

/* ঘন কনটেন্ট — নিজস্ব ছোট প্যাডিং, নাহলে ৬৪০×৫৪০-এ সেকশন বেড়ে যাবে */
.m-catalog{--section-y:clamp(.5rem,1.8vh,4rem)}

/* শিরোনাম বাঁয়ে, লিড ডানে — দুই লাইনের জায়গা এক লাইনে (products-এর মতো)।
   ৬৪০px-এও এই দ্বিখণ্ডিত হেড লাগবে, নাহলে স্ট্যাকড হেড ~৪৫px বেশি জায়গা নিয়ে
   ৬৪০×৫৪০-এ সেকশনটি ১০০svh ভেঙে যেত। */
@media (min-width:640px){
  .m-catalog .section-head{
    max-width:none;
    display:grid;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr);
    column-gap:clamp(1rem,3vw,2.5rem);
    align-items:end;
  }
  .m-catalog .section-head .eyebrow{grid-column:1;grid-row:1}
  .m-catalog .section-head .section-title{grid-column:1;grid-row:2}
  .m-catalog .section-head .section-lead{
    grid-column:2;grid-row:1 / span 2;
    align-self:end;margin-top:0;max-width:none;
    font-size:clamp(.8rem,1.7vh,1.02rem);line-height:1.45;
  }
}
.m-catalog .section-head{margin-bottom:clamp(.35rem,1.4vh,2.4rem)}

/* ---------- ফিল্টার বার ----------
   লেবেল স্থির প্রস্থ + চিপের সারি সবসময় এক লাইন (সরু হলে হরাইজন্টাল স্ক্রল) —
   সারি ভাঙলে উচ্চতা বেড়ে ১০০svh ভেঙে যেত। */
.m-catalog__filters{
  display:grid;
  gap:clamp(.2rem,.7vh,.55rem);
  margin-bottom:clamp(.35rem,1.2vh,.9rem);
}
.m-catalog__group{
  display:flex;
  align-items:center;
  gap:clamp(.4rem,1vw,.85rem);
  min-width:0;
}
.m-catalog__glabel{
  flex:none;
  width:clamp(4.4rem,7vw,6rem);
  font-family:var(--font-display);
  font-size:clamp(.58rem,1.2vh,.66rem);
  font-weight:700;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--muted);
}
.m-catalog__chips{
  display:flex;
  flex-wrap:nowrap;
  align-items:center;
  gap:.32rem;
  min-width:0;
  overflow-x:auto;
  padding-block:.12rem;
  scrollbar-width:none;
}
.m-catalog__chips::-webkit-scrollbar{display:none}

.m-catalog__chip{
  flex:none;
  appearance:none;
  border:1px solid var(--line);
  background:var(--paper);
  color:var(--ink-2);
  font-family:var(--font-display);
  font-size:clamp(.62rem,1.4vh,.74rem);
  font-weight:600;
  line-height:1.2;
  white-space:nowrap;
  cursor:pointer;
  padding:clamp(.24rem,1vh,.48rem) clamp(.45rem,.8vw,.85rem);
  border-radius:999px;
  transition:background .2s var(--ease),color .2s var(--ease),
             border-color .2s var(--ease),transform .2s var(--ease);
}
.m-catalog__chip:hover{border-color:var(--green-700);color:var(--ink);transform:translateY(-1px)}
.m-catalog__chip:focus-visible{outline:2px solid var(--lime-600);outline-offset:2px}
.m-catalog__chip[aria-pressed="true"]{
  background:var(--green-800);
  border-color:var(--green-800);
  color:#fff;
  box-shadow:0 10px 20px -16px rgba(13,44,34,.9);
}

/* ---------- সংখ্যা / নোট / CTA ---------- */
.m-catalog__meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:clamp(.4rem,1vw,.9rem);
  margin-bottom:clamp(.35rem,1.1vh,.85rem);
}
.m-catalog__count{
  margin:0;
  flex:none;
  font-family:var(--font-display);
  font-size:clamp(.66rem,1.5vh,.8rem);
  font-weight:700;
  letter-spacing:.05em;
  text-transform:uppercase;
  color:var(--green-700);
}
.m-catalog__note{
  margin:0;
  flex:1 1 240px;
  min-width:0;
  font-size:clamp(.66rem,1.3vh,.78rem);
  line-height:1.4;
  color:var(--muted);
}
.m-catalog__cta{flex:none}

/* কাউন্ট / নোট / CTA এক লাইনে — সরু উইন্ডোতে নোট ২–৩ লাইনে ভেঙে মেটাকে ~৮৫px
   বানিয়ে দিত, ফলে সেকশন ১০০svh ভাঙত। ৬৪০px+ এ নোট এক লাইনে কাটা হয়,
   পুরো লেখা hover-এ (title) থাকে; মোবাইলে আগের মতো ভাঙে। */
@media (min-width:640px){
  .m-catalog__meta{flex-wrap:nowrap}
  .m-catalog__note{
    flex:1 1 auto;
    min-width:0;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
}

/* ---------- গ্রিড ---------- */
.m-catalog__grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(.3rem,1vh,.8rem);
}
@media (min-width:900px){
  .m-catalog__grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media (max-width:639px){
  .m-catalog__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ---------- কার্ড ---------- */
.m-catalog__item{
  display:flex;
  align-items:stretch;
  height:100%;
  gap:clamp(.45rem,1vw,.8rem);
  min-width:0;
  padding:clamp(.55rem,1.3vh,.95rem);
  border:1px solid var(--line);
  border-radius:calc(var(--radius) + 2px);
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease),transform .25s var(--ease);
}
.m-catalog__item:hover{
  border-color:rgba(34,112,84,.55);
  box-shadow:0 18px 36px -20px rgba(13,44,34,.35);
  transform:translateY(-3px);
}
.m-catalog__item:hover .m-catalog__thumb{
  transform:scale(1.08);
}
.m-catalog__item:hover .m-catalog__wt{
  transform:scale(1.06);
  box-shadow:0 4px 10px rgba(16,185,129,.25);
}
/* JS লুকালে hidden ট্রাইট করতে হবে — নাহলে display:flex জিতে যায় */
.m-catalog__item[hidden]{display:none}

/* থাম্বনেইল — দৃশ্যমান ও স্পষ্ট আকার */
.m-catalog__thumb{
  display:block;
  flex:none;
  width:clamp(54px,8.5vh,78px);
  height:clamp(54px,8.5vh,78px);
  object-fit:cover;
  border-radius:var(--radius-sm);
  background:var(--paper);
  border:1px solid rgba(13,44,34,.08);
  transition:transform .35s cubic-bezier(0.16, 1, 0.3, 1);
}
.m-catalog__wt{
  transition:transform .25s ease, box-shadow .25s ease;
}
@media (max-width:540px){
  .m-catalog__thumb{
    width:46px;height:46px;
  }
}

.m-catalog__body{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  gap:clamp(.12rem,.4vh,.3rem);
}
.m-catalog__top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:.4rem;
}
/* নাম সর্বোচ্চ ২ লাইন — সারির উচ্চতা সীমিত থাকে */
.m-catalog__name{
  margin:0;
  min-width:0;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  font-family:var(--font-display);
  font-size:clamp(.78rem,1.6vh,.95rem);
  font-weight:700;
  line-height:1.24;
  color:var(--ink);
  text-wrap:balance;
}
/* ওজন-ব্যাজ: প্রোফাইলে ওজন আছে তা দেখায়, না থাকলে 'on request' */
.m-catalog__wt{
  flex:none;
  font-family:var(--font-display);
  font-size:clamp(.54rem,1.1vh,.62rem);
  font-weight:700;
  letter-spacing:.05em;
  text-transform:uppercase;
  white-space:nowrap;
  color:var(--green-800);
  background:rgba(164,204,60,.2);
  border:1px solid rgba(34,112,84,.3);
  border-radius:999px;
  padding:.14rem .46rem;
}
.m-catalog__wt--req{
  color:var(--muted);
  background:rgba(13,44,34,.06);
  border-color:rgba(13,44,34,.14);
}

.m-catalog__spec{
  margin:0;
  font-size:clamp(.64rem,1.35vh,.8rem);
  font-weight:600;
  line-height:1.35;
  color:var(--ink-2);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.m-catalog__cat{
  font-size:.86em;
  font-weight:700;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--muted);
}
.m-catalog__cat::after{content:"·";margin-inline:.32em}

.m-catalog__line{
  margin:0;
  font-size:clamp(.6rem,1.25vh,.76rem);
  line-height:1.35;
  color:var(--muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* চওড়া + উঁচু উইন্ডোতে দুই লাইন — পাঠক পুরো construction/composition দেখতে পায় */
@media (min-width:900px) and (min-height:681px){
  .m-catalog__line{
    white-space:normal;
    display:-webkit-box;
    -webkit-line-clamp:2;
    -webkit-box-orient:vertical;
    overflow:hidden;
  }
}

/* ---------- ফলাফল নেই ---------- */
.m-catalog__empty{
  margin:0;
  padding:clamp(.7rem,2vh,1.2rem);
  border:1px dashed var(--line);
  border-radius:calc(var(--radius) + 2px);
  background:rgba(255,255,255,.6);
  font-size:clamp(.78rem,1.6vh,.92rem);
  color:var(--muted);
}
.m-catalog__empty[hidden]{display:none}

/* ---------- ছোট উইন্ডো (≤৬৮০px উচ্চতা): এক স্ক্রিনে ধরার কম্প্যাক্ট ব্লক ----------
   থাম্বনেইল নেই (উপরেই বাদ), প্যাডিং/ফন্ট/গ্যাপ কম — ৬৪০×৫৪০-এ মাপা হয়েছে। */
@media (max-height:680px){
  .m-catalog{--section-y:clamp(.35rem,1.2vh,4rem)}
  .m-catalog .section-head{margin-bottom:.15rem}
  .m-catalog .section-title{font-size:clamp(1.3rem,1.6vh + .5vw,1.9rem)}
  .m-catalog .section-lead{margin-top:.3rem;font-size:clamp(.72rem,1.5vh,.9rem);line-height:1.4}
  .m-catalog__filters{gap:.12rem;margin-bottom:.15rem}
  .m-catalog__chip{font-size:clamp(.58rem,1.4vh,.7rem);padding:.22rem .48rem}
  .m-catalog__meta{gap:.4rem;margin-bottom:.15rem}
  .m-catalog__grid{gap:clamp(.25rem,.8vh,.6rem)}
  .m-catalog__note{font-size:.66rem;line-height:1.35}
  .m-catalog__item{padding:.4rem}
  .m-catalog__body{gap:.05rem}
}

/* ---------- মোবাইল (<৬৪০) ---------- */
@media (max-width:639px){
  .m-catalog .section-head{margin-bottom:.7rem}
  .m-catalog__glabel{width:4.6rem}
  .m-catalog__meta{gap:.5rem}
  .m-catalog__cta{order:3}
}

/* ==========================================================================
   INTERACTIVE PRODUCT REQUIREMENT MODAL (Split View)
   ========================================================================== */

.m-catalog__item{
  cursor:pointer;
  position:relative;
}
.m-catalog__item:focus-visible{
  outline:2px solid var(--mash-green-700, #1b634b);
  outline-offset:2px;
}
.m-catalog__item-action{
  display:inline-flex;
  align-items:center;
  gap:4px;
  font-family:var(--font-display);
  font-size:0.62rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.06em;
  color:var(--green-700, #1b634b);
  margin-top:0.2rem;
  opacity:0;
  transform:translateX(-3px);
  transition:all 0.25s ease;
}
.m-catalog__item:hover .m-catalog__item-action{
  opacity:1;
  transform:translateX(0);
}

body.modal-is-open{
  overflow:hidden !important;
}

.m-catalog__modal{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:clamp(0.8rem, 2.5vw, 2.5rem);
  opacity:0;
  visibility:hidden;
  transition:opacity 0.28s var(--ease, ease), visibility 0.28s;
}
.m-catalog__modal.is-open{
  opacity:1;
  visibility:visible;
}
.m-catalog__modal[hidden]{
  display:none !important;
}

.m-catalog__modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(3, 20, 14, 0.78);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  cursor:pointer;
}

.m-catalog__modal-dialog{
  position:relative;
  z-index:2;
  width:100%;
  max-width:1040px;
  max-height:min(90vh, 760px);
  background:#ffffff;
  border-radius:24px;
  box-shadow:0 35px 80px -15px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.1);
  overflow:hidden;
  display:flex;
  flex-direction:column;
  transform:scale(0.96) translateY(12px);
  transition:transform 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.m-catalog__modal.is-open .m-catalog__modal-dialog{
  transform:scale(1) translateY(0);
}

.m-catalog__modal-close{
  position:absolute;
  top:14px;
  right:14px;
  z-index:10;
  width:36px;
  height:36px;
  border-radius:50%;
  border:1px solid rgba(0, 0, 0, 0.1);
  background:rgba(255, 255, 255, 0.9);
  color:#1b3028;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  transition:all 0.2s ease;
}
.m-catalog__modal-close:hover{
  background:#07261d;
  color:#ffffff;
  transform:rotate(90deg);
}

.m-catalog__modal-split{
  display:grid;
  grid-template-columns:1fr;
  height:100%;
  max-height:min(90vh, 760px);
  overflow-y:auto;
}
@media (min-width:820px){
  .m-catalog__modal-split{
    grid-template-columns:0.92fr 1.08fr;
    overflow-y:hidden;
  }
}

/* ---- Left: Product Technical Overview ---- */
.m-catalog__modal-product{
  background:linear-gradient(165deg, #07261d 0%, #031812 100%);
  color:#ffffff;
  padding:clamp(1.2rem, 2.2vw, 2rem);
  display:flex;
  flex-direction:column;
  gap:1.1rem;
  overflow-y:auto;
  border-right:1px solid rgba(255, 255, 255, 0.08);
}

.m-catalog__modal-img-wrap{
  position:relative;
  width:100%;
  height:clamp(150px, 22vh, 210px);
  border-radius:14px;
  overflow:hidden;
  background:#02100b;
  border:1px solid rgba(255, 255, 255, 0.12);
}
.m-catalog__modal-img{
  width:100%;
  height:100%;
  object-fit:cover;
  transition:transform 0.4s ease;
}
.m-catalog__modal-img-wrap:hover .m-catalog__modal-img{
  transform:scale(1.05);
}

.m-catalog__modal-badge{
  position:absolute;
  bottom:10px;
  right:10px;
  background:rgba(0, 0, 0, 0.75);
  border:1px solid rgba(164, 204, 60, 0.4);
  color:var(--mash-lime, #a4cc3c);
  font-family:var(--font-display);
  font-size:0.68rem;
  font-weight:700;
  letter-spacing:0.08em;
  padding:3px 9px;
  border-radius:999px;
  backdrop-filter:blur(6px);
}

.m-catalog__modal-info{
  display:flex;
  flex-direction:column;
  gap:0.75rem;
}

.m-catalog__modal-cat{
  align-self:flex-start;
  font-family:var(--font-display);
  font-size:0.64rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.12em;
  color:var(--mash-lime, #a4cc3c);
  background:rgba(164, 204, 60, 0.12);
  border:1px solid rgba(164, 204, 60, 0.3);
  padding:2px 8px;
  border-radius:999px;
}

.m-catalog__modal-pname{
  font-family:var(--font-display);
  font-size:clamp(1.3rem, 1.8vw, 1.6rem);
  font-weight:700;
  color:#ffffff;
  margin:0;
  line-height:1.2;
}

.m-catalog__modal-pspec{
  margin:0;
  font-size:0.86rem;
  color:#c7ded2;
  line-height:1.45;
}

.m-catalog__modal-specs-table{
  display:flex;
  flex-direction:column;
  gap:0.5rem;
  background:rgba(255, 255, 255, 0.04);
  border:1px solid rgba(255, 255, 255, 0.08);
  border-radius:12px;
  padding:0.85rem 1rem;
}
.m-catalog__modal-spec-row{
  display:grid;
  grid-template-columns:105px 1fr;
  gap:0.5rem;
  font-size:0.78rem;
  line-height:1.4;
}
.m-catalog__modal-spec-key{
  color:#9ab5a7;
  font-weight:600;
  font-family:var(--font-display);
  letter-spacing:0.02em;
}
.m-catalog__modal-spec-val{
  color:#ffffff;
  font-weight:500;
}

.m-catalog__modal-guarantee{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:0.72rem;
  color:#99b8a7;
  line-height:1.35;
  background:rgba(0, 0, 0, 0.25);
  padding:0.6rem 0.85rem;
  border-radius:10px;
  border:1px solid rgba(255, 255, 255, 0.06);
}
.m-catalog__modal-guarantee-dot{
  width:6px;
  height:6px;
  border-radius:50%;
  background:var(--mash-lime, #a4cc3c);
  box-shadow:0 0 6px var(--mash-lime, #a4cc3c);
  flex:none;
}

/* ---- Right: Send Requirement Form ---- */
.m-catalog__modal-form-wrap{
  background:#ffffff;
  padding:clamp(1.2rem, 2.2vw, 2rem);
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  overflow-y:auto;
}

.m-catalog__modal-form-head{
  margin-bottom:0.9rem;
}

.m-catalog__modal-form-pill{
  display:inline-flex;
  align-items:center;
  gap:5px;
  font-size:0.62rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:0.06em;
  color:var(--green-800, #0c4232);
  background:#edf7f2;
  border:1px solid #c2e2d2;
  padding:2px 8px;
  border-radius:999px;
  margin-bottom:0.35rem;
}
.m-catalog__modal-form-dot{
  width:5px;
  height:5px;
  border-radius:50%;
  background:var(--green-700, #145943);
}

.m-catalog__modal-form-title{
  font-family:var(--font-display);
  font-size:clamp(1.2rem, 1.6vw, 1.45rem);
  font-weight:700;
  color:#07261d;
  margin:0 0 0.2rem;
  line-height:1.24;
}
.m-catalog__modal-form-title em{
  font-style:normal;
  color:var(--green-700, #145943);
}

.m-catalog__modal-form-desc{
  margin:0;
  font-size:0.8rem;
  color:#506a5f;
}
.m-catalog__modal-target-prod{
  color:#0c4232;
  font-weight:700;
}

.m-catalog__modal-grid{
  display:grid;
  gap:0.6rem;
  grid-template-columns:1fr;
}
@media (min-width:520px){
  .m-catalog__modal-grid{
    grid-template-columns:repeat(2, 1fr);
  }
}
.m-catalog__modal-field--full{
  grid-column:1 / -1;
}

.m-catalog__modal-lbl{
  display:block;
  font-size:0.7rem;
  font-weight:600;
  color:#244437;
  margin-bottom:0.2rem;
}
.m-catalog__req{
  color:#dc2626;
  font-weight:700;
}

.m-catalog__modal-input,
.m-catalog__modal-textarea{
  width:100%;
  background:#f9fbf9;
  border:1px solid #cbdcd2;
  border-radius:8px;
  padding:0.46rem 0.68rem;
  font-size:0.82rem;
  color:#0d261e;
  font-family:inherit;
  outline:none;
  transition:all 0.2s ease;
}
.m-catalog__modal-input:focus,
.m-catalog__modal-textarea:focus{
  background:#ffffff;
  border-color:var(--green-700, #1b634b);
  box-shadow:0 0 0 3px rgba(27, 99, 75, 0.15);
}

.m-catalog__modal-textarea{
  resize:vertical;
  min-height:54px;
}

.m-catalog__modal-actions{
  margin-top:0.85rem;
  display:flex;
  flex-direction:column;
  gap:0.45rem;
}
@media (min-width:540px){
  .m-catalog__modal-actions{
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
  }
}

.m-catalog__modal-submit{
  display:inline-flex;
  align-items:center;
  gap:6px;
  padding:0.56rem 1.25rem;
  font-size:0.84rem;
  font-weight:700;
}

.m-catalog__modal-privacy{
  font-size:0.68rem;
  color:#6b867b;
}
