/*
 * شیء سه‌بعدی محصول (includes/class-dgf-objects.php). فقط CSS: هر شیء جعبه‌ای با رویه‌های چرخیده در فضای سه‌بعدی است.
 * اندازه‌ها از قاب خود شیء می‌آید (واحد cq)، پس همان یک نشانه‌گذاری در کارت، صفحه محصول، سبد و صفحه اصلی درست می‌نشیند.
 * --px و --py (‎-۱ تا ۱) را assets/objects.js از جای موس روی کارت یا بخش می‌گذارد؛ شیء به سمت موس می‌چرخد.
 * --ow/--oh/--od: پهنا، بلندی و ضخامت شیء · --rx0/--ry0/--rz0: ایستادن آرام · --tx/--ty: دامنه چرخش با موس.
 */

.dg3d { --h: 215; --h2: 247; position: relative; display: block; width: 100%; height: 100%; aspect-ratio: 3 / 4; container: dg3d / size; color: #fff; font-family: var(--dgf-font, inherit); font-size: 16px; line-height: 1.5; text-align: center; -webkit-user-select: none; user-select: none; pointer-events: none; }
/* به جای جلد خودکار افزونه: قاب و اندازه همان جاست، رنگ و حاشیه جلد تخت نه. */
.dgf-cover.dg3d { display: block !important; padding: 0 !important; border: 0 !important; box-shadow: none !important; background: radial-gradient(120% 85% at 50% 28%, hsl(var(--h) 46% 97%), hsl(var(--h) 26% 87%)) !important; overflow: hidden; }
.dg3d__stage { position: absolute; inset: 0; perspective: 170cqmin; perspective-origin: 50% 40%; transform-style: preserve-3d; }
.dg3d__float { position: absolute; inset: 0; transform-style: preserve-3d; }
.dg3d__obj, .dg3d__item { position: absolute; left: 50%; top: 50%; width: var(--ow); height: var(--oh); margin: calc(var(--oh) / -2) 0 0 calc(var(--ow) / -2); transform-style: preserve-3d; }
.dg3d__obj { translate: var(--ox, 0) var(--oy, 0); transform: rotateX(calc(var(--rx0, -7deg) + var(--py, 0) * var(--tx, -12deg))) rotateY(calc(var(--ry0, -28deg) + var(--px, 0) * var(--ty, 24deg))) rotateZ(var(--rz0, 0deg)); }
.dg3d__floor { position: absolute; left: 50%; top: calc(50% + var(--oh) / 2 + var(--fy, 0px)); width: calc(var(--fw, var(--ow)) * 1.25); height: calc(var(--fw, var(--ow)) * .22); translate: calc(-50% - var(--px, 0) * 8%) -55%; border-radius: 50%; background: radial-gradient(closest-side, rgba(10, 14, 30, .42), rgba(10, 14, 30, .14) 62%, transparent); filter: blur(calc(var(--ow) * .02)); }

/* رویه‌های جعبه */
.dg3d__f { position: absolute; left: 0; top: 0; width: var(--ow); height: var(--oh); overflow: hidden; -webkit-backface-visibility: hidden; backface-visibility: hidden; }
.dg3d__fr { transform: translateZ(calc(var(--od) / 2)); }
.dg3d__bk { transform: rotateY(180deg) translateZ(calc(var(--od) / 2)); }
.dg3d__rt, .dg3d__lt { left: calc(50% - var(--od) / 2); width: var(--od); }
.dg3d__rt { transform: rotateY(90deg) translateZ(calc(var(--ow) / 2)); }
.dg3d__lt { transform: rotateY(-90deg) translateZ(calc(var(--ow) / 2)); }
.dg3d__tp, .dg3d__bt { top: calc(50% - var(--od) / 2); height: var(--od); }
.dg3d__tp { transform: rotateX(90deg) translateZ(calc(var(--oh) / 2)); }
.dg3d__bt { transform: rotateX(-90deg) translateZ(calc(var(--oh) / 2)); }

/* طرح رنگی جلد بی‌عکس: چهار الگو، یکی برای هر محصول (از شناسه‌اش) */
.dg3d__art { position: absolute; inset: 0; background: linear-gradient(158deg, hsl(var(--h) 64% 47%), hsl(var(--h2) 66% 21%)); }
.dg3d__art::before, .dg3d__art::after { content: ""; position: absolute; inset: 0; }
.dg3d--p1 .dg3d__art::before { background: repeating-radial-gradient(circle at 92% 6%, transparent 0 6%, rgba(255, 255, 255, .09) 6% 6.7%); }
.dg3d--p1 .dg3d__art::after { background: radial-gradient(circle at 92% 6%, hsl(var(--h) 85% 72% / .55) 0 15%, transparent 15.4%); }
.dg3d--p2 .dg3d__art::before { background: repeating-linear-gradient(128deg, transparent 0 7%, rgba(255, 255, 255, .07) 7% 12%); }
.dg3d--p2 .dg3d__art::after { background: linear-gradient(180deg, transparent 58%, hsl(var(--h) 90% 70% / .35) 58% 63%, transparent 63%); }
.dg3d--p3 .dg3d__art::before { background: radial-gradient(rgba(255, 255, 255, .2) 7%, transparent 9%) 0 0 / 9% 6.6%; -webkit-mask: linear-gradient(transparent 50%, #000); mask: linear-gradient(transparent 50%, #000); }
.dg3d--p3 .dg3d__art::after { background: radial-gradient(circle at 24% 80%, hsl(var(--h2) 80% 64% / .6) 0 21%, transparent 21.4%); }
.dg3d--p4 .dg3d__art::before { background: radial-gradient(circle at 50% 104%, hsl(var(--h) 92% 68% / .62) 0 34%, transparent 34.4%); }
.dg3d--p4 .dg3d__art::after { background: repeating-linear-gradient(180deg, transparent 0 4.2%, rgba(255, 255, 255, .1) 4.2% 4.8%); -webkit-mask: linear-gradient(transparent 62%, #000 64%); mask: linear-gradient(transparent 62%, #000 64%); }
.dg3d__txt { position: absolute; inset: 13% 11% auto; display: flex; flex-direction: column; align-items: center; gap: calc(var(--ow) * .045); }
.dg3d__txt b { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 4; font-size: calc(var(--ow) * .1); font-weight: 800; line-height: 1.5; text-wrap: balance; overflow-wrap: anywhere; text-shadow: 0 1px 14px rgba(0, 0, 0, .28); }
.dg3d__txt small { font-size: calc(var(--ow) * .062); font-weight: 500; opacity: .86; }
.dg3d__txt small::before { content: ""; display: block; width: 32%; height: 1px; margin: 0 auto calc(var(--ow) * .04); background: currentColor; opacity: .55; }
.dg3d__img { position: absolute; inset: 0; display: block; width: 100%; height: 100%; max-width: none; margin: 0; border-radius: 0; object-fit: cover; }
/* برق روی رویه که با موس جابه‌جا می‌شود */
.dg3d__sheen { position: absolute; inset: 0; pointer-events: none; background: linear-gradient(112deg, transparent 32%, rgba(255, 255, 255, .34) 47%, transparent 62%) calc(50% - var(--px, 0) * 70%) 0 / 260% 100% no-repeat; mix-blend-mode: soft-light; }

/* کتاب: عطف سمت راست (کتاب فارسی)، لبه برگ‌ها، چین جلد کنار عطف */
.dg3d--book, .dg3d--trio { --od: calc(var(--oh) * .13); }
.dg3d--book { --oh: min(74cqh, 96cqw); --ow: calc(var(--oh) * .68); --rx0: -7deg; --ry0: -30deg; }
:is(.dg3d--book, .dg3d--trio) .dg3d__fr { border-radius: 0 calc(var(--ow) * .02) calc(var(--ow) * .02) 0; background: hsl(var(--h2) 60% 20%); }
:is(.dg3d--book, .dg3d--trio) .dg3d__fr::before { content: ""; position: absolute; z-index: 2; top: 0; bottom: 0; right: 5.5%; width: 4%; background: linear-gradient(90deg, rgba(0, 0, 0, .2), rgba(255, 255, 255, .2) 50%, rgba(0, 0, 0, .14)); }
:is(.dg3d--book, .dg3d--trio) .dg3d__fr::after { content: ""; position: absolute; z-index: 2; inset: 0; background: linear-gradient(90deg, rgba(0, 0, 0, .14), transparent 22%, transparent 78%, rgba(255, 255, 255, .1) 88%, rgba(0, 0, 0, .2)); pointer-events: none; }
:is(.dg3d--book, .dg3d--trio) .dg3d__rt { display: grid; place-items: center; background: linear-gradient(90deg, hsl(var(--h2) 62% 15%), hsl(var(--h) 56% 32%) 46%, hsl(var(--h2) 62% 13%)); }
:is(.dg3d--book, .dg3d--trio) .dg3d__rt b { max-height: 80%; overflow: hidden; writing-mode: vertical-rl; font-size: calc(var(--od) * .4); font-weight: 700; white-space: nowrap; text-overflow: ellipsis; opacity: .9; }
:is(.dg3d--book, .dg3d--trio) .dg3d__bk { background: hsl(var(--h2) 58% 17%); }
/* جلد عکس‌دار: عطف و پهلو ادامه همان عکس‌اند، با سایه. */
:is(.dg3d--book.dg3d--img, .dg3d__item.dg3d--img, .dg3d--box.dg3d--img) .dg3d__rt { background: linear-gradient(90deg, rgba(0, 0, 0, .42), rgba(0, 0, 0, .12) 46%, rgba(0, 0, 0, .46)), var(--img) 100% 50% / auto 100% no-repeat, hsl(var(--h2) 60% 18%); }
:is(.dg3d--book.dg3d--img, .dg3d__item.dg3d--img) .dg3d__bk, .dg3d--box.dg3d--img :is(.dg3d__bk, .dg3d__lt) { background: linear-gradient(rgba(0, 0, 0, .35), rgba(0, 0, 0, .35)), var(--img) 0 50% / auto 100% no-repeat, hsl(var(--h2) 58% 17%); }
.dg3d--box.dg3d--img .dg3d__tp { background: linear-gradient(rgba(255, 255, 255, .12), rgba(255, 255, 255, .12)), var(--img) 50% 0 / 100% auto no-repeat, hsl(var(--h) 66% 46%); }
:is(.dg3d--book, .dg3d--trio) .dg3d__lt { top: 1%; height: 98%; background: repeating-linear-gradient(90deg, #f7f2e8 0 1.5px, #d8cfbf 1.5px 2.3px); }
:is(.dg3d--book, .dg3d--trio) :is(.dg3d__tp, .dg3d__bt) { left: 0; width: 98%; background: repeating-linear-gradient(0deg, #f7f2e8 0 1.5px, #d8cfbf 1.5px 2.3px); }

/* کتاب‌خوان: قاب تیره، صفحه کاغذی، نوار پیشرفت خواندن */
.dg3d--reader { --oh: min(76cqh, 108cqw); --ow: calc(var(--oh) * .7); --od: calc(var(--oh) * .045); --rx0: -6deg; --ry0: -24deg; }
.dg3d--reader .dg3d__f { background: #17191e; }
.dg3d--reader .dg3d__fr { border-radius: 6% / 4.2%; background: linear-gradient(160deg, #31343c, #121419 62%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .07); }
.dg3d--reader .dg3d__fr::after { content: ""; position: absolute; left: 42%; right: 42%; bottom: 4.6%; height: 1.1%; border-radius: 9px; background: rgba(255, 255, 255, .16); }
.dg3d--reader :is(.dg3d__rt, .dg3d__lt) { top: 4%; height: 92%; }
.dg3d--reader :is(.dg3d__tp, .dg3d__bt) { left: 5%; width: 90%; }
.dg3d__scr { position: absolute; overflow: hidden; background: #0e1118; }
.dg3d--reader .dg3d__scr { inset: 7% 7% 13%; border-radius: 1.6%; background: #e9e6dc; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .3); }
.dg3d--reader .dg3d__scr :is(.dg3d__art, .dg3d__img) { filter: saturate(.72) contrast(.96); }
.dg3d__prog { position: absolute; z-index: 2; left: 9%; right: 9%; bottom: 4.5%; height: max(2px, 1.1%); border-radius: 9px; background: rgba(255, 255, 255, .28); }
.dg3d__prog::after { content: ""; position: absolute; top: 0; bottom: 0; right: 0; width: 42%; border-radius: inherit; background: #fff; }

/* جعبه نرم‌افزار: نشانه کد، نسخه، نوار چسب روی سر جعبه */
.dg3d--box { --oh: min(66cqh, 88cqw); --ow: calc(var(--oh) * .78); --od: calc(var(--oh) * .3); --rx0: -15deg; --ry0: -32deg; --oy: 4%; }
.dg3d--box .dg3d__fr { border-radius: 1%; background: hsl(var(--h2) 66% 24%); }
.dg3d--box .dg3d__art { background: linear-gradient(150deg, hsl(var(--h) 72% 52%), hsl(var(--h2) 70% 25%)); }
.dg3d__glyph { position: absolute; top: 15%; left: 50%; width: 30%; height: auto; translate: -50% 0; color: #fff; filter: drop-shadow(0 4px 10px rgba(0, 0, 0, .25)); }
.dg3d--box .dg3d__txt { inset: auto 10% 22%; }
.dg3d--box .dg3d__txt b { -webkit-line-clamp: 2; font-size: calc(var(--ow) * .09); }
.dg3d__ver { position: absolute; z-index: 2; left: 7%; bottom: 7%; padding: .28em .62em; border-radius: .45em; background: rgba(255, 255, 255, .2); font: 700 calc(var(--ow) * .062) / 1 ui-monospace, Consolas, monospace; font-style: normal; letter-spacing: .02em; }
.dg3d--box .dg3d__rt { display: grid; place-items: center; background: linear-gradient(90deg, hsl(var(--h) 60% 36%), hsl(var(--h2) 64% 20%)); }
.dg3d--box .dg3d__rt b { max-height: 76%; overflow: hidden; writing-mode: vertical-rl; font-size: calc(var(--od) * .2); font-weight: 700; white-space: nowrap; text-overflow: ellipsis; }
.dg3d--box .dg3d__lt { background: hsl(var(--h2) 60% 18%); }
.dg3d--box .dg3d__tp { background: linear-gradient(0deg, hsl(var(--h) 66% 46%), hsl(var(--h) 72% 60%)); }
.dg3d__tape { position: absolute; top: 0; bottom: 0; left: 42%; right: 42%; background: rgba(255, 255, 255, .32); }
.dg3d--box .dg3d__bk, .dg3d--box .dg3d__bt { background: hsl(var(--h2) 60% 16%); }

/* صفحه نمایش (ویدئو) و دکمه پخش */
.dg3d--screen { --ow: min(86cqw, 118cqh); --oh: calc(var(--ow) * .6); --od: calc(var(--ow) * .035); --rx0: -6deg; --ry0: -24deg; }
.dg3d--screen .dg3d__f { background: #14161b; }
.dg3d--screen .dg3d__fr { border-radius: 2.6% / 4.4%; background: linear-gradient(160deg, #2b2e36, #101216); }
.dg3d--screen .dg3d__scr { inset: 4% 3% 4%; border-radius: 1.4% / 2.4%; }
.dg3d__play { position: absolute; z-index: 2; left: 50%; top: 46%; width: 19cqmin; height: 19cqmin; translate: -50% -50%; border-radius: 50%; background: rgba(255, 255, 255, .94); box-shadow: 0 8px 26px rgba(0, 0, 0, .3), 0 0 0 7px rgba(255, 255, 255, .18); }
.dg3d__play::after { content: ""; position: absolute; inset: 30% 26% 30% 36%; background: hsl(var(--h) 70% 40%); clip-path: polygon(0 0, 100% 50%, 0 100%); }
:is(.dg3d--screen, .dg3d--laptop) .dg3d__scr .dg3d__txt { inset: auto 6% 13%; align-items: flex-start; text-align: right; }
:is(.dg3d--screen, .dg3d--laptop) .dg3d__scr .dg3d__txt b { -webkit-line-clamp: 1; font-size: calc(var(--ow) * .05); }
:is(.dg3d--screen, .dg3d--laptop) .dg3d__scr .dg3d__txt small { display: none; }

/* قالب: سه پنجره روی هم که با موس از هم باز می‌شوند */
.dg3d--stack { --ow: min(74cqw, 94cqh); --oh: calc(var(--ow) * .66); --rx0: 54deg; --ry0: 0deg; --rz0: -34deg; --tx: -7deg; --ty: 12deg; --gap: calc(var(--ow) * .11); --oy: -3%; --fy: calc(var(--oh) * -.36); --fw: calc(var(--ow) * 1.05); }
.dg3d__win { position: absolute; inset: 0; overflow: hidden; border-radius: calc(var(--ow) * .025); background: #fff; color: #14161a; box-shadow: 0 0 0 1px rgba(10, 14, 30, .06), 0 calc(var(--ow) * .04) calc(var(--ow) * .08) rgba(10, 14, 30, .28); transform: translateZ(calc((3 - var(--n)) * var(--gap))); transition: transform .6s cubic-bezier(.2, .8, .2, 1); }
:is(.dgf-pc:hover, .dgs-tile:hover, .is-on) .dg3d--stack, .dg3d--stack.is-lift { --gap: calc(var(--ow) * .19); }
.dg3d__dots { position: absolute; inset: 0 0 auto; height: 11%; background: #eef0f4 radial-gradient(circle at 5% 50%, #f25f58 0 2.2%, transparent 2.6%); }
.dg3d__dots::after { content: ""; position: absolute; inset: 0; background: radial-gradient(circle at 9% 50%, #f7be3b 0 2.2%, transparent 2.6%), radial-gradient(circle at 13% 50%, #36c35c 0 2.2%, transparent 2.6%); }
.dg3d__wf { position: absolute; inset: 18% 7% 8%; display: grid; grid-template-columns: repeat(3, 1fr); grid-template-rows: 1.25fr 1fr; gap: 7%; }
.dg3d__wf i { border-radius: calc(var(--ow) * .012); background: #e7eaf0; }
.dg3d__wf i:first-child { grid-column: 1 / -1; background: linear-gradient(120deg, hsl(var(--h) 72% 55%), hsl(var(--h2) 70% 40%)); }
.dg3d__win--3 { background: #1c2030; }
.dg3d__win--3 .dg3d__dots { background-color: #262b3e; }
.dg3d__win--3 .dg3d__wf i { background: #2f3550; }
.dg3d__win--3 .dg3d__wf i:first-child { background: repeating-linear-gradient(180deg, #4c5680 0 9%, transparent 9% 20%); }
.dg3d__win--2 .dg3d__wf i:first-child { background: hsl(var(--h2) 60% 88%); }
.dg3d__wt { position: absolute; top: 22%; right: 12%; left: 12%; height: 30%; display: grid; place-items: center; color: #fff; font-size: calc(var(--ow) * .055); font-weight: 800; line-height: 1.4; }
.dg3d--stack .dg3d__img { top: 11%; height: 89%; }

/* لپ‌تاپ دوره: درِ ایستاده با صفحه پخش، بدنه خوابیده با صفحه‌کلید */
.dg3d--laptop { --ow: min(72cqw, 86cqh); --oh: calc(var(--ow) * .6); --od: calc(var(--ow) * .52); --rx0: -18deg; --ry0: -26deg; --oy: -15%; --fy: calc(var(--od) * .34); --fw: calc(var(--ow) * 1.05); }
.dg3d__lid { position: absolute; inset: 0; border-radius: calc(var(--ow) * .03) calc(var(--ow) * .03) 0 0; background: linear-gradient(#2c3038, #14171c); transform-origin: 50% 100%; transform: rotateX(8deg); }
.dg3d--laptop .dg3d__scr { inset: 4% 3.4% 6%; border-radius: calc(var(--ow) * .008); }
.dg3d__base { position: absolute; left: -3%; top: 100%; width: 106%; height: var(--od); border-radius: 0 0 calc(var(--ow) * .04) calc(var(--ow) * .04); background: linear-gradient(180deg, #dde1e8, #b7bdc8); transform-origin: 50% 0; transform: rotateX(90deg); box-shadow: inset 0 2px 0 rgba(255, 255, 255, .6); }
.dg3d__keys { position: absolute; inset: 8% 8% 40%; border-radius: 2%; background: repeating-linear-gradient(90deg, #3a3f49 0 6.4%, transparent 6.4% 7.4%), repeating-linear-gradient(180deg, transparent 0 17%, #c4c9d2 17% 21%); background-blend-mode: normal; opacity: .9; }
.dg3d__pad { position: absolute; left: 34%; right: 34%; bottom: 9%; height: 24%; border-radius: 6%; background: rgba(20, 24, 32, .1); box-shadow: inset 0 0 0 1px rgba(20, 24, 32, .08); }

/* صوت: جلد صفحه گرامافون و صفحه‌ای که بیرون می‌آید و می‌چرخد */
.dg3d--vinyl { --ow: min(62cqh, 62cqw); --oh: var(--ow); --rx0: -4deg; --ry0: -22deg; --ox: 11%; --fw: calc(var(--ow) * 1.3); }
.dg3d__sleeve { position: absolute; inset: 0; overflow: hidden; border-radius: calc(var(--ow) * .012); background: hsl(var(--h2) 60% 20%); box-shadow: 0 0 0 1px rgba(255, 255, 255, .06), -10px 0 24px rgba(0, 0, 0, .22); }
.dg3d--vinyl .dg3d__txt { inset: auto 9% 9%; align-items: flex-end; text-align: right; }
.dg3d--vinyl .dg3d__txt b { -webkit-line-clamp: 2; font-size: calc(var(--ow) * .085); }
.dg3d--vinyl .dg3d__txt small::before { margin-right: 0; }
.dg3d__rec { position: absolute; inset: 3%; border-radius: 50%; background: radial-gradient(circle, transparent 0 17%, #0d0e11 17.5% 19%, transparent 19.5%), repeating-radial-gradient(circle, #15161a 0 1%, #24252b 1% 1.5%); box-shadow: 0 6px 22px rgba(0, 0, 0, .35); translate: -34% 0; transition: translate .8s cubic-bezier(.2, .8, .2, 1); }
.dg3d__rec::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 20deg, transparent 0 8%, rgba(255, 255, 255, .13) 12%, transparent 18% 56%, rgba(255, 255, 255, .1) 61%, transparent 67%); }
.dg3d__label { position: absolute; inset: 32%; border-radius: 50%; background: radial-gradient(circle, #f5f2ea 0 9%, transparent 9.5%), conic-gradient(hsl(var(--h) 72% 54%) 0 50%, hsl(var(--h2) 70% 42%) 50% 100%); }
:is(.dgf-pc:hover, .dgs-tile:hover, .is-on) .dg3d--vinyl .dg3d__rec, .dg3d--vinyl.is-lift .dg3d__rec { translate: -50% 0; }
:is(.dgf-pc:hover, .dgs-tile:hover, .is-on) .dg3d--vinyl .dg3d__label, .dg3d--vinyl.is-lift .dg3d__label { animation: dg3d-spin 2.4s linear infinite; }
@keyframes dg3d-spin { to { rotate: 360deg; } }

/* فایل: برگه‌های روی هم با گوشه تاخورده و نشان قالب؛ فشرده با زیپ */
.dg3d--doc, .dg3d--archive { --oh: min(74cqh, 100cqw); --ow: calc(var(--oh) * .72); --rx0: 4deg; --ry0: -20deg; --fy: calc(var(--oh) * -.04); }
:is(.dg3d--doc, .dg3d--archive, .dg3d--vinyl) .dg3d__obj { transform-style: flat; }
.dg3d__sheet { position: absolute; inset: 0; overflow: hidden; border-radius: calc(var(--ow) * .025); background: #fbfbf8; color: #14161a; box-shadow: 0 0 0 1px rgba(10, 14, 30, .05), 0 calc(var(--ow) * .03) calc(var(--ow) * .08) rgba(10, 14, 30, .2); transform: translateX(calc((var(--n) - 1) * 4.5%)) rotateZ(calc((var(--n) - 1) * 4deg)); }
.dg3d__sheet--1 { clip-path: polygon(17% 0, 100% 0, 100% 100%, 0 100%, 0 12.2%); }
.dg3d__sheet--2 { background: #eef0f3; }
.dg3d__sheet--3 { background: #dfe3e9; }
.dg3d__ear { position: absolute; top: 0; left: 0; width: 17%; height: 12.2%; background: linear-gradient(135deg, transparent 50%, #d9dde4 50%, #f4f5f7); box-shadow: 2px 2px 6px rgba(10, 14, 30, .14); }
.dg3d__band { position: absolute; inset: 0 0 auto; height: 26%; background: linear-gradient(135deg, hsl(var(--h) 70% 50%), hsl(var(--h2) 70% 32%)); }
:is(.dg3d--doc, .dg3d--archive) .dg3d__txt { inset: 0 11% auto; height: 26%; justify-content: center; color: #fff; }
:is(.dg3d--doc, .dg3d--archive) .dg3d__txt b { -webkit-line-clamp: 2; font-size: calc(var(--ow) * .08); }
.dg3d__lines { position: absolute; inset: 36% 12% 20%; background: repeating-linear-gradient(180deg, #dde1e7 0 4.5%, transparent 4.5% 10.5%); -webkit-mask: linear-gradient(90deg, #000 70%, rgba(0, 0, 0, .4)); mask: linear-gradient(90deg, #000 70%, rgba(0, 0, 0, .4)); }
.dg3d__ext { position: absolute; left: 8%; bottom: 6.5%; padding: .32em .7em; border-radius: .42em; background: #d6453b; color: #fff; font: 800 calc(var(--ow) * .07) / 1 system-ui, sans-serif; font-style: normal; letter-spacing: .05em; }
.dg3d--archive .dg3d__ext { background: #c98a12; }
.dg3d__zip { position: absolute; top: 26%; bottom: 0; left: 50%; width: 7%; translate: -50% 0; background: repeating-linear-gradient(180deg, #8f96a1 0 1.6%, #eceef1 1.6% 3.2%); box-shadow: inset 1px 0 0 rgba(10, 14, 30, .12), inset -1px 0 0 rgba(10, 14, 30, .12); }
.dg3d__zip::after { content: ""; position: absolute; top: 10%; left: -40%; width: 180%; height: 9%; border-radius: 30% 30% 45% 45%; background: linear-gradient(#c9ced6, #8f96a1); box-shadow: 0 2px 4px rgba(10, 14, 30, .25); }
:is(.dg3d--doc, .dg3d--archive) .dg3d__img { height: 70%; }

/* بسته: سه کتاب کنار هم */
.dg3d--trio { --oh: min(54cqh, 64cqw); --ow: calc(var(--oh) * .64); --rx0: -6deg; --ry0: -12deg; --fw: calc(var(--ow) * 2.1); }
.dg3d__item { left: 0; top: 0; margin: 0; }
.dg3d__item:nth-child(1) { transform: translateX(calc(var(--ow) * .5)) translateZ(calc(var(--ow) * -.32)) rotateY(-14deg); }
.dg3d__item:nth-child(2) { transform: translateZ(calc(var(--ow) * .12)); }
.dg3d__item:nth-child(3) { transform: translateX(calc(var(--ow) * -.5)) translateZ(calc(var(--ow) * -.32)) rotateY(14deg); }
.dg3d--trio .dg3d__txt b { -webkit-line-clamp: 3; }

/* شناور آرام (صفحه اصلی) */
.dg3d--float .dg3d__float { animation: dg3d-bob 7s ease-in-out infinite; animation-delay: calc(var(--d, 0) * -1.6s); }
@keyframes dg3d-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2.6%); } }

/* قاب خیلی کوچک (سبد، پرداخت، فهرست کتابخانه): فقط رویه جلو، صاف */
@container dg3d (max-width: 96px) {
	.dg3d__obj { translate: none; transform: none; }
	.dg3d__floor, .dg3d__bk, .dg3d__rt, .dg3d__lt, .dg3d__tp, .dg3d__bt, .dg3d__base, .dg3d__rec, .dg3d__ear, .dg3d__ver, .dg3d__play { display: none; }
	.dg3d__txt small { display: none; }
	.dg3d__item:not(:nth-child(2)) { display: none; }
	.dg3d__item:nth-child(2), .dg3d__sheet, .dg3d__win, .dg3d__lid { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
	.dg3d--float .dg3d__float, .dg3d__label { animation: none !important; }
	.dg3d__win, .dg3d__rec { transition: none; }
}
