/* ============================================================
   v2 App CSS — پوسته + کامپوننت‌های پایه
   وابسته به tokens.css — هیچ مقدار خامی اینجا تعریف نشود.
   ============================================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{color-scheme:dark}
html[data-theme="light"]{color-scheme:light}
body{
  font-family:var(--font);
  font-size:var(--fs-md);
  line-height:1.7;
  color:var(--ink-1);
  direction:rtl;
  background:
    radial-gradient(1100px 480px at 82% -140px,var(--gold-04),transparent 62%),
    radial-gradient(900px 420px at 8% 112%,rgba(76,141,255,.035),transparent 60%),
    var(--bg-page);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
::selection{background:var(--gold-25);color:var(--ink-1)}
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:var(--r-full)}
::-webkit-scrollbar-thumb:hover{background:var(--ink-4)}

/* اعداد: همیشه LTR و هم‌عرض */
.num{direction:ltr;unicode-bidi:isolate;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.up{color:var(--up)}
.down{color:var(--down)}
.muted{color:var(--ink-3);font-size:var(--fs-xs)}

h1,h2,h3,h4{color:var(--ink-1);line-height:1.35;text-wrap:balance}
p{text-wrap:pretty}

/* ============================================================
   پوسته — سایدبار / تاپ‌بار / باتم‌نو
   ============================================================ */
.shell{min-height:100dvh}

/* ---------- سایدبار (راست، جمع‌شونده) ---------- */
.sb{
  position:fixed;inset-block:0;inset-inline-start:0;z-index:60;
  width:var(--sb-w);
  display:flex;flex-direction:column;
  background:var(--glass-sb);
  backdrop-filter:blur(24px) saturate(1.6);
  -webkit-backdrop-filter:blur(24px) saturate(1.6);
  border-inline-end:1px solid var(--line-1);
  transition:width var(--t-med) var(--ease),transform var(--t-med) var(--ease);
}
.sb-brand{
  height:var(--tb-h);flex-shrink:0;
  display:flex;align-items:center;gap:10px;
  padding:0 var(--sp-4);
  border-bottom:1px solid var(--line-1);
  white-space:nowrap;overflow:hidden;
}
.logo-mark{
  width:34px;height:34px;flex-shrink:0;
  border-radius:10px;
  background:var(--gold-grad);
  color:var(--gold-ink);
  display:flex;align-items:center;justify-content:center;
  font-size:17px;
  box-shadow:var(--sh-gold);
}
.logo-name{font-size:15px;font-weight:800;letter-spacing:-.02em}
.logo-sub{font-size:10px;color:var(--ink-4);margin-top:-3px}
.sb-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--sp-3);display:flex;flex-direction:column;gap:2px}
.sb-sec{
  padding:var(--sp-4) 10px var(--sp-1);
  font-size:10px;font-weight:700;color:var(--ink-4);
  letter-spacing:.12em;white-space:nowrap;overflow:hidden;
}
.sb-link{
  position:relative;
  display:flex;align-items:center;gap:11px;
  padding:9px 12px;min-height:40px;
  border-radius:10px;
  font-size:13.5px;font-weight:500;color:var(--ink-3);
  white-space:nowrap;overflow:hidden;
  transition:background var(--t-fast),color var(--t-fast);
}
.sb-link i{font-size:19px;width:22px;flex-shrink:0;text-align:center}
.sb-link span{flex:1;overflow:hidden;text-overflow:ellipsis}
.sb-link:hover{color:var(--ink-1);background:var(--hover)}
.sb-link.active{color:var(--gold);background:var(--gold-08);font-weight:700}
.sb-link.active::before{
  content:'';position:absolute;inset-inline-start:-12px;top:50%;
  width:3px;height:20px;border-radius:var(--r-full);
  background:var(--gold-grad);
  transform:translateY(-50%);
  box-shadow:0 0 12px var(--gold-glow);
}
.sb-count{
  font-size:10px;font-weight:700;
  background:var(--down);color:#fff;
  padding:1px 7px;border-radius:var(--r-full);
  flex-shrink:0;
}
.sb-foot{padding:var(--sp-3);border-top:1px solid var(--line-1);display:flex;flex-direction:column;gap:var(--sp-2)}
.sb-user{
  display:flex;align-items:center;gap:10px;
  padding:8px 10px;border-radius:var(--r-md);
  transition:background var(--t-fast);
  overflow:hidden;white-space:nowrap;
}
.sb-user:hover{background:var(--hover)}
.avatar{
  width:34px;height:34px;flex-shrink:0;
  border-radius:10px;
  background:var(--gold-grad);color:var(--gold-ink);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;font-weight:800;
}
.sb-user-name{font-size:13px;font-weight:600;line-height:1.3}
.sb-user-plan{font-size:10.5px;color:var(--ink-4)}
.sb-collapse{
  display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:36px;border-radius:var(--r-sm);
  background:transparent;border:1px solid var(--line-1);
  color:var(--ink-4);cursor:pointer;
  font-family:var(--font);font-size:var(--fs-2xs);font-weight:600;
  transition:all var(--t-fast);
}
.sb-collapse:hover{color:var(--ink-2);border-color:var(--line-2);background:var(--hover)}
.sb-collapse i{font-size:16px;transition:transform var(--t-med) var(--ease)}
.sb-close{display:none}

/* حالت جمع‌شده (دسکتاپ) */
body.sb-mini .sb{width:var(--sb-rail)}
body.sb-mini .sb-brand{justify-content:center;padding:0}
body.sb-mini .logo-txt,body.sb-mini .sb-sec,body.sb-mini .sb-link span,
body.sb-mini .sb-count,body.sb-mini .sb-user-info,body.sb-mini .sb-collapse span{display:none}
body.sb-mini .sb-nav{padding:var(--sp-3) 10px}
body.sb-mini .sb-link{justify-content:center;padding:9px 0}
body.sb-mini .sb-link i{width:auto}
body.sb-mini .sb-user{justify-content:center;padding:8px 0}
body.sb-mini .sb-collapse i{transform:rotate(180deg)}
body.sb-mini .sb-link::after{
  content:attr(data-tip);
  position:absolute;inset-inline-start:calc(100% + 14px);top:50%;
  transform:translateY(-50%);
  background:var(--bg-hover);border:1px solid var(--line-2);
  color:var(--ink-1);font-size:var(--fs-xs);font-weight:600;
  padding:5px 12px;border-radius:var(--r-sm);
  white-space:nowrap;pointer-events:none;
  opacity:0;transition:opacity var(--t-fast);
  box-shadow:var(--sh-pop);z-index:70;
}
body.sb-mini .sb-link:hover::after{opacity:1}

/* ---------- تاپ‌بار ---------- */
.tb{
  position:sticky;top:0;z-index:50;
  height:var(--tb-h);
  display:flex;align-items:center;gap:var(--sp-3);
  padding:0 var(--sp-6);
  background:var(--glass-tb);
  backdrop-filter:blur(20px) saturate(1.6);
  -webkit-backdrop-filter:blur(20px) saturate(1.6);
  border-bottom:1px solid var(--line-1);
}
.tb-burger{display:none}
.tb-title{font-size:var(--fs-lg);font-weight:800;letter-spacing:-.02em}
.tb-spacer{flex:1}
.tb-search{
  display:flex;align-items:center;gap:10px;
  width:280px;height:38px;
  padding:0 var(--sp-3);
  background:var(--bg-inset);
  border:1px solid var(--line-1);border-radius:var(--r-md);
  color:var(--ink-4);font-size:var(--fs-sm);font-family:var(--font);
  cursor:pointer;
  transition:border-color var(--t-fast),color var(--t-fast);
}
.tb-search:hover{border-color:var(--line-2);color:var(--ink-3)}
.tb-search i{font-size:16px}
.tb-search span{flex:1;text-align:right}
kbd{
  font-family:var(--font);font-size:10px;font-weight:600;
  color:var(--ink-4);
  background:var(--bg-card-2);border:1px solid var(--line-2);
  border-radius:5px;padding:2px 6px;
  direction:ltr;
}
.tb-ticker{
  display:flex;align-items:center;gap:8px;
  height:38px;padding:0 var(--sp-3);
  background:var(--bg-inset);
  border:1px solid var(--line-1);border-radius:var(--r-md);
  font-size:var(--fs-xs);font-weight:600;color:var(--ink-3);
  white-space:nowrap;
}
.tb-ticker b{color:var(--ink-1);font-weight:700}
.tb-btn{
  position:relative;
  width:38px;height:38px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--line-1);border-radius:var(--r-md);
  color:var(--ink-3);font-size:18px;cursor:pointer;
  transition:all var(--t-fast);
}
.tb-btn:hover{color:var(--ink-1);border-color:var(--line-2);background:var(--hover)}
.tb-dot{
  position:absolute;top:8px;left:9px;
  width:7px;height:7px;border-radius:50%;
  background:var(--down);
  box-shadow:0 0 0 2px var(--bg-page);
}

/* ---------- بدنه ---------- */
.main{
  margin-inline-start:var(--sb-w);
  min-width:0;min-height:100dvh;
  transition:margin var(--t-med) var(--ease);
}
body.sb-mini .main{margin-inline-start:var(--sb-rail)}
.page{padding:var(--sp-6);max-width:var(--page-max);margin-inline:auto}
.page-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:var(--sp-3);flex-wrap:wrap;
  margin-bottom:var(--sp-6);
}
.page-title{font-size:var(--fs-2xl);font-weight:800;letter-spacing:-.02em}
.page-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}

/* ---------- باتم‌نو (موبایل) ---------- */
.bn{
  display:none;
  position:fixed;bottom:0;left:0;right:0;z-index:70;
  height:calc(var(--bn-h) + env(safe-area-inset-bottom,0px));
  padding-bottom:env(safe-area-inset-bottom,0px);
  background:var(--glass-bn);
  backdrop-filter:blur(24px) saturate(1.6);
  -webkit-backdrop-filter:blur(24px) saturate(1.6);
  border-top:1px solid var(--line-1);
}
.bn-item{
  flex:1;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  font-size:10px;font-weight:600;color:var(--ink-4);
  min-height:44px;
  transition:color var(--t-fast);
}
.bn-ico{
  display:flex;align-items:center;justify-content:center;
  height:26px;padding:0 14px;border-radius:var(--r-full);
  font-size:20px;
  transition:background var(--t-fast);
}
.bn-item.active{color:var(--gold)}
.bn-item.active .bn-ico{background:var(--gold-12)}

/* ---------- اورلی موبایل ---------- */
.sb-overlay{
  display:none;position:fixed;inset:0;z-index:55;
  background:rgba(0,0,0,.6);
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
  opacity:0;transition:opacity var(--t-med);
}
.sb-overlay.open{display:block;opacity:1}

/* ============================================================
   Command Palette (⌘K)
   ============================================================ */
.ck-overlay{
  display:none;position:fixed;inset:0;z-index:120;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.ck-overlay.open{display:block}
.ck{
  width:min(560px,92vw);
  margin:12vh auto 0;
  background:var(--bg-card);
  border:1px solid var(--line-2);border-radius:var(--r-lg);
  box-shadow:var(--sh-pop);
  overflow:hidden;
  animation:ckIn var(--t-med) var(--ease-pop);
}
@keyframes ckIn{from{opacity:0;transform:scale(.96) translateY(-10px)}to{opacity:1;transform:none}}
.ck-head{display:flex;align-items:center;gap:10px;padding:0 var(--sp-4);border-bottom:1px solid var(--line-1)}
.ck-head i{font-size:18px;color:var(--ink-4)}
.ck-input{
  flex:1;height:54px;
  background:transparent;border:0;outline:0;
  color:var(--ink-1);font-family:var(--font);font-size:15px;
}
.ck-input::placeholder{color:var(--ink-4)}
.ck-list{max-height:320px;overflow-y:auto;padding:var(--sp-2)}
.ck-item{
  display:flex;align-items:center;gap:11px;
  padding:10px var(--sp-3);border-radius:var(--r-sm);
  font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);
  cursor:pointer;
}
.ck-item i{font-size:17px;color:var(--ink-4);width:20px;text-align:center}
.ck-item small{margin-inline-start:auto;font-size:10px;color:var(--ink-4)}
.ck-item.sel,.ck-item:hover{background:var(--gold-08);color:var(--ink-1)}
.ck-item.sel i{color:var(--gold)}
.ck-empty{padding:var(--sp-8);text-align:center;color:var(--ink-4);font-size:var(--fs-sm)}

/* ============================================================
   دکمه‌ها
   ============================================================ */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  height:42px;padding:0 var(--sp-5);
  border:1px solid transparent;border-radius:var(--r-md);
  font-family:var(--font);font-size:var(--fs-md);font-weight:700;
  cursor:pointer;user-select:none;white-space:nowrap;
  transition:all .18s var(--ease);
}
.btn:active{transform:translateY(1px) scale(.99)}
.btn:disabled{opacity:.4;cursor:not-allowed;transform:none!important;box-shadow:none!important}
.btn i{font-size:17px}

.btn-gold{background:var(--gold-grad);color:var(--gold-ink);box-shadow:var(--sh-gold)}
.btn-gold:hover{filter:brightness(1.07);box-shadow:var(--sh-gold-lg);transform:translateY(-1px)}
.btn-ghost{background:transparent;border-color:var(--line-2);color:var(--ink-2)}
.btn-ghost:hover{background:var(--hover);border-color:var(--line-3);color:var(--ink-1)}
.btn-soft{background:var(--gold-08);border-color:var(--gold-25);color:var(--gold)}
.btn-soft:hover{background:var(--gold-12);border-color:var(--gold-45)}
.btn-up{background:linear-gradient(135deg,#17E093,var(--up) 55%,var(--up-deep));color:#03130C;box-shadow:0 1px 0 rgba(255,255,255,.25) inset,0 8px 24px -8px var(--up-25)}
.btn-up:hover{filter:brightness(1.06);transform:translateY(-1px)}
.btn-down{background:linear-gradient(135deg,#FF6A7E,var(--down) 55%,var(--down-deep));color:#fff;box-shadow:0 1px 0 rgba(255,255,255,.2) inset,0 8px 24px -8px var(--down-25)}
.btn-down:hover{filter:brightness(1.06);transform:translateY(-1px)}
.btn-sm{height:34px;padding:0 var(--sp-3);font-size:var(--fs-xs);border-radius:var(--r-sm)}
.btn-lg{height:52px;padding:0 var(--sp-8);font-size:var(--fs-lg);border-radius:var(--r-lg)}
.btn-block{width:100%}
.btn.is-loading{pointer-events:none;position:relative;color:transparent}
.btn.is-loading::after{
  content:'';position:absolute;width:18px;height:18px;
  border:2px solid rgba(0,0,0,.25);border-top-color:rgba(0,0,0,.75);
  border-radius:50%;animation:spin .7s linear infinite;
}
.btn-ghost.is-loading::after,.btn-soft.is-loading::after{border-color:var(--line-3);border-top-color:var(--gold)}
@keyframes spin{to{transform:rotate(360deg)}}

/* ============================================================
   بج و چیپ
   ============================================================ */
.badge{
  display:inline-flex;align-items:center;gap:5px;
  height:22px;padding:0 10px;
  border-radius:var(--r-full);
  font-size:var(--fs-2xs);font-weight:700;white-space:nowrap;
}
.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}
.b-long{background:var(--up-12);color:var(--up)}
.b-short{background:var(--down-12);color:var(--down)}
.b-gold{background:var(--gold-12);color:var(--gold)}
.b-info{background:var(--info-12);color:var(--info)}
.b-purple{background:var(--purple-12);color:var(--purple)}
.b-teal{background:var(--teal-12);color:var(--teal)}
.b-mute{background:var(--bg-card-2);color:var(--ink-3);border:1px solid var(--line-1)}

.live{
  display:inline-flex;align-items:center;gap:7px;
  height:30px;padding:0 var(--sp-3);
  border-radius:var(--r-full);
  background:var(--up-12);border:1px solid var(--up-25);
  color:var(--up);font-size:var(--fs-xs);font-weight:700;
}
.live-dot{width:7px;height:7px;border-radius:50%;background:var(--up);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}

/* ============================================================
   کارت‌ها
   ============================================================ */
.card{
  position:relative;
  background:linear-gradient(180deg,rgba(255,255,255,.025),rgba(255,255,255,0) 48%),var(--bg-card);
  border:1px solid var(--line-1);
  border-radius:var(--r-lg);
  padding:var(--sp-5);
  box-shadow:var(--sh-card);
  transition:border-color var(--t-med),transform var(--t-med),box-shadow var(--t-med);
}
.card:hover{border-color:var(--line-2)}
.card-lift:hover{transform:translateY(-2px);box-shadow:var(--sh-pop)}
.card-h{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-4)}
.card-title{font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.card-title i{color:var(--gold);font-size:18px}
.card-link{
  font-size:var(--fs-2xs);font-weight:600;color:var(--ink-3);
  display:inline-flex;align-items:center;gap:4px;
  padding:5px 12px;border-radius:var(--r-full);
  border:1px solid var(--line-1);
  transition:all var(--t-fast);
}
.card-link:hover{color:var(--gold);border-color:var(--gold-25)}

/* درخشش تعقیب‌گر ماوس — با app.js */
.glow{overflow:hidden}
.glow::after{
  content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:radial-gradient(320px circle at var(--mx,50%) var(--my,50%),var(--gold-08),transparent 70%);
  opacity:0;transition:opacity var(--t-slow);
}
.glow:hover::after{opacity:1}

/* ---------- کارت آمار ---------- */
.stat{--acc:var(--gold);display:flex;flex-direction:column;gap:2px;padding:var(--sp-4) var(--sp-5)}
.stat-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.stat-label{font-size:var(--fs-xs);font-weight:600;color:var(--ink-3)}
.stat-ico{
  width:34px;height:34px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;
  font-size:17px;
  color:var(--acc);
  background:color-mix(in srgb,var(--acc) 12%,transparent);
}
.stat-value{font-size:var(--fs-3xl);font-weight:800;line-height:1.15;letter-spacing:-.02em}
.stat-foot{display:flex;align-items:center;gap:8px;margin-top:4px;font-size:var(--fs-2xs);color:var(--ink-4)}
.delta{
  display:inline-flex;align-items:center;gap:3px;
  font-size:var(--fs-2xs);font-weight:700;
  padding:1px 8px;border-radius:var(--r-full);
}
.delta.up{background:var(--up-12)}
.delta.down{background:var(--down-12)}
.stat--up{--acc:var(--up)} .stat--down{--acc:var(--down)}
.stat--info{--acc:var(--info)} .stat--purple{--acc:var(--purple)} .stat--teal{--acc:var(--teal)}
.spark{margin-top:var(--sp-2);height:36px;width:100%}
.spark polyline{fill:none;stroke:var(--acc);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.spark .spark-fill{fill:color-mix(in srgb,var(--acc) 10%,transparent);stroke:none}

/* ============================================================
   جدول
   ============================================================ */
.tbl-wrap{
  overflow-x:auto;-webkit-overflow-scrolling:touch;
  background:linear-gradient(180deg,var(--hover-soft),rgba(255,255,255,0) 40%),var(--bg-card);
  border:1px solid var(--line-1);border-radius:var(--r-lg);
  box-shadow:var(--sh-card);
}
.tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm);min-width:560px}
.tbl th{
  position:sticky;top:0;z-index:1;
  text-align:right;
  padding:12px var(--sp-4);
  font-size:var(--fs-2xs);font-weight:600;color:var(--ink-3);
  letter-spacing:.04em;white-space:nowrap;
  background:var(--bg-raised);
  border-bottom:1px solid var(--line-2);
}
.tbl td{
  padding:13px var(--sp-4);
  border-bottom:1px solid var(--line-1);
  color:var(--ink-2);vertical-align:middle;white-space:nowrap;
}
.tbl tbody tr{transition:background var(--t-fast)}
.tbl tbody tr:hover{background:var(--hover-soft)}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl .sym{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--ink-1)}
.sym-ico{
  width:30px;height:30px;border-radius:var(--r-sm);flex-shrink:0;
  background:var(--bg-card-2);border:1px solid var(--line-1);
  display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:800;color:var(--ink-3);
  direction:ltr;
}
.tbl--dense th{padding:9px var(--sp-3)}
.tbl--dense td{padding:9px var(--sp-3)}

/* ============================================================
   کامپوننت‌های صفحات جدولی (بازار/سیگنال) — مشترک
   ============================================================ */
/* چیپ گرید A+/A/B/C */
.g-chip{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:34px;height:24px;padding:0 8px;
  border-radius:7px;direction:ltr;
  font-size:var(--fs-xs);font-weight:900;
  border:1px solid transparent;
}
.g-chip.g-ap{background:rgba(139,124,255,.12);color:var(--purple);border-color:rgba(139,124,255,.28)}
.g-chip.g-a{background:var(--up-12);color:var(--up);border-color:var(--up-25)}
.g-chip.g-b{background:var(--info-12);color:var(--info);border-color:rgba(76,141,255,.28)}
.g-chip.g-c{background:var(--gold-12);color:var(--gold);border-color:var(--gold-25)}

/* نوار قدرت سیگنال در جدول */
.conf{display:flex;align-items:center;gap:8px;min-width:96px}
.conf-bar{flex:1;height:6px;border-radius:var(--r-full);background:var(--bg-inset);overflow:hidden}
.conf-bar>i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--up-deep),var(--up))}
.conf-bar.mid>i{background:linear-gradient(90deg,var(--gold-deep),var(--gold))}
.conf-bar.low>i{background:linear-gradient(90deg,var(--down-deep),var(--down))}
.conf-n{font-size:var(--fs-xs);font-weight:800;color:var(--ink-2);direction:ltr;min-width:20px;text-align:center}

/* پیل نتیجه */
.res{
  display:inline-flex;align-items:center;gap:4px;
  height:23px;padding:0 10px;border-radius:var(--r-full);
  font-size:var(--fs-2xs);font-weight:800;white-space:nowrap;direction:ltr;
}
.res-tp{background:var(--up-12);color:var(--up)}
.res-sl{background:var(--down-12);color:var(--down)}
.res-open{background:var(--gold-12);color:var(--gold)}
.res-closed{background:var(--bg-card-2);color:var(--ink-3);border:1px solid var(--line-1)}

/* فیلتربار افقی قابل اسکرول */
.filterbar{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.chip{
  display:inline-flex;align-items:center;gap:6px;
  height:34px;padding:0 var(--sp-4);
  background:var(--bg-inset);border:1px solid var(--line-1);border-radius:var(--r-full);
  font-family:var(--font);font-size:var(--fs-xs);font-weight:600;color:var(--ink-3);
  cursor:pointer;white-space:nowrap;
  transition:all var(--t-fast);
}
.chip i{font-size:15px}
.chip:hover{color:var(--ink-1);border-color:var(--line-2)}
.chip.active{background:var(--gold-12);border-color:var(--gold-25);color:var(--gold)}

/* دات آتش/داغ */
.hot{color:#FF7A1A;font-size:12px}

/* نام نماد در سلول جدول */
.tsym{font-weight:700;color:var(--ink-1);direction:ltr;unicode-bidi:isolate;display:inline-flex;align-items:center;gap:6px}

/* اسکور رنگی */
.score{font-weight:800;direction:ltr}

/* ============================================================
   فرم‌ها
   ============================================================ */
.field{margin-bottom:var(--sp-4)}
.field>label{
  display:block;margin-bottom:6px;
  font-size:var(--fs-xs);font-weight:600;color:var(--ink-3);
}
.input,select.input,textarea.input{
  width:100%;min-height:44px;padding:0 var(--sp-4);
  background:var(--bg-inset);
  border:1px solid var(--line-2);border-radius:var(--r-md);
  color:var(--ink-1);font-family:var(--font);font-size:var(--fs-sm);
  outline:none;appearance:none;
  transition:border-color var(--t-fast),box-shadow var(--t-fast),background var(--t-fast);
}
textarea.input{padding:var(--sp-3) var(--sp-4);min-height:96px;resize:vertical}
.input::placeholder{color:var(--ink-4)}
.input:focus{border-color:var(--gold-45);background:var(--bg-card);box-shadow:0 0 0 3px var(--gold-12)}
select.input{
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-4) 50%),linear-gradient(135deg,var(--ink-4) 50%,transparent 50%);
  background-position:calc(18px) 50%,calc(18px + 5px) 50%;
  background-size:5px 5px;background-repeat:no-repeat;
  padding-inline-end:var(--sp-4);padding-inline-start:38px;
}
select.input option{background:var(--bg-card);color:var(--ink-1)}
.field .hint{font-size:var(--fs-2xs);color:var(--ink-4);margin-top:5px}
.field.is-invalid .input{border-color:var(--down);box-shadow:0 0 0 3px var(--down-12)}
.field.is-invalid .hint{color:var(--down)}
.input-wrap{position:relative}
.input-wrap>i{
  position:absolute;inset-inline-start:14px;top:50%;transform:translateY(-50%);
  font-size:17px;color:var(--ink-4);pointer-events:none;
}
.input-wrap .input{padding-inline-start:42px}

/* سوییچ */
.switch{position:relative;display:inline-flex;align-items:center;cursor:pointer;flex-shrink:0}
.switch input{position:absolute;opacity:0;width:0;height:0}
.sw-track{
  width:42px;height:24px;border-radius:var(--r-full);
  background:var(--bg-hover);border:1px solid var(--line-2);
  transition:background var(--t-med),border-color var(--t-med);
}
.sw-thumb{
  position:absolute;top:50%;inset-inline-start:3px;
  width:18px;height:18px;border-radius:50%;
  background:var(--ink-3);
  transform:translateY(-50%);
  transition:all var(--t-med) var(--ease);
}
.switch input:checked~.sw-track{background:var(--gold-25);border-color:var(--gold-45)}
.switch input:checked~.sw-thumb{inset-inline-start:21px;background:var(--gold);box-shadow:0 0 10px var(--gold-glow)}

/* سگمنت */
.seg{
  display:inline-flex;gap:3px;padding:3px;
  background:var(--bg-inset);
  border:1px solid var(--line-1);border-radius:var(--r-md);
}
.seg-btn{
  min-height:34px;padding:0 var(--sp-4);
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  background:transparent;border:0;border-radius:9px;
  font-family:var(--font);font-size:var(--fs-xs);font-weight:600;color:var(--ink-3);
  cursor:pointer;transition:all var(--t-fast);
}
.seg-btn:hover{color:var(--ink-1)}
.seg-btn.active{background:var(--bg-hover);color:var(--ink-1);box-shadow:0 1px 0 rgba(255,255,255,.05) inset}
.seg-btn.active.seg-up{background:var(--up-12);color:var(--up)}
.seg-btn.active.seg-down{background:var(--down-12);color:var(--down)}
.seg-btn.active.seg-gold{background:var(--gold-12);color:var(--gold)}

/* چک‌باکس */
.check{display:inline-flex;align-items:center;gap:9px;cursor:pointer;font-size:var(--fs-sm);color:var(--ink-2)}
.check input{position:absolute;opacity:0;width:0;height:0}
.ck-box{
  width:19px;height:19px;flex-shrink:0;
  border:1.5px solid var(--line-3);border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  font-size:12px;color:transparent;
  transition:all var(--t-fast);
}
.check input:checked~.ck-box{background:var(--gold-grad);border-color:transparent;color:var(--gold-ink)}

/* ============================================================
   تب‌ها
   ============================================================ */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line-1);overflow-x:auto}
.tab{
  padding:11px var(--sp-4);
  font-size:var(--fs-sm);font-weight:600;color:var(--ink-3);
  border-bottom:2px solid transparent;
  margin-bottom:-1px;
  white-space:nowrap;cursor:pointer;
  transition:color var(--t-fast),border-color var(--t-fast);
  display:inline-flex;align-items:center;gap:7px;
  background:none;border-top:0;border-inline:0;font-family:var(--font);
}
.tab:hover{color:var(--ink-1)}
.tab.active{color:var(--gold);border-bottom-color:var(--gold)}

/* ============================================================
   آلرت / توست
   ============================================================ */
.alert{
  display:flex;align-items:flex-start;gap:10px;
  padding:var(--sp-3) var(--sp-4);
  border-radius:var(--r-md);
  font-size:var(--fs-sm);font-weight:500;
  margin-bottom:var(--sp-4);
}
.alert i{font-size:18px;flex-shrink:0;margin-top:2px}
.alert-up{background:var(--up-12);border:1px solid var(--up-25);color:var(--up)}
.alert-down{background:var(--down-12);border:1px solid var(--down-25);color:var(--down)}
.alert-gold{background:var(--gold-08);border:1px solid var(--gold-25);color:var(--gold)}
.alert-info{background:var(--info-12);border:1px solid rgba(76,141,255,.25);color:var(--info)}

.toast-zone{
  position:fixed;bottom:calc(var(--sp-6) + env(safe-area-inset-bottom,0px));
  inset-inline-end:var(--sp-6);z-index:130;
  display:flex;flex-direction:column;gap:var(--sp-2);
  pointer-events:none;
}
.toast{
  display:flex;align-items:center;gap:10px;
  min-width:260px;max-width:360px;
  padding:var(--sp-3) var(--sp-4);
  background:var(--bg-hover);
  border:1px solid var(--line-2);border-radius:var(--r-md);
  box-shadow:var(--sh-pop);
  font-size:var(--fs-sm);font-weight:600;color:var(--ink-1);
  animation:toastIn var(--t-med) var(--ease-pop);
  pointer-events:auto;
}
.toast i{font-size:18px}
.toast.t-up i{color:var(--up)} .toast.t-down i{color:var(--down)} .toast.t-gold i{color:var(--gold)}
@keyframes toastIn{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}
.toast.out{opacity:0;transform:translateY(8px);transition:all var(--t-med)}

/* ============================================================
   مودال
   ============================================================ */
.modal-overlay{
  display:none;position:fixed;inset:0;z-index:110;
  background:rgba(0,0,0,.6);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  align-items:center;justify-content:center;
  padding:var(--sp-4);
}
.modal-overlay.open{display:flex}
.modal{
  width:min(500px,100%);max-height:88dvh;overflow-y:auto;
  background:linear-gradient(180deg,var(--hover),rgba(255,255,255,0) 40%),var(--bg-card);
  border:1px solid var(--line-2);border-radius:var(--r-xl);
  padding:var(--sp-6);
  box-shadow:var(--sh-pop);
  animation:modalIn var(--t-med) var(--ease-pop);
}
@keyframes modalIn{from{opacity:0;transform:scale(.94) translateY(16px)}to{opacity:1;transform:none}}
.modal-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-4)}
.modal-title{font-size:var(--fs-lg);font-weight:800}
.modal-x{
  width:32px;height:32px;
  display:flex;align-items:center;justify-content:center;
  background:var(--bg-card-2);border:1px solid var(--line-1);border-radius:var(--r-sm);
  color:var(--ink-3);font-size:15px;cursor:pointer;
  transition:all var(--t-fast);
}
.modal-x:hover{color:var(--ink-1);background:var(--bg-hover)}

/* ============================================================
   وضعیت خالی / اسکلتون / پروگرس
   ============================================================ */
.empty{text-align:center;padding:var(--sp-12) var(--sp-6);color:var(--ink-4)}
.empty i{font-size:44px;opacity:.3;margin-bottom:var(--sp-3);display:inline-block}
.empty-title{font-size:15px;font-weight:700;color:var(--ink-2);margin-bottom:4px}
.empty-desc{font-size:var(--fs-xs);line-height:1.8;max-width:320px;margin-inline:auto}

.skel{
  background:linear-gradient(90deg,var(--bg-card-2) 25%,var(--bg-hover) 50%,var(--bg-card-2) 75%);
  background-size:200% 100%;
  animation:shimmer 1.6s infinite;
  border-radius:var(--r-sm);
}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

.bar{height:6px;background:var(--bg-inset);border-radius:var(--r-full);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:var(--r-full);background:var(--gold-grad);transition:width var(--t-slow) var(--ease)}
.bar.bar-up>i{background:linear-gradient(90deg,var(--up-deep),var(--up))}
.bar.bar-down>i{background:linear-gradient(90deg,var(--down-deep),var(--down))}

/* فلش قیمت */
@keyframes flashUp{0%{background:var(--up-25)}100%{background:transparent}}
@keyframes flashDown{0%{background:var(--down-25)}100%{background:transparent}}
.flash-up{animation:flashUp .7s ease-out}
.flash-down{animation:flashDown .7s ease-out}

/* ============================================================
   گرید و یوتیلیتی
   ============================================================ */
.grid{display:grid;gap:var(--sp-4)}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.grid-auto{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.row{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap}
.spread{justify-content:space-between}
.mb-2{margin-bottom:var(--sp-2)} .mb-4{margin-bottom:var(--sp-4)} .mb-6{margin-bottom:var(--sp-6)}
.mt-4{margin-top:var(--sp-4)}

/* ============================================================
   ریسپانسیو
   ============================================================ */
@media(max-width:1180px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .tb-ticker{display:none}
}
@media(max-width:820px){
  /* سایدبار → کشو */
  .sb{width:min(300px,84vw);transform:translateX(100%);box-shadow:none;background:var(--bg-raised)}
  .sb.open{transform:translateX(0);box-shadow:-24px 0 60px rgba(0,0,0,.5)}
  body.sb-mini .sb{width:min(300px,84vw)}
  body.sb-mini .sb-link span,body.sb-mini .sb-sec,body.sb-mini .logo-txt,body.sb-mini .sb-count,body.sb-mini .sb-user-info{display:initial}
  body.sb-mini .sb-link{justify-content:flex-start;padding:9px 12px}
  .sb-collapse{display:none}
  .sb-close{
    display:flex;position:absolute;top:12px;inset-inline-end:14px;
    width:34px;height:34px;align-items:center;justify-content:center;
    background:var(--bg-card-2);border:1px solid var(--line-1);border-radius:var(--r-sm);
    color:var(--ink-3);font-size:15px;cursor:pointer;
  }
  .main{margin-inline-start:0!important}
  .tb{padding:0 var(--sp-4)}
  .tb-burger{
    display:flex;width:40px;height:40px;flex-shrink:0;
    align-items:center;justify-content:center;
    background:transparent;border:1px solid var(--line-1);border-radius:var(--r-md);
    color:var(--ink-2);font-size:20px;cursor:pointer;
  }
  .tb-search{width:auto;flex:1;max-width:none}
  .tb-search kbd{display:none}
  .bn{display:flex}
  .page{padding:var(--sp-4) var(--sp-4) calc(var(--bn-h) + var(--sp-6))}
  .page-title{font-size:var(--fs-xl)}
  .grid-2,.grid-3{grid-template-columns:1fr}
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .stat-value{font-size:var(--fs-2xl)}
  .toast-zone{inset-inline:var(--sp-4);bottom:calc(var(--bn-h) + var(--sp-4))}
  .toast{max-width:none;width:100%}
}
@media(max-width:480px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .card{padding:var(--sp-4)}
  .stat{padding:var(--sp-3) var(--sp-4)}
  .modal{padding:var(--sp-5)}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
}
