/* ============================================================
   NabzTour — موتور تور راهنمای گام‌به‌گام (self-hosted, no CDN)
   طراحی‌شده برای نبض‌بازار · RTL · موبایل bottom-sheet
   ظاهر ۱۴۰۵/۰۸/۰۳: سربرگ بخش + نوار پیشرفت (به‌جای نقطه‌ها)، دکمه‌های فلش‌دار،
   کارت وسط‌چین با آیکون، شیت موبایل با دستگیره، دکمهٔ «راهنما» با برچسب «جدید».
   ‼️ صفحه‌هایی مثل قیمت‌گذار قاعدهٔ «.nsp button» دارند؛ دکمه‌های تور با «.nt-pop …» و «.nt-fab.nt-fab» مشخص‌تر نوشته شده‌اند.
   ============================================================ */
:root{
  /* پیش‌فرض برای صفحه‌هایی که nabz-tokens.css را بار نمی‌کنند؛ اگر توکن‌ها باشند همان‌ها را می‌گیرد */
  --nt-accent:var(--nb-brand,#001E80);
  --nt-accent-ink:var(--nb-accent,#2563EB);
  --nt-accent-soft:var(--nb-accent-soft,#EFF4FF);
  --nt-grad:var(--nb-grad-brand,linear-gradient(135deg,#001E80 0%,#2F5BFF 100%));
  --nt-radius:var(--nb-r-lg,20px);
  --nt-veil:rgba(8,15,38,.62);
  --nt-ring:#fff;
}

/* ریشهٔ تور — بالاتر از همه‌چیز (دراور مدیریت، مودال‌ها و…) */
.nt-root{
  position:fixed; inset:0; z-index:2147483000;
  font-family:var(--nb-font,'Vazirmatn FD NL','Vazirmatn-FD-NL','Vazirmatn',Tahoma,sans-serif);
  direction:rtl;
}
.nt-root *{ box-sizing:border-box; }

/* لایهٔ گیرندهٔ کلیک — تعامل با صفحه را حین تور می‌بندد */
.nt-catch{ position:fixed; inset:0; z-index:1; background:transparent; cursor:default; transition:background .25s ease; }
.nt-catch.nt-dark{ background:var(--nt-veil); }

/* اسپاتلایت — پنجرهٔ روشن روی المان هدف با تاریک‌کردن اطراف */
.nt-spot{
  position:fixed; z-index:2; pointer-events:none;
  border-radius:var(--nb-r-md,14px);
  box-shadow:0 0 0 9999px var(--nt-veil),
             0 0 0 2px var(--nt-ring) inset,
             0 0 0 3px var(--nt-accent-ink),
             0 0 0 8px color-mix(in srgb,var(--nt-accent-ink) 22%,transparent);
  transition:left .34s cubic-bezier(.4,0,.2,1),top .34s cubic-bezier(.4,0,.2,1),width .34s cubic-bezier(.4,0,.2,1),height .34s cubic-bezier(.4,0,.2,1),opacity .2s ease;
  opacity:0;
}
.nt-spot.nt-on{ opacity:1; }
/* پالس ملایم دور اسپاتلایت */
.nt-spot::after{
  content:''; position:absolute; inset:-3px; border-radius:inherit;
  animation:nt-pulse 2.2s ease-out infinite;
}
@keyframes nt-pulse{
  0%{ box-shadow:0 0 0 0 color-mix(in srgb,var(--nt-accent-ink) 50%,transparent); }
  70%{ box-shadow:0 0 0 16px transparent; }
  100%{ box-shadow:0 0 0 0 transparent; }
}

/* حباب راهنما */
.nt-pop{
  position:fixed; z-index:3; width:min(384px,calc(100vw - 28px));
  background:var(--nb-surface,#fff); border-radius:var(--nt-radius);
  box-shadow:0 24px 60px -16px rgba(8,15,38,.45),0 8px 22px -10px rgba(8,15,38,.3);
  border:1px solid color-mix(in srgb,var(--nt-accent-ink) 14%,#e6ebf3);
  opacity:0; transform:translateY(8px) scale(.98);
  transition:opacity .22s ease,transform .26s cubic-bezier(.2,.9,.3,1.2);
  overflow:hidden;
}
.nt-pop.nt-on{ opacity:1; transform:none; }
/* نوار رنگی باریک بالای حباب */
.nt-pop::after{ content:''; position:absolute; inset-inline:0; top:0; height:3px; background:var(--nt-grad); }

.nt-in{ padding:16px 18px 14px; }

/* سربرگ: برچسب بخش + شمارنده؛ جای دکمهٔ بستن (گوشهٔ چپ در RTL) خالی می‌ماند */
.nt-head{ display:flex; align-items:center; gap:8px; padding-inline-end:34px; min-height:28px; }
/* تا پیدا شدن هدفِ گام بعد، حباب قبلی کم‌رنگ و غیرفعال می‌ماند */
.nt-pop.nt-busy .nt-in{ opacity:.55; pointer-events:none; transition:opacity .15s ease; }
.nt-badge{
  display:inline-flex; align-items:center; gap:6px; min-width:0;
  background:var(--nt-accent-soft); color:var(--nt-accent-ink);
  font-size:var(--nb-fs-2xs,11.5px); font-weight:800; padding:4px 10px 4px 9px; border-radius:var(--nb-r-pill,999px);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:62%;
}
.nt-badge svg{ width:13px; height:13px; flex-shrink:0; }
.nt-count{ margin-inline-start:auto; font-size:var(--nb-fs-2xs,11.5px); font-weight:700; color:var(--nb-muted-2,#94a3b8); white-space:nowrap; font-variant-numeric:tabular-nums; }
.nt-count b{ color:var(--nb-ink,#0f172a); font-weight:900; font-size:13px; }

/* نوار پیشرفت (جایگزین نقطه‌ها) */
.nt-prog{ position:relative; height:5px; margin:11px 0 13px; border-radius:999px; background:color-mix(in srgb,var(--nt-accent-ink) 12%,#eef2f7); overflow:hidden; }
.nt-prog i{
  position:absolute; inset-block:0; inset-inline-start:0; width:0;
  background:var(--nt-grad); border-radius:inherit;
  transition:width .4s cubic-bezier(.4,0,.2,1);
}

.nt-pop .nt-x{
  position:absolute; inset-inline-end:10px; top:12px; z-index:4;
  width:30px; height:30px; border:none; background:transparent; color:var(--nb-muted,#64748b);
  border-radius:var(--nb-r-pill,999px); cursor:pointer; font-size:19px; line-height:1;
  display:grid; place-items:center; transition:background .15s,color .15s;
}
.nt-pop .nt-x:hover{ background:var(--nb-surface-3,#f1f5f9); color:var(--nb-ink,#0f172a); }
.nt-pop .nt-x:focus-visible,.nt-pop .nt-btn:focus-visible,.nt-fab.nt-fab:focus-visible{ outline:2px solid var(--nt-accent-ink); outline-offset:2px; }

.nt-title{ margin:0; font-size:17px; font-weight:900; color:var(--nb-ink,#0f172a); line-height:1.55; letter-spacing:-.1px; }
.nt-body{ margin:7px 0 0; font-size:var(--nb-fs-sm,13.5px); line-height:2; color:var(--nb-ink-2,#475569); max-height:min(46vh,340px); overflow-y:auto; overscroll-behavior:contain; }
.nt-body b{ color:var(--nb-ink,#0f172a); font-weight:800; }
.nt-body .nt-hi{ color:var(--nt-accent-ink); font-weight:800; }
.nt-body a{ color:var(--nt-accent-ink); font-weight:800; }
.nt-body ul{ margin:8px 0 0; padding-inline-start:18px; }
.nt-body li{ margin:3px 0; }
.nt-body .nt-kbd{ display:inline-block; min-width:20px; padding:0 5px; border:1px solid var(--nb-line,#e2e8f0); border-bottom-width:2px; border-radius:6px; font-size:11px; line-height:18px; text-align:center; color:var(--nb-ink-2,#475569); background:var(--nb-surface-2,#f8fafc); }

.nt-foot{ display:flex; align-items:center; gap:8px; margin-top:15px; }
.nt-nav{ display:flex; align-items:center; gap:8px; margin-inline-start:auto; }
.nt-pop .nt-btn{
  font-family:inherit; font-size:var(--nb-fs-sm,13.5px); font-weight:800; cursor:pointer;
  border-radius:var(--nb-r-sm,11px); padding:9px 14px; border:1px solid transparent; min-height:40px;
  transition:background .15s,filter .15s,transform .1s,border-color .15s,color .15s; white-space:nowrap;
  display:inline-flex; align-items:center; justify-content:center; gap:6px;
}
.nt-pop .nt-btn svg{ width:16px; height:16px; flex-shrink:0; }
.nt-pop .nt-btn:active{ transform:translateY(1px); }
.nt-pop .nt-next{ background:var(--nt-grad); color:#fff; padding-inline:16px 13px; box-shadow:0 8px 18px -10px color-mix(in srgb,var(--nt-accent-ink) 80%,transparent); }
.nt-pop .nt-next:hover{ filter:brightness(1.08); }
.nt-pop .nt-next.nt-last{ padding-inline:18px; }
.nt-pop .nt-next.nt-last svg{ display:none; }
.nt-pop .nt-prev{ background:var(--nb-surface,#fff); color:var(--nb-ink-2,#475569); border-color:var(--nb-line,#e2e8f0); padding-inline:12px 14px; }
.nt-pop .nt-prev:hover{ background:var(--nb-surface-2,#f8fafc); border-color:color-mix(in srgb,var(--nt-accent-ink) 35%,#e2e8f0); color:var(--nb-ink,#0f172a); }
.nt-pop .nt-skip{ background:transparent; color:var(--nb-muted-2,#94a3b8); padding-inline:4px; font-weight:700; font-size:12.5px; }
.nt-pop .nt-skip:hover{ color:#ef4444; }
.nt-hidden{ display:none !important; }

/* گام وسط‌چین (خوش‌آمد / پایان): آیکون بزرگ بالای کارت */
.nt-hero{ display:none; }
.nt-pop.nt-center .nt-hero{
  display:flex; align-items:center; justify-content:center; height:84px;
  background:
    radial-gradient(120% 140% at 85% -20%,color-mix(in srgb,var(--nt-accent-ink) 30%,transparent),transparent 60%),
    radial-gradient(90% 120% at 0% 120%,color-mix(in srgb,#10b981 18%,transparent),transparent 60%),
    var(--nt-accent-soft);
}
.nt-hero i{
  width:52px; height:52px; border-radius:16px; display:grid; place-items:center;
  background:var(--nt-grad); color:#fff; font-style:normal; font-size:26px;
  box-shadow:0 12px 26px -12px color-mix(in srgb,var(--nt-accent-ink) 90%,transparent);
}
.nt-hero i svg{ width:28px; height:28px; }
.nt-pop.nt-center{ width:min(420px,calc(100vw - 28px)); }
.nt-pop.nt-center .nt-title{ font-size:18.5px; }
.nt-pop.nt-center::after{ display:none; }

/* دکمهٔ شناور «راهنما» */
.nt-fab.nt-fab{
  position:fixed; inset-block-end:18px; inset-inline-start:18px; z-index:2147482000;
  display:inline-flex; align-items:center; gap:8px;
  background:var(--nt-grad); color:#fff; border:none; cursor:pointer;
  font-family:var(--nb-font,'Vazirmatn FD NL','Vazirmatn-FD-NL','Vazirmatn',Tahoma,sans-serif);
  font-size:var(--nb-fs-sm,13px); font-weight:800; padding:6px 8px 6px 15px; min-height:44px; border-radius:var(--nb-r-pill,999px);
  box-shadow:0 12px 28px -10px color-mix(in srgb,var(--nt-accent-ink) 70%,transparent),0 3px 10px rgba(15,23,42,.18);
  transition:transform .18s,box-shadow .18s,filter .18s; direction:rtl;
}
.nt-fab.nt-fab:hover{ filter:brightness(1.06); transform:translateY(-2px); }
.nt-fab.nt-fab .nt-fab-ic{ width:32px; height:32px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.18); flex-shrink:0; }
.nt-fab.nt-fab svg{ width:18px; height:18px; }
.nt-fab.nt-fab .nt-fab-lbl{ display:inline; }
/* برچسب «جدید» برای کاربرانی که نسخهٔ تازهٔ تور را ندیده‌اند */
.nt-fab.nt-fab .nt-fab-new{ display:none; }
.nt-fab.nt-fab.nt-new .nt-fab-new{
  display:inline-block; position:absolute; top:-8px; inset-inline-end:-4px;
  background:#ef4444; color:#fff; font-size:10px; font-weight:900; line-height:1; padding:4px 7px 3px; border-radius:999px;
  border:2px solid var(--nb-surface,#fff); box-shadow:0 4px 10px -4px rgba(239,68,68,.7);
  animation:nt-bob 1.8s ease-in-out infinite;
}
@keyframes nt-bob{ 0%,100%{ transform:translateY(0) } 50%{ transform:translateY(-3px) } }

/* ── موبایل: حباب به‌صورت شیت پایین صفحه ── */
@media (max-width:768px){
  .nt-pop,.nt-pop.nt-center{
    inset-inline:0 !important; inset-block-end:0 !important; top:auto !important;
    width:100% !important; border-radius:22px 22px 0 0; border-inline:0; border-bottom:0;
    transform:translateY(16px);
    box-shadow:0 -16px 44px -12px rgba(8,15,38,.45);
  }
  .nt-pop.nt-on{ transform:none; }
  .nt-pop::after{ display:none; }
  /* دستگیرهٔ شیت */
  .nt-pop::before{ content:''; position:absolute; top:7px; left:50%; width:38px; height:4px; margin-left:-19px; border-radius:999px; background:var(--nb-line-2,#cbd5e1); z-index:5; }
  /* هدفِ ثابتِ ته صفحه: شیت بالای صفحه می‌نشیند */
  .nt-pop.nt-sheet-top{
    inset-block-end:auto !important; top:0 !important;
    border-radius:0 0 22px 22px; transform:translateY(-16px);
    box-shadow:0 16px 44px -12px rgba(8,15,38,.45);
  }
  .nt-pop.nt-sheet-top::before{ top:auto; bottom:7px; }
  .nt-pop.nt-sheet-top.nt-on{ transform:none; }
  .nt-pop.nt-sheet-top .nt-in{ padding-top:calc(16px + env(safe-area-inset-top,0px)); padding-bottom:20px; }
  .nt-in{ padding:20px 16px calc(14px + env(safe-area-inset-bottom,0px)); }
  .nt-pop .nt-x{ top:16px; }
  .nt-pop.nt-center .nt-hero{ height:74px; margin-top:0; }
  .nt-pop.nt-center .nt-x{ top:14px; }
  .nt-body{ max-height:34vh; }
  .nt-foot{ margin-top:14px; }
  .nt-pop .nt-next,.nt-pop .nt-prev{ min-height:44px; padding-block:10px; }
  .nt-pop .nt-next{ flex:1 1 auto; }
  .nt-nav{ flex:1; }
  .nt-pop .nt-prev .nt-prev-t{ display:none; }
  .nt-fab.nt-fab .nt-fab-lbl{ display:none; }
  .nt-fab.nt-fab{ padding:6px; inset-block-end:16px; inset-inline-start:14px; }
  .nt-fab.nt-fab .nt-fab-ic{ background:transparent; }
}

@media (prefers-reduced-motion:reduce){
  .nt-spot,.nt-pop,.nt-prog i,.nt-catch{ transition:none; }
  .nt-spot::after,.nt-fab.nt-fab.nt-new .nt-fab-new{ animation:none; }
}


/* ============================================================
   «شب نبض» — حالت تاریک تور
   ============================================================ */
html[data-theme="dark"]{ --nt-veil:rgba(2,6,18,.7); --nt-ring:rgba(234,240,250,.9); }
html[data-theme="dark"] .nt-pop{ background:var(--nb-surface); box-shadow:0 24px 60px -16px rgba(0,0,0,.7),0 8px 22px -10px rgba(0,0,0,.6); border-color:rgba(148,163,184,.16); }
html[data-theme="dark"] .nt-prog{ background:rgba(148,163,184,.16); }
html[data-theme="dark"] .nt-count{ color:var(--nb-muted); }
html[data-theme="dark"] .nt-pop .nt-x:hover{ background:var(--nb-surface-2); }
html[data-theme="dark"] .nt-pop .nt-prev{ border-color:rgba(148,163,184,.22); background:transparent; }
html[data-theme="dark"] .nt-pop .nt-prev:hover{ background:#17233D; }
html[data-theme="dark"] .nt-pop .nt-skip{ color:var(--nb-muted); }
html[data-theme="dark"] .nt-pop .nt-skip:hover{ color:var(--nb-neg,#f87171); }
html[data-theme="dark"] .nt-body .nt-kbd{ border-color:rgba(148,163,184,.25); background:rgba(148,163,184,.08); }
html[data-theme="dark"] .nt-fab.nt-fab{ box-shadow:0 12px 28px -10px color-mix(in srgb,var(--nt-accent-ink) 45%,transparent),0 3px 10px rgba(0,0,0,.5); }
html[data-theme="dark"] .nt-fab.nt-fab.nt-new .nt-fab-new{ border-color:var(--nb-surface,#121D33); }
@media (max-width:768px){
  html[data-theme="dark"] .nt-pop{ box-shadow:0 -16px 44px -12px rgba(0,0,0,.7); }
  html[data-theme="dark"] .nt-pop::before{ background:rgba(148,163,184,.35); }
}
