@charset "UTF-8";
/* ==========================================================================
   صفحه اصلی — فقط در «/» لود می‌شود (SPEC §۴)
   ========================================================================== */

/* ---------- هیرو ---------- */
.hero{padding-top:var(--sp-5)}
.hero-wrap{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:16px;align-items:stretch}
.hero-wrap > *{min-width:0}
@media (max-width:1023px){.hero-wrap{grid-template-columns:minmax(0,1fr)}}

.hero-slider{
  position:relative;border-radius:var(--r-lg);overflow:hidden;
  background:var(--c-line-2);box-shadow:var(--sh-1);
  aspect-ratio:1080/420;
}
@media (max-width:639px){.hero-slider{aspect-ratio:16/10;border-radius:var(--r-md)}}
.hero-track{
  display:flex;height:100%;
  transition:transform .5s var(--ease);
  will-change:transform;
}
.hero-slide{flex:0 0 100%;position:relative;height:100%}
.hero-slide img{width:100%;height:100%;object-fit:cover}
.hero-caption{
  position:absolute;inset-block-end:0;inset-inline:0;
  padding:28px 32px;
  background:linear-gradient(to top,rgba(14,20,32,.72),transparent);
  color:#fff;
}
.hero-caption h2{color:#fff;font-size:clamp(18px,2.4vw,28px);margin-bottom:8px}
.hero-caption p{color:rgba(255,255,255,.85);font-size:14px;margin-bottom:14px}
@media (max-width:639px){.hero-caption{padding:16px 18px}.hero-caption p{display:none}}

.hero-nav{
  position:absolute;top:50%;transform:translateY(-50%);z-index:3;
  width:42px;height:42px;border-radius:var(--r-full);
  display:grid;place-items:center;
  background:rgba(255,255,255,.9);color:var(--c-ink);
  box-shadow:var(--sh-2);transition:background var(--t-fast);
}
.hero-nav svg{width:20px;height:20px;stroke-width:2}
.hero-nav.prev{inset-inline-end:14px}
.hero-nav.next{inset-inline-start:14px}
.hero-nav:hover{background:#fff}
@media (max-width:639px){.hero-nav{display:none}}

.hero-dots{
  position:absolute;inset-block-end:14px;inset-inline:0;z-index:3;
  display:flex;justify-content:center;gap:7px;
}
.hero-dots button{
  width:8px;height:8px;border-radius:var(--r-full);
  background:rgba(255,255,255,.55);transition:all var(--t-fast);
}
.hero-dots button.is-active{width:24px;background:#fff}

/* بنرهای کنار هیرو */
/* grid-auto-rows به‌جای «1fr 1fr» ثابت: با دو بنر دقیقاً نصف‌نصفِ ارتفاع
   اسلایدر می‌شوند، و اگر فقط یک بنر گذاشته شود کل ارتفاع را می‌گیرد
   (با مقدار ثابت، تک‌بنر نصفه و بدقواره می‌ماند). */
.hero-side{display:grid;grid-auto-rows:1fr;gap:16px}
.hero-side a{
  position:relative;border-radius:var(--r-md);overflow:hidden;
  background:var(--c-line-2);box-shadow:var(--sh-1);
}
.hero-side img{width:100%;height:100%;object-fit:cover}
@media (max-width:1023px){.hero-side{grid-template-rows:none;grid-template-columns:repeat(2,minmax(0,1fr));height:130px}}

/* موبایل: قبلاً کاملاً مخفی می‌شدند (display:none) — یعنی تبلیغ روی گوشی،
   که بیشترین ترافیک را دارد، اصلاً دیده نمی‌شد.
   حالا اسلایدر افقی با scroll-snap بومی است: سوایپ طبیعی، بدون جاوااسکریپت.
   عرض هر بنر ۸۸٪ است نه ۱۰۰٪، تا لبه بنر بعدی پیدا باشد و کاربر بفهمد
   می‌تواند بکشد — این نشانه از نقطه‌های راهنما مؤثرتر است. */
@media (max-width:560px){
  .hero-side{
    display:flex;height:auto;gap:10px;
    overflow-x:auto;scroll-snap-type:x mandatory;
    overscroll-behavior-inline:contain;   /* اسکرول افقی به بدنه صفحه سرایت نکند */
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  .hero-side::-webkit-scrollbar{display:none}
  .hero-side a{flex:0 0 88%;scroll-snap-align:center;aspect-ratio:16/9}
}
@media (prefers-reduced-motion:reduce){
  .hero-side{scroll-behavior:auto}
}

/* ---------- نوار اعتماد ---------- */
.trustbar{
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-lg);box-shadow:var(--sh-1);
  margin-top:var(--sp-5);
}
.trustbar ul{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.trustbar li{
  display:flex;align-items:center;gap:12px;
  padding:18px 20px;
}
.trustbar li+li{border-inline-start:1px solid var(--c-line-2)}
.trustbar svg{width:34px;height:34px;flex:none;color:var(--c-primary);stroke-width:1.5}
.trustbar b{display:block;font-size:13.5px;font-weight:700;line-height:1.7}
.trustbar span{display:block;font-size:12px;color:var(--c-ink-3);line-height:1.7}
@media (max-width:900px){
  .trustbar ul{grid-template-columns:repeat(2,minmax(0,1fr))}
  .trustbar li:nth-child(odd){border-inline-start:0}
  .trustbar li:nth-child(-n+2){border-bottom:1px solid var(--c-line-2)}
}
@media (max-width:480px){
  .trustbar li{padding:14px;gap:9px;flex-direction:column;text-align:center}
  .trustbar svg{width:26px;height:26px}
  .trustbar span{display:none}
}

/* ---------- کاشی دسته‌ها ---------- */
/* minmax(0,1fr) تا نام بلند دسته ستون را پهن نکند و ردیف از صفحه بیرون نزند */
.cat-tiles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}
@media (max-width:1023px){.cat-tiles{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:639px){.cat-tiles{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}}
.cat-tile{
  display:flex;flex-direction:column;align-items:center;gap:10px;
  padding:18px 10px;text-align:center;
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-md);transition:all var(--t-slow);
}
.cat-tile .ic{
  width:74px;height:74px;border-radius:var(--r-full);
  display:grid;place-items:center;overflow:hidden;
  background:var(--c-line-2);transition:background var(--t-fast);
}
.cat-tile .ic img{width:70%;height:70%;object-fit:contain}
.cat-tile .ic svg{width:32px;height:32px;color:var(--c-ink-3);stroke-width:1.5}
.cat-tile b{font-size:13px;font-weight:500;line-height:1.6;max-width:100%;overflow-wrap:anywhere}
.cat-tile small{font-size:11.5px;color:var(--c-ink-3)}
@media (hover:hover){
  .cat-tile:hover{border-color:var(--c-primary);box-shadow:var(--sh-2);transform:translateY(-3px)}
  .cat-tile:hover .ic{background:var(--c-primary-soft)}
  .cat-tile:hover b{color:var(--c-primary)}
}
@media (max-width:639px){.cat-tile .ic{width:56px;height:56px}.cat-tile{padding:13px 6px}}

/* ---------- نوار برندها ---------- */
/* فعلاً هیچ برندی لوگو ندارد و تعدادشان کم است؛ کارت‌ها عمداً بزرگ و متنی‌اند
   تا دو آیتم هم ردیف کاملی به‌نظر برسد نه شبکه‌ای با خانه‌های خالی. */
.brandstrip{
  background:var(--c-surface);border-block:1px solid var(--c-line);
  padding-block:var(--sp-5);
}
.brandstrip .section-head{margin-bottom:var(--sp-4)}
/* wrap + overflow-x با هم بی‌معنی بود (با wrap هرگز اسکرول نمی‌شود).
   روی موبایل ریلِ واقعی و روی دسکتاپ چیدمان wrap. */
.brand-rail{
  display:flex;flex-wrap:wrap;gap:12px;
  padding-bottom:6px;scrollbar-width:none;
  min-width:0;max-width:100%;
}
@media (max-width:639px){
  .brand-rail{
    flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;
    scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
  }
}
.brand-rail::-webkit-scrollbar{display:none}
/* ارتفاع کادر ۸۲ → ۱۱۰ پیکسل.
   چرا: لوگوها معمولاً مربعی آپلود می‌شوند و در کادر افقیِ ۱۷۶×۸۲ فقط ۵۸
   پیکسل ارتفاع مفید داشتند، یعنی خیلی کوچک دیده می‌شدند. ۱۱۰ پیکسل هم به
   لوگوی مربعی جا می‌دهد هم به لوگوی عریض. */
.brand-logo{
  flex:0 0 auto;scroll-snap-align:start;
  min-width:176px;width:176px;height:110px;
  display:grid;place-items:center;padding:12px 14px;
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-md);
  overflow:hidden;
  transition:border-color var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast);
}
/* کارت متنی (بدون لوگو) باید بتواند به‌اندازه نامش پهن شود */
.brand-logo--text{width:auto;height:82px}
/* ارتفاع *پیکسلی* و نه درصدی — این مهم‌ترین نکته این بلوک است.
   هم max-height:100% و هم height:100% روی آیتم گریدی که place-items:center
   دارد، به resolve شدنِ درصد وابسته‌اند و اگر resolve نشود تصویر با اندازه
   طبیعی رندر می‌شود (لوگوی مربعی ۱۲۰۰×۱۲۰۰ در کادر ۵۸ پیکسلی = برش شدید).
   مقدار ثابت ۸۶px = ۱۱۰ ارتفاع کادر منهای ۲۴ پدینگ. هیچ درصدی در کار نیست
   پس هیچ حالتی نمی‌ماند که اشتباه رندر شود.
   object-fit:contain نسبت تصویر را نگه می‌دارد؛ لوگوی مربعی و عریض هر دو
   کامل دیده می‌شوند. */
.brand-logo img{
  width:100%;height:86px;min-width:0;
  object-fit:contain;object-position:center;
  filter:grayscale(1);opacity:.7;transition:filter var(--t-fast),opacity var(--t-fast);
}

/* حالت بدون لوگو: مونوگرام + نام برند */
.brand-logo--text{
  display:flex;align-items:center;justify-content:flex-start;
  gap:12px;text-align:start;
}
.brand-mono{
  flex:none;width:44px;height:44px;border-radius:var(--r-full);
  display:grid;place-items:center;
  background:var(--c-primary-soft);color:var(--c-primary);
  font-size:19px;font-weight:700;line-height:1;
  transition:background var(--t-fast),color var(--t-fast);
}
.brand-name{display:flex;flex-direction:column;gap:2px;min-width:0;line-height:1.5}
.brand-name b{font-size:15px;font-weight:700;color:var(--c-ink);white-space:nowrap}
.brand-name small{font-size:11.5px;color:var(--c-ink-3);white-space:nowrap}

@media (hover:hover){
  .brand-logo:hover{border-color:var(--c-primary);box-shadow:var(--sh-2);transform:translateY(-2px)}
  .brand-logo:hover img{filter:none;opacity:1}
  .brand-logo--text:hover .brand-mono{background:var(--c-primary);color:#fff}
  .brand-logo--text:hover .brand-name b{color:var(--c-primary)}
}
@media (prefers-reduced-motion:reduce){
  .brand-logo,.brand-mono{transition:none}
  .brand-logo:hover{transform:none}
}

/* ---------- تب‌های بخش محصولات ---------- */
.sec-tabs{display:flex;gap:6px;background:var(--c-line-2);padding:4px;border-radius:var(--r-full)}
.sec-tabs button{
  padding:8px 16px;border-radius:var(--r-full);
  font-size:13.5px;font-weight:500;color:var(--c-ink-3);
  transition:all var(--t-fast);white-space:nowrap;
}
.sec-tabs button.is-active{background:var(--c-surface);color:var(--c-primary);box-shadow:var(--sh-1)}
@media (max-width:639px){.sec-tabs{overflow-x:auto;scrollbar-width:none;max-width:100%}.sec-tabs::-webkit-scrollbar{display:none}}

/* بخش محصولات با پس‌زمینه متمایز */
.sec-boxed{
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-1);
}
.sec-boxed .section-head{margin-bottom:var(--sp-4)}

/* ---------- بنر عریض ---------- */
.wide-banner{
  display:block;border-radius:var(--r-lg);overflow:hidden;
  box-shadow:var(--sh-2);background:var(--c-line-2);
}
.wide-banner img{width:100%;height:auto}
.banner-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
@media (max-width:639px){.banner-duo{grid-template-columns:minmax(0,1fr)}}

/* ---------- بلوک درباره ما ---------- */
.about-block{
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-lg);padding:var(--sp-6);
  display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--sp-6);align-items:center;
}
.about-block > *{min-width:0}
.about-block h2{margin-bottom:14px}
.about-block .prose{max-height:260px;overflow:hidden;position:relative}
.about-block .prose.is-open{max-height:none}
.about-block .prose:not(.is-open)::after{
  content:'';position:absolute;inset-inline:0;bottom:0;height:70px;
  background:linear-gradient(to top,var(--c-surface),transparent);
}
.about-more{margin-top:14px}
.about-figure img{border-radius:var(--r-md);width:100%;height:auto}
@media (max-width:900px){.about-block{grid-template-columns:minmax(0,1fr);padding:var(--sp-5)}.about-figure{display:none}}

/* ---------- کارت مقاله ---------- */
.blog-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
@media (max-width:1023px){.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:639px){.blog-grid{grid-template-columns:minmax(0,1fr)}}
.bcard{
  display:flex;flex-direction:column;
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-md);overflow:hidden;
  transition:all var(--t-slow);
  content-visibility:auto;contain-intrinsic-size:320px;
}
@media (hover:hover){
  .bcard:hover{box-shadow:var(--sh-2);transform:translateY(-3px);border-color:#D6DEEE}
  .bcard:hover img{transform:scale(1.04)}
}
.bcard-img{aspect-ratio:16/9;overflow:hidden;background:var(--c-line-2)}
.bcard-img img{width:100%;height:100%;object-fit:cover;transition:transform var(--t-slow)}
.bcard-body{padding:16px;display:flex;flex-direction:column;gap:9px;flex:1 1 auto}
.bcard-cat{font-size:11.5px;color:var(--c-primary);font-weight:500}
.bcard h3{font-size:15px;line-height:1.8;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bcard p{font-size:13px;color:var(--c-ink-3);line-height:1.9;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bcard-meta{
  margin-top:auto;padding-top:12px;border-top:1px solid var(--c-line-2);
  display:flex;align-items:center;gap:14px;font-size:12px;color:var(--c-ink-3);
}
.bcard-meta span{display:inline-flex;align-items:center;gap:5px}
.bcard-meta svg{width:14px;height:14px;stroke-width:1.75}

/* ---------- باکس مشاوره / خبرنامه ----------
   ⚠ این یک «سطح رنگی» است. رنگ‌های داخلش از توکن‌های --on-* در app.css
   می‌آیند (بلوک .on-primary)؛ اینجا فقط چیدمان و پس‌زمینه تعریف می‌شود.
   قبلاً دکمه‌های تلفن/واتس‌اپ .btn-ghost بودند: متن #3A4356 روی آبی = ۱٫۵:۱
   یعنی عملاً نامرئی. آن اصلاح حالا خودکار و سراسری است. */
.consult-box{
  background:linear-gradient(135deg,var(--c-primary) 0%,var(--c-primary-dark) 100%);
  border-radius:var(--r-lg);padding:var(--sp-6);
  display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:var(--sp-6);align-items:center;
}
.consult-box > *{min-width:0}
.consult-box p{font-size:14px;margin-top:8px}
.consult-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
/* دکمهٔ ارسال: سفیدِ توپر، ۸٫۸۲:۱ — تنها دکمهٔ «پر» داخل جعبه تا سلسله‌مراتب حفظ شود */
.consult-form .btn[type=submit],.consult-form button.btn{
  --btn-bg:#fff;--btn-fg:var(--c-primary-dark);--btn-bd:#fff;
  background:#fff;color:var(--c-primary-dark);border-color:#fff;font-weight:700;
}
@media (max-width:900px){.consult-box{grid-template-columns:minmax(0,1fr);padding:var(--sp-5)}}
@media (max-width:480px){.consult-form{grid-template-columns:minmax(0,1fr)}}

/* ---------- متن سئوی پایین صفحه اصلی ---------- */
.home-seo{
  background:var(--c-surface);border:1px solid var(--c-line);
  border-radius:var(--r-lg);padding:var(--sp-6);
}
.home-seo .prose{columns:2;column-gap:44px}
@media (max-width:900px){.home-seo .prose{columns:1}.home-seo{padding:var(--sp-5)}}

/* .home-grid به app.css منتقل شد — شورت‌کد [imb-products] در هر صفحه‌ای
   قابل استفاده است و این فایل فقط در صفحه اصلی لود می‌شود. */
