@font-face {
    font-family: "B Yekan";
    src: url("../fonts/BYekan.ttf") format("truetype");
    font-style: normal;
    font-weight: 400;
    font-display: swap;
}

:root {
    color-scheme: light;
    --font-family-persian: "B Yekan", Tahoma, Arial, sans-serif;
    --primary: #0066ff;
    --primary-strong: #0052cc;
    --primary-soft: #eaf2ff;
    --success: #10b981;
    --warning: #f59e0b;
    --danger: #ef4444;
    --ink-strong: #10185b;
    --ink: #304778;
    --ink-muted: #64748b;
    --surface: #ffffff;
    --surface-subtle: #f1f8ff;
    --border: #dce9fa;
    --radius-sm: 0.55rem;
    --radius-md: 0.8rem;
    --radius-lg: 1rem;
    --space-1: 0.25rem;
    --space-2: 0.5rem;
    --space-3: 0.75rem;
    --space-4: 1rem;
    --space-5: 1.5rem;
    --font-body: 0.9375rem;
    --font-label: 0.875rem;
    --font-meta: 0.75rem;
    --space-6: 2rem;
    --info: #0066ff;
    --purple: #7438e8;
    --success-soft: #e8faf1;
    --warning-soft: #fff7e5;
    --danger-soft: #fff0f3;
    --control-height: 2.75rem;
    --shadow-card: 0 0.4rem 1.5rem rgba(19, 43, 78, 0.05);
    --shadow-soft: 0 1rem 3rem rgba(8, 45, 101, 0.14);
    font-family: var(--font-family-persian);
    font-synthesis: none;
}

*, *::before, *::after { box-sizing: border-box; }
html, body { min-width: 20rem; min-height: 100%; margin: 0; background: var(--surface-subtle); color: var(--ink); font-family: var(--font-family-persian); }
body { direction: rtl; text-align: right; }
button, input, select, textarea, optgroup, option, table { font-family: inherit; }
button, input, select, textarea { font-size: inherit; }
input, select, textarea { min-height: var(--control-height); }
::placeholder { color: #8291a7; opacity: 1; }
button:focus-visible, a:focus-visible { outline: 0.18rem solid rgba(37, 99, 235, 0.45); outline-offset: 0.15rem; }
h1:focus { outline: none; }
a { color: var(--primary); }

#blazor-error-ui {
    display: none;
    position: fixed;
    inset: auto 1rem 1rem 1rem;
    z-index: 1000;
    padding: 0.9rem 1rem;
    border: 1px solid #fecaca;
    border-radius: 0.8rem;
    background: #fff1f2;
    color: #991b1b;
    box-shadow: var(--shadow-soft);
}

#blazor-error-ui .dismiss { float: left; cursor: pointer; }
.loading-progress { position: absolute; display: block; width: 7rem; height: 7rem; inset: 22vh 0 auto 0; margin: auto; }
.loading-progress circle { fill: none; stroke: #dfe7f2; stroke-width: 0.55rem; transform-origin: 50% 50%; transform: rotate(-90deg); }
.loading-progress circle:last-child { stroke: var(--primary); stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%; transition: stroke-dasharray 50ms ease-in-out; }
.loading-progress-text { position: absolute; inset: calc(22vh + 2.85rem) 0 auto 0; text-align: center; color: var(--ink-muted); font-weight: 700; }
.loading-progress-text::after { content: var(--blazor-load-percentage-text, "در حال بارگذاری"); }
.blazor-error-boundary { padding: 1rem; border-radius: 0.75rem; background: #fff1f2; color: #991b1b; }
.blazor-error-boundary::after { content: "خطایی رخ داد. لطفاً دوباره تلاش کنید."; }
/* Direction-isolated technical tokens inside the RTL product surface. */
.ltr,.ui-token,code,kbd,samp{direction:ltr;unicode-bidi:isolate;text-align:left}

/* Shared business UI rhythm; component layout and permission visibility stay local. */
body { font-size: var(--font-body); line-height: 1.8; }
.content :is(input, select, textarea) { accent-color: var(--primary); }
.content :is(input, select, textarea):focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.content .validation-message, .content .validation-errors { color: #b42339; font-size: var(--font-label); }
.content .invalid { border-color: #d92d48; }
.content :is(table thead, .table-head, .table-row.head) { background: var(--primary-soft); }
.content :is(table th, table td) { padding: .7rem .85rem; line-height: 1.7; }
.content table tbody tr:hover { background: #f5f9ff; }
.content :is(button, a).btn { min-height: var(--control-height); font-size: var(--font-label); }
.content .btn.primary:hover:not(:disabled) { background: var(--primary-strong); }
.content :is(.filter-bar, .foundation-filters) { box-shadow: var(--shadow-card); }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; } }
.ui-context-summary { display:flex; align-items:center; flex-wrap:wrap; gap:1rem; padding:1rem; border:1px solid var(--border); border-radius:var(--radius-md); background:var(--primary-soft); }
.ui-context-summary span { color:var(--ink-muted); font-size:var(--font-label); }
.ui-context-summary button { margin-inline-start:auto; }
/* Blazor input components do not inherit the parent's CSS-isolation attribute. */
.content :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]), select, textarea) { min-height:var(--control-height); max-width:100%; padding:.55rem .75rem; border:1px solid var(--border); border-radius:var(--radius-sm); background:var(--surface); color:var(--ink-strong); font:inherit; font-size:var(--font-body); }
.content :is(input[readonly],input:disabled,select:disabled,textarea:disabled) { background:var(--surface-subtle); color:var(--ink-muted); }
.content :is(input[type="checkbox"],input[type="radio"]) { min-height:1.25rem; width:1.25rem; height:1.25rem; flex-shrink:0; }
.content :is(input,select,textarea).invalid { border-color:#d92d48; }
/* Shared actions and surfaces also cover pages without their own button rules. */
.content .btn.primary,.content .btn.btn-primary{background:var(--primary);border:1px solid var(--primary);color:#fff;border-radius:var(--radius-sm);padding:.55rem .9rem}
.content .btn.secondary,.content .btn.btn-light{background:var(--surface);border:1px solid var(--border);color:var(--primary);border-radius:var(--radius-sm);padding:.55rem .9rem}
.content .btn.ghost{background:transparent;border:1px solid transparent;color:var(--primary)}
.content .btn.danger{background:var(--danger-soft);border:1px solid #f5bdc7;color:#a2253e}
.content .btn:disabled{opacity:.55;cursor:not-allowed}
.content .panel{padding:1rem;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface)}
.users-table .table-row>.ltr{font-size:var(--font-meta);color:var(--ink-muted);overflow-wrap:anywhere}
.content .panel>h2,.content .foundation-card>h2{font-size:1.25rem;color:var(--ink-strong);margin:0 0 1rem;line-height:1.8}
.role-review-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(17rem,22rem);gap:1rem;direction:ltr;align-items:start}.role-review-layout>*{direction:rtl;min-width:0}.role-select{color:var(--primary);text-align:right;background:none;border:0;font:inherit;font-weight:700;cursor:pointer}.role-select[aria-pressed=true]{text-decoration:underline;text-underline-offset:.3rem}.role-context dl{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.role-context dd{margin:0;overflow-wrap:anywhere}.role-context ul{list-style:none;padding:0;max-height:26rem;overflow:auto}.role-context li{display:flex;justify-content:space-between;gap:.5rem;border-bottom:1px solid var(--border);padding:.6rem 0;overflow-wrap:anywhere}.role-context li>span{min-width:0}@media(max-width:1100px){.role-review-layout{grid-template-columns:minmax(0,1fr)}.role-context{order:-1}}
