/* ==========================================================================
   Fanyar UI 2026 — Design System
   فایل مشترک سیستم طراحی فن‌یار (بدون CDN، بدون وابستگی خارجی)
   --------------------------------------------------------------------------
   1. Fonts           5. Layout & primitives     9. Command palette
   2. Tokens          6. Components              10. Toasts / progress
   3. Legacy bridge   7. Header & navigation     11. Footer
   4. Base            8. Mobile nav & sheet      12. Utilities
   ========================================================================== */

/* 1. Fonts ---------------------------------------------------------------- */
@font-face{font-family:"Vazirmatn FD";src:url("fonts/Vazirmatn-FD-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Vazirmatn FD";src:url("fonts/Vazirmatn-FD-Medium.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Vazirmatn FD";src:url("fonts/Vazirmatn-FD-SemiBold.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Vazirmatn FD";src:url("fonts/Vazirmatn-FD-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Vazirmatn FD";src:url("fonts/Vazirmatn-FD-ExtraBold.woff2") format("woff2");font-weight:800;font-display:swap}
@font-face{font-family:"Vazirmatn FD";src:url("fonts/Vazirmatn-FD-Black.woff2") format("woff2");font-weight:900;font-display:swap}
/* نام‌های قدیمی که در صفحات مختلف استفاده شده‌اند به همین فونت اشاره می‌کنند */
@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-FD-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Vazirmatn";src:url("fonts/Vazirmatn-FD-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Vazir";src:url("fonts/Vazirmatn-FD-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Vazir";src:url("fonts/Vazirmatn-FD-Bold.woff2") format("woff2");font-weight:700;font-display:swap}

/* 2. Tokens --------------------------------------------------------------- */
:root,
html[data-theme="light"]{
  color-scheme:light;
  --fx-font:"Vazirmatn FD","Vazirmatn",Tahoma,system-ui,-apple-system,"Segoe UI",sans-serif;

  --fx-bg:#f4f5f8;
  --fx-bg-grad:radial-gradient(1200px 500px at 85% -120px,rgba(255,106,43,.08),transparent 60%),radial-gradient(900px 420px at -10% 0,rgba(59,108,255,.05),transparent 60%);
  --fx-surface:#ffffff;
  --fx-surface-2:#f7f8fa;
  --fx-surface-3:#eef0f4;
  --fx-elev:#ffffff;
  --fx-glass:rgba(255,255,255,.78);
  --fx-border:#e6e8ee;
  --fx-border-strong:#d3d7e0;

  --fx-text:#0e1320;
  --fx-text-2:#4a5263;
  --fx-text-3:#8a91a1;

  --fx-brand:#f0602a;
  --fx-brand-600:#d64f1c;
  --fx-brand-700:#b53f12;
  --fx-brand-soft:#fff1ea;
  --fx-brand-soft-2:#ffe2d3;
  --fx-brand-ink:#a23a0f;
  --fx-on-brand:#ffffff;
  --fx-brand-grad:linear-gradient(135deg,#ff7a3d 0%,#f0602a 45%,#e0431b 100%);

  --fx-ink:#0c111c;           /* سطح تیره برای hero و فوتر */
  --fx-ink-2:#151c2b;
  --fx-ink-text:#e9edf5;
  --fx-ink-text-2:#98a2b5;

  --fx-success:#12a26b; --fx-success-soft:#e7f7ef; --fx-success-ink:#0b6b47;
  --fx-danger:#e5484d;  --fx-danger-soft:#fdecec;  --fx-danger-ink:#a1262b;
  --fx-warning:#e89b0c; --fx-warning-soft:#fdf4e1; --fx-warning-ink:#8a5a00;
  --fx-info:#3b6cff;    --fx-info-soft:#ebf0ff;    --fx-info-ink:#2146b8;

  --fx-r-xs:8px; --fx-r-sm:10px; --fx-r-md:14px; --fx-r-lg:18px; --fx-r-xl:24px; --fx-r-2xl:32px; --fx-r-full:999px;

  --fx-shadow-xs:0 1px 2px rgba(14,19,32,.05);
  --fx-shadow-sm:0 1px 2px rgba(14,19,32,.04),0 2px 8px -2px rgba(14,19,32,.06);
  --fx-shadow-md:0 2px 4px rgba(14,19,32,.04),0 12px 28px -8px rgba(14,19,32,.12);
  --fx-shadow-lg:0 4px 8px rgba(14,19,32,.04),0 24px 56px -16px rgba(14,19,32,.2);
  --fx-shadow-brand:0 10px 28px -8px rgba(240,96,42,.55);
  --fx-ring:0 0 0 4px rgba(240,96,42,.18);

  --fx-ease:cubic-bezier(.2,.8,.2,1);
  --fx-ease-spring:cubic-bezier(.34,1.56,.64,1);
  --fx-dur:.18s;

  --fx-header-h:68px;
  --fx-container:1320px;
  --fx-gutter:clamp(14px,3vw,28px);
}

html[data-theme="dark"]{
  color-scheme:dark;
  --fx-bg:#07090e;
  --fx-bg-grad:radial-gradient(1100px 500px at 85% -140px,rgba(255,106,43,.10),transparent 60%),radial-gradient(900px 420px at -10% 0,rgba(59,108,255,.07),transparent 60%);
  --fx-surface:#0f131c;
  --fx-surface-2:#141925;
  --fx-surface-3:#1b2130;
  --fx-elev:#161b27;
  --fx-glass:rgba(12,15,23,.72);
  --fx-border:#222938;
  --fx-border-strong:#2f3748;

  --fx-text:#edf0f6;
  --fx-text-2:#aeb5c4;
  --fx-text-3:#737c8f;

  --fx-brand:#ff6d36;
  --fx-brand-600:#ff814f;
  --fx-brand-700:#ff9669;
  --fx-brand-soft:rgba(255,109,54,.12);
  --fx-brand-soft-2:rgba(255,109,54,.2);
  --fx-brand-ink:#ffae89;

  --fx-ink:#0a0d14;
  --fx-ink-2:#121724;

  --fx-success:#2cc486; --fx-success-soft:rgba(44,196,134,.12); --fx-success-ink:#6fe0b0;
  --fx-danger:#ff5f64;  --fx-danger-soft:rgba(255,95,100,.12);  --fx-danger-ink:#ff9ea1;
  --fx-warning:#ffb224; --fx-warning-soft:rgba(255,178,36,.12); --fx-warning-ink:#ffd27a;
  --fx-info:#6b8fff;    --fx-info-soft:rgba(107,143,255,.13);   --fx-info-ink:#a9bdff;

  --fx-shadow-xs:0 1px 2px rgba(0,0,0,.4);
  --fx-shadow-sm:0 1px 2px rgba(0,0,0,.35),0 2px 8px -2px rgba(0,0,0,.4);
  --fx-shadow-md:0 2px 4px rgba(0,0,0,.3),0 14px 30px -10px rgba(0,0,0,.6);
  --fx-shadow-lg:0 4px 10px rgba(0,0,0,.35),0 28px 60px -16px rgba(0,0,0,.75);
  --fx-shadow-brand:0 10px 30px -10px rgba(255,109,54,.6);
  --fx-ring:0 0 0 4px rgba(255,109,54,.25);
}

/* 3. Legacy bridge --------------------------------------------------------
   صفحات قدیمی هرکدام پالت رنگی جداگانه داشتند. این بخش با specificity بالاتر
   از :root همه متغیرهای قدیمی را به توکن‌های جدید متصل می‌کند تا کل سایت
   یک‌دست و سازگار با حالت تاریک شود.                                          */
html[data-theme]{
  --bg-primary:var(--fx-bg); --bg-secondary:var(--fx-surface); --bg-card:var(--fx-surface);
  --bg-card-hover:var(--fx-surface-2); --bg-soft:var(--fx-surface-2); --bg-soft-hover:var(--fx-surface-3);
  --bg-section:var(--fx-surface-2); --bg-light:var(--fx-surface-2); --bg-hover:var(--fx-surface-3);
  --bg-page:var(--fx-bg); --bg:var(--fx-bg); --bg-surface:var(--fx-surface); --bg-surface-alt:var(--fx-surface-2);
  --bg-input:var(--fx-surface-2);
  --bg-gradient:var(--fx-brand-grad); --bg-gradient-soft:linear-gradient(135deg,var(--fx-brand-soft),var(--fx-surface));
  --bg-gradient-success:linear-gradient(135deg,var(--fx-success),#0e8a5a);

  --text-primary:var(--fx-text); --text-secondary:var(--fx-text-2); --text-muted:var(--fx-text-3);
  --text:var(--fx-text); --text-title:var(--fx-text); --text-body:var(--fx-text-2); --text-dim:var(--fx-text-2); --text-faint:var(--fx-text-3);
  --ink:var(--fx-text); --ink-soft:var(--fx-text-2); --navy:var(--fx-text); --dark:var(--fx-text); --gray:var(--fx-text-3); --light:var(--fx-surface-2);

  --accent:var(--fx-brand); --accent-dark:var(--fx-brand-600); --accent-hover:var(--fx-brand-600); --accent-strong:var(--fx-brand-600);
  --accent-light:var(--fx-brand-soft); --accent-glow:rgba(240,96,42,.35);
  --primary:var(--fx-brand); --primary-dark:var(--fx-brand-600); --primary-hover:var(--fx-brand-600); --primary-light:var(--fx-brand-soft);
  --brand:var(--fx-brand); --brand-soft:var(--fx-brand-soft);
  --copper:var(--fx-brand); --copper-dark:var(--fx-brand-600); --copper-light:var(--fx-brand-soft-2); --copper-soft:var(--fx-brand-soft); --copper-bg:var(--fx-brand-soft);
  --gold:var(--fx-brand); --gold-light:var(--fx-brand-soft);
  --color-primary:var(--fx-brand); --color-primary-dark:var(--fx-brand-600); --color-secondary:var(--fx-text-2);
  --color-success:var(--fx-success); --color-warning:var(--fx-warning); --color-danger:var(--fx-danger); --color-info:var(--fx-info);
  --color-bg:var(--fx-bg); --color-card:var(--fx-surface); --color-text:var(--fx-text); --color-text-muted:var(--fx-text-3);

  --success:var(--fx-success); --success-soft:var(--fx-success-soft); --success-light:var(--fx-success-soft);
  --danger:var(--fx-danger); --danger-soft:var(--fx-danger-soft); --danger-light:var(--fx-danger-soft);
  --warning:var(--fx-warning); --warning-soft:var(--fx-warning-soft); --warning-light:var(--fx-warning-soft);
  --info:var(--fx-info); --info-soft:var(--fx-info-soft);
  --live:var(--fx-success); --live-soft:var(--fx-success-soft); --live-bg:var(--fx-success-soft);
  --violet:#7c5cff; --violet-soft:rgba(124,92,255,.12); --pink:#e8488b; --pink-soft:rgba(232,72,139,.12);

  --border:var(--fx-border); --border-color:var(--fx-border); --border-light:var(--fx-border); --border-soft:var(--fx-border);
  --border-strong:var(--fx-border-strong); --border-focus:var(--fx-brand);

  --shadow-sm:var(--fx-shadow-sm); --shadow:var(--fx-shadow-sm); --shadow-md:var(--fx-shadow-md); --shadow-lg:var(--fx-shadow-lg);
  --shadow-xl:var(--fx-shadow-lg); --shadow-hover:var(--fx-shadow-md); --shadow-input:none; --card-shadow:var(--fx-shadow-sm); --hover-shadow:var(--fx-shadow-md);

  --radius-sm:var(--fx-r-sm); --radius-md:var(--fx-r-md); --radius-lg:var(--fx-r-lg); --radius-xl:var(--fx-r-xl); --radius:var(--fx-r-md); --radius-card:var(--fx-r-lg);
  --transition:all var(--fx-dur) var(--fx-ease); --ease:var(--fx-ease);
  --font-heading:var(--fx-font);

  --sent-bg:var(--fx-brand); --sent-text:#fff; --received-bg:var(--fx-surface-2); --received-text:var(--fx-text);

  /* product_detail.php */
  --pd-bg:var(--fx-bg); --pd-surface:var(--fx-surface); --pd-surface-2:var(--fx-surface-2); --pd-surface-3:var(--fx-surface-3);
  --pd-ink:var(--fx-text); --pd-ink-2:var(--fx-text-2); --pd-muted:var(--fx-text-3); --pd-line:var(--fx-border); --pd-line-soft:var(--fx-surface-3);
  --pd-brand:var(--fx-brand); --pd-brand-2:var(--fx-brand-600); --pd-brand-3:var(--fx-brand-700); --pd-brand-soft:var(--fx-brand-soft);
  --pd-green:var(--fx-success); --pd-green-soft:var(--fx-success-soft); --pd-amber:var(--fx-warning); --pd-amber-soft:var(--fx-warning-soft);
  --pd-red:var(--fx-danger); --pd-red-soft:var(--fx-danger-soft);
  --pd-gradient:var(--fx-brand-grad); --pd-gradient-2:linear-gradient(135deg,var(--fx-ink),var(--fx-ink-2)); --pd-gradient-3:linear-gradient(135deg,var(--fx-brand-soft),var(--fx-surface));
  --pd-radius:var(--fx-r-lg); --pd-radius-sm:var(--fx-r-sm); --pd-radius-lg:var(--fx-r-xl); --pd-radius-xl:var(--fx-r-2xl);
  --pd-shadow-xs:var(--fx-shadow-xs); --pd-shadow:var(--fx-shadow-sm); --pd-shadow-md:var(--fx-shadow-md); --pd-shadow-lg:var(--fx-shadow-lg); --pd-shadow-xl:var(--fx-shadow-lg); --pd-shadow-brand:var(--fx-shadow-brand);
  --pd-font:var(--fx-font); --pd-transition:all var(--fx-dur) var(--fx-ease);

  /* mechanic_prices.php */
  --mp-bg:var(--fx-bg); --mp-bg-dark:var(--fx-ink); --mp-surface:var(--fx-surface); --mp-surface-2:var(--fx-surface-2); --mp-surface-3:var(--fx-surface-3);
  --mp-text:var(--fx-text); --mp-text-secondary:var(--fx-text-2); --mp-text-muted:var(--fx-text-3); --mp-border:var(--fx-border); --mp-border-soft:var(--fx-surface-3);
  --mp-brand:var(--fx-brand); --mp-brand-2:var(--fx-brand-600); --mp-brand-hover:var(--fx-brand-600); --mp-brand-soft:var(--fx-brand-soft);
  --mp-accent:var(--fx-success); --mp-accent-soft:var(--fx-success-soft); --mp-warning:var(--fx-warning); --mp-warning-soft:var(--fx-warning-soft);
  --mp-danger:var(--fx-danger); --mp-danger-soft:var(--fx-danger-soft);
  --mp-gradient:linear-gradient(135deg,var(--fx-ink) 0%,var(--fx-ink-2) 100%); --mp-gradient-2:var(--fx-brand-grad);
  --mp-radius:var(--fx-r-md); --mp-radius-sm:var(--fx-r-sm); --mp-radius-lg:var(--fx-r-lg); --mp-radius-xl:var(--fx-r-xl);
  --mp-shadow-xs:var(--fx-shadow-xs); --mp-shadow:var(--fx-shadow-sm); --mp-shadow-md:var(--fx-shadow-md); --mp-shadow-lg:var(--fx-shadow-lg); --mp-shadow-xl:var(--fx-shadow-lg);
  --mp-font:var(--fx-font); --mp-transition:all var(--fx-dur) var(--fx-ease);

  /* repair_acceptance.php */
  --rf-bg:var(--fx-bg); --rf-surface:var(--fx-surface); --rf-surface-alt:var(--fx-surface-2); --rf-ink:var(--fx-ink);
  --rf-text-title:var(--fx-text); --rf-text-body:var(--fx-text-2); --rf-text-muted:var(--fx-text-3);
  --rf-brand:var(--fx-brand); --rf-brand-dark:var(--fx-brand-600); --rf-brand-soft:var(--fx-brand-soft); --rf-brand-light:var(--fx-brand-soft);
  --rf-success:var(--fx-success); --rf-success-soft:var(--fx-success-soft); --rf-warning:var(--fx-warning); --rf-warning-soft:var(--fx-warning-soft);
  --rf-danger:var(--fx-danger); --rf-danger-soft:var(--fx-danger-soft); --rf-border:var(--fx-border);
  --rf-shadow-sm:var(--fx-shadow-sm); --rf-shadow-md:var(--fx-shadow-md); --rf-shadow-lg:var(--fx-shadow-lg);
  --rf-radius-md:var(--fx-r-md); --rf-transition:all var(--fx-dur) var(--fx-ease);
}

/* 4. Base ----------------------------------------------------------------- */
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:.22s}
html{overflow-x:clip;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--fx-header-h) + 16px)}
html[data-theme] body{
  overflow-x:clip;margin:0;min-height:100vh;min-height:100dvh;
  background:var(--fx-bg);background-image:var(--fx-bg-grad);background-attachment:fixed;background-repeat:no-repeat;
  color:var(--fx-text);font-family:var(--fx-font);font-size:15px;line-height:1.7;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;
  font-feature-settings:"ss01";
}
/* ریست سراسری (سازگار با ریست قبلی سایت که صفحات به آن وابسته‌اند) */
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:where(a){color:inherit;text-decoration:none}
:where(button){color:inherit}
html[data-theme] :is(button,input,select,textarea,optgroup){font-family:inherit}
html[data-theme] :is(h1,h2,h3,h4,h5,h6){font-family:var(--fx-font)}
:where(html[data-theme]) *,:where(html[data-theme]) *::before,:where(html[data-theme]) *::after{box-sizing:border-box}
::selection{background:var(--fx-brand);color:#fff}
:where(html[data-theme]) :focus-visible{outline:2px solid var(--fx-brand);outline-offset:2px;border-radius:6px}
:where(html[data-theme]) img{max-width:100%}
@supports (scrollbar-color:auto){html{scrollbar-color:var(--fx-border-strong) transparent;scrollbar-width:thin}}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--fx-border-strong);border-radius:10px;border:3px solid var(--fx-bg)}
::-webkit-scrollbar-track{background:transparent}

/* فرم‌های صفحات قدیمی در حالت تاریک خوانا بمانند (کمترین اولویت) */
html[data-theme="dark"] :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),select,textarea){background-color:var(--fx-surface-2);color:var(--fx-text);border-color:var(--fx-border)}
html[data-theme="dark"] :where(table){color:var(--fx-text)}
html[data-theme="dark"] :where(th){background-color:var(--fx-surface-2)}
html[data-theme="dark"] :where(hr){border-color:var(--fx-border)}
:where(html[data-theme]) input::placeholder,:where(html[data-theme]) textarea::placeholder{color:var(--fx-text-3)}

[hidden]{display:none!important}
.fx-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.fx-skip{position:fixed;top:-60px;right:16px;z-index:5000;background:var(--fx-brand);color:#fff;padding:10px 16px;border-radius:var(--fx-r-sm);font-weight:700;transition:top .2s}
.fx-skip:focus{top:12px}
.fx-icon{display:inline-block;flex-shrink:0;vertical-align:middle}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  @view-transition{navigation:none}
}

/* 5. Layout & primitives -------------------------------------------------- */
.fx-container{width:100%;max-width:var(--fx-container);margin-inline:auto;padding-inline:var(--fx-gutter)}
.fx-main{padding-block:24px 64px;min-height:60vh}
.fx-stack{display:flex;flex-direction:column;gap:var(--gap,16px)}
.fx-row{display:flex;align-items:center;gap:var(--gap,12px);flex-wrap:wrap}
.fx-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.fx-grid{display:grid;gap:var(--gap,16px);grid-template-columns:repeat(auto-fill,minmax(var(--min,240px),1fr))}
.fx-muted{color:var(--fx-text-3)}
.fx-text-2{color:var(--fx-text-2)}
.fx-num{font-variant-numeric:tabular-nums}
.fx-eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--fx-brand-ink);background:var(--fx-brand-soft);padding:6px 12px;border-radius:var(--fx-r-full)}
html[data-theme="dark"] .fx-eyebrow{color:var(--fx-brand-700)}
.fx-h1{font-size:clamp(28px,4.4vw,54px);line-height:1.15;font-weight:900;letter-spacing:-.02em;margin:0}
.fx-h2{font-size:clamp(20px,2.2vw,26px);line-height:1.3;font-weight:800;letter-spacing:-.01em;margin:0}
.fx-h3{font-size:17px;line-height:1.45;font-weight:800;margin:0}
.fx-lead{font-size:clamp(15px,1.5vw,17px);color:var(--fx-text-2);line-height:1.95;margin:0}

/* 6. Components ----------------------------------------------------------- */
/* Buttons */
.fx-btn{--h:44px;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:var(--h);padding:0 18px;border-radius:var(--fx-r-md);
  font:inherit;font-size:14px;font-weight:700;line-height:1;white-space:nowrap;cursor:pointer;text-decoration:none;user-select:none;
  border:1px solid transparent;transition:transform var(--fx-dur) var(--fx-ease),background-color var(--fx-dur),border-color var(--fx-dur),color var(--fx-dur),box-shadow var(--fx-dur);
  -webkit-tap-highlight-color:transparent}
.fx-btn:active{transform:scale(.97)}
.fx-btn[disabled],.fx-btn[aria-disabled=true]{opacity:.55;pointer-events:none}
.fx-btn--primary{background:var(--fx-brand);color:var(--fx-on-brand);box-shadow:var(--fx-shadow-brand),inset 0 1px 0 rgba(255,255,255,.18)}
.fx-btn--primary:hover{background:var(--fx-brand-600);color:#fff}
.fx-btn--dark{background:var(--fx-text);color:var(--fx-surface)}
.fx-btn--dark:hover{opacity:.9}
.fx-btn--secondary{background:var(--fx-surface);color:var(--fx-text);border-color:var(--fx-border);box-shadow:var(--fx-shadow-xs)}
.fx-btn--secondary:hover{border-color:var(--fx-border-strong);background:var(--fx-surface-2)}
.fx-btn--ghost{background:transparent;color:var(--fx-text-2)}
.fx-btn--ghost:hover{background:var(--fx-surface-3);color:var(--fx-text)}
.fx-btn--soft{background:var(--fx-brand-soft);color:var(--fx-brand-ink)}
html[data-theme="dark"] .fx-btn--soft{color:var(--fx-brand-700)}
.fx-btn--soft:hover{background:var(--fx-brand-soft-2)}
.fx-btn--danger{background:var(--fx-danger-soft);color:var(--fx-danger)}
.fx-btn--danger:hover{background:var(--fx-danger);color:#fff}
.fx-btn--glass{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.14);backdrop-filter:blur(10px)}
.fx-btn--glass:hover{background:rgba(255,255,255,.14)}
.fx-btn--sm{--h:36px;padding:0 13px;font-size:13px;border-radius:var(--fx-r-sm)}
.fx-btn--lg{--h:52px;padding:0 24px;font-size:15px;border-radius:var(--fx-r-lg)}
.fx-btn--block{width:100%}
.fx-btn .fx-spinner{width:16px;height:16px}
.fx-icon-btn{position:relative;display:inline-grid;place-items:center;width:40px;height:40px;border-radius:var(--fx-r-md);border:1px solid transparent;background:transparent;color:var(--fx-text-2);cursor:pointer;transition:all var(--fx-dur) var(--fx-ease);-webkit-tap-highlight-color:transparent}
.fx-icon-btn:hover{background:var(--fx-surface-3);color:var(--fx-text)}
.fx-icon-btn--outline{border-color:var(--fx-border);background:var(--fx-surface)}
.fx-dot{position:absolute;top:6px;left:6px;min-width:18px;height:18px;padding:0 5px;border-radius:var(--fx-r-full);background:var(--fx-danger);color:#fff;font-size:10.5px;font-weight:800;display:none;align-items:center;justify-content:center;border:2px solid var(--fx-surface);line-height:1}
.fx-dot.is-on{display:inline-flex;animation:fx-pop .35s var(--fx-ease-spring)}
@keyframes fx-pop{from{transform:scale(.4)}to{transform:scale(1)}}

/* Spinner */
.fx-spinner{display:inline-block;width:20px;height:20px;border-radius:50%;border:2.5px solid currentColor;border-inline-end-color:transparent;animation:fx-spin .7s linear infinite;opacity:.9}
@keyframes fx-spin{to{transform:rotate(360deg)}}

/* Card */
.fx-card{background:var(--fx-surface);border:1px solid var(--fx-border);border-radius:var(--fx-r-xl);box-shadow:var(--fx-shadow-xs)}
.fx-card__pad{padding:clamp(16px,2.4vw,24px)}
.fx-card--hover{transition:transform .22s var(--fx-ease),box-shadow .22s var(--fx-ease),border-color .22s}
.fx-card--hover:hover{transform:translateY(-3px);box-shadow:var(--fx-shadow-md);border-color:var(--fx-border-strong)}

/* Section head */
.fx-section{margin-block:28px}
.fx-section-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:16px}
.fx-section-head p{margin:4px 0 0;color:var(--fx-text-3);font-size:13px}
.fx-link{display:inline-flex;align-items:center;gap:4px;color:var(--fx-text-2);font-weight:700;font-size:13px;text-decoration:none;padding:6px 10px;border-radius:var(--fx-r-sm);transition:all var(--fx-dur)}
.fx-link:hover{color:var(--fx-brand);background:var(--fx-brand-soft)}

/* Badges & chips */
.fx-badge{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 9px;border-radius:var(--fx-r-full);font-size:11.5px;font-weight:700;white-space:nowrap;background:var(--fx-surface-3);color:var(--fx-text-2)}
.fx-badge--brand{background:var(--fx-brand-soft);color:var(--fx-brand-ink)}
.fx-badge--success{background:var(--fx-success-soft);color:var(--fx-success-ink)}
.fx-badge--danger{background:var(--fx-danger-soft);color:var(--fx-danger-ink)}
.fx-badge--warning{background:var(--fx-warning-soft);color:var(--fx-warning-ink)}
.fx-badge--info{background:var(--fx-info-soft);color:var(--fx-info-ink)}
html[data-theme="dark"] .fx-badge--brand{color:var(--fx-brand-700)}
.fx-chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:var(--fx-r-full);border:1px solid var(--fx-border);background:var(--fx-surface);color:var(--fx-text-2);font-size:13px;font-weight:600;text-decoration:none;white-space:nowrap;transition:all var(--fx-dur) var(--fx-ease);cursor:pointer}
.fx-chip:hover{border-color:var(--fx-brand);color:var(--fx-brand)}
.fx-chip.is-active{background:var(--fx-text);border-color:var(--fx-text);color:var(--fx-surface)}
.fx-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:6px;border:1px solid var(--fx-border);border-bottom-width:2px;background:var(--fx-surface-2);color:var(--fx-text-3);font:600 11px/1 ui-monospace,SFMono-Regular,Menlo,monospace;direction:ltr}

/* Form fields */
.fx-field{display:flex;flex-direction:column;gap:7px}
.fx-label{font-size:13px;font-weight:700;color:var(--fx-text-2);display:flex;align-items:center;justify-content:space-between;gap:8px}
.fx-hint{font-size:12px;color:var(--fx-text-3)}
.fx-control{position:relative;display:flex;align-items:center}
.fx-control > .fx-icon{position:absolute;inset-inline-start:14px;color:var(--fx-text-3);pointer-events:none;transition:color var(--fx-dur)}
.fx-control:focus-within > .fx-icon{color:var(--fx-brand)}
.fx-input,.fx-select,.fx-textarea{width:100%;height:48px;padding:0 14px;border-radius:var(--fx-r-md);border:1px solid var(--fx-border);background:var(--fx-surface-2);color:var(--fx-text);font:inherit;font-size:14.5px;outline:none;transition:border-color var(--fx-dur),box-shadow var(--fx-dur),background-color var(--fx-dur);-webkit-appearance:none;appearance:none}
.fx-textarea{height:auto;min-height:120px;padding:12px 14px;resize:vertical;line-height:1.8}
.fx-control > .fx-icon ~ .fx-input{padding-inline-start:44px}
.fx-control > .fx-icon ~ .fx-input--ltr{padding-inline-start:14px;padding-right:44px}
.fx-control:has(.fx-pass-btn) .fx-input:not(.fx-input--ltr){padding-inline-end:48px}
.fx-control:has(.fx-pass-btn) .fx-input--ltr{padding-left:48px}
.fx-input:hover,.fx-select:hover,.fx-textarea:hover{border-color:var(--fx-border-strong)}
.fx-input:focus,.fx-select:focus,.fx-textarea:focus{border-color:var(--fx-brand);background:var(--fx-surface);box-shadow:var(--fx-ring)}
.fx-input[aria-invalid=true]{border-color:var(--fx-danger);box-shadow:0 0 0 4px var(--fx-danger-soft)}
.fx-input--ltr{direction:ltr;text-align:right}
.fx-input--ltr::placeholder{text-align:right}
.fx-select{padding-inline-end:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a91a1' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left 14px center;cursor:pointer}
.fx-select:disabled{opacity:.55;cursor:not-allowed}
.fx-control__end{position:absolute;inset-inline-end:6px;display:flex;gap:4px}
.fx-control__end .fx-icon-btn{width:36px;height:36px}
.fx-check{display:inline-flex;align-items:center;gap:10px;cursor:pointer;font-size:14px;color:var(--fx-text-2)}
.fx-check input{width:20px;height:20px;accent-color:var(--fx-brand)}

/* Alerts */
.fx-alert{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;border-radius:var(--fx-r-lg);border:1px solid transparent;font-size:14px;line-height:1.8}
.fx-alert .fx-icon{margin-top:3px}
.fx-alert--success{background:var(--fx-success-soft);color:var(--fx-success-ink);border-color:color-mix(in srgb,var(--fx-success) 22%,transparent)}
.fx-alert--danger,.fx-alert--error{background:var(--fx-danger-soft);color:var(--fx-danger-ink);border-color:color-mix(in srgb,var(--fx-danger) 22%,transparent)}
.fx-alert--warning{background:var(--fx-warning-soft);color:var(--fx-warning-ink);border-color:color-mix(in srgb,var(--fx-warning) 25%,transparent)}
.fx-alert--info{background:var(--fx-info-soft);color:var(--fx-info-ink);border-color:color-mix(in srgb,var(--fx-info) 22%,transparent)}
.fx-alert a{color:inherit;font-weight:800;text-decoration:underline;text-underline-offset:3px}
.fx-alert[hidden]{display:none}

/* Avatar */
.fx-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;background:var(--fx-surface-3);flex-shrink:0;display:inline-grid;place-items:center;font-weight:800;color:var(--fx-text-2);font-size:14px;overflow:hidden}
.fx-avatar--lg{width:56px;height:56px;font-size:20px}
.fx-avatar img{width:100%;height:100%;object-fit:cover}

/* Skeleton */
.fx-skeleton{background:linear-gradient(90deg,var(--fx-surface-3) 0%,var(--fx-surface-2) 50%,var(--fx-surface-3) 100%);background-size:200% 100%;animation:fx-shimmer 1.3s infinite linear;border-radius:var(--fx-r-sm)}
@keyframes fx-shimmer{to{background-position:-200% 0}}

/* Empty state */
.fx-empty{text-align:center;padding:56px 20px;border:1.5px dashed var(--fx-border-strong);border-radius:var(--fx-r-xl);background:var(--fx-surface)}
.fx-empty__icon{width:64px;height:64px;margin:0 auto 16px;border-radius:20px;display:grid;place-items:center;background:var(--fx-surface-3);color:var(--fx-text-3)}
.fx-empty h3{font-size:17px;margin:0 0 6px;font-weight:800}
.fx-empty p{margin:0 auto;color:var(--fx-text-3);font-size:14px;max-width:420px}

/* Breadcrumb */
.fx-breadcrumb{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--fx-text-3);margin:0 0 16px;padding:0;list-style:none}
.fx-breadcrumb a{color:var(--fx-text-2);text-decoration:none}
.fx-breadcrumb a:hover{color:var(--fx-brand)}
.fx-breadcrumb li{display:inline-flex;align-items:center;gap:6px}
.fx-breadcrumb li + li::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--fx-border-strong)}

/* Pagination */
.fx-pagination{display:flex;justify-content:center;align-items:center;gap:6px;flex-wrap:wrap;margin-top:24px}
.fx-pagination a,.fx-pagination span{min-width:40px;height:40px;padding:0 12px;display:inline-grid;place-items:center;border-radius:var(--fx-r-md);border:1px solid var(--fx-border);background:var(--fx-surface);color:var(--fx-text-2);font-size:14px;font-weight:700;text-decoration:none;transition:all var(--fx-dur)}
.fx-pagination a:hover{border-color:var(--fx-brand);color:var(--fx-brand)}
.fx-pagination a[aria-current=page]{background:var(--fx-text);border-color:var(--fx-text);color:var(--fx-surface)}
.fx-pagination span{border-color:transparent;background:transparent}

/* Dialog (native <dialog>) */
.fx-dialog{margin:auto;border:0;padding:0;background:transparent;max-width:min(520px,calc(100vw - 24px));width:100%;color:var(--fx-text);overflow:visible}
.fx-dialog::backdrop{background:rgba(7,9,14,.55);backdrop-filter:blur(6px)}
.fx-dialog[open]{animation:fx-dialog-in .28s var(--fx-ease)}
@keyframes fx-dialog-in{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.fx-dialog__panel{background:var(--fx-elev);border:1px solid var(--fx-border);border-radius:var(--fx-r-xl);box-shadow:var(--fx-shadow-lg);overflow:hidden}
.fx-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px;border-bottom:1px solid var(--fx-border)}
.fx-dialog__head h3{margin:0;font-size:16px;font-weight:800;display:flex;align-items:center;gap:10px}
.fx-dialog__body{padding:20px;display:flex;flex-direction:column;gap:14px}
.fx-dialog__foot{padding:0 20px 20px}

/* Tables (utility for new pages) */
.fx-table-wrap{overflow:auto;border:1px solid var(--fx-border);border-radius:var(--fx-r-lg);background:var(--fx-surface)}
.fx-table{width:100%;border-collapse:collapse;font-size:14px}
.fx-table th{position:sticky;top:0;background:var(--fx-surface-2);color:var(--fx-text-3);font-weight:700;font-size:12.5px;text-align:start;padding:12px 16px;border-bottom:1px solid var(--fx-border);white-space:nowrap}
.fx-table td{padding:14px 16px;border-bottom:1px solid var(--fx-border)}
.fx-table tr:last-child td{border-bottom:0}
.fx-table tbody tr:hover{background:var(--fx-surface-2)}

/* Tooltip */
[data-tip]{position:relative}
[data-tip]::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%,4px);background:var(--fx-text);color:var(--fx-surface);font-size:12px;font-weight:600;padding:6px 10px;border-radius:8px;white-space:nowrap;pointer-events:none;opacity:0;transition:all .15s var(--fx-ease);z-index:50}
[data-tip]:hover::after,[data-tip]:focus-visible::after{opacity:1;transform:translate(-50%,0)}
@media (hover:none){[data-tip]::after{display:none}}

/* 7. Header & navigation -------------------------------------------------- */
.fx-header{position:sticky;top:0;z-index:1000;background:var(--fx-glass);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid transparent;transition:border-color .2s,box-shadow .2s,background-color .2s}
.fx-header.is-scrolled{border-bottom-color:var(--fx-border);box-shadow:0 6px 24px -18px rgba(14,19,32,.35)}
.fx-header__bar{height:var(--fx-header-h);display:flex;align-items:center;gap:14px}
.fx-logo{display:inline-flex;align-items:center;gap:10px;text-decoration:none;color:var(--fx-text);flex-shrink:0;border-radius:12px}
.fx-logo__mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--fx-brand-grad);color:#fff;box-shadow:var(--fx-shadow-brand),inset 0 1px 0 rgba(255,255,255,.25);transition:transform .35s var(--fx-ease-spring)}
.fx-logo:hover .fx-logo__mark{transform:rotate(-8deg) scale(1.05)}
.fx-logo__text{display:flex;flex-direction:column;line-height:1.15;font-weight:900;font-size:19px;letter-spacing:-.01em}
.fx-logo__text small{font-size:10.5px;font-weight:600;color:var(--fx-text-3);letter-spacing:0}

.fx-nav{display:flex;align-items:center;gap:2px;margin-inline-start:10px;flex:1;min-width:0}
.fx-nav__link{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 12px;border-radius:var(--fx-r-sm);border:0;background:transparent;color:var(--fx-text-2);font:inherit;font-size:14px;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap;transition:color var(--fx-dur),background-color var(--fx-dur)}
.fx-nav__link:hover,.fx-menu.is-open > .fx-nav__link{color:var(--fx-text);background:var(--fx-surface-3)}
.fx-nav__link.is-active{color:var(--fx-text);font-weight:800;position:relative}
.fx-nav__link.is-active::after{content:"";position:absolute;bottom:-14px;inset-inline:12px;height:2.5px;border-radius:3px 3px 0 0;background:var(--fx-brand)}
.fx-nav__link .fx-chev{transition:transform .2s var(--fx-ease);opacity:.6}
.fx-menu.is-open > .fx-nav__link .fx-chev{transform:rotate(180deg)}

.fx-menu{position:relative}
.fx-menu__panel{position:absolute;top:calc(100% + 12px);inset-inline-start:-8px;min-width:300px;padding:8px;border-radius:var(--fx-r-lg);background:var(--fx-elev);border:1px solid var(--fx-border);box-shadow:var(--fx-shadow-lg);opacity:0;visibility:hidden;transform:translateY(-6px) scale(.98);transform-origin:top right;transition:opacity .16s var(--fx-ease),transform .2s var(--fx-ease),visibility .2s;z-index:20}
.fx-menu__panel::before{content:"";position:absolute;inset:-14px 0 auto;height:14px}
.fx-menu.is-open > .fx-menu__panel{opacity:1;visibility:visible;transform:none}
.fx-menu__panel--end{inset-inline-start:auto;inset-inline-end:0;transform-origin:top left}
.fx-menu__title{padding:8px 10px 6px;font-size:11.5px;font-weight:700;color:var(--fx-text-3)}
.fx-menu__item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--fx-r-md);color:var(--fx-text);text-decoration:none;transition:background-color var(--fx-dur);position:relative;border:0;background:transparent;width:100%;font:inherit;text-align:start;cursor:pointer}
.fx-menu__item:hover,.fx-menu__item:focus-visible{background:var(--fx-surface-3);outline:none}
.fx-menu__item.is-active{background:var(--fx-brand-soft)}
.fx-menu__ico{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--fx-surface-2);border:1px solid var(--fx-border);color:var(--fx-text-2);flex-shrink:0;transition:all var(--fx-dur)}
.fx-menu__item:hover .fx-menu__ico,.fx-menu__item.is-active .fx-menu__ico{background:var(--fx-brand);border-color:var(--fx-brand);color:#fff}
.fx-menu__txt{display:flex;flex-direction:column;min-width:0;line-height:1.45}
.fx-menu__txt b{font-size:13.5px;font-weight:700}
.fx-menu__txt small{font-size:11.5px;color:var(--fx-text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fx-menu__item .fx-dot{position:static;margin-inline-start:auto;border:0}
.fx-menu__sep{height:1px;background:var(--fx-border);margin:6px 4px}
.fx-menu__item--danger{color:var(--fx-danger)}
.fx-menu__item--danger .fx-menu__ico{color:var(--fx-danger);background:var(--fx-danger-soft);border-color:transparent}
.fx-menu__item--danger:hover .fx-menu__ico{background:var(--fx-danger);color:#fff;border-color:var(--fx-danger)}

.fx-header__actions{display:flex;align-items:center;gap:6px;margin-inline-start:auto}
.fx-search-trigger{display:inline-flex;align-items:center;gap:10px;height:40px;min-width:220px;padding:0 8px 0 12px;padding-inline:12px 8px;border-radius:var(--fx-r-md);border:1px solid var(--fx-border);background:var(--fx-surface-2);color:var(--fx-text-3);font:inherit;font-size:13.5px;cursor:pointer;transition:all var(--fx-dur)}
.fx-search-trigger:hover{border-color:var(--fx-border-strong);color:var(--fx-text-2);background:var(--fx-surface)}
.fx-search-trigger span{flex:1;text-align:start}
.fx-user-btn{display:inline-flex;align-items:center;gap:10px;height:44px;padding:3px;padding-inline-end:12px;border-radius:var(--fx-r-full);border:1px solid var(--fx-border);background:var(--fx-surface);cursor:pointer;font:inherit;color:var(--fx-text);transition:all var(--fx-dur)}
.fx-user-btn:hover,.fx-menu.is-open > .fx-user-btn{border-color:var(--fx-border-strong);box-shadow:var(--fx-shadow-sm)}
.fx-user-btn .fx-avatar{width:36px;height:36px}
.fx-user-btn__txt{display:flex;flex-direction:column;align-items:flex-start;line-height:1.25;max-width:140px}
.fx-user-btn__txt b{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.fx-user-btn__txt small{font-size:11px;color:var(--fx-text-3)}
.fx-balance{margin:4px 4px 8px;padding:14px;border-radius:var(--fx-r-md);background:linear-gradient(135deg,var(--fx-ink),var(--fx-ink-2));color:var(--fx-ink-text);position:relative;overflow:hidden}
.fx-balance::after{content:"";position:absolute;width:140px;height:140px;border-radius:50%;background:radial-gradient(circle,rgba(255,109,54,.45),transparent 65%);top:-60px;left:-40px}
.fx-balance small{display:block;font-size:11.5px;color:var(--fx-ink-text-2)}
.fx-balance strong{display:block;font-size:20px;font-weight:900;margin-top:2px;letter-spacing:-.01em;position:relative;z-index:1}
.fx-balance em{font-style:normal;font-size:11px;font-weight:800;padding:3px 8px;border-radius:999px;position:absolute;top:12px;inset-inline-end:12px;z-index:1}
.fx-balance em.is-pos{background:rgba(44,196,134,.18);color:#6fe0b0}
.fx-balance em.is-neg{background:rgba(255,95,100,.18);color:#ff9ea1}
.fx-user-head{display:flex;align-items:center;gap:12px;padding:10px 8px 12px}
.fx-user-head b{display:block;font-size:14.5px;font-weight:800}
.fx-user-head small{color:var(--fx-text-3);font-size:12px}

.fx-theme-btn .fx-i-sun{display:none}
html[data-theme="dark"] .fx-theme-btn .fx-i-sun{display:inline-block}
html[data-theme="dark"] .fx-theme-btn .fx-i-moon{display:none}

.fx-only-mobile{display:none!important}
@media (max-width:1180px){
  .fx-nav,.fx-search-trigger span,.fx-search-trigger .fx-kbd,.fx-user-btn__txt{display:none}
  .fx-search-trigger{min-width:0;width:40px;padding:0;justify-content:center}
  .fx-user-btn{padding-inline-end:3px}
  .fx-only-mobile{display:inline-grid!important}
}
@media (max-width:720px){
  :root{--fx-header-h:60px}
  .fx-logo__text small{display:none}
  .fx-logo__mark{width:34px;height:34px}
  .fx-hide-sm{display:none!important}
  .fx-header__actions{gap:2px}
}

/* Flash area */
.fx-flash{display:flex;flex-direction:column;gap:10px;margin-top:16px}

/* 8. Mobile tabbar & sheet ------------------------------------------------ */
.fx-tabbar{display:none}
@media (max-width:720px){
  .fx-tabbar{position:fixed;inset-inline:10px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:990;display:grid;grid-template-columns:repeat(5,1fr);align-items:center;height:64px;padding:0 6px;border-radius:22px;background:var(--fx-glass);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border:1px solid var(--fx-border);box-shadow:var(--fx-shadow-lg);transition:transform .3s var(--fx-ease)}
  .fx-tabbar.is-hidden{transform:translateY(130%)}
  .fx-tabbar a,.fx-tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:100%;border:0;background:none;color:var(--fx-text-3);font:inherit;font-size:10.5px;font-weight:700;text-decoration:none;position:relative;-webkit-tap-highlight-color:transparent;cursor:pointer}
  .fx-tabbar a.is-active{color:var(--fx-brand)}
  .fx-tabbar a.is-active::before{content:"";position:absolute;top:6px;width:4px;height:4px;border-radius:50%;background:var(--fx-brand);display:none}
  .fx-tabbar .fx-tab-fab{width:52px;height:52px;margin:0 auto;border-radius:18px;background:var(--fx-brand-grad);color:#fff;display:grid;place-items:center;box-shadow:var(--fx-shadow-brand);transform:translateY(-14px);border:4px solid var(--fx-bg)}
  .fx-tabbar .fx-dot{top:6px;left:calc(50% - 20px)}
  body.fx-has-tabbar:not(:has(.fx-footer)){padding-bottom:calc(86px + env(safe-area-inset-bottom))}
  body.fx-has-tabbar .fx-footer{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
  .fx-btn .fx-kbd{display:none}
  body.fx-has-tabbar .fx-to-top{bottom:calc(92px + env(safe-area-inset-bottom))}
}

.fx-sheet-backdrop{position:fixed;inset:0;background:rgba(7,9,14,.5);backdrop-filter:blur(4px);z-index:1990;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s}
.fx-sheet-backdrop.is-open{opacity:1;visibility:visible}
.fx-sheet{position:fixed;top:0;bottom:0;inset-inline-start:0;width:min(380px,92vw);z-index:2000;background:var(--fx-elev);border-inline-end:1px solid var(--fx-border);box-shadow:var(--fx-shadow-lg);transform:translateX(105%);visibility:hidden;transition:transform .32s var(--fx-ease),visibility .32s;display:flex;flex-direction:column;overscroll-behavior:contain}
.fx-sheet.is-open{transform:none;visibility:visible}
.fx-sheet__head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--fx-border)}
.fx-sheet__body{flex:1;overflow-y:auto;padding:12px 12px calc(24px + env(safe-area-inset-bottom))}
.fx-sheet__group{margin-bottom:10px}
.fx-sheet__group > b{display:block;padding:10px 10px 4px;font-size:11.5px;color:var(--fx-text-3);font-weight:700}
.fx-sheet .fx-user-card{display:flex;align-items:center;gap:12px;padding:14px;border-radius:var(--fx-r-lg);background:var(--fx-surface-2);border:1px solid var(--fx-border);margin-bottom:8px}
.fx-sheet .fx-user-card b{display:block;font-weight:800}
.fx-sheet .fx-user-card small{color:var(--fx-text-3);font-size:12px}
.fx-sheet__cta{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:4px}

/* 9. Command palette ------------------------------------------------------ */
.fx-cmdk{max-width:min(640px,calc(100vw - 20px));margin-top:min(12vh,110px);margin-bottom:auto}
.fx-cmdk .fx-dialog__panel{display:flex;flex-direction:column;max-height:min(70vh,560px)}
.fx-cmdk__search{display:flex;align-items:center;gap:10px;padding:6px 16px;border-bottom:1px solid var(--fx-border)}
.fx-cmdk__search .fx-icon{color:var(--fx-text-3)}
.fx-cmdk__search input::-webkit-search-cancel-button{display:none}
.fx-cmdk__search input{flex:1;height:52px;border:0;outline:0;background:transparent;color:var(--fx-text);font:inherit;font-size:16px}
.fx-cmdk__list{overflow-y:auto;padding:8px;flex:1}
.fx-cmdk__group{padding:10px 10px 4px;font-size:11.5px;font-weight:700;color:var(--fx-text-3)}
.fx-cmdk__item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:var(--fx-r-md);color:var(--fx-text);text-decoration:none;cursor:pointer;scroll-margin:8px}
.fx-cmdk__item[aria-selected=true]{background:var(--fx-brand-soft)}
.fx-cmdk__item[aria-selected=true] .fx-menu__ico{background:var(--fx-brand);border-color:var(--fx-brand);color:#fff}
.fx-cmdk__item .fx-go{margin-inline-start:auto;color:var(--fx-text-3);opacity:0}
.fx-cmdk__item[aria-selected=true] .fx-go{opacity:1}
.fx-cmdk__item mark{background:transparent;color:var(--fx-brand);font-weight:800}
.fx-cmdk__empty{padding:32px 16px;text-align:center;color:var(--fx-text-3);font-size:14px}
.fx-cmdk__foot{display:flex;align-items:center;gap:14px;padding:10px 16px;border-top:1px solid var(--fx-border);font-size:12px;color:var(--fx-text-3);background:var(--fx-surface-2)}
.fx-cmdk__foot span{display:inline-flex;align-items:center;gap:6px}
@media (max-width:720px){.fx-cmdk{margin-top:10px}.fx-cmdk__foot{display:none}}

/* 10. Toasts / progress / to-top ------------------------------------------ */
.fx-toasts{position:fixed;z-index:3000;bottom:24px;inset-inline-end:24px;display:flex;flex-direction:column;gap:10px;width:min(380px,calc(100vw - 32px));pointer-events:none}
@media (max-width:720px){.fx-toasts{top:calc(10px + env(safe-area-inset-top));bottom:auto;inset-inline:16px;width:auto}}
.fx-toast{pointer-events:auto;display:flex;align-items:flex-start;gap:12px;padding:14px 14px 14px 12px;border-radius:var(--fx-r-lg);background:var(--fx-elev);border:1px solid var(--fx-border);box-shadow:var(--fx-shadow-lg);color:var(--fx-text);font-size:14px;line-height:1.7;animation:fx-toast-in .38s var(--fx-ease-spring);position:relative;overflow:hidden}
.fx-toast.is-out{animation:fx-toast-out .25s var(--fx-ease) forwards}
@keyframes fx-toast-in{from{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:none}}
@keyframes fx-toast-out{to{opacity:0;transform:translateY(8px) scale(.97)}}
.fx-toast__ico{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex-shrink:0}
.fx-toast--success .fx-toast__ico{background:var(--fx-success-soft);color:var(--fx-success)}
.fx-toast--error .fx-toast__ico{background:var(--fx-danger-soft);color:var(--fx-danger)}
.fx-toast--warning .fx-toast__ico{background:var(--fx-warning-soft);color:var(--fx-warning)}
.fx-toast--info .fx-toast__ico{background:var(--fx-info-soft);color:var(--fx-info)}
.fx-toast__msg{flex:1;padding-top:3px;white-space:pre-line;word-break:break-word}
.fx-toast__x{border:0;background:transparent;color:var(--fx-text-3);cursor:pointer;padding:4px;border-radius:8px;line-height:0}
.fx-toast__x:hover{background:var(--fx-surface-3);color:var(--fx-text)}
.fx-toast__bar{position:absolute;bottom:0;inset-inline:0;height:3px;background:currentColor;opacity:.25;transform-origin:right;animation:fx-bar linear forwards}
.fx-toast--success .fx-toast__bar{color:var(--fx-success)}.fx-toast--error .fx-toast__bar{color:var(--fx-danger)}.fx-toast--warning .fx-toast__bar{color:var(--fx-warning)}.fx-toast--info .fx-toast__bar{color:var(--fx-info)}
@keyframes fx-bar{from{transform:scaleX(1)}to{transform:scaleX(0)}}

.fx-progress{position:fixed;top:0;inset-inline:0;height:3px;z-index:4000;pointer-events:none}
.fx-progress::before{content:"";display:block;height:100%;width:0;background:var(--fx-brand-grad);box-shadow:0 0 12px var(--fx-brand);transition:width .4s var(--fx-ease),opacity .3s}
.fx-progress.is-loading::before{width:72%;transition:width 6s cubic-bezier(.1,.7,.2,1)}
.fx-progress.is-done::before{width:100%;opacity:0}

.fx-to-top{position:fixed;bottom:24px;inset-inline-start:24px;z-index:900;width:46px;height:46px;border-radius:15px;display:grid;place-items:center;background:var(--fx-elev);border:1px solid var(--fx-border);box-shadow:var(--fx-shadow-md);color:var(--fx-text-2);cursor:pointer;opacity:0;visibility:hidden;transform:translateY(12px);transition:all .25s var(--fx-ease)}
.fx-to-top.is-on{opacity:1;visibility:visible;transform:none}
.fx-to-top:hover{color:var(--fx-brand);border-color:var(--fx-brand)}
.fx-fab-feedback{position:fixed;bottom:24px;inset-inline-end:24px;z-index:900;width:46px;height:46px;padding:0;justify-content:center;border-radius:15px;display:inline-flex;align-items:center;gap:8px;border:0;background:var(--fx-brand-grad);color:#fff;font:inherit;font-size:13.5px;font-weight:700;box-shadow:var(--fx-shadow-brand);cursor:pointer;transition:transform .2s var(--fx-ease)}
.fx-fab-feedback:hover{transform:translateY(-2px)}
body:has(.fx-toasts:not(:empty)) .fx-fab-feedback{opacity:0;pointer-events:none}
@media (max-width:720px){.fx-fab-feedback{display:none}.fx-to-top{inset-inline-start:16px;bottom:20px}}

/* 11. Footer -------------------------------------------------------------- */
.fx-footer{margin-top:72px;background:var(--fx-ink);color:var(--fx-ink-text-2);position:relative;overflow:hidden;isolation:isolate}
.fx-footer::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 300px at 90% 0,rgba(255,109,54,.16),transparent 60%),radial-gradient(600px 300px at 0 100%,rgba(59,108,255,.10),transparent 60%);z-index:-1}
.fx-footer a:not(.fx-btn){color:var(--fx-ink-text-2);text-decoration:none;transition:color var(--fx-dur)}
.fx-footer a:not(.fx-btn):hover{color:#fff}
.fx-footer__cta{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:36px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.fx-footer__cta h2{color:#fff;margin:0 0 6px;font-size:clamp(20px,2.4vw,26px);font-weight:900}
.fx-footer__cta p{margin:0;font-size:14px}
.fx-footer__grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:36px;padding:44px 0}
.fx-footer h3{color:#fff;font-size:14px;font-weight:800;margin:0 0 16px}
.fx-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px;font-size:14px}
.fx-footer__about p{font-size:14px;line-height:2;margin:14px 0 18px;max-width:340px}
.fx-footer .fx-logo{color:#fff}
.fx-footer .fx-logo__text small{color:var(--fx-ink-text-2)}
.fx-social{display:flex;gap:8px}
.fx-social a{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08)}
.fx-social a:hover{background:var(--fx-brand);border-color:var(--fx-brand);color:#fff}
.fx-contact li{display:flex;gap:10px;align-items:flex-start;line-height:1.8}
.fx-contact .fx-icon{margin-top:4px;color:var(--fx-brand)}
.fx-trust{display:flex;gap:12px;align-items:center}
.fx-trust a{display:grid;place-items:center;width:104px;height:112px;border-radius:16px;background:#fff;padding:6px}
.fx-trust a img{max-height:100%}
.fx-footer__bottom{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:20px 0 28px;border-top:1px solid rgba(255,255,255,.08);font-size:13px}
.fx-status{display:inline-flex;align-items:center;gap:8px}
.fx-status i{width:8px;height:8px;border-radius:50%;background:#2cc486;box-shadow:0 0 0 4px rgba(44,196,134,.18);animation:fx-pulse 2s infinite}
@keyframes fx-pulse{50%{box-shadow:0 0 0 7px rgba(44,196,134,0)}}
@media (max-width:960px){.fx-footer__grid{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.fx-footer__grid{grid-template-columns:1fr;gap:28px}.fx-footer{margin-top:48px}}

/* جداول صفحات قدیمی روی موبایل اسکرول افقی داشته باشند */
:where(.table-responsive,.table-wrapper,.table-container){overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}

/* 12. Utilities ----------------------------------------------------------- */
.fx-reveal{opacity:0;transform:translateY(14px);transition:opacity .6s var(--fx-ease),transform .6s var(--fx-ease)}
.fx-reveal.is-in{opacity:1;transform:none}
@supports (animation-timeline:view()){
  .fx-reveal{opacity:1;transform:none;animation:fx-rise linear both;animation-timeline:view();animation-range:entry 0% entry 40%}
  @keyframes fx-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
}
img.fx-fade{opacity:0;transition:opacity .4s}
img.fx-fade.is-loaded{opacity:1}
@media print{.fx-header,.fx-tabbar,.fx-footer,.fx-to-top,.fx-fab-feedback,.fx-toasts,.fx-progress{display:none!important}html[data-theme] body{background:#fff}}
