/* Today Studio: انیمیشن‌ها، نوار اسکرول، رفع هایلایت آبی کلیک، و جلوه‌های تعاملی.
   شدت کلی با --ts-m (۰ تا ۱٫۳۵) از «تنظیمات ← انیمیشن و جلوه‌ها» کنترل می‌شود. */

/* ---------- کلیک روی عکس/کارت: بدون هایلایت آبی شبیه لینک ---------- */
a,button,label,summary,[role=button],img,svg{-webkit-tap-highlight-color:transparent}
a img,a svg,a picture,.proj-card__media,.team-strip__photo,.person__photo,.gallery a,.brand,.profile__photo{
	-webkit-user-drag:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
img::selection,svg::selection,a img::selection{background:transparent}
a:focus:not(:focus-visible),button:focus:not(:focus-visible),[tabindex]:focus:not(:focus-visible){outline:none}
a:active{color:inherit}

/* ---------- نوار اسکرول ---------- */
html[data-scrollbar=hidden]{scrollbar-width:none;-ms-overflow-style:none}
html[data-scrollbar=hidden]::-webkit-scrollbar{width:0;height:0;display:none}
html[data-scrollbar=slim]{scrollbar-width:thin;scrollbar-color:var(--ts-primary) transparent}
html[data-scrollbar=slim]::-webkit-scrollbar{width:10px;height:10px}
html[data-scrollbar=slim]::-webkit-scrollbar-track{background:transparent}
html[data-scrollbar=slim]::-webkit-scrollbar-thumb{background:linear-gradient(var(--ts-primary),var(--ts-secondary));border-radius:10px;border:2px solid var(--ts-paper)}
html[data-scrollbar=slim]::-webkit-scrollbar-thumb:hover{background:var(--ts-forest)}
/* کادرهای اسکرول‌دار داخلی (جدول، کد، منو) همیشه باریک و گرد */
html:not([data-scrollbar=default]) body *{scrollbar-width:thin;scrollbar-color:rgba(47,107,69,.45) transparent}
html:not([data-scrollbar=default]) body *::-webkit-scrollbar{width:8px;height:8px}
html:not([data-scrollbar=default]) body *::-webkit-scrollbar-thumb{background:rgba(47,107,69,.4);border-radius:8px}
html:not([data-scrollbar=default]) body *::-webkit-scrollbar-thumb:hover{background:var(--ts-primary)}
html:not([data-scrollbar=default]) body *::-webkit-scrollbar-track{background:transparent}

.scroll-progress{position:fixed;inset-block-start:0;inset-inline:0;block-size:3px;z-index:120;pointer-events:none}
.scroll-progress span{display:block;block-size:100%;background:linear-gradient(90deg,var(--ts-primary),var(--ts-secondary),var(--ts-accent));
	transform-origin:100% 50%;transform:scaleX(var(--p,0));border-radius:0 0 3px 3px;box-shadow:0 0 12px rgba(224,168,46,.55)}
.to-top{position:fixed;inset-block-end:1.2rem;inset-inline-end:1.2rem;inline-size:3.1rem;block-size:3.1rem;border:0;padding:0;border-radius:50%;
	background:var(--ts-forest);color:#fff;cursor:pointer;z-index:60;display:grid;place-items:center;box-shadow:var(--shadow);
	opacity:0;transform:translateY(18px) scale(.7);pointer-events:none;transition:opacity .35s var(--ease),transform .45s var(--ease),background .25s}
.to-top.is-on{opacity:1;transform:none;pointer-events:auto}
.to-top:hover{background:var(--ts-primary);transform:translateY(-4px)}
.to-top svg{position:absolute;inset:0;inline-size:100%;block-size:100%;transform:rotate(-90deg)}
.to-top .ring{fill:none;stroke:var(--ts-accent);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:calc(1 - var(--p,0))}
.to-top .arr{position:relative;inline-size:1.15rem;block-size:1.15rem}

/* ---------- ورود تدریجی (روی کل سایت؛ با data-reveal) ---------- */
body{animation-fill-mode:backwards}
.js [data-reveal]{opacity:0;transform:translateY(28px);filter:blur(3px);will-change:opacity,transform;
	transition:opacity calc(.85s * var(--ts-m,1)) var(--ease),transform calc(.9s * var(--ts-m,1)) var(--ease),filter calc(.7s * var(--ts-m,1)) var(--ease);
	transition-delay:calc(var(--i,0) * 85ms * var(--ts-m,1))}
.js [data-reveal=left]{transform:translateX(-42px)}
.js [data-reveal=right]{transform:translateX(42px)}
.js [data-reveal=zoom]{transform:scale(.9)}
.js [data-reveal=fade]{transform:none}
.js [data-reveal].is-in{opacity:1;transform:none;filter:none;will-change:auto}

/* ---------- عنوان کلمه‌به‌کلمه ---------- */
.w{display:inline-block;overflow:hidden;vertical-align:top;padding-block:.14em;margin-block:-.14em}
.w>span{display:inline-block;transform:translateY(115%) rotate(4deg);transform-origin:100% 100%;
	animation:wordUp calc(.95s * var(--ts-m,1)) var(--ease) forwards;animation-delay:calc(var(--wi,0) * 95ms * var(--ts-m,1) + .12s)}
.is-split{animation:none!important}
@keyframes wordUp{to{transform:none}}

/* ---------- دکمه‌ها و لینک‌ها ---------- */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.38) 50%,transparent 70%);transform:translateX(130%);transition:transform .8s var(--ease)}
.btn:hover::before{transform:translateX(-130%)}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 22px -10px rgba(18,36,27,.55)}
.btn:active{transform:scale(.97)}
.site-nav__list a{position:relative;transition:background .25s,color .25s,transform .3s var(--ease)}
.site-nav__list a:hover{transform:translateY(-1px)}
.site-header{transition:border-color .3s,box-shadow .3s,transform .45s var(--ease)}
.site-header.is-hidden{transform:translateY(-110%)}
.brand__mark{transition:transform .6s var(--ease)}
.brand:hover .brand__mark{transform:rotate(-12deg) scale(1.1)}
.brand__logo{transition:transform .5s var(--ease)}
.brand:hover .brand__logo{transform:scale(1.04)}
.site-nav__list li{animation:navIn .6s var(--ease) backwards;animation-delay:calc(var(--n,0) * 70ms + .15s)}
@keyframes navIn{from{opacity:0;transform:translateY(-10px)}}
.prose a,.link-arrow{background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:100% 100%;background-size:0 1.5px;transition:background-size .4s var(--ease)}
.prose a:hover{background-size:100% 1.5px}
.chip,.tags li,.socials a,.filters__row a{transition:transform .3s var(--ease),background .25s,color .25s,border-color .25s}
.tags li:hover,.socials a:hover{transform:translateY(-2px)}

/* ---------- کارت‌ها: کج‌شدن سه‌بعدی + بالا آمدن ---------- */
.proj-card__link:hover .proj-card__media{transform:none;translate:0 -4px}
.person__link:hover{transform:none;translate:0 -6px}
.proj-card__link,.person__link{transform-style:preserve-3d}
@media (hover:hover) and (pointer:fine){
	.js .tilt{transform:perspective(1000px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .3s ease-out,translate .5s var(--ease),box-shadow .45s var(--ease),background .3s;will-change:transform}
	.js .tilt.is-tilting{transition:transform .08s linear,translate .5s var(--ease),box-shadow .45s var(--ease)}
}

/* ---------- صفحهٔ اصلی: حرکت موازی و شناور ---------- */
.hero__art::before{translate:calc(var(--px,0) * 1px) calc(var(--py,0) * 1px + var(--sy,0) * 1px);transition:translate .5s ease-out}
.hero-art{translate:calc(var(--px,0) * -.55px) calc(var(--py,0) * -.55px + var(--sy,0) * -.15px);transition:translate .6s ease-out;animation:float 9s ease-in-out infinite alternate}
@keyframes float{to{transform:translateY(-10px)}}
.proj-hero__media,.profile__photo{animation:none}
.cta::before,.cta::after{will-change:border-radius}

/* ---------- آمار ---------- */
.stat{transition:transform .4s var(--ease),border-color .3s,background .3s;border-radius:0 .8rem .8rem 0}
.stat:hover{transform:translateY(-4px);background:rgba(255,255,255,.55);border-color:var(--ts-primary)}
.stat strong small{font-size:.5em;font-weight:700;margin-inline-start:.3em;color:var(--ts-secondary)}
.stat .live-dot{display:inline-block;inline-size:.5rem;block-size:.5rem;border-radius:50%;background:#3ba55c;margin-inline-start:.4rem;vertical-align:middle;animation:pulse 2s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(59,165,92,.55)}50%{box-shadow:0 0 0 .4rem rgba(59,165,92,0)}}

/* ---------- گالری و لایت‌باکس ---------- */
.lightbox[open]{animation:lbIn .4s var(--ease)}
.lightbox[open]::backdrop{animation:fadeIn .4s ease}
@keyframes lbIn{from{opacity:0;transform:scale(.92) translateY(14px)}}
@keyframes fadeIn{from{opacity:0}}

/* ---------- فرم‌ها ---------- */
.ts-step:not([hidden]){animation:stepIn .55s var(--ease)}
@keyframes stepIn{from{opacity:0;transform:translateX(26px)}}
.ts-join__dot{transition:background .4s,transform .4s var(--ease)}
.ts-join__progress li.is-active .ts-join__dot{transform:scaleY(1.6)}
.ts-field--error input,.ts-field--error select,.ts-field--error textarea{border-color:#b3261e!important;box-shadow:0 0 0 4px rgba(179,38,30,.12)!important;animation:shake .45s}
.ts-field--error .ts-check{border-color:#b3261e}
.ts-error{display:flex;gap:.45rem;align-items:flex-start;color:#a01d15;font-size:.92rem;font-weight:600;margin:.4rem 0 0;animation:errIn .35s var(--ease)}
.ts-error::before{content:"!";flex:none;display:grid;place-items:center;inline-size:1.15rem;block-size:1.15rem;margin-block-start:.2rem;border-radius:50%;background:#b3261e;color:#fff;font-size:.78rem;line-height:1}
@keyframes errIn{from{opacity:0;transform:translateY(-6px)}}
@keyframes shake{20%{transform:translateX(7px)}40%{transform:translateX(-6px)}60%{transform:translateX(4px)}80%{transform:translateX(-3px)}}
.ts-btn{transition:transform .25s var(--ease),background .25s,color .25s,box-shadow .25s}
.ts-btn:hover{transform:translateY(-2px);box-shadow:0 10px 20px -10px rgba(18,36,27,.5)}
.ts-join__success{animation:pop .7s var(--ease)}
@keyframes pop{from{opacity:0;transform:scale(.92)}}

/* ---------- خروج نرم از صفحه ---------- */
body{transition:opacity .22s ease,transform .22s ease}
body.is-leaving{opacity:0;transform:translateY(-8px)}

/* ---------- صفحهٔ آغازین با لوگو ---------- */
.ts-loader{position:fixed;inset:0;z-index:300;display:grid;place-items:center;background:var(--ts-forest);color:#fff;
	transition:opacity .6s ease,visibility .6s}
.ts-loader.is-done{opacity:0;visibility:hidden}
.ts-loader__in{display:grid;gap:1rem;justify-items:center;animation:loaderIn .9s var(--ease) both}
.ts-loader__in img{max-block-size:5rem;inline-size:auto}
.ts-loader__in svg{inline-size:4.2rem;block-size:4.2rem}
.ts-loader__name{font-weight:800;font-size:1.4rem;letter-spacing:.01em}
.ts-loader__bar{inline-size:7rem;block-size:3px;border-radius:3px;background:rgba(255,255,255,.18);overflow:hidden}
.ts-loader__bar i{display:block;block-size:100%;inline-size:100%;background:var(--ts-accent);transform-origin:100% 50%;animation:loadBar 1.1s var(--ease) forwards}
@keyframes loaderIn{from{opacity:0;transform:translateY(14px) scale(.9)}}
@keyframes loadBar{from{transform:scaleX(0)}}
html:not(.js) .ts-loader,html.ts-seen .ts-loader{display:none}

/* ---------- خاموش بودن انیمیشن‌ها از تنظیمات ---------- */
html[data-motion=off] *,html[data-motion=off] *::before,html[data-motion=off] *::after{animation-duration:.001ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important;scroll-behavior:auto!important}
html.js[data-motion=off] [data-reveal]{opacity:1;transform:none;filter:none}
html[data-motion=off] .w>span{transform:none}
@media (prefers-reduced-motion:reduce){
	.js [data-reveal]{opacity:1;transform:none;filter:none}
	.w>span{transform:none}
	.hero-art{animation:none}
	body.is-leaving{opacity:1;transform:none}
	.site-nav__list li{animation:none}
}
.stat strong>span{font-size:inherit;color:inherit}
