/* ============================================================
   سورس کده — تم «Liquid Glass» (الگو: Portal / iOS 26)
   لایه‌ی پوسته روی app.css: فقط توکن‌ها و ظاهر عوض می‌شود، چیدمان دست نمی‌خورد.
   اصول سبک‌بودن:
   · پس‌زمینه‌ی تخت #141414 (بدون سحابی متحرک و blur(80px) دائمی)
   · کارت‌ها سطح توپُر + «رفلکس» شیشه با inset-shadow (بدون backdrop-filter)
   · blur(8px) فقط روی ۴ عنصر شناور: هدر، منوی پایین، منوهای بازشونده، توست
   · بدون سایه‌های درخشان بزرگ؛ بازخورد لمس با scale، نه translate+glow
   ============================================================ */
:root{
	--void:#141414;--void-2:#1c1c1e;--void-3:#282727;
	--surface:#1e1e1f;--surface-2:#282727;--surface-3:#3a3a3a;--input:#1c1c1c;
	--glass:var(--surface);--glass-2:var(--surface-2);--glass-solid:#1c1c1e;
	--line:rgba(255,255,255,.06);--line-hi:rgba(255,255,255,.14);--line-focus:rgba(255,255,255,.28);
	--fg:#fff;--fg-2:#d4d4d9;--fg-3:#8e8e93;--fg-4:#6d6d71;
	--violet:#9b3fe0;--violet-2:#af51de;--gold:#ffd24a;--ok:#49df64;--warn:#f1aa05;--bad:#df494d;--info:#5ac8fa;
	/* رفلکس شیشه‌ی Portal: لبه‌ی روشن بالا-چپ، لبه‌ی تیره پایین-راست + سایه‌ی نرم */
	--reflex:inset 0 0 0 1px rgba(255,255,255,.03),inset 1.8px 3px 0 -2px rgba(255,255,255,.27),inset -2px -2px 0 -2px rgba(255,255,255,.24),inset -3px -8px 1px -6px rgba(255,255,255,.18),inset -.3px -1px 4px 0 rgba(0,0,0,.24),inset -1.5px 2.5px 0 -2px rgba(0,0,0,.4),inset 0 3px 4px -2px rgba(0,0,0,.4),inset 2px -6.5px 1px -4px rgba(0,0,0,.2),0 1px 5px rgba(0,0,0,.2),0 6px 16px rgba(0,0,0,.16);
	/* نسخه‌ی سبک برای کارت‌های توپُر */
	--rim:inset 0 0 0 1px rgba(255,255,255,.05),inset 0 1px 0 rgba(255,255,255,.07),0 1px 2px rgba(0,0,0,.25);
	--rim-hi:inset 0 0 0 1px rgba(255,255,255,.12),inset 0 1px 0 rgba(255,255,255,.12),0 1px 2px rgba(0,0,0,.25);
	--glow-violet:0 0 0 1px rgba(175,81,222,.6);--glow-gold:0 0 0 1px rgba(255,210,74,.6);--glow-bad:0 0 0 1px rgba(223,73,77,.6);
	--shadow-1:var(--rim);--shadow-2:var(--reflex);
	--r-sm:12px;--r:16px;--r-lg:24px;--blur:8px;
	--ease:cubic-bezier(.2,.9,.3,1);
	--btn-primary-shadow:inset 0 1px 2px rgba(255,255,255,.42),0 5px 9px rgba(78,0,91,.32);
	/* شیشه‌ی بنفش (گزینه‌ی انتخاب‌شده‌ی منوها): نیمه‌شفاف + رفلکس Portal (نور از بالا-چپ) + درخشش ملایم */
	--gv-bg:linear-gradient(180deg,rgba(208,138,255,.46),rgba(137,48,208,.32));
	--gv-shadow:inset 0 0 0 1px rgba(255,255,255,.1),inset 1.8px 3px 0 -2px rgba(255,255,255,.6),inset -2px -2px 0 -2px rgba(255,255,255,.4),inset -3px -8px 1px -6px rgba(255,255,255,.24),inset 0 -9px 12px -8px rgba(58,0,108,.6),0 2px 6px rgba(40,0,80,.35),0 6px 18px -4px rgba(175,81,222,.5);
}
html{background:var(--void);color-scheme:dark}
body{background:var(--void);font-weight:450}
*{scrollbar-width:thin;scrollbar-color:#3a3a3a transparent}
::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#3a3a3a;border-radius:99px}
::selection{background:rgba(175,81,222,.45)}
:focus-visible{outline:2px solid rgba(255,255,255,.32);outline-offset:2px}
:is(input,textarea,select,[contenteditable]):focus-visible{outline:none}   /* فیلدها حلقه‌ی فوکوس خودشان را دارند؛ عنوان ویرایشگر هم بدون کادر */
.void{display:none!important}   /* سحابی و ستاره‌ها حذف: پس‌زمینه تخت */

/* ---- سطح‌ها (کارت‌ها): توپُر + رفلکس، بدون blur ---- */
.glass{background:var(--surface);border-color:transparent;box-shadow:var(--rim)}
.glass:hover{border-color:transparent}
.glass.interactive:hover{transform:none;box-shadow:var(--rim-hi)}
.glass.interactive:active{transform:scale(.985);box-shadow:var(--rim)}
@media(max-width:760px){.glass{background:var(--surface)}}
.kpis li,.buybox,.reviews li,.nav-row,.tile,.feats .glass{background:var(--surface-2);border-color:transparent;box-shadow:var(--rim)}
.feats .glass{background:var(--surface)}
.kpis strong,.kpi.big strong{background:none;-webkit-text-fill-color:currentcolor;color:var(--fg)}
.hero h1{background:linear-gradient(135deg,#fff 30%,#e2cbff 70%,var(--violet-2));-webkit-background-clip:text;background-clip:text;color:transparent}
.term,.code,.term-out,.md-body pre,.post-body pre,.nt-body .ql-editor pre.ql-syntax{background:#0f0f10;border-color:var(--line)}
.term-bar{background:#161617}
.hero-art{transform:none}.hero-art:hover{transform:none}
.art{border-radius:14px}

/* ---- دکمه‌ها: قرص، توپُر، بازخورد فشار ---- */
.btn{border-color:transparent;background:var(--surface-2);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),inset 0 0 0 1px rgba(255,255,255,.04);transition:background var(--t-fast),box-shadow var(--t-fast),transform var(--t-fast) var(--ease),filter var(--t-fast)}
.btn:hover{transform:none;border-color:transparent;background:var(--surface-3);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),inset 0 0 0 1px rgba(255,255,255,.06)}
.btn:active{transform:scale(.97);box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
.btn.primary{background:var(--violet-2);box-shadow:var(--btn-primary-shadow)}
.btn.primary:hover{background:#b95fe6;box-shadow:var(--btn-primary-shadow)}
.btn.ghost{background:var(--surface-2)}
.btn.gold{background:linear-gradient(180deg,#ffe17a,#f1aa05);color:#2b1d00;box-shadow:inset 0 1px 2px rgba(255,255,255,.55),0 5px 9px rgba(93,60,0,.28)}
.btn.gold:hover{box-shadow:inset 0 1px 2px rgba(255,255,255,.55),0 5px 9px rgba(93,60,0,.28)}
.btn.danger{background:rgba(223,73,77,.14);border-color:transparent;color:#ff6b6f;box-shadow:inset 0 0 0 1px rgba(223,73,77,.35)}
.btn.danger:hover{background:rgba(223,73,77,.22);box-shadow:inset 0 0 0 1px rgba(223,73,77,.5)}
.btn.tg{box-shadow:inset 0 1px 2px rgba(255,255,255,.4),0 5px 9px rgba(0,87,140,.3)}
.btn.like.on{background:rgba(255,210,74,.14);box-shadow:inset 0 0 0 1px rgba(255,210,74,.4)}
.btn.sm{padding:.4rem .9rem}
.card .more{background:var(--surface-2);border-color:transparent;color:var(--fg-2)}

/* ---- چیپ‌ها، فیلدها، سوییچ ---- */
.chip{background:var(--surface-2);border-color:transparent}
.chip.ok{background:rgba(73,223,100,.14);border-color:transparent}.chip.warn{background:rgba(241,170,5,.16);border-color:transparent}.chip.bad{background:rgba(223,73,77,.16);border-color:transparent}
.chip.tag:hover{background:var(--surface-3);border-color:transparent}
:is(input,select,textarea).in,.form input,.form textarea,.form select,.review-form textarea,.search,.tagsbox{background:var(--input);border-color:rgba(255,255,255,.08);border-radius:14px}
:is(input,select,textarea).in:focus,.form input:focus,.form textarea:focus,.form select:focus,.search:focus-within,.tagsbox:focus-within,.term:focus-within{border-color:rgba(255,255,255,.26);box-shadow:0 0 0 3px rgba(175,81,222,.22)}
.search{border-radius:999px}
.switch{background:var(--surface-3);border-color:transparent}.switch::after{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.4)}
.switch:checked{background:var(--ok);border-color:transparent}
.form .chk input,.nav-row input[type=checkbox]:not(.switch){accent-color:var(--violet-2)}

/* ---- هدر ---- */
.top{background:rgba(20,20,20,.82);border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(8px) saturate(140%);backdrop-filter:blur(8px) saturate(140%)}
.nav{position:relative}
.nav a{color:var(--fg-3);position:relative;z-index:1}.nav a:hover{background:var(--surface-2);color:var(--fg)}
.nav a[aria-current],.nav a[aria-current]:hover{background:var(--gv-bg);box-shadow:var(--gv-shadow);color:#fff}
.nav.has-ind a[aria-current],.nav.has-ind a[aria-current]:hover,.nav-cont-n .nav a[aria-current]{background:none;box-shadow:none}
.bell,.avatar{background:var(--surface-2);border-color:transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.bell:hover,.notif[open] .bell,.avatar:hover{box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.badge-dot{border-color:var(--void)}

/* ---- منوهای بازشونده، اعلان، توست، دیالوگ: شیشه‌ی واقعی (فقط اینجا blur) ---- */
.dropdown{background:rgba(40,39,39,.9);border-color:transparent;border-radius:20px;box-shadow:var(--reflex);-webkit-backdrop-filter:blur(8px) saturate(140%);backdrop-filter:blur(8px) saturate(140%)}
.dropdown a:hover,.dropdown button:hover{background:rgba(255,255,255,.08)}
@media(max-width:760px){.dropdown{background:rgba(40,39,39,.96)}}
.notif-drop .nd-foot{background:rgba(175,81,222,.14)!important}
.np-card{background:rgba(40,39,39,.96);border-color:transparent;border-radius:20px;box-shadow:var(--reflex)}
.toast{background:rgba(40,39,39,.94);border-color:transparent;border-radius:999px;box-shadow:var(--reflex)}
.toast.show{-webkit-backdrop-filter:blur(8px) saturate(140%);backdrop-filter:blur(8px) saturate(140%)}   /* لایه‌ی blur فقط وقتی دیده می‌شود */
.toast.err{background:rgba(70,28,30,.95);color:#ffb3b5}
dialog.glass{background:var(--surface);border-color:transparent;border-radius:24px;box-shadow:var(--reflex)}
dialog::backdrop{background:rgba(0,0,0,.64);-webkit-backdrop-filter:none;backdrop-filter:none}   /* blur تمام‌صفحه روی گوشی سنگین است */
.reject-dlg,.repo-dialog,.bn-dialog{border-radius:24px}

/* ---- منوی پایین گوشی: دقیقاً سوییچر Portal (فقط در عرض گوشی تعریف می‌شود) ---- */
@media(max-width:760px){
.bnav-pill,.bnav-fab{background:rgba(30,30,31,.7);border-color:transparent;box-shadow:var(--reflex);-webkit-backdrop-filter:blur(8px) saturate(140%);backdrop-filter:blur(8px) saturate(140%)}
.bnav-pill{padding:4px;min-height:62px;gap:0;position:relative}
.bnav-pill>.nav-ind{top:4px;bottom:4px;left:auto;right:4px;width:calc((100% - 8px)/var(--n,3));transform:translateX(calc(var(--i,0)*-100%))}   /* جای ثابت از روی شماره‌ی تب (بدون JS، از اولین فریم درست) */
[dir=ltr] .bnav-pill>.nav-ind{left:4px;right:auto;transform:translateX(calc(var(--i,0)*100%))}
.bnav-pill a{min-height:54px;gap:2px;color:var(--fg-3);font-size:.68rem;font-weight:600;z-index:1;transition:color .25s}
.bnav-pill a i{font-size:1.15rem;transition:transform var(--t-fast)}
.bnav-pill a:active{transform:none}.bnav-pill a:active i{transform:scale(.9)}
.bnav-pill a[aria-current]{color:#fff}
.bnav-pill a[aria-current] i{color:#fff;transform:none;filter:none}
.bnav-pill a[aria-current]::before{content:none}   /* قرص ثابتِ هر تب حذف؛ یک نشانگر مشترک بین تب‌ها می‌لغزد */
.bnav-fab{width:62px;height:62px;background:rgba(40,39,39,.95)}
.bnav-fab[aria-current]{background:var(--gv-bg),rgba(40,39,39,.95);box-shadow:var(--gv-shadow)}
}

/* ---- تب‌ها، ناوبری کناری، صفحه‌بندی، جدول ---- */
.tabs{background:var(--surface-2);border-color:transparent;padding:4px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.tabs:not(.set-tabs){position:relative}   /* .set-tabs خودش sticky است */
.tabs a{color:var(--fg-3);position:relative;z-index:1}.tabs a[aria-current]{background:var(--gv-bg);color:#fff;box-shadow:var(--gv-shadow)}
.tabs.has-ind a[aria-current],.tabs.has-ind a[aria-current]:hover,.nav-cont-t .tabs a[aria-current]{background:none;box-shadow:none}
/* تب‌های صفحه‌ی سورس: همان حرکت، ولی به شکل خطِ درخشانِ زیرِ تب (۲px بالاتر از لبه تا موقع حرکت بریده نشود) */
.rtabs{position:relative}.rtabs a{position:relative;z-index:1}.rtabs a[aria-current]{border-color:transparent}
.rtabs a[aria-current]::after,.rtabs>.nav-ind::after{content:"";position:absolute;inset-inline:0;bottom:2px;height:2px;border-radius:2px;background:var(--violet-2);box-shadow:0 0 10px rgba(175,81,222,.7)}
.rtabs.has-ind a[aria-current]::after,.nav-cont-r .rtabs a[aria-current]::after{content:none}
.rtabs>.nav-ind{background:none;box-shadow:none}
.sidenav a{color:var(--fg-3)}.sidenav a:hover{background:var(--surface-2);color:var(--fg)}
.sidenav a{position:relative;z-index:1}.sidenav a.on,.sidenav a.on:hover{background:var(--gv-bg);box-shadow:var(--gv-shadow);color:#fff}
.sidenav.has-ind a.on,.sidenav.has-ind a.on:hover,.nav-cont-s .sidenav a.on{background:none;box-shadow:none}
@media(max-width:1000px){.sidenav{position:relative;top:auto}}   /* top مال حالت sticky دسکتاپ است؛ با relative باید خنثی شود */
@media(max-height:500px) and (orientation:landscape){.sidenav{position:relative;top:auto}}
.sidenav a.new{border-color:var(--line-hi)}
.pagination a{background:var(--surface-2);border-color:transparent}.pagination a[aria-current]{background:var(--gv-bg);box-shadow:var(--gv-shadow);color:#fff}
.tbl tr:hover td{background:rgba(255,255,255,.03)}
.kpi i,.sec-title i,.eyebrow,.empty-state>i{color:var(--violet-2)}
.price,.price-big{background:linear-gradient(135deg,#ffe17a,#f1aa05);-webkit-background-clip:text;background-clip:text}
.price-big.free{color:var(--ok);background:none;-webkit-text-fill-color:currentcolor}
.ed-note{background:var(--surface-2);border-color:transparent;box-shadow:inset 0 0 0 1px rgba(175,81,222,.35)}
.ed-note.warn{box-shadow:inset 0 0 0 1px rgba(241,170,5,.4)}.ed-note.bad{box-shadow:inset 0 0 0 1px rgba(223,73,77,.45)}
.author-box,.hire-box{background:var(--surface)}
.verified{color:var(--info)}
.foot a:hover{color:var(--fg)}

/* ---- نشانگر لغزان منوها (حرکتش را app.js با transform می‌سازد؛ فقط compositor) ---- */
.nav-ind{position:absolute;top:0;inset-inline-start:0;z-index:0;display:block;border-radius:999px;pointer-events:none;background:var(--gv-bg);box-shadow:var(--gv-shadow);transform-origin:0 0;transition:opacity .2s}
.nav-ind.off{opacity:0}

/* ---- blur های پراکنده‌ی قدیمی: کم یا حذف ---- */
.set-tabs,.sticky-save,.pv-bar,.sl-nav,.sl-dots{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.slider{border-radius:20px;box-shadow:var(--reflex)}

/* ---- دسترس‌پذیری و دستگاه‌های ضعیف ---- */
@media(prefers-reduced-transparency:reduce){
	.top,.bnav-pill,.bnav-fab,.dropdown,.toast{-webkit-backdrop-filter:none;backdrop-filter:none;background:#1c1c1e}
	:root{--gv-bg:var(--violet-2)}
}
@media(prefers-reduced-motion:reduce){.btn:active,.glass.interactive:active{transform:none}}
