/* ============================================================
   کارت دیجیتال بازیکن — منبع واحد طراحی (Canonical Player Card)
   رندر: backend/lib/player_card.php (pc_card_html) · QR و حرکت: assets/js/player-card.js
   مصرف‌کننده‌ها: صفحه‌ی اول (showcase) · پنل بازیکن (interactive) · خروجی PNG (.pc3--export، صاف و رو‌به‌رو)
   متغیرها: --pc-shadow / --pc-glow (۰..۱)، --rx/--ry/--rz زاویه‌ی پایه، --mx/--my/--mt حرکت
   ============================================================ */
.pc3{--r:5.2cqi;--rx:7deg;--ry:15deg;--rz:-2deg;position:relative;width:100%;aspect-ratio:1.5;container-type:inline-size;transform-style:preserve-3d;
  transform:translateY(var(--mt,0px)) rotateX(calc(var(--rx) + var(--mx,0deg))) rotateY(calc(var(--ry) + var(--my,0deg))) rotateZ(var(--rz));
  transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.pc3.is-flat{transform:none}
/* ضخامت: لایه‌های پشت سطح؛ لبه‌ی نارنجی سمت راست، سبز تیره در بقیه */
.pc3-edge i{position:absolute;inset:0;border-radius:var(--r);transform:translateZ(calc(var(--z) * -1.6px));
  background:linear-gradient(90deg,#0d4a27 0%,#08301a 70%,#c9561a 93%,#ff7a2a 100%)}
.pc3-edge i:last-child{box-shadow:0 5cqi 12cqi -2cqi rgba(0,0,0,calc(.95 * var(--pc-shadow,.7))),0 0 10cqi rgba(39,194,100,calc(.35 * var(--pc-glow,.6)))}
.pc3.is-flat .pc3-face{box-shadow:0 30px 70px -24px rgba(0,0,0,calc(.95 * var(--pc-shadow,.7))),0 0 50px rgba(39,194,100,calc(.3 * var(--pc-glow,.6)))}
.pc3-face{position:absolute;inset:0;border-radius:var(--r);overflow:hidden;color:#fff;direction:rtl;
  display:grid;grid-template-columns:19% minmax(0,1fr) 30%;grid-template-rows:auto minmax(0,1fr) auto;
  grid-template-areas:"brand brand status" "mono info photo" "foot foot foot";column-gap:4cqi;padding:4.4cqi 4.8cqi 0;
  background:radial-gradient(90% 80% at 80% 0%,rgba(39,194,100,.32),transparent 60%),linear-gradient(150deg,#0f5e30 0%,#0a4022 50%,#062814 100%);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14),inset 0 1px 0 rgba(255,255,255,.28)}
.pc3-face::after{content:"";position:absolute;inset-inline-start:0;inset-block:20% 30%;width:1.3cqi;border-radius:0 2cqi 2cqi 0;background:linear-gradient(180deg,#ff8a3c,#e2560f)}
.pc3-sheen{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(115deg,rgba(255,255,255,.13) 0%,rgba(255,255,255,0) 32%,rgba(255,255,255,0) 70%,rgba(255,255,255,.05) 100%)}
.pc3-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.22}
/* زمینه‌ی مینیمال (کارت‌های واقعی): به‌جای خطوط زمین فقط یک نشان بسیار کم‌رنگ توپ */
.pc3-ball{position:absolute;inset-block-start:12%;inset-inline-start:24%;width:50cqi;height:50cqi;pointer-events:none;opacity:.05}
/* عکس بازیکن: برش از پایین، نه از بالا (سر و صورت بریده نشود)؛ نقطه‌ی تمرکز ثبت‌شده در کتابخانه‌ی رسانه همچنان مقدم است */
.pc3--photo-top .pc3-photo img{object-position:50% 0}
.pc3-face>div{position:relative;z-index:2;min-width:0}
.pc3-brand{grid-area:brand;display:flex;align-items:center;gap:2.4cqi;justify-content:flex-start}
.pc3-brand img{width:9cqi;height:9cqi;object-fit:contain;filter:drop-shadow(0 .6cqi 1.2cqi rgba(0,0,0,.4))}
.pc3-brand span{display:flex;flex-direction:column;gap:.8cqi;direction:ltr;text-align:right}
.pc3-brand b{font-family:var(--font-lat);font-weight:700;font-size:max(.66rem,2.5cqi);letter-spacing:.24em;line-height:1}
.pc3-brand small{font-family:var(--font-lat);font-weight:600;font-size:max(.66rem,1.8cqi);letter-spacing:.3em;color:#5fe39a;line-height:1}
.pc3-status{grid-area:status;justify-self:end;align-self:start;display:inline-flex;align-items:center;gap:1.4cqi;font-size:max(.66rem,2.7cqi);font-weight:700;color:#5fe39a;
  padding:1.1cqi 2.4cqi;border-radius:99px;background:rgba(39,194,100,.12);box-shadow:inset 0 0 0 1px rgba(95,227,154,.35)}
.pc3-status svg{width:3.4cqi;height:3.4cqi}
.pc3-photo{grid-area:photo;align-self:stretch;margin-block:3cqi 3.4cqi;border-radius:3cqi;overflow:hidden;position:relative;
  background:radial-gradient(80% 70% at 50% 30%,#1c7a45,#0a3a1f 70%,#06210f);box-shadow:0 1.6cqi 3.6cqi -1cqi rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.12)}
.pc3-photo img,.pc3-photo svg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:filter .6s}
.pc3-mono{grid-area:mono;align-self:center;aspect-ratio:1;border-radius:3cqi;display:grid;place-items:center;font-weight:900;font-size:max(.8rem,5.2cqi);
  background:linear-gradient(145deg,#ff8a3c,#ef6414 55%,#c94e0c);box-shadow:0 1.8cqi 4cqi -1cqi rgba(239,100,20,.55),inset 0 1px 0 rgba(255,255,255,.35)}
.pc3-info{grid-area:info;align-self:center;display:flex;flex-direction:column;align-items:flex-start;gap:2cqi}
.pc3-name{font-size:max(.95rem,5.4cqi);font-weight:800;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;
  padding-block-end:1.6cqi;background:linear-gradient(90deg,transparent,rgba(255,138,60,.7)) bottom right/26% 2px no-repeat}
.pc3-club{display:flex;align-items:center;gap:1.4cqi;font-size:max(.68rem,2.8cqi);font-weight:500;color:rgba(255,255,255,.92)}
.pc3-club svg{width:3.4cqi;height:3.4cqi;flex:none}
.pc3-age{display:inline-flex;align-items:center;gap:1.4cqi;font-size:max(.66rem,2.6cqi);font-weight:600;color:#5fe39a;padding:1.2cqi 2.6cqi;border-radius:99px;
  background:rgba(4,20,11,.45);box-shadow:inset 0 0 0 1px rgba(95,227,154,.3)}
.pc3-age svg{width:3.4cqi;height:3.4cqi;flex:none}
.pc3-consent{display:flex;align-items:center;gap:1.4cqi;font-size:max(.64rem,2.5cqi);font-weight:600;color:rgba(255,255,255,.92);white-space:nowrap}
.pc3-consent svg{width:3.4cqi;height:3.4cqi;flex:none;color:#5fe39a}
.pc3-consent.is-no svg{color:#ffb27a}
.pc3-info.has-consent{gap:1cqi}
.pc3-info.has-consent .pc3-name{font-size:max(.9rem,5cqi);line-height:1.2;padding-block-end:1.2cqi}
.pc3-info.has-consent .pc3-age{padding-block:.7cqi}
.pc3-foot{grid-area:foot;z-index:4!important;margin-inline:-4.8cqi;padding:2.4cqi 4.8cqi 2.8cqi;display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:3.4cqi;
  background:linear-gradient(180deg,rgba(2,14,7,.5),rgba(2,14,7,.62)),linear-gradient(115deg,transparent 55%,rgba(255,255,255,.05) 55%);direction:ltr;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
/* باکس نارنجی = لوگوی رسمی باشگاه (پنل، خروجی، استعلام). لوگوی شفاف ⇒ سفید تک‌رنگ؛ مات ⇒ روی صفحه‌ی سفید؛ نبود ⇒ نشان مینیمال */
.pc3-club-logo img{display:block;width:66%;height:66%;object-fit:contain}
/* مقاوم در برابر تصویر لودنشده: باکس نارنجی هرگز با متن جایگزین (alt) بزرگ نمی‌شود و قاب‌ها متن alt درشت نشان نمی‌دهند
   (alt برای صفحه‌خوان می‌ماند؛ فقط دیده نمی‌شود). با تصویر سالم هیچ تغییری در ظاهر نیست */
.pc3-club-logo{min-height:0;overflow:hidden}
.pc3-club-logo img,.pc3-photo img,.pc3-brand img{font-size:0;color:transparent}
.pc3-club-logo.is-mono img{filter:brightness(0) invert(1) drop-shadow(0 .4cqi .9cqi rgba(110,36,0,.35))}
.pc3-club-logo .pc3-plate{display:grid;place-items:center;width:74%;height:74%;border-radius:2.2cqi;background:#fff;box-shadow:0 .6cqi 1.6cqi -.4cqi rgba(110,36,0,.45)}
.pc3-club-logo .pc3-plate img{width:80%;height:80%}
.pc3-club-logo.is-empty svg{width:50%;height:50%;color:rgba(255,255,255,.94)}
/* لوگوی هیئت روی سطح سبز: نسخه‌ی سفید تک‌رنگ */
.pc3--brand-mono .pc3-brand img{filter:brightness(0) invert(1)}
/* بدون مقصد QR امن ⇒ قاب QR ساخته نمی‌شود (هیچ QR تزئینی) */
.pc3-foot.no-qr{grid-template-columns:auto minmax(0,1fr)}
.pc3-qr{width:19cqi;aspect-ratio:1;border-radius:1.4cqi;background:#fff;padding:0;overflow:hidden;box-shadow:0 1cqi 2.4cqi -1cqi rgba(0,0,0,.55)}
.pc3-qr svg{display:block;width:100%;height:100%}
.pc3-k{display:block;font-size:max(.66rem,2.3cqi);font-weight:400;color:rgba(255,255,255,.78);margin-block-end:1cqi;direction:rtl;text-align:left}
.pc3-v{display:block;font-family:var(--font-lat);font-weight:700;font-size:max(.7rem,3.1cqi);letter-spacing:.08em;color:#fff;white-space:nowrap}
.pc3-id{justify-self:end;text-align:right}
.pc3-id .pc3-k{text-align:right}
.pc3-secret{transition:filter .5s}
.pc3-access{display:inline-flex;align-items:center;gap:1.2cqi;margin-block-start:1.4cqi;font-size:max(.66rem,2.3cqi);color:rgba(255,255,255,.8);direction:rtl}
.pc3-access svg{width:3cqi;height:3cqi;color:#fff}
/* اسلاید «حریم خصوصی» صفحه‌ی اول: داده‌ی حساس و عکس محو می‌شود */
.pc3.is-locked .pc3-secret{filter:blur(.9cqi)}
.pc3.is-locked .pc3-photo img{filter:blur(2.4cqi) saturate(.6)}
/* کارت باریک (موبایل/تبلت): قاب کمی بلندتر تا محتوا جا شود */
@media (max-width:920px){
  .pc3{--rx:5deg;--ry:8deg;--rz:-1.2deg;aspect-ratio:1.36}
  .pc3-face{column-gap:3.4cqi;padding:4cqi 4.4cqi 0}
  .pc3-foot{margin-inline:-4.4cqi;padding:2.2cqi 4.4cqi 2.6cqi}
  .pc3-qr{width:20cqi}
}
/* ===== خروجی PNG/چاپ: همان کارت، صاف و رو‌به‌رو؛ بدون ضخامت، سایه، بازتاب، حرکت و پس‌زمینه‌ی نمایشی ===== */
.pc3.pc3--export{width:860px;aspect-ratio:1.5;transform:none;transition:none}
.pc3--export .pc3-face{column-gap:4cqi;padding:4.4cqi 4.8cqi 0;box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.pc3--export.is-flat .pc3-face{box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.pc3--export .pc3-foot{margin-inline:-4.8cqi;padding:2.4cqi 4.8cqi 2.8cqi}
.pc3--export .pc3-qr{width:19cqi;box-shadow:none}
.pc3--export .pc3-sheen{display:none}
.pc3--export:not(.pc3--brand-mono) .pc3-brand img{filter:none}
/* صفحه‌ی استعلام عمومی: همان کارت، صاف و رو‌به‌رو، هم‌عرض ظرف */
.pc3.pc3--public{transform:none;transition:none}
/* فایل چاپ رسمی (ID-1): ۸۵٫۶×۵۳٫۹۸ + Bleed ۲ ⇒ ۸۹٫۶×۵۷٫۹۸ میلی‌متر؛ ۱۰۵۸px در ۳۰۰DPI ⇒ خروجی ×۲ = ۶۰۰DPI.
   حاشیه‌ی امن: Bleed ۲ + امن ۳ = ۵ میلی‌متر ≈ ۵٫۶cqi از لبه‌ی بیرونی. گوشه‌ی تیز (برش قالب گرد می‌کند)، بدون سایه/tilt */
.pc3.pc3--export.pc3--print{width:1058px;aspect-ratio:89.6/57.98}
.pc3--export.pc3--print .pc3-face{border-radius:0;padding:5.6cqi 5.8cqi 0;box-shadow:none}
.pc3--export.pc3--print .pc3-face::after{inset-inline-start:2.4cqi}
/* ID-1 از ۳:۲ کوتاه‌تر است و حاشیه‌ی امن هم جا می‌گیرد ⇒ ردیف میانی باید جا داشته باشد تا اطلاعات و باکس نارنجی روی نوار پایین نیفتند:
   QR چاپی ۱۶cqi (≈۱۴ میلی‌متر، اسکن‌پذیر) و فاصله‌ی بالای نوار پایین کمتر؛ بقیه‌ی طراحی همان کارت اصلی */
.pc3--export.pc3--print .pc3-foot{margin-inline:-5.8cqi;padding:1.4cqi 5.8cqi 5.8cqi}
.pc3--export.pc3--print .pc3-qr{width:16cqi}
@media (prefers-reduced-motion:reduce){
  .pc3{transition:none}
  .pc3-photo img,.pc3-secret{transition:none}
}
