/* ═══════════════════════════════════════════════════════════
   ویترینِ حسن رمضانی — ۱۰/۱۷
   ایده: دفترِ حساب. هر کارِ حسابداری یک «ابزارِ بستانکار» دارد.
   چهار تم، همه روی همین توکن‌ها:
     night   شبِ طلایی   (پیش‌فرض، هم‌خانوادهٔ اچ‌آر فایننس)
     ledger  دفترِ کل    (روشن، کاغذِ خط‌دارِ سبز و جوهرِ قرمز)
     firuze  فیروزه      (تیره، فیروزه‌ای و زعفرانی)
     lajvard لاجورد      (تیره، آبیِ لاجوردی و طلایی)
   هیچ اسکریپتِ درون‌خطی نیست (CSP script-src 'self').
   ═══════════════════════════════════════════════════════════ */
@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Medium.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:Vazirmatn;src:url(/fonts/Vazirmatn-Bold.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:Kufi;src:url(/v/fonts/reem-kufi-arabic-700-normal.woff2) format("woff2");font-weight:700;font-display:swap;unicode-range:U+0600-06FF,U+200C-200F,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:Kufi;src:url(/v/fonts/reem-kufi-arabic-500-normal.woff2) format("woff2");font-weight:500;font-display:swap;unicode-range:U+0600-06FF,U+200C-200F,U+FB50-FDFF,U+FE70-FEFF}
@font-face{font-family:Kufi;src:url(/v/fonts/reem-kufi-latin-700-normal.woff2) format("woff2");font-weight:500 700;font-display:swap;unicode-range:U+0000-00FF}

:root,[data-theme=night]{
  --bg:#080B11; --bg-2:#0D121A; --s1:#111723; --s2:#172030; --line:#212B3B; --line-2:#2E3A4F;
  --fg:#EEF2F7; --fg-2:#A3B1C4; --fg-3:#6B7B92;
  --acc:#D9A441; --acc-2:#F0C878; --acc-ink:#1A1306; --alt:#3FB8A0;
  --rule:rgba(217,164,65,.10); --glow:rgba(217,164,65,.16); --stamp:#E58067;
  color-scheme:dark;
}
[data-theme=ledger]{
  --bg:#E6ECE6; --bg-2:#DCE5DD; --s1:#F4F7F2; --s2:#EAF0E9; --line:#C3D3C6; --line-2:#9FB7A5;
  --fg:#17261E; --fg-2:#46594D; --fg-3:#6E8275;
  --acc:#A82E26; --acc-2:#C9473D; --acc-ink:#FFF6F3; --alt:#2D6A4F;
  --rule:rgba(45,106,79,.16); --glow:rgba(168,46,38,.10); --stamp:#A82E26;
  color-scheme:light;
}
[data-theme=firuze]{
  --bg:#031719; --bg-2:#062124; --s1:#082A2E; --s2:#0C363A; --line:#134548; --line-2:#1C5A5D;
  --fg:#E5F6F3; --fg-2:#94BDB7; --fg-3:#5F8D87;
  --acc:#37D0BD; --acc-2:#7FE6D8; --acc-ink:#021413; --alt:#E8B04B;
  --rule:rgba(55,208,189,.10); --glow:rgba(55,208,189,.15); --stamp:#E8B04B;
  color-scheme:dark;
}
[data-theme=lajvard]{
  --bg:#0A1033; --bg-2:#0E1640; --s1:#131C4C; --s2:#19245A; --line:#25316C; --line-2:#344290;
  --fg:#EEF0FF; --fg-2:#A9B0DD; --fg-3:#7178AE;
  --acc:#F2C35B; --acc-2:#FFDB8C; --acc-ink:#1A1404; --alt:#8EC5FF;
  --rule:rgba(142,197,255,.10); --glow:rgba(242,195,91,.15); --stamp:#8EC5FF;
  color-scheme:dark;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--fg);font:400 1rem/1.85 Vazirmatn,Tahoma,sans-serif;
  font-feature-settings:"ss01";text-rendering:optimizeLegibility;min-height:100dvh;
  transition:background-color .35s ease,color .35s ease}
a{color:inherit}
img,svg{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--acc);outline-offset:3px;border-radius:6px}
.skip{position:absolute;inset-inline-start:12px;top:-60px;background:var(--acc);color:var(--acc-ink);padding:8px 14px;border-radius:8px;z-index:9}
.skip:focus{top:12px}
.ltr{direction:ltr;unicode-bidi:isolate}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.wrap{width:min(1180px,100% - 32px);margin-inline:auto}

/* ── سرصفحه ───────────────────────────────────────────── */
.top{position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 82%,transparent);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:18px;min-height:66px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:600;white-space:nowrap}
.mono{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--acc);color:var(--acc-ink);
  font:700 .98rem/1 Vazirmatn,sans-serif;box-shadow:inset 0 -3px 0 rgba(0,0,0,.18)}
.nav{display:flex;gap:4px;margin-inline-start:auto;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav a{padding:7px 12px;border-radius:9px;text-decoration:none;color:var(--fg-2);font-weight:500;white-space:nowrap;transition:color .2s,background-color .2s}
.nav a:hover{color:var(--fg);background:var(--s1)}
.nav a[aria-current=page]{color:var(--acc-2);background:var(--glow)}
[data-theme=ledger] .nav a[aria-current=page]{color:var(--acc)}
.themes{display:flex;gap:6px;padding:4px;border:1px solid var(--line);border-radius:999px}
.themes button{width:22px;height:22px;border-radius:50%;border:0;padding:0;cursor:pointer;position:relative;
  background:conic-gradient(var(--a) 0 50%,var(--b) 0 100%);transform:rotate(-45deg);transition:transform .25s}
.themes button:hover{transform:rotate(-45deg) scale(1.12)}
.themes button[aria-checked=true]{box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--fg-2)}
.t-night{--a:#080B11;--b:#D9A441}.t-ledger{--a:#E6ECE6;--b:#A82E26}.t-firuze{--a:#031719;--b:#37D0BD}.t-lajvard{--a:#0A1033;--b:#F2C35B}
@media (max-width:720px){
  .top .wrap{flex-wrap:wrap;gap:6px 12px;padding-block:8px}
  .nav{order:3;width:100%;margin:0}
  .themes{margin-inline-start:auto}
}

/* ── تایپوگرافی ───────────────────────────────────────── */
.display{font:700 clamp(2.7rem,7.2vw,5.4rem)/1.08 Kufi,Vazirmatn,sans-serif;letter-spacing:-.005em;margin:0}
h1,h2{font-family:Kufi,Vazirmatn,sans-serif;font-weight:500;line-height:1.3;margin:0}
h1{font-size:clamp(2.1rem,4.6vw,3.3rem)}
h2{font-size:clamp(1.6rem,3vw,2.15rem)}
h3{font:600 1.18rem/1.5 Vazirmatn,sans-serif;margin:0}
p{margin:0 0 1em;max-width:68ch}
.lede{font-size:clamp(1.06rem,1.6vw,1.2rem);color:var(--fg-2);max-width:56ch}
.muted{color:var(--fg-2)}
section{padding-block:clamp(56px,9vw,104px)}
.sec-h{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:32px;flex-wrap:wrap}
.sec-h p{margin:8px 0 0;color:var(--fg-2)}

/* ── دکمه‌ها ─────────────────────────────────────────── */
.btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.btn{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;border-radius:12px;font:600 .98rem/1.2 Vazirmatn,sans-serif;
  text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .15s,background-color .2s,border-color .2s,color .2s}
.btn:active{transform:translateY(1px)}
.btn-p{background:var(--acc);color:var(--acc-ink)}
.btn-p:hover{background:var(--acc-2)}
.btn-g{border-color:var(--line-2);color:var(--fg);background:transparent}
.btn-g:hover{border-color:var(--acc);color:var(--acc-2)}
[data-theme=ledger] .btn-g:hover{color:var(--acc)}
.btn[aria-disabled=true]{opacity:.5;pointer-events:none}
.btn svg{width:18px;height:18px}

/* ── قهرمان: نام + سندِ معرفی ─────────────────────────── */
.hero{padding-block:clamp(40px,7vw,88px) clamp(48px,8vw,96px);position:relative;overflow:clip}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,5vw,72px);align-items:center}
.hero .role{display:inline-block;color:var(--acc-2);font-weight:600;margin-bottom:14px}
[data-theme=ledger] .hero .role{color:var(--acc)}
.hero .headline{font:500 clamp(1.35rem,2.4vw,1.75rem)/1.55 Vazirmatn,sans-serif;margin:22px 0 14px;max-width:30ch}
.hero::before{content:"";position:absolute;inset:-20% -10% auto auto;width:62vmax;height:62vmax;border-radius:50%;
  background:radial-gradient(closest-side,var(--glow),transparent 70%);pointer-events:none;z-index:-1}
@media (max-width:900px){.hero .wrap{grid-template-columns:1fr}}

.voucher{margin:0;background:var(--s1);border:1px solid var(--line-2);border-radius:18px;padding:22px 22px 18px;position:relative;
  box-shadow:0 30px 60px -30px rgba(0,0,0,.55);
  background-image:repeating-linear-gradient(to bottom,transparent 0 39px,var(--rule) 39px 40px);background-position:0 92px}
[data-theme=ledger] .voucher{box-shadow:0 24px 50px -30px rgba(23,38,30,.45)}
.v-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 18px;padding-bottom:14px;margin-bottom:6px;
  border-bottom:2px solid var(--line-2);font-size:.86rem;color:var(--fg-2)}
.v-head b{font:700 1.08rem/1.4 Vazirmatn,sans-serif;color:var(--fg);flex-basis:100%}
.voucher table{width:100%;border-collapse:collapse;font-size:.95rem}
.voucher th{font-weight:500;color:var(--fg-3);font-size:.8rem;text-align:start;padding:8px 6px}
.voucher th.n,.voucher td.n{width:66px;text-align:center;border-inline-start:1px dashed var(--line-2);font-variant-numeric:tabular-nums}
.voucher td{padding:0 6px;height:40px;vertical-align:middle}
.voucher tr.cr td:first-child{padding-inline-start:30px;color:var(--fg-2)}
.voucher tr.cr td:first-child::before{content:"به ";color:var(--fg-3)}
.voucher tr.dr td.n,.voucher tr.cr td.n{color:var(--acc-2);font-weight:600}
[data-theme=ledger] .voucher tr.dr td.n,[data-theme=ledger] .voucher tr.cr td.n{color:var(--alt)}
.voucher tfoot td{border-top:3px double var(--line-2);height:46px;font-weight:600}
.voucher tfoot td.n{color:var(--fg)}
.voucher figcaption{margin-top:12px;font-size:.86rem;color:var(--fg-3)}
.stamp{position:absolute;inset-inline-start:38%;bottom:58px;border:2.5px solid var(--stamp);color:var(--stamp);border-radius:10px;
  padding:4px 14px;font:700 1.15rem/1.4 Kufi,Vazirmatn,sans-serif;transform:rotate(-9deg);opacity:.9;pointer-events:none;
  mix-blend-mode:normal;background:color-mix(in srgb,var(--s1) 70%,transparent)}

/* لحظهٔ اصلیِ صفحه: سند پر می‌شود و تراز می‌خورد — فقط یک بار */
.js .voucher tbody tr{opacity:0;clip-path:inset(0 0 0 100%)}
.js .voucher.on tbody tr{animation:vrow .5s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i) * .32s + .25s)}
.js .voucher tfoot td{opacity:0}
.js .voucher.on tfoot td{animation:fade .4s ease both;animation-delay:calc(var(--n) * .32s + .45s)}
.js .voucher .stamp{opacity:0;transform:rotate(-9deg) scale(2.4)}
.js .voucher.on .stamp{animation:stamp .45s cubic-bezier(.3,1.6,.5,1) both;animation-delay:calc(var(--n) * .32s + .85s)}
@keyframes vrow{from{opacity:0;clip-path:inset(0 0 0 100%)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes stamp{0%{opacity:0;transform:rotate(-9deg) scale(2.4)}70%{opacity:1;transform:rotate(-9deg) scale(.94)}100%{opacity:.9;transform:rotate(-9deg) scale(1)}}

/* ── درباره ───────────────────────────────────────────── */
.about{border-top:1px solid var(--line)}
.about .wrap{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(24px,5vw,72px)}
.about .prose p{font-size:1.06rem}
.facts{margin:28px 0 0;display:grid;gap:0}
.facts div{display:grid;grid-template-columns:90px 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--line)}
.facts dt{color:var(--fg-3);font-size:.9rem}
.facts dd{margin:0;font-weight:500}
.portrait{width:clamp(120px,18vw,180px);aspect-ratio:1;border-radius:28px;overflow:hidden;background:var(--s2);border:1px solid var(--line-2);
  display:grid;place-items:center;font:700 clamp(2.4rem,4.6vw,3.3rem)/1 Vazirmatn,sans-serif;color:var(--acc);margin-bottom:22px}
.portrait img{width:100%;height:100%;object-fit:cover}
@media (max-width:820px){.about .wrap{grid-template-columns:1fr}}

/* ── نمونه‌کارها ──────────────────────────────────────── */
.works{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}
.work{position:relative;border-radius:20px;background:var(--s1);border:1px solid var(--line);transition:border-color .25s,transform .25s}
.work:hover,.work:focus-within{border-color:var(--line-2);transform:translateY(-3px)}
.work a.w{display:flex;flex-direction:column;height:100%;text-decoration:none;padding:16px 16px 18px}
.work .plate{border-radius:14px;background:var(--bg-2);aspect-ratio:16/10;display:grid;place-items:center;margin-bottom:16px;overflow:hidden;
  background-image:radial-gradient(circle at 50% 60%,var(--glow),transparent 65%)}
.work .plate .emb{width:58%;height:auto}
.work h3,.work h2{margin-bottom:4px;font:600 1.18rem/1.5 Vazirmatn,sans-serif}
.work p{color:var(--fg-2);font-size:.94rem;margin:0 0 14px;flex:1}
.wmeta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8rem}
.chip{padding:2px 9px;border-radius:999px;border:1px solid var(--line-2);color:var(--fg-2)}
.chip.st{border-color:transparent;background:var(--glow);color:var(--acc-2)}
[data-theme=ledger] .chip.st{color:var(--acc)}
.price{margin-inline-start:auto;color:var(--fg-3)}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.filters button{font:500 .92rem/1 Vazirmatn,sans-serif;padding:9px 15px;border-radius:999px;border:1px solid var(--line-2);background:transparent;color:var(--fg-2);cursor:pointer}
.filters button[aria-pressed=true]{background:var(--acc);border-color:var(--acc);color:var(--acc-ink)}
.work[hidden]{display:none}
.more{margin-top:28px}
.picked .works{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr))}

/* ── صفحهٔ هر نرم‌افزار ───────────────────────────────── */
.crumb{font-size:.88rem;color:var(--fg-3);margin-bottom:20px}
.crumb a{color:var(--fg-2);text-decoration:none}
.crumb a:hover{color:var(--acc-2)}
.prod .wrap{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,5vw,64px);align-items:start}
.prod .en{color:var(--fg-3);font-size:.95rem;margin-top:4px;text-align:right}
.prod .lede{margin-top:18px}
.feat{list-style:none;padding:0;margin:26px 0;display:grid;gap:10px}
.feat li{display:flex;gap:10px;align-items:baseline}
.feat li::before{content:"";flex:none;width:9px;height:9px;border-radius:3px;background:var(--acc);transform:translateY(-1px) rotate(45deg)}
.side{position:sticky;top:90px;display:grid;gap:16px}
.side .plate{border-radius:22px;background:var(--s1);border:1px solid var(--line);aspect-ratio:1;display:grid;place-items:center;
  background-image:radial-gradient(circle at 50% 55%,var(--glow),transparent 62%)}
.side .plate .emb{width:62%}
.buy{border-radius:18px;border:1px solid var(--line-2);padding:18px;background:var(--s1)}
.buy .p{font:700 1.2rem/1.5 Vazirmatn,sans-serif}
.buy .k{color:var(--fg-3);font-size:.88rem}
.buy .btns{margin-top:16px}
.buy .btn{flex:1;justify-content:center}
.ver{margin-top:12px;font-size:.85rem;color:var(--fg-3);min-height:1.6em}
@media (max-width:860px){.prod .wrap{grid-template-columns:1fr}.side{position:static}}

/* ── رزومه ────────────────────────────────────────────── */
.cv-bar{display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;align-items:center;margin-bottom:22px}
.sheet{background:var(--s1);border:1px solid var(--line);border-radius:20px;padding:clamp(22px,5vw,56px);max-width:900px;margin-inline:auto}
.cv-head{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:center;padding-bottom:22px;border-bottom:2px solid var(--line-2)}
.cv-head .portrait{margin:0;width:96px;border-radius:22px;font-size:2rem}
.cv-head h1{font-size:clamp(1.9rem,4vw,2.6rem);line-height:1.2}
.cv-head .r{color:var(--acc-2);font-weight:600}
[data-theme=ledger] .cv-head .r{color:var(--acc)}
.cv-head .c{font-size:.9rem;color:var(--fg-2);margin-top:4px;text-align:right}
.cv-sec{display:grid;grid-template-columns:150px 1fr;gap:18px;padding-block:22px;border-bottom:1px solid var(--line)}
.cv-sec:last-child{border-bottom:0}
.cv-sec h2{font-size:1.15rem;color:var(--fg-2)}
.cv-item{margin-bottom:14px}
.cv-item:last-child{margin-bottom:0}
.cv-item .t{font-weight:600}
.cv-item .o{color:var(--fg-2)}
.cv-item .w{color:var(--fg-3);font-size:.86rem}
.cv-item ul{margin:4px 0 0;padding-inline-start:18px;color:var(--fg-2)}
.cv-skills{display:grid;gap:10px}
.cv-skills .g{font-weight:600;font-size:.92rem;color:var(--fg-3)}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tags span{padding:2px 10px;border-radius:8px;background:var(--s2);font-size:.92rem}
.cv-works{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:6px 20px;margin:0;padding:0;list-style:none}
.cv-works li{font-size:.93rem}
.cv-works b{font-weight:600}
.cv-works span{color:var(--fg-3)}
@media (max-width:640px){.cv-sec{grid-template-columns:1fr;gap:8px}.cv-head{grid-template-columns:1fr}}

/* ── تماس و پاصفحه ────────────────────────────────────── */
.contact{border-top:1px solid var(--line)}
.contact .big{font:700 clamp(1.6rem,4vw,2.6rem)/1.3 Kufi,Vazirmatn,sans-serif;text-decoration:none;color:var(--acc-2);word-break:break-all}
[data-theme=ledger] .contact .big{color:var(--acc)}
.contact .big:hover{text-decoration:underline;text-underline-offset:6px}
footer.foot{border-top:1px solid var(--line);padding-block:26px;color:var(--fg-3);font-size:.88rem}
footer.foot .wrap{display:flex;flex-wrap:wrap;gap:10px 22px;justify-content:space-between}
footer.foot a{color:var(--fg-2);text-decoration:none}
footer.foot a:hover{color:var(--acc-2)}
footer.foot nav{display:flex;gap:16px;flex-wrap:wrap}

/* ═══════════ انیمیشنِ نشانِ هر نرم‌افزار ═══════════
   همه با .on روشن می‌شوند (IntersectionObserver یک بار؛ hover دوباره پخش می‌کند).
   بی‌JS (.js نیست) حالتِ پایانی نشان داده می‌شود — هیچ‌چیز پنهان نمی‌ماند. */
.emb{color:var(--fg-3);overflow:visible}
.emb .s{fill:var(--s2);stroke:var(--line-2);stroke-width:1.5}
.emb .k{fill:none;stroke:var(--fg-3);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.emb .ka{fill:none;stroke:var(--acc);stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}
.emb .kb{fill:none;stroke:var(--alt);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.emb .a{fill:var(--acc)} .emb .b{fill:var(--alt)} .emb .m{fill:var(--line-2)} .emb .w{fill:var(--s1)}
.emb *{transform-box:fill-box}

.js .emb .grow,.js .emb .pop,.js .emb .draw,.js .emb .slx,.js .emb .sly,.js .emb .flip,.js .emb .tilt,.js .emb .fly{
  animation-duration:.8s;animation-timing-function:cubic-bezier(.2,.75,.25,1);animation-fill-mode:both;
  animation-delay:calc(var(--d,0) * .14s + .1s);animation-play-state:paused}
.js .emb .grow{animation-name:e-grow;transform-origin:50% 100%}
.js .emb .pop{animation-name:e-pop;transform-origin:50% 50%}
.js .emb .draw{stroke-dasharray:var(--l,200);animation-name:e-draw;animation-duration:1.1s}
.js .emb .slx{animation-name:e-slx}
.js .emb .sly{animation-name:e-sly}
.js .emb .flip{animation-name:e-flip;transform-origin:0 50%;animation-duration:1.2s}
.js .emb .tilt{animation-name:e-tilt;transform-origin:50% 50%;animation-duration:1.4s;animation-timing-function:cubic-bezier(.3,1.5,.5,1)}
.js .emb .fly{animation-name:e-fly;animation-duration:1.6s}
.js .emb.on :is(.grow,.pop,.draw,.slx,.sly,.flip,.tilt,.fly){animation-play-state:running}
/* حلقه‌های آرام: فقط وقتی دیده می‌شوند */
.js .emb .beam{animation:e-beam 2.4s ease-in-out infinite alternate paused}
.js .emb .pulse{animation:e-pulse 2s ease-in-out infinite paused;transform-origin:50% 50%}
.js .emb .blink{animation:e-blink 1.1s steps(1) infinite paused}
.js .emb.on :is(.beam,.pulse,.blink){animation-play-state:running}

@keyframes e-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes e-pop{0%{transform:scale(0);opacity:0}70%{transform:scale(1.15);opacity:1}100%{transform:scale(1)}}
@keyframes e-draw{from{stroke-dashoffset:var(--l,200)}to{stroke-dashoffset:0}}
@keyframes e-slx{from{transform:translateX(var(--x,30px));opacity:0}to{transform:none;opacity:1}}
@keyframes e-sly{from{transform:translateY(var(--y,-26px));opacity:0}to{transform:none;opacity:1}}
@keyframes e-flip{0%{transform:perspective(300px) rotateY(0)}60%{transform:perspective(300px) rotateY(-150deg)}100%{transform:perspective(300px) rotateY(-180deg);opacity:.0}}
@keyframes e-tilt{0%{transform:rotate(-14deg)}100%{transform:rotate(0)}}
@keyframes e-fly{0%{transform:translate(var(--x,-30px),var(--y,0)) scale(.3);opacity:0}30%{opacity:1}100%{transform:none;opacity:1}}
@keyframes e-beam{from{transform:translateY(-34px)}to{transform:translateY(34px)}}
@keyframes e-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.35);opacity:.55}}
@keyframes e-blink{0%{opacity:1}50%{opacity:0}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .voucher tbody tr,.js .voucher tfoot td,.js .voucher .stamp,.js .emb *{animation:none!important;opacity:1;clip-path:none}
  .js .voucher .stamp{transform:rotate(-9deg)}
  .js .emb .flip{opacity:0}
  .work,.work:hover{transform:none}
}

/* تعویضِ تم: دایره‌ای از جای کلیک باز می‌شود (View Transitions؛ بی‌آن فوری) */
::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}

/* ═══════════ حساب من (۱۰/۱۷، مرحلهٔ ۲) ═══════════ */
.acct{padding-block:clamp(32px,6vw,72px)}
.acct .wrap{max-width:980px}
.auth{max-width:520px;margin-inline:auto}
.auth h1{margin-bottom:8px}
.card{background:var(--s1);border:1px solid var(--line);border-radius:18px;padding:clamp(16px,3vw,24px);margin-top:18px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:18px 0 14px;border-bottom:1px solid var(--line);padding-bottom:10px}
.card .tabs{margin-top:0}
.tabs button{font:600 .95rem/1 Vazirmatn,sans-serif;padding:10px 14px;border-radius:10px;border:0;background:transparent;color:var(--fg-2);cursor:pointer;display:inline-flex;gap:6px;align-items:center}
.tabs button[aria-selected=true]{background:var(--glow);color:var(--acc-2)}
[data-theme=ledger] .tabs button[aria-selected=true]{color:var(--acc)}
.badge{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--acc);color:var(--acc-ink);font-size:.75rem;display:inline-grid;place-items:center}
.form{display:grid;gap:12px}
.field{display:grid;gap:6px;font-size:.9rem;color:var(--fg-2)}
.field input,.field select,.prow input{font:500 1rem/1.4 Vazirmatn,sans-serif;color:var(--fg);background:var(--bg-2);border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;width:100%}
.field input:focus,.field select:focus,.prow input:focus{outline:2px solid var(--acc);outline-offset:1px;border-color:transparent}
.field input[type=file]{padding:8px}
.msg{min-height:1.4em;font-size:.9rem;margin-top:6px}
.msg.err{color:var(--stamp)}
.msg.ok{color:var(--alt)}
.acct-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.acct-head h1{font-size:clamp(1.6rem,3.4vw,2.3rem)}
.acct-head p{margin:4px 0 0}
.owned{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(290px,100%),1fr));gap:14px}
.own,.order{background:var(--s1);border:1px solid var(--line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:8px}
.order{margin-bottom:12px}
.own.on{border-color:var(--line-2);background-image:linear-gradient(160deg,var(--glow),transparent 55%)}
.own-h{display:flex;justify-content:space-between;gap:8px;align-items:center}
.own p,.order p{margin:0}
.own .btns,.order .btns{margin-top:6px}
.chip.warn{border-color:transparent;background:color-mix(in srgb,var(--stamp) 18%,transparent);color:var(--stamp)}
.key{display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:var(--bg-2);border-radius:10px;padding:8px 10px}
.key code{font:600 .95rem/1.4 ui-monospace,Consolas,monospace;word-break:break-all;flex:1}
.btn.sm{padding:7px 12px;font-size:.85rem;border-radius:9px}
.btn:disabled{opacity:.6;cursor:progress}
.paybox,.decide{border-top:1px dashed var(--line-2);padding-top:12px;margin-top:6px;display:grid;gap:10px}
.pay b{font-size:1.05rem;letter-spacing:.04em}
.note{color:var(--fg-2);font-size:.92rem}
.rcpt img{max-width:100%;max-height:520px;border-radius:10px;border:1px solid var(--line-2);margin-top:8px}
.order.s-pending_review{border-color:var(--acc)}
.empty{text-align:center;padding:36px 12px;border:1px dashed var(--line-2);border-radius:16px;color:var(--fg-2)}
.empty .btn{margin-top:10px}
.buy-card{border-color:var(--acc)}
.buy-card .p{font:700 1.15rem/1.6 Vazirmatn,sans-serif}
h2.sub{font:700 1.15rem/1.5 Vazirmatn,sans-serif;margin:18px 0 10px}
.admin-box{display:grid;gap:10px}
.prow{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.prow b{min-width:150px}
.prow label{display:flex;gap:6px;align-items:center;font-size:.85rem;color:var(--fg-2)}
.prow input{width:110px;padding:7px 9px;font-size:.92rem}
.prow .chk input{width:auto}
.order>.btn,.admin-box>.btn{align-self:flex-start;justify-self:start}
.banner{border-width:1.5px}
.banner.ok{border-color:var(--alt)}
.banner.err{border-color:var(--stamp)}
.banner p{margin:0}
.field select{appearance:auto}

/* ── چاپ و PDFِ رزومه ─────────────────────────────────── */
@page{size:A4;margin:14mm 13mm}
@media print{
  :root,[data-theme]{--bg:#fff;--bg-2:#fff;--s1:#fff;--s2:#F1F3F1;--line:#D5DCD6;--line-2:#9FB0A4;--fg:#111;--fg-2:#3A453E;--fg-3:#66726A;--acc:#8C2A23;--acc-2:#8C2A23;--alt:#2D6A4F}
  body{font-size:10.4pt;line-height:1.65;background:#fff}
  .top,.cv-bar,footer.foot,.skip{display:none!important}
  section{padding:0}
  .sheet{border:0;padding:0;border-radius:0;max-width:none}
  .cv-sec{break-inside:avoid;padding-block:12px}
  .cv-head{padding-bottom:14px}
  .cv-head .portrait{width:78px;font-size:1.6rem}
  .tags span{background:#F1F3F1}
  a{text-decoration:none}
}
