/* KadyShop Enterprise UI. Shared presentation layer for the owner panel and Razor dashboard.
   Aliases retain existing DOM, permission visibility and report/mobile switching contracts. */
:root {
 --primary:#0f766e; --primary-hover:#105e59; --primary-soft:#eaf6f3;
 --primary-dark:#105e59; --primary-deep:#172b3a; --primary2:#105e59; --mint:#eaf6f3;
 --success:#147d57; --warning:#99651c; --danger:#be3440; --info:#2563a6;
 --text:#172b3a; --muted:#5e7182; --text-secondary:#465d6e;
 --border:#d7e1e8; --border-soft:#e9eef2; --bg:#f2f5f9; --surface:#fff;
 --nav:#102d42; --nav-hover:#1c4057; --nav-selected:#135666; --nav-text:#e8f0f5; --nav-muted:#cedce8;
 --hover:#f4f7fb; --selected:#e3f0fc; --table-header:#eaf0f6; --sidebar-width:216px;
 --radius-sm:6px; --radius:8px; --radius-lg:10px;
 --space-1:4px; --space-2:8px; --space-3:12px; --space-4:16px; --space-5:20px; --space-6:24px; --space-8:32px;
 --control-height:38px; --row-height:40px;
 --font-xs:12px; --font-sm:13px; --font-body:14px; --font-section:16px; --font-title:23px;
 --weight-normal:400; --weight-medium:500; --weight-strong:600; --weight-bold:700;
 --shadow:0 8px 24px #172b3a14; --shadow-soft:0 1px 3px #172b3a08;
 --focus-ring:0 0 0 3px #0f766e26; --transition:150ms ease;
 --z-sticky:15; --z-dropdown:30; --z-backdrop:40; --z-drawer:50; --z-modal:60; --z-toast:70;
}
* { box-sizing:border-box; }
html { font-size:var(--font-body); scroll-padding-top:72px; }
body { background:var(--bg); color:var(--text); line-height:1.65; }
[hidden] { display:none !important; }
h1,h2,h3,p { overflow-wrap:break-word; }
h1 { font-size:var(--font-title); line-height:1.45; letter-spacing:0; }
h2,h3 { font-size:var(--font-section); }
button,input,select,textarea { font:inherit; }
button,.btn { min-height:var(--control-height); border-radius:var(--radius-sm); padding:var(--space-2) var(--space-4); font-size:var(--font-sm); font-weight:var(--weight-strong); transition:background-color var(--transition),border-color var(--transition),box-shadow var(--transition); box-shadow:none; }
button,.btn-primary { background-color:var(--primary); }
button:hover,.btn:hover { box-shadow:none; filter:none; transform:none; }
button:active,.btn:active { transform:translateY(1px); }
button:focus-visible,.btn:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible { outline:2px solid var(--primary); outline-offset:2px; box-shadow:var(--focus-ring); }
button:disabled,.btn:disabled,input:disabled,select:disabled,textarea:disabled { opacity:.55; cursor:not-allowed; box-shadow:none; }
.secondary,.btn-outline-primary { background:var(--primary-soft); color:var(--primary-dark); border:1px solid transparent; }
.ghost,.btn-outline-secondary { background:var(--surface); color:var(--text-secondary); border:1px solid var(--border); }
.danger,.btn-danger { background:var(--danger); color:var(--surface); }
input:not([type=checkbox]):not([type=radio]),select,textarea,.form-control,.form-select {
 width:100%; min-width:0; min-height:var(--control-height); border:1px solid var(--border); border-radius:var(--radius-sm);
 padding:var(--space-2) var(--space-3); background-color:var(--surface); color:var(--text); box-shadow:none;
 font-size:var(--font-body); transition:border-color var(--transition),box-shadow var(--transition);
}
input:hover,select:hover,textarea:hover { border-color:var(--text-secondary); }
input:focus,select:focus,textarea:focus { border-color:var(--primary); }
input[readonly],textarea[readonly] { background:var(--hover); }
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true],.form-control.is-invalid { border-color:var(--danger); }
input[type=number],input[type=date],input[type=datetime-local],input[autocomplete=username],input[type=password],.number,.numeric,.code { direction:ltr; unicode-bidi:isolate; font-variant-numeric:tabular-nums; }
.number,.numeric { text-align:end; white-space:nowrap; }
.code { font-weight:var(--weight-medium); }
input::placeholder,textarea::placeholder { color:var(--muted); opacity:.85; }
select,.form-select { appearance:none; padding-inline-end:var(--space-8); background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' fill='none' stroke='%235e7182' stroke-width='1.5'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:left 10px center; background-size:16px; }
[dir=ltr] select { background-position:right 10px center; }
input[type=checkbox],input[type=radio] { width:17px; height:17px; min-height:0; accent-color:var(--primary); flex-shrink:0; vertical-align:middle; }
label,.field-label,.filter-bar label { display:block; font-size:var(--font-sm); font-weight:var(--weight-medium); color:var(--text-secondary); margin-block-end:var(--space-1); }
small,.helper-text,.eyebrow { font-size:var(--font-xs); }
.shell { width:min(1600px,100%); max-width:1600px; padding:var(--space-5) var(--space-6) var(--space-8); }
.container { max-width:1440px; }
.topbar,.report-heading,.page-header { padding:var(--space-4) var(--space-5); border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); box-shadow:none; gap:var(--space-4); }
.topbar h1,.report-heading h1 { font-size:var(--font-title); margin:0; }
.topbar p { margin-block:var(--space-1) 0; }
.app-mark,.brand-mark { width:40px; height:40px; border-radius:var(--radius); background:var(--primary); box-shadow:none; font-size:22px; }
.top-actions { gap:var(--space-2); flex-wrap:wrap; }
.navigation { background:var(--nav); border:1px solid var(--nav); border-radius:var(--radius); padding:var(--space-2); gap:var(--space-1); margin-block:var(--space-3); box-shadow:none; z-index:var(--z-sticky); }
.navigation button { min-height:var(--control-height); background:transparent !important; border:0; border-radius:var(--radius-sm); color:var(--nav-text); padding:var(--space-2) var(--space-3); font-size:var(--font-sm); }
.navigation button:hover { background:var(--nav-hover) !important; }
.navigation button.active { background:var(--nav-selected) !important; color:white; box-shadow:inset -3px 0 #24c4b4; }
.navigation button:focus-visible { outline-color:#69dfd0; box-shadow:none; }
.topbar,.app-header { background:var(--nav); color:white; border-color:var(--nav); }
.topbar h1,.topbar .eyebrow { color:white; }
.topbar p { color:var(--nav-muted); }
.topbar .app-mark { background:var(--nav-selected); color:white; border:1px solid #547484; }
.topbar .ghost,.topbar .secondary { background:var(--nav-hover); color:white; border:1px solid #547484; }
.topbar button:focus-visible { outline-color:#69dfd0; }
.panel,.card,.quick-section,.empty,.login-card,.report-heading,.metric-card,.settings-panel { border:1px solid var(--border); border-radius:var(--radius); box-shadow:none; background:var(--surface); }
.panel,.quick-section,.card,.settings-panel { padding:var(--space-4); }
.panel-heading,.section-heading,.section-header { margin-block-end:var(--space-3); gap:var(--space-3); }
.panel-heading h2,.quick-section h2,.section-heading h2 { font-size:var(--font-section); margin:0; }
.panel-grid,.dashboard-grid { gap:var(--space-4); }
.balance-card,.hero-panel { background:var(--nav); border-radius:var(--radius); box-shadow:none; min-height:140px; padding:var(--space-5); }
.balance-card::before,.balance-card::after { display:none; }
.balance-card .balance-amount { margin-block-start:var(--space-2); }
.balance-card .balance-amount strong { font-size:36px; line-height:1.2; letter-spacing:0; }
.balance-card-foot { position:static; margin-block-start:var(--space-3); }
#reportSearch { direction:ltr; text-align:right; }
.bank-kpi-grid,.metric-grid { gap:var(--space-3); }
.metric,.metric-card { border-radius:var(--radius); padding:var(--space-4); border:1px solid var(--border); box-shadow:none; min-width:0; }
.metric strong,.metric-card strong { font-size:24px; font-variant-numeric:tabular-nums; line-height:1.4; }
.metric-icon { width:32px; height:32px; border-radius:var(--radius-sm); }
.metric-button { text-align:inherit; background:var(--surface); }
.quick-actions { gap:var(--space-2); }
.shortcut,.dashboard-shortcut { min-height:64px; padding:var(--space-3); border-radius:var(--radius-sm); background:var(--hover); border:1px solid var(--border-soft); box-shadow:none; text-align:center; }
.shortcut-icon,.quick-icon { width:30px; height:30px; border-radius:var(--radius-sm); }
.filters,.filter-bar,.filter-toolbar { padding:var(--space-3); gap:var(--space-3); border:1px solid var(--border); border-radius:var(--radius); background:var(--surface); margin-block:var(--space-3); align-items:end; }
.filter-toolbar { display:flex; flex-wrap:wrap; }
.filter-toolbar > * { flex:1 1 160px; }
.filter-toolbar > button { flex:0 0 auto; }
.form-section + .form-section { border-block-start:1px solid var(--border-soft); padding-block-start:var(--space-4); margin-block-start:var(--space-4); }
.form-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:var(--space-3) var(--space-4); }
.report-summary { gap:var(--space-3); }
.report-summary > *, .summary-card,.summary-grid > * { border-radius:var(--radius); box-shadow:none; padding:var(--space-3) var(--space-4); }
.table-wrap,.table-responsive,.data-table { overflow:auto; max-width:100%; border:1px solid var(--border); border-radius:var(--radius-sm); scrollbar-gutter:stable; }
table { width:100%; border-collapse:separate; border-spacing:0; font-size:var(--font-sm); font-variant-numeric:tabular-nums; }
th,td { min-height:var(--row-height); padding:10px 12px; border:0; border-block-end:1px solid var(--border-soft); text-align:start; vertical-align:middle; line-height:1.55; }
thead th { background:var(--table-header); color:var(--text); font-size:var(--font-xs); font-weight:var(--weight-strong); position:sticky; top:0; z-index:1; white-space:nowrap; }
tbody tr:hover { background:var(--hover); }
tbody tr[aria-selected=true],tbody tr.selected { background:var(--selected); }
tbody tr:last-child td { border-block-end:0; }
td button { min-height:30px; padding:var(--space-1) var(--space-2); }
.empty,.empty-state { padding:var(--space-6); color:var(--muted); text-align:center; }
.empty h2 { color:var(--text); }
.search-suggestions,.dropdown-menu { border-radius:var(--radius-sm); border:1px solid var(--border); box-shadow:var(--shadow); max-height:320px; overflow:auto; overscroll-behavior:contain; z-index:var(--z-dropdown); }
.search-suggestions button { background:var(--surface) !important; color:var(--text); border-radius:0; box-shadow:none; text-align:start; }
.search-suggestions button:hover,.search-suggestions button:focus-visible { background:var(--selected) !important; }
.pagination { display:flex; align-items:center; gap:var(--space-2); flex-wrap:wrap; padding-block:var(--space-3); }
.permission-options,.permission-grid { gap:var(--space-2); }
.permission-options label,.permission-grid label,.permission-list label,.checkbox-row { display:flex; align-items:center; gap:var(--space-2); border-radius:var(--radius-sm); background:var(--hover); padding:var(--space-2) var(--space-3); }
fieldset { border:1px solid var(--border); border-radius:var(--radius-sm); padding:var(--space-3); min-width:0; }
legend { font-size:var(--font-sm); color:var(--text-secondary); padding-inline:var(--space-2); }
.status-active,.status-inactive,.badge,.status-badge { border-radius:var(--radius-sm); padding:3px 8px; font-size:var(--font-xs); font-weight:var(--weight-medium); }
.message,.form-message { font-size:var(--font-sm); overflow-wrap:anywhere; }
.message:not(:empty),.form-message:not(:empty) { margin-block-start:var(--space-3); padding:var(--space-2) var(--space-3); border-inline-start:3px solid currentColor; background:var(--hover); }
.detail-dialog,dialog { border:1px solid var(--border); border-radius:var(--radius-lg); padding:var(--space-5); box-shadow:var(--shadow); max-width:calc(100vw - 24px); max-height:calc(100dvh - 32px); overflow:auto; }
dialog::backdrop { background:#172b3a66; backdrop-filter:none; }
.detail-header { border-block-end:1px solid var(--border-soft); padding-block-end:var(--space-3); margin-block-end:var(--space-4); }
.login-card { padding:var(--space-6); max-width:440px; }
.login-card input { min-height:42px !important; }
.login-card h1 { font-size:var(--font-title); }
.login-card button { margin-block-start:var(--space-4); }
.skeleton { background:var(--border-soft); border-radius:var(--radius-sm); min-height:20px; }
[aria-busy=true] { cursor:progress; }
@supports(scrollbar-color:auto) { * { scrollbar-width:thin; scrollbar-color:#9babb7 transparent; } }
/* Formal banking layout: keep existing permission-driven DOM and mobile menu handlers. */
@media(min-width:1100px) {
 .table-wrap { max-height:65vh; }
 #dashboardView { display:grid; grid-template-columns:var(--sidebar-width) minmax(0,1fr); gap:var(--space-4); align-items:start; }
 #dashboardView > .topbar { grid-column:1/-1; grid-row:1; margin:0; }
 #dashboardView > .navigation { grid-column:1; grid-row:2; display:flex; flex-direction:column; position:sticky; top:var(--space-4); margin:0; max-height:calc(100dvh - 32px); overflow-y:auto; overflow-x:hidden; padding:var(--space-3); }
 #dashboardView > .navigation::before { content:'بخش‌های سیستم'; color:var(--nav-muted); font-size:var(--font-xs); padding:var(--space-2) var(--space-3) var(--space-3); border-bottom:1px solid #315165; margin-bottom:var(--space-2); }
 #dashboardView > .navigation button { width:100%; text-align:start; white-space:normal; min-height:42px; }
 #dashboardContent,#reportContent,#settingsContent,#emptyState { grid-column:2; grid-row:2; min-width:0; margin-top:0; }
 #dashboardView .report-heading { margin-top:0; }
 #dashboardView .settings-grid { grid-template-columns:minmax(300px,1fr) minmax(0,1.25fr); }
}
@media(max-width:1100px) { .form-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:780px) {
 .shell { padding:var(--space-3); }
 .topbar,.report-heading { padding:var(--space-3); }
 .topbar h1 { font-size:20px; }
 .navigation.mobile-open { z-index:var(--z-drawer); border-radius:var(--radius); background:var(--nav); border-color:var(--nav); }
 .menu-backdrop { z-index:var(--z-backdrop); }
 .balance-card { min-height:128px; padding:var(--space-4); }
 .balance-card .balance-amount strong { font-size:30px; }
 .metric,.metric-card { padding:var(--space-3); }
 .metric strong,.metric-card strong { font-size:21px; }
 .panel,.quick-section { padding:var(--space-3); }
 .report-card { border-radius:var(--radius); border:1px solid var(--border); box-shadow:none; padding:var(--space-3); }
 .filters { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
 .filters > :first-child { grid-column:1/-1; }
 .detail-dialog { padding:var(--space-4); }
}
@media(max-width:480px) { .form-grid { grid-template-columns:minmax(0,1fr); } .top-actions { gap:var(--space-1); } .top-actions button { padding:var(--space-2); } .login-card { padding:var(--space-5); } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { transition:none !important; animation:none !important; scroll-behavior:auto !important; } }
@media print { .navigation,.top-actions,.filters,.filter-toolbar { display:none !important; } #dashboardView { display:block; } .topbar { background:white; color:var(--text); } .topbar h1,.topbar p,.topbar .eyebrow { color:var(--text); } .table-wrap { max-height:none; overflow:visible; } body { background:white; } }
