:root{
  --bg:#f3f7fb;
  --surface:#ffffff;
  --surface-soft:#f8fbfe;
  --surface-tint:#eef7ff;
  --surface-dark:#0f172a;
  --text:#152033;
  --text-soft:#5f6f86;
  --text-faint:#8b98ab;
  --line:#dce6f1;
  --line-strong:#cbd8e6;
  --primary:#2563eb;
  --primary-deep:#1d4ed8;
  --primary-soft:#eaf2ff;
  --cyan:#0ea5a8;
  --cyan-soft:#e8fbfb;
  --violet:#7c3aed;
  --amber:#d97706;
  --amber-soft:#fff7df;
  --green:#047857;
  --green-soft:#e7f8ef;
  --red:#b42318;
  --red-soft:#fff0ef;
  --shadow-xs:0 4px 14px rgba(15,23,42,.045);
  --shadow-sm:0 10px 28px rgba(15,23,42,.065);
  --shadow-md:0 20px 55px rgba(15,23,42,.09);
  --shadow-lg:0 28px 90px rgba(15,23,42,.14);
  --radius-xs:10px;
  --radius-sm:14px;
  --radius-md:18px;
  --radius-lg:24px;
  --radius-xl:30px;
  --font:IRANSans,Vazirmatn,Tahoma,Arial,sans-serif;
}

*{box-sizing:border-box}
html{direction:rtl;scroll-behavior:smooth}
body{margin:0;background:radial-gradient(circle at 12% 0%,rgba(37,99,235,.07),transparent 28%),radial-gradient(circle at 92% 15%,rgba(14,165,168,.08),transparent 26%),var(--bg);color:var(--text);font-family:var(--font);font-size:14px;line-height:1.8;min-height:100vh}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button{cursor:pointer}
svg{display:block}
img{max-width:100%}
::selection{background:#cfe0ff;color:#10234b}

.skip-link{position:fixed;right:18px;top:-80px;z-index:9999;background:#111827;color:#fff;border-radius:12px;padding:10px 16px;transition:.2s}
.skip-link:focus{top:18px}

/* App frame */
.app-shell{min-height:100vh;display:grid;grid-template-columns:292px minmax(0,1fr);direction:rtl}
.sidebar{position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;gap:12px;padding:18px 16px;background:linear-gradient(180deg,#111b2e 0%,#0d1628 64%,#0a1221 100%);color:#dce7f6;overflow:hidden;z-index:70}
.sidebar::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 88% 4%,rgba(59,130,246,.22),transparent 30%),radial-gradient(circle at 7% 70%,rgba(14,165,168,.12),transparent 28%);pointer-events:none}
.sidebar>*{position:relative;z-index:1}
.sidebar-brand{display:flex;align-items:center;gap:13px;padding:10px 8px 18px;border-bottom:1px solid rgba(255,255,255,.08);flex:0 0 auto}
.brand-mark{width:48px;height:48px;display:grid;place-items:center;flex:0 0 48px;border-radius:17px;background:linear-gradient(145deg,#3b82f6,#0ea5a8);box-shadow:0 14px 34px rgba(37,99,235,.28);color:#fff;font-size:22px;font-weight:950}
.brand-copy{min-width:0}
.brand-copy strong{display:block;color:#fff;font-size:16px;line-height:1.55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand-copy span{display:block;color:#96a8c2;font-size:11px;margin-top:2px}
.sidebar-menu-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#40516d transparent;scrollbar-gutter:stable;padding:1px 4px 8px 1px;margin-left:-4px}
.sidebar-menu-scroll::-webkit-scrollbar{width:7px}
.sidebar-menu-scroll::-webkit-scrollbar-track{background:transparent}
.sidebar-menu-scroll::-webkit-scrollbar-thumb{background:#40516d;border-radius:999px;border:2px solid transparent;background-clip:padding-box}
.sidebar-menu-scroll::-webkit-scrollbar-thumb:hover{background:#5d7191;background-clip:padding-box}
.sidebar-section-label{color:#72839c;font-size:10px;font-weight:900;letter-spacing:.08em;padding:2px 12px 8px}
.side-nav{display:flex;flex-direction:column;gap:8px;min-height:min-content;padding-bottom:4px}
.nav-link,.nav-group-toggle,.nav-sublink{width:100%;border:0;display:flex;align-items:center;gap:11px;text-align:right;color:#cbd8e9;background:transparent;border-radius:15px;transition:background .18s,color .18s,transform .18s,border-color .18s}
.nav-link,.nav-group-toggle{min-height:48px;padding:9px 11px;font-weight:850}
.nav-link:hover,.nav-group-toggle:hover{background:rgba(255,255,255,.065);color:#fff}
.nav-link.is-active{color:#fff;background:linear-gradient(90deg,rgba(59,130,246,.32),rgba(14,165,168,.12));box-shadow:inset -3px 0 #60a5fa,0 10px 24px rgba(0,0,0,.12)}
.nav-icon{width:31px;height:31px;flex:0 0 31px;border-radius:11px;background:rgba(255,255,255,.075);display:grid;place-items:center;color:#a9bdd7}
.nav-icon svg{width:17px;height:17px;fill:currentColor}
.nav-link.is-active .nav-icon,.nav-group.is-open>.nav-group-toggle .nav-icon{background:rgba(96,165,250,.2);color:#e6f0ff}
.nav-label{min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-group{border:1px solid transparent;border-radius:18px;padding:4px;transition:.2s}
.nav-group.is-open{background:rgba(255,255,255,.035);border-color:rgba(255,255,255,.06)}
.nav-chevron{margin-right:auto;color:#6f829c;transition:transform .2s}
.nav-chevron svg{width:18px;height:18px;fill:currentColor}
.nav-group.is-open .nav-chevron{transform:rotate(180deg);color:#bfd2ea}
.nav-submenu{display:none;flex-direction:column;gap:3px;padding-top:3px}
.nav-group.is-open .nav-submenu{display:flex}
.nav-sublink{position:relative;min-height:42px;padding:7px 12px 7px 8px;font-size:12.5px;color:#9fb1c9}
.nav-sublink::after{content:"";position:absolute;right:19px;top:-5px;bottom:-5px;width:1px;background:rgba(255,255,255,.07);z-index:-1}
.nav-sublink:hover{color:#fff;background:rgba(255,255,255,.05)}
.nav-sublink.is-active{color:#fff;background:rgba(59,130,246,.18)}
.nav-icon.small{width:26px;height:26px;flex-basis:26px;border-radius:9px}
.nav-icon.small svg{width:14px;height:14px}
.sidebar-user{margin-top:0;flex:0 0 auto;padding:12px;display:grid;grid-template-columns:38px minmax(0,1fr) 36px;align-items:center;gap:10px;border:1px solid rgba(255,255,255,.08);border-radius:18px;background:rgba(255,255,255,.045)}
.user-avatar{width:40px;height:40px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(145deg,#dbeafe,#bfdbfe);color:#1d4ed8;font-weight:950;font-size:16px}
.user-avatar.small{width:36px;height:36px;border-radius:12px;font-size:14px}
.sidebar-user-copy{min-width:0}
.sidebar-user-copy span{display:block;color:#7f91aa;font-size:10px}
.sidebar-user-copy strong{display:block;color:#fff;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-logout{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;color:#fca5a5;background:rgba(239,68,68,.08)}
.sidebar-logout:hover{background:rgba(239,68,68,.16);color:#fecaca}
.sidebar-logout svg{width:18px;height:18px;fill:currentColor}

.workspace{min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:45;min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 28px;border-bottom:1px solid rgba(203,216,230,.7);background:rgba(248,251,254,.86);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.topbar-start,.topbar-end{display:flex;align-items:center;gap:14px;min-width:0}
.menu-button{display:none;width:43px;height:43px;border:1px solid var(--line);border-radius:14px;background:#fff;color:#334155;box-shadow:var(--shadow-xs);align-items:center;justify-content:center}
.menu-button svg{width:20px;height:20px;fill:currentColor}
.topbar-title{min-width:0}
.topbar-title span{display:block;color:var(--text-faint);font-size:10px;font-weight:800}
.topbar-title strong{display:block;font-size:16px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-status{display:flex;align-items:center;gap:7px;border:1px solid #cde9df;background:#f0fbf7;color:#047857;border-radius:999px;padding:7px 11px;font-size:11px;font-weight:900}
.status-dot{width:7px;height:7px;border-radius:50%;background:#10b981;box-shadow:0 0 0 4px rgba(16,185,129,.12)}
.topbar-user{display:flex;align-items:center;gap:9px;padding:4px 5px 4px 10px;border-radius:15px;background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-xs)}
.topbar-user span{display:block;color:var(--text-faint);font-size:9px}
.topbar-user strong{display:block;max-width:180px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.main-area{width:100%;max-width:1660px;margin:0 auto;padding:26px 30px 64px;min-width:0}
.content-wrap{display:flex;flex-direction:column;gap:24px;min-width:0}
.content-wrap>*{min-width:0;margin:0}

/* Feedback */
.flash-stack{display:grid;gap:10px;margin-bottom:18px}
.alert{display:grid;grid-template-columns:10px minmax(0,1fr) 32px;align-items:center;gap:12px;padding:13px 14px;border-radius:16px;border:1px solid var(--line);background:#fff;box-shadow:var(--shadow-xs)}
.alert-mark{width:9px;height:9px;border-radius:50%;background:#64748b}
.alert.info{background:#f2f7ff;border-color:#cfe0ff;color:#23416f}.alert.info .alert-mark{background:#3b82f6}
.alert.success{background:var(--green-soft);border-color:#bce8d1;color:#065f46}.alert.success .alert-mark{background:#10b981}
.alert.danger{background:var(--red-soft);border-color:#f4c7c2;color:#8f1d15}.alert.danger .alert-mark{background:#ef4444}
.alert-close{width:30px;height:30px;border:0;border-radius:10px;background:rgba(15,23,42,.055);color:inherit;font-size:20px;line-height:1}

/* Surfaces and page headers */
.hero-card,.page-hero{position:relative;isolation:isolate;display:flex;align-items:center;justify-content:space-between;gap:26px;min-height:150px;padding:28px 30px;border:1px solid rgba(203,216,230,.85);border-radius:var(--radius-xl);background:linear-gradient(135deg,#ffffff 0%,#f7fbff 58%,#eef8ff 100%);box-shadow:var(--shadow-md);overflow:hidden}
.hero-card::before,.page-hero::before{content:"";position:absolute;left:-70px;bottom:-110px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(14,165,168,.16),rgba(14,165,168,0) 68%);z-index:-1}
.hero-card::after,.page-hero::after{content:"";position:absolute;right:37%;top:-90px;width:220px;height:220px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.10),rgba(37,99,235,0) 70%);z-index:-1}
.hero-card h1,.hero-card h2,.page-hero h1,.page-hero h2{margin:0;color:#101b2e;font-size:clamp(22px,2vw,30px);line-height:1.55;font-weight:950;letter-spacing:-.02em}
.hero-card p,.page-hero p{max-width:760px;margin:8px 0 0;color:var(--text-soft);font-size:13px;line-height:2}
.hero-kicker{display:inline-flex;align-items:center;gap:7px;margin-bottom:8px;padding:5px 11px;border-radius:999px;background:rgba(37,99,235,.085);color:#1d4ed8;font-size:10.5px;font-weight:950}
.hero-kicker::before{content:"";width:6px;height:6px;border-radius:50%;background:#3b82f6}
.hero-orb,.hero-icon{width:94px;height:94px;flex:0 0 94px;border-radius:31px;display:grid;place-items:center;text-align:center;padding:10px;background:linear-gradient(145deg,#2563eb,#0ea5a8);color:#fff;font-size:17px;font-weight:950;box-shadow:0 22px 48px rgba(37,99,235,.25);transform:rotate(-3deg)}

.panel-card,.card,.content-card,.chart-card,.module-card,.upload-panel,.filter-panel,.action-panel,.permission-box,.validation-box,.settings-form{position:relative;min-width:0;border:1px solid var(--line);border-radius:var(--radius-lg);background:rgba(255,255,255,.97);box-shadow:var(--shadow-sm)}
.panel-card,.card,.content-card,.chart-card,.upload-panel,.filter-panel,.action-panel,.permission-box,.settings-form{padding:22px 24px}
.panel-card::before,.content-card::before,.chart-card::before{content:"";position:absolute;top:0;right:24px;left:24px;height:1px;background:linear-gradient(90deg,transparent,rgba(37,99,235,.16),transparent)}
.card-head,.chart-head,.table-head-actions,.chart-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:18px}
.card-head>div,.chart-head>div,.chart-report-head>div{min-width:0}
.card-head h3,.chart-head h3,.chart-report-head h3,.section-title{margin:0;color:#142038;font-size:18px;line-height:1.65;font-weight:950}
.card-head p,.chart-head p,.chart-report-head p{margin:5px 0 0;color:var(--text-soft);font-size:12px;line-height:1.9}
.section-title{display:flex;align-items:center;gap:9px;margin:28px 0 12px}
.section-title::before{content:"";width:7px;height:22px;border-radius:999px;background:linear-gradient(#2563eb,#0ea5a8)}

/* Stats */
.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.dashboard-stats-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.stat-card{position:relative;isolation:isolate;min-width:0;min-height:118px;display:flex;flex-direction:column;justify-content:center;gap:8px;padding:18px 18px 17px;border:1px solid var(--line);border-radius:21px;background:linear-gradient(145deg,#fff,#f8fbfe);box-shadow:var(--shadow-xs);overflow:hidden}
.stat-card::before{content:"";position:absolute;left:-28px;bottom:-42px;width:110px;height:110px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.10),transparent 70%);z-index:-1}
.stat-card span{color:var(--text-soft);font-size:11px;font-weight:850}
.stat-card strong{display:block;color:#10203a;font-size:clamp(22px,2vw,29px);line-height:1.25;font-weight:950;overflow-wrap:anywhere}
.stat-card small,.stat-card em{color:var(--text-faint);font-size:10.5px;font-style:normal}

/* Dashboard modules */
.module-grid,.dashboard-modules{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.module-card{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-start;gap:8px;min-height:156px;padding:22px;border-radius:22px;overflow:hidden;background:linear-gradient(145deg,#fff,#f8fbff);transition:transform .2s,border-color .2s,box-shadow .2s}
.module-card::before{content:"";position:absolute;right:0;top:0;width:5px;height:100%;background:linear-gradient(#2563eb,#0ea5a8)}
.module-card::after{content:"↗";position:absolute;left:18px;top:17px;width:32px;height:32px;display:grid;place-items:center;border-radius:11px;background:#eff5ff;color:#2563eb;font-weight:950;transition:.2s}
.module-card:hover{transform:translateY(-3px);border-color:#bfd2ee;box-shadow:var(--shadow-md)}
.module-card:hover::after{background:#2563eb;color:#fff;transform:translate(-2px,-2px)}
.module-card strong{max-width:80%;font-size:16px;line-height:1.75;color:#142038}
.module-card span{color:var(--text-soft);font-size:12px;line-height:2}

/* Toolbars and forms */
.report-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 18px;background:rgba(255,255,255,.96)}
.report-toolbar::before{display:none}
.filters-row,.filter-grid,.form-grid,.form-grid-2{display:grid;gap:14px;align-items:end}
.filters-row{grid-template-columns:repeat(auto-fit,minmax(185px,max-content));flex:1}
.filter-grid{grid-template-columns:repeat(4,minmax(150px,1fr));width:100%}
.form-grid,.form-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.form-stack,.upload-box,.confirm-form,.settings-form{display:flex;flex-direction:column;gap:18px}
.form-row,.field-box{display:flex;flex-direction:column;gap:7px;min-width:0}
.form-row label,.field-box label,.filters-row>label{color:#34445d;font-size:11px;font-weight:950}
input,select,textarea{width:100%;min-height:45px;border:1px solid var(--line-strong);border-radius:13px;background:#fff;color:var(--text);padding:10px 12px;outline:none;transition:border-color .16s,box-shadow .16s,background .16s}
textarea{min-height:110px;resize:vertical}
input::placeholder,textarea::placeholder{color:#a0acbc}
input:hover,select:hover,textarea:hover{border-color:#b7c7da}
input:focus,select:focus,textarea:focus{border-color:#7aa7f7;box-shadow:0 0 0 4px rgba(37,99,235,.09);background:#fff}
input:disabled,select:disabled,textarea:disabled{background:#f3f5f8;color:#8b98ab}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,#64748b 50%),linear-gradient(135deg,#64748b 50%,transparent 50%);background-position:calc(12px) 19px,calc(17px) 19px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-left:34px}
.action-row,.toolbar-actions,.filter-actions,.actions-row,.compact-actions,.chart-report-actions,.batch-row-actions,.modal-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.filter-actions{align-self:end}
.btn{position:relative;min-height:42px;border:1px solid transparent;border-radius:13px;padding:9px 15px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12px;font-weight:950;line-height:1.6;white-space:nowrap;transition:transform .16s,box-shadow .16s,background .16s,border-color .16s,color .16s}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn:disabled{opacity:.52;cursor:not-allowed;transform:none}
.btn-primary{color:#fff;background:linear-gradient(135deg,#2563eb,#0ea5a8);box-shadow:0 10px 24px rgba(37,99,235,.2)}
.btn-primary:hover{box-shadow:0 14px 30px rgba(37,99,235,.26)}
.btn-light,.btn-ghost{color:#1d4ed8;background:#f1f6ff;border-color:#d4e2fa}
.btn-light:hover,.btn-ghost:hover{background:#e6efff;border-color:#bfd3f4}
.btn-danger{color:#a61b14;background:#fff2f1;border-color:#f2c7c3}
.btn-danger:hover{background:#ffe8e6}
.btn-small,.btn-mini{min-height:34px;padding:6px 10px;border-radius:10px;font-size:10.5px}
.btn-full{width:100%}
.btn.is-loading{pointer-events:none;color:transparent!important}
.btn.is-loading::after{content:"";position:absolute;width:17px;height:17px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin .7s linear infinite;color:#fff}
@keyframes spin{to{transform:rotate(360deg)}}

/* Upload */
.drop-zone{position:relative;min-height:210px;display:grid;place-items:center;text-align:center;padding:28px;border:1.5px dashed #9fbbe8;border-radius:22px;background:linear-gradient(145deg,#f8fbff,#eef6ff);cursor:pointer;transition:.2s}
.drop-zone:hover,.drop-zone.is-dragover{border-color:#3b82f6;background:#eaf3ff;box-shadow:inset 0 0 0 1px rgba(37,99,235,.06)}
.drop-zone::before{content:"↑";width:58px;height:58px;display:grid;place-items:center;margin:0 auto 13px;border-radius:19px;background:#fff;color:#2563eb;font-size:28px;font-weight:950;box-shadow:var(--shadow-sm)}
.drop-zone input{position:absolute;opacity:0;pointer-events:none}
.drop-zone strong{display:block;color:#17305d;font-size:16px;line-height:1.7}
.drop-zone span{display:block;margin-top:6px;color:var(--text-soft);font-size:11px;line-height:1.8}
.preview-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin:20px 0 22px}
.preview-summary>div{min-width:0;padding:16px;border:1px solid var(--line);border-radius:17px;background:linear-gradient(145deg,#fff,#f8fbff)}
.preview-summary span{display:block;color:var(--text-soft);font-size:10px;font-weight:900}
.preview-summary strong{display:block;margin-top:5px;color:#17233b;font-size:23px;line-height:1.4;overflow-wrap:anywhere}
.validation-box{padding:16px 18px;margin-top:14px;border-radius:17px;box-shadow:none}
.validation-box h4{margin:0 0 5px;font-size:13px}
.validation-box p{margin:0;color:inherit;font-size:11.5px;line-height:1.9}
.validation-box.ok,.validation-box.success{background:var(--green-soft);border-color:#b8e2cb;color:#075f46}
.validation-box.warning,.validation-box.warn{background:var(--amber-soft);border-color:#f0daa2;color:#8a4b06}
.validation-box.danger{background:var(--red-soft);border-color:#efc3bf;color:#8f1d15}
.confirm-form{margin-top:24px;padding-top:22px;border-top:1px solid var(--line)}

/* Tables */
.table-wrap,.table-shell,.chart-detail-table{width:100%;min-width:0;overflow:auto;border:1px solid var(--line);border-radius:17px;background:#fff;scrollbar-width:thin;scrollbar-color:#bccadd #f3f6fa}
.table-wrap.compact{border-radius:15px}
.data-table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0;table-layout:auto}
.data-table th,.data-table td{padding:13px 14px;border-bottom:1px solid #e8eef5;text-align:center;vertical-align:middle;font-size:12px;line-height:1.8}
.data-table th{position:sticky;top:0;z-index:2;background:#f4f8fc;color:#34445d;font-size:10.5px;font-weight:950;white-space:nowrap}
.data-table th:first-child{border-radius:0 14px 0 0}.data-table th:last-child{border-radius:14px 0 0 0}
.data-table tbody tr{transition:background .14s}
.data-table tbody tr:hover{background:#f9fbfe}
.data-table tbody tr:last-child td{border-bottom:0}
.data-table td{color:#243149}
.data-table td strong{font-weight:950}
.actions-cell{min-width:120px}
.sort-link{display:inline-flex;align-items:center;gap:4px;color:#1d4ed8;font-weight:950}
.drill-link,.table-action-link{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 10px;border-radius:10px;background:#edf4ff;border:1px solid #d2e2fa;color:#1d4ed8;font-weight:950}
.drill-link:hover,.table-action-link:hover{background:#2563eb;color:#fff}
.pill,.scope-chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:999px;padding:5px 10px;font-size:9.5px;font-weight:950;white-space:nowrap;border:1px solid transparent}
.pill.ok,.scope-chip.ok{background:var(--green-soft);color:#047857;border-color:#c2e9d4}
.pill.warn,.scope-chip.warn{background:var(--amber-soft);color:#9a5506;border-color:#f1dda7}
.pill.danger,.scope-chip.danger{background:var(--red-soft);color:#a61b14;border-color:#f2cbc7}
.scope-chip{background:#eef4ff;color:#315da7;border-color:#d6e4fb}
.pagination-bar{width:max-content;max-width:100%;margin:20px auto 0;padding:9px;display:flex;align-items:center;justify-content:center;gap:9px;flex-wrap:wrap;border:1px solid var(--line);border-radius:16px;background:#f7faff}
.pagination-bar>span{padding:7px 12px;color:#4d5f77;font-size:11px;font-weight:900}
.page-link{min-width:72px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;padding:6px 11px;border:1px solid #d4e2f5;border-radius:11px;background:#fff;color:#1d4ed8;font-size:11px;font-weight:950}
.page-link:hover{background:#edf4ff}
.page-link.disabled{opacity:.42;pointer-events:none}

/* Charts */
.grid-2,.chart-split{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;align-items:start}
.chart-card,.chart-panel-clean,.chart-report-card{isolation:isolate;overflow:hidden}
.chart-panel-clean,.chart-report-card{display:flex;flex-direction:column;gap:16px}
.chart-panel-clean>.card-head,.chart-report-card>.chart-report-head{margin-bottom:0}
.chart-shell,.bar-chart,.donut-chart,.svg-chart,.ag-chart{position:relative;display:block;width:100%;min-width:0;min-height:420px;height:auto;border:1px solid #edf1f6;border-radius:18px;background:#fff;overflow:hidden;isolation:isolate;z-index:1}
.safe-bar-chart,.safe-donut-chart{min-height:450px}
.chart-report-actions{width:100%;justify-content:flex-end;margin:0;position:relative;z-index:2}
.chart-detail-table{position:relative;z-index:0;flex:0 0 auto;margin-top:0;overflow:auto}
.chart-detail-table .data-table{min-width:0}
.chart-detail-table .data-table th,.chart-detail-table .data-table td{text-align:center}
.chart-color-key{display:inline-block;width:12px;height:12px;flex:0 0 12px;margin-left:8px;border-radius:50%;background:var(--chart-key-color,#64748b);box-shadow:0 0 0 3px #fff,0 0 0 4px rgba(15,23,42,.08);vertical-align:middle}
.comparison-chart-grid{align-items:start}
.comparison-chart-grid>.panel-card{min-width:0;overflow:hidden}
.comparison-chart-actions{justify-content:flex-end}
.comparison-line-chart{min-height:470px}
.comparison-history-table{max-height:430px}
.comparison-group-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.comparison-group-card{min-width:0}
.comparison-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.comparison-metrics>div{min-width:0;padding:13px;border:1px solid var(--line);border-radius:15px;background:#f8fbfe}
.comparison-metrics span{display:block;color:var(--text-soft);font-size:9.5px;font-weight:900}
.comparison-metrics strong{display:block;margin-top:4px;color:#18263f;font-size:19px;line-height:1.45;overflow-wrap:anywhere}
.comparison-country-stats{margin:0}

/* Management */
.permission-box{box-shadow:none;background:#f8fbfe}
.inline-permissions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.inline-permissions label,.switch-row{display:flex;align-items:center;gap:9px;color:#34445d;font-size:11px;font-weight:800}
.inline-permissions input,.switch-row input{width:17px;height:17px;min-height:0;accent-color:#2563eb}
.settings-form{box-shadow:none;background:#f8fbfe}
.batch-row-actions{min-width:190px}
.modal{width:min(520px,calc(100% - 28px));max-height:90vh;border:0;border-radius:24px;padding:0;box-shadow:var(--shadow-lg);background:transparent;direction:rtl}
.modal::backdrop{background:rgba(15,23,42,.56);backdrop-filter:blur(3px)}
.modal-card{padding:24px;background:#fff;border-radius:24px;box-shadow:none}
.modal-card h3{margin:0 0 7px;font-size:18px}.modal-card p{margin:0 0 18px;color:var(--text-soft);font-size:12px;line-height:1.9}
.modal-actions{justify-content:flex-start;margin-top:18px}

/* Empty */
.empty-state{padding:38px 24px;border:1px dashed #bfd0e2;border-radius:22px;background:#fbfdff;text-align:center;color:var(--text-soft)}
.empty-state h2,.empty-state h3{margin:0 0 7px;color:#243149}.empty-state p{margin:0}.empty-icon{font-size:34px}
.muted{color:var(--text-soft)}

/* Authentication */
.auth-body{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 10%,rgba(59,130,246,.22),transparent 30%),radial-gradient(circle at 85% 88%,rgba(14,165,168,.18),transparent 28%),linear-gradient(145deg,#0b1323,#172b4e)}
.auth-shell{width:min(980px,100%)}
.login-card{display:grid;grid-template-columns:1.08fr .92fr;min-height:520px;border:1px solid rgba(255,255,255,.18);border-radius:30px;background:#fff;box-shadow:0 32px 110px rgba(0,0,0,.34);overflow:hidden}
.login-art{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;padding:42px;background:linear-gradient(145deg,#142a55,#0f766e);color:#fff;overflow:hidden}
.login-art::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(3,7,18,.48));z-index:-1}
.login-art h1{margin:0 0 9px;font-size:30px;line-height:1.5}.login-art p{margin:0;color:#d9e7f8;line-height:2}
.orb{position:absolute;border-radius:50%;background:rgba(255,255,255,.12);filter:blur(.2px);z-index:-1}.orb-a{width:250px;height:250px;right:-55px;top:-45px}.orb-b{width:170px;height:170px;left:-35px;bottom:50px}
.login-form{display:flex;flex-direction:column;justify-content:center;gap:13px;padding:44px}
.login-form h2{margin:0 0 9px;font-size:24px}.login-form label{color:#34445d;font-size:11px;font-weight:950}

/* Mobile navigation and sheets */
.mobile-bottom-nav,.mobile-filter-trigger,.mobile-filter-sheet-head,.mobile-filter-backdrop,.scroll-top{display:none}
.sidebar-backdrop{display:none}
.mobile-nav-icon{width:21px;height:21px;display:grid;place-items:center}.mobile-nav-icon svg{width:20px;height:20px;fill:currentColor}
.scroll-top{position:fixed;left:18px;bottom:22px;width:42px;height:42px;border:1px solid var(--line);border-radius:14px;background:#fff;color:#1d4ed8;box-shadow:var(--shadow-md);z-index:35;align-items:center;justify-content:center;font-weight:950;opacity:0;transform:translateY(10px);pointer-events:none;transition:.2s}
.scroll-top.is-visible{opacity:1;transform:none;pointer-events:auto}

/* RTL dates */
.rtl-date,.rtl-datetime{display:inline-flex;direction:rtl;unicode-bidi:isolate;align-items:baseline;white-space:nowrap;font-variant-numeric:tabular-nums}
.rtl-date{gap:0}.rtl-date .date-separator{padding:0 .08em}.rtl-datetime{gap:.5em}.rtl-datetime .date-time{direction:ltr;unicode-bidi:isolate}
.rtl-date-input{direction:rtl;text-align:right;unicode-bidi:plaintext;font-variant-numeric:tabular-nums}
bdi[dir="rtl"],.rtl-date-text{direction:rtl;unicode-bidi:isolate;display:inline-block}

.fade-in{animation:fadeIn .28s ease both}
@keyframes fadeIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}

/* Tablet */
@media(max-width:1180px){
  .app-shell{grid-template-columns:260px minmax(0,1fr)}
  .main-area{padding:24px 22px 58px}
  .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid-2,.chart-split{grid-template-columns:1fr}
  .comparison-chart-grid{grid-template-columns:1fr}
  .topbar{padding-inline:22px}
}

/* Mobile application */
@media(max-width:840px){
  body.sidebar-open,body.mobile-sheet-open{overflow:hidden}
  .app-shell{display:block}
  .sidebar{position:fixed;right:0;top:0;bottom:0;width:min(318px,89vw);height:100dvh;transform:translateX(105%);transition:transform .25s ease;box-shadow:-20px 0 65px rgba(15,23,42,.28)}
  .sidebar.is-open{transform:translateX(0)}
  .sidebar-backdrop{position:fixed;inset:0;z-index:65;border:0;background:rgba(15,23,42,.52);opacity:0;visibility:hidden;pointer-events:none;transition:.2s}
  .sidebar-backdrop.is-open{display:block;opacity:1;visibility:visible;pointer-events:auto}
  .workspace{min-height:100vh}
  .topbar{min-height:66px;padding:10px 14px;box-shadow:0 8px 26px rgba(15,23,42,.055)}
  .menu-button{display:flex}
  .topbar-status,.topbar-user{display:none}
  .main-area{padding:16px 13px calc(92px + env(safe-area-inset-bottom,0px))}
  .content-wrap{gap:16px}
  .hero-card,.page-hero{min-height:0;padding:20px;border-radius:22px}
  .hero-card h1,.hero-card h2,.page-hero h1,.page-hero h2{font-size:21px}
  .hero-card p,.page-hero p{font-size:11.5px}
  .hero-orb,.hero-icon{display:none}
  .panel-card,.card,.content-card,.chart-card,.upload-panel,.filter-panel,.action-panel,.permission-box,.settings-form{padding:17px;border-radius:20px}
  .card-head,.chart-head,.table-head-actions,.chart-report-head{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:14px}
  .toolbar-actions,.chart-report-actions{width:100%}
  .report-toolbar{align-items:stretch;padding:14px}
  .report-toolbar>.toolbar-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .report-toolbar>.toolbar-actions .btn{width:100%;white-space:normal;text-align:center}
  .stats-grid{gap:10px}
  .stat-card{min-height:100px;padding:14px;border-radius:17px}
  .module-grid,.dashboard-modules{grid-template-columns:1fr;gap:11px}
  .module-card{min-height:132px;padding:18px}
  .preview-summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .form-grid,.form-grid-2,.filter-grid{grid-template-columns:1fr}
  .chart-shell,.bar-chart,.donut-chart,.svg-chart,.ag-chart{min-height:360px;border-radius:15px}
  .safe-bar-chart,.safe-donut-chart{min-height:390px}
  .comparison-line-chart{min-height:380px}
  .chart-report-actions{display:grid;grid-template-columns:1fr;gap:8px}
  .chart-report-actions .btn{width:100%}
  .comparison-group-grid{grid-template-columns:1fr}
  .mobile-bottom-nav{position:fixed;right:0;left:0;bottom:0;z-index:55;display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:env(safe-area-inset-bottom,0px);background:rgba(255,255,255,.95);border-top:1px solid var(--line);box-shadow:0 -14px 34px rgba(15,23,42,.10);backdrop-filter:blur(16px)}
  .mobile-bottom-nav a,.mobile-bottom-nav button{position:relative;min-height:64px;border:0;background:transparent;color:#64748b;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:7px 2px;font-size:9.5px;font-weight:850}
  .mobile-bottom-nav .is-active{color:#1d4ed8}
  .mobile-bottom-nav .is-active::before{content:"";position:absolute;top:0;right:25%;left:25%;height:3px;border-radius:0 0 999px 999px;background:linear-gradient(90deg,#2563eb,#0ea5a8)}
  .scroll-top{display:flex;bottom:88px}

  .mobile-filter-trigger{display:flex;width:100%;order:-2}
  .mobile-filter-form{position:fixed!important;right:0;left:0;bottom:0;z-index:82;display:grid!important;grid-template-columns:1fr!important;gap:13px!important;max-height:min(86dvh,720px);overflow:auto;padding:16px 15px calc(20px + env(safe-area-inset-bottom,0px))!important;margin:0!important;border:1px solid var(--line);border-radius:26px 26px 0 0;background:#fff;box-shadow:0 -28px 80px rgba(15,23,42,.24);transform:translateY(108%);visibility:hidden;transition:transform .24s ease,visibility .24s}
  .mobile-filter-form.is-open{transform:translateY(0);visibility:visible}
  .mobile-filter-form>*{width:100%;min-width:0}
  .mobile-filter-form .filter-actions,.mobile-filter-form .toolbar-actions{display:grid;grid-template-columns:1fr;gap:8px;width:100%}
  .mobile-filter-sheet-head{position:sticky;top:-16px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:2px;padding:13px 2px 11px;background:#fff;border-bottom:1px solid var(--line)}
  .mobile-filter-sheet-head strong{font-size:14px}
  .mobile-filter-close{width:36px!important;height:36px!important;min-height:36px!important;border:0;border-radius:11px;background:#eef2f7;color:#334155;font-size:22px;display:grid;place-items:center;padding:0}
  .mobile-filter-backdrop{display:block;position:fixed;inset:0;z-index:81;border:0;background:rgba(15,23,42,.55);opacity:0;visibility:hidden;pointer-events:none;transition:.2s}
  .mobile-filter-backdrop.is-open{opacity:1;visibility:visible;pointer-events:auto}
}

@media(max-width:680px){
  .main-area{padding-right:10px;padding-left:10px}
  .topbar-title strong{font-size:14px}
  .hero-card,.page-hero{padding:18px;border-radius:20px}
  .panel-card,.card,.content-card,.chart-card,.upload-panel,.filter-panel,.action-panel,.permission-box,.settings-form{padding:15px;border-radius:18px}
  .stats-grid{grid-template-columns:1fr 1fr}
  .stat-card strong{font-size:22px}
  .preview-summary{grid-template-columns:1fr 1fr}
  .report-toolbar>.toolbar-actions{grid-template-columns:1fr}
  .btn{font-size:11px}

  .table-wrap:not(.desktop-scroll-table),.chart-detail-table{overflow:visible;border:0;background:transparent;border-radius:0}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table),
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) thead,
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) tbody,
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) tr,
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td,
  .chart-detail-table>.data-table,
  .chart-detail-table>.data-table thead,
  .chart-detail-table>.data-table tbody,
  .chart-detail-table>.data-table tr,
  .chart-detail-table>.data-table td{display:block;width:100%;min-width:0}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) thead,.chart-detail-table>.data-table thead{display:none}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) tbody,.chart-detail-table>.data-table tbody{display:grid;gap:10px}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) tr,.chart-detail-table>.data-table tr{padding:8px 10px;border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:var(--shadow-xs);overflow:hidden}
  .chart-detail-table>.data-table tr{background:#f8fbfe;box-shadow:none}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td,.chart-detail-table>.data-table td{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:9px 3px;border:0;border-bottom:1px dashed #dfe8f1;text-align:left;line-height:1.75;overflow-wrap:anywhere}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td:last-child,.chart-detail-table>.data-table td:last-child{border-bottom:0}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td::before,.chart-detail-table>.data-table td::before{content:attr(data-label);display:block;flex:0 0 42%;color:#738198;font-size:10px;font-weight:950;text-align:right}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td.actions-cell{display:block;text-align:center}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td.actions-cell::before{margin-bottom:7px;text-align:right}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td.actions-cell .btn{width:100%}
  .pagination-bar{width:100%}.pagination-bar>span{width:100%;text-align:center;order:-1}
  .page-link{flex:1}
  .inline-permissions{grid-template-columns:1fr}
}

@media(max-width:420px){
  .stats-grid,.preview-summary{grid-template-columns:1fr}
  .comparison-metrics{grid-template-columns:1fr}
  .main-area{padding-inline:8px}
  .topbar{padding-inline:10px}
  .panel-card,.card,.content-card,.chart-card,.upload-panel,.filter-panel,.action-panel,.permission-box,.settings-form{padding:14px}
  .mobile-bottom-nav a,.mobile-bottom-nav button{font-size:9px}
  .module-card strong{max-width:76%;font-size:14px}
}

/* Print */
.print-only{display:none}
@media print{
  @page{size:A4 landscape;margin:8mm}
  html,body{background:#fff!important;color:#111827!important}
  body{font-size:11px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sidebar,.topbar,.mobile-bottom-nav,.sidebar-backdrop,.scroll-top,.btn,.report-toolbar,.flash-stack,.mobile-filter-backdrop{display:none!important}
  .app-shell,.workspace{display:block!important}
  .main-area{max-width:none;padding:0!important;margin:0!important}
  .content-wrap{gap:5mm}
  .hero-card,.page-hero,.panel-card,.card,.content-card,.chart-card,.stat-card{box-shadow:none!important;border:1px solid #cbd5e1!important;background:#fff!important;break-inside:avoid;page-break-inside:avoid}
  .hero-card,.page-hero{min-height:0;padding:5mm;border-radius:4mm}
  .hero-orb,.hero-icon{display:none!important}
  .stats-grid{grid-template-columns:repeat(4,1fr);gap:3mm}
  .stat-card{min-height:0;padding:3mm;border-radius:3mm}
  .stat-card strong{font-size:18px}
  .panel-card{padding:4mm;border-radius:4mm}
  .grid-2,.chart-split,.comparison-chart-grid{grid-template-columns:1fr 1fr;gap:4mm}
  .chart-shell,.bar-chart,.donut-chart,.svg-chart,.ag-chart{height:88mm!important;min-height:88mm!important;border:1px solid #d8e1eb;border-radius:3mm;break-inside:avoid;page-break-inside:avoid}
  .comparison-line-chart{height:92mm!important;min-height:92mm!important}
  .table-wrap,.table-shell,.chart-detail-table{overflow:visible;border-radius:0}
  .data-table{min-width:0;width:100%;border-collapse:collapse}
  .data-table thead{display:table-header-group}
  .data-table tr{break-inside:avoid;page-break-inside:avoid}
  .data-table th,.data-table td{padding:1.5mm 1mm;border:1px solid #9aa9ba;font-size:9px}
  .data-table th{position:static;background:#edf3f8!important}
  .print-only{display:block}
}

/* Dedicated report output */
.daily-print-body,.print-body{margin:0;background:#eef3f8;color:#111827;font-family:var(--font);-webkit-print-color-adjust:exact;print-color-adjust:exact}
.print-toolbar,.print-actions{position:sticky;top:10px;z-index:30;width:min(1180px,calc(100% - 24px));margin:10px auto;display:flex;justify-content:flex-start}
.print-sheet,.print-page{width:min(1180px,calc(100% - 24px));margin:0 auto 24px;padding:26px 30px;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:var(--shadow-md)}
.print-title{margin:0 0 8px;text-align:center;color:#132039;font-size:25px;font-weight:950;line-height:1.55}
.print-subtitle{margin:0 0 16px;text-align:center;color:#5f6f86;font-size:12px;line-height:1.8}
.print-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px;padding-bottom:15px;border-bottom:2px solid #dbe5ef}
.print-header h1{margin:0 0 5px;font-size:24px;line-height:1.5}.print-header p{margin:0;color:#64748b}.print-date{color:#475569;white-space:nowrap}
.print-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 18px}
.print-stats>div,.print-stat{padding:12px;border:1px solid #cbd8e6;border-radius:14px;background:#f8fbfe;text-align:center;break-inside:avoid}
.print-stats span,.print-stat span{display:block;color:#64748b;font-size:10px}.print-stats strong,.print-stat strong{display:block;margin-top:4px;font-size:20px}
.print-chart{height:360px;min-height:360px;margin-top:14px;border:1px solid #dbe4ee;border-radius:18px;background:#fff;overflow:hidden;break-inside:avoid;page-break-inside:avoid}
.print-table{width:100%;border-collapse:collapse;margin-top:14px;table-layout:auto}
.print-table th,.print-table td{padding:8px;border:1px solid #aebccc;text-align:center;vertical-align:middle;font-size:11px;line-height:1.55;overflow-wrap:anywhere}
.print-table th{background:#edf3f8;color:#233149}.print-table thead{display:table-header-group}.print-table tr{break-inside:avoid;page-break-inside:avoid}
.comparison-print-sheet{display:flex;flex-direction:column;gap:10px}.comparison-print-chart{height:340px;min-height:340px}
.print-page .panel-card{margin-top:16px;box-shadow:none}.print-page .table-wrap{overflow:visible}.print-page .data-table{min-width:0}.print-page .data-table th{position:static}
@media(max-width:720px){
  .print-sheet,.print-page{padding:18px 14px}.print-title{font-size:20px}.print-header{flex-direction:column}.print-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.print-chart{height:320px;min-height:320px}
}
@media print{
  @page{size:A4 landscape;margin:7mm}
  .daily-print-body,.print-body{background:#fff}
  .print-toolbar,.print-actions{display:none!important}
  .print-sheet,.print-page{width:100%;max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;overflow:visible}
  .print-title{margin:0 0 3mm;font-size:21px}.print-subtitle{margin:0 0 3mm;font-size:10.5px}
  .print-header{margin-bottom:3mm;padding-bottom:2.5mm;break-after:avoid;page-break-after:avoid}.print-header h1{font-size:20px}
  .print-stats{grid-template-columns:repeat(4,1fr);gap:2.5mm;margin:0 0 3mm}.print-stats>div,.print-stat{padding:2.4mm 1.8mm;border-radius:2.5mm}.print-stats strong,.print-stat strong{font-size:16px}
  .print-chart{height:91mm;min-height:91mm;margin:0;border-radius:3mm;break-inside:avoid;page-break-inside:avoid}
  .comparison-print-chart{height:89mm;min-height:89mm}
  .print-table{margin-top:3mm}.print-table th,.print-table td{padding:1.45mm .9mm;font-size:9.5px}.print-table thead{display:table-header-group}.print-table tr{break-inside:avoid;page-break-inside:avoid}
  .print-page .panel-card{border:0!important;padding:0!important;margin:5mm 0 0!important;break-inside:auto!important;page-break-inside:auto!important}.print-page .panel-card h3{break-after:avoid;page-break-after:avoid}
}

/* Page-specific composition */
.wide-left{grid-template-columns:minmax(0,1.35fr) minmax(330px,.65fr)}
.tehran-region-mini-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
.pole-switch-form{grid-template-columns:minmax(230px,1fr) minmax(180px,.65fr) auto}
.comparison-filter-form{grid-template-columns:minmax(250px,1fr) auto}
.comparison-toolbar{align-items:flex-end}
.batch-admin-table td:last-child{min-width:210px}
.chart-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.form-stack>label,.form-grid-2>div>label{display:block;margin-bottom:6px;color:#34445d;font-size:11px;font-weight:950}
.form-grid-2>div{min-width:0}
.switch-row{padding:12px 13px;border:1px solid var(--line);border-radius:14px;background:#fff}
.settings-form .btn{align-self:flex-start}
.user-create-panel{align-self:start}
.permissions-panel .permission-box{min-width:330px}
.admin-users-grid{align-items:start}
.school-dashboard-charts .chart-panel-clean{height:100%}
.table-head-actions>.toolbar-actions{justify-content:flex-end}
.validation-box+.validation-box{margin-top:12px}
.preview-confirm .confirm-form{margin-top:0;padding-top:0;border-top:0}
@media(max-width:1180px){.wide-left{grid-template-columns:1fr}.pole-switch-form{grid-template-columns:1fr 1fr auto}}
@media(max-width:840px){.tehran-region-mini-stats{grid-template-columns:1fr 1fr}.pole-switch-form,.comparison-filter-form{grid-template-columns:1fr}.settings-form .btn{align-self:stretch}.permissions-panel .permission-box{min-width:0}}
@media(max-width:420px){.tehran-region-mini-stats{grid-template-columns:1fr}}


/* v32: v29 visual base — independent sidebar menu scroll and three-card dashboard */
@media(max-width:1180px) and (min-width:841px){.dashboard-stats-three{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:840px){.sidebar{padding-bottom:calc(14px + env(safe-area-inset-bottom,0px))}.sidebar-menu-scroll{padding-bottom:12px}.dashboard-stats-three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.dashboard-stats-three{grid-template-columns:1fr}}
@media print{.dashboard-stats-three{grid-template-columns:repeat(3,1fr)}}

/* v34 font loading */
html,body,button,input,select,textarea{font-family:var(--font);font-synthesis:none}

/* v37 integrated area trend and school reports */
.area-trend-filter{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(260px,1.2fr) auto;gap:14px;align-items:end;flex:1}
.school-report-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(170px,1fr));gap:14px;align-items:end;width:100%}
.school-report-filter-grid .filter-actions{grid-column:span 2;align-self:end}
.schools-report-filter{align-items:flex-end}
.schools-report-exports{margin-right:auto;align-self:flex-end}
.school-report-stats .stat-card strong{overflow-wrap:anywhere}
.school-regions-summary .table-wrap{max-height:none}
.school-report-print .print-section{margin-top:18px}
.page-break-before{break-before:page;page-break-before:always}
@media(max-width:1180px){
  .school-report-filter-grid{grid-template-columns:repeat(3,minmax(170px,1fr))}
  .area-trend-filter{grid-template-columns:1fr 1fr auto}
}
@media(max-width:840px){
  .area-trend-filter,.school-report-filter-grid{grid-template-columns:1fr;width:100%}
  .school-report-filter-grid .filter-actions{grid-column:auto}
  .schools-report-filter{align-items:stretch}
  .schools-report-exports{margin-right:0;width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .schools-report-exports .btn{width:100%}
  .school-regions-summary .table-wrap{max-height:none}
}
@media(max-width:480px){.schools-report-exports{grid-template-columns:1fr}}
@media print{
  .school-report-print .print-section{break-inside:auto!important;page-break-inside:auto!important}
  .school-report-print .page-break-before{break-before:page;page-break-before:always}
}

/* v39 maintenance mode and system settings */
.topbar-status.is-maintenance{border-color:#f5d79b;background:#fff8e7;color:#9a5b05}
.topbar-status.is-maintenance .status-dot{background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.14)}

.settings-hero{min-height:165px}
.system-settings-panel{overflow:hidden}
.system-settings-panel>.card-head{align-items:flex-start}
.settings-state-badge{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;padding:8px 13px;border-radius:999px;font-size:10.5px;font-weight:950;border:1px solid #bfe7d3;background:#effbf5;color:#047857}
.settings-state-badge.is-maintenance{border-color:#f2d08a;background:#fff8e7;color:#9a5b05}
.system-settings-form{gap:20px;background:linear-gradient(180deg,#f9fcff,#f5f9fd)}
.maintenance-toggle-card{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:16px;padding:18px;border:1px solid #d5e2ef;border-radius:20px;background:#fff;box-shadow:var(--shadow-xs);cursor:pointer}
.maintenance-toggle-control{position:relative;display:inline-flex;align-items:center}
.maintenance-toggle-control>input{position:absolute;inset:0;opacity:0;pointer-events:none}
.maintenance-toggle-track{position:relative;width:58px;height:32px;border-radius:999px;background:#cbd5e1;box-shadow:inset 0 0 0 1px rgba(15,23,42,.07);transition:.22s}
.maintenance-toggle-track>span{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 3px 9px rgba(15,23,42,.22);transition:.22s}
.maintenance-toggle-control>input:checked+.maintenance-toggle-track{background:linear-gradient(135deg,#f59e0b,#f97316)}
.maintenance-toggle-control>input:checked+.maintenance-toggle-track>span{transform:translateX(-26px)}
.maintenance-toggle-control>input:focus-visible+.maintenance-toggle-track{outline:3px solid rgba(37,99,235,.22);outline-offset:3px}
.maintenance-toggle-copy{min-width:0}
.maintenance-toggle-copy strong{display:block;color:#17233a;font-size:14px;font-weight:950}
.maintenance-toggle-copy small{display:block;margin-top:4px;color:var(--text-soft);font-size:11px;line-height:1.9}
.settings-grid{display:grid;grid-template-columns:1fr;gap:15px}
.settings-grid textarea{resize:vertical;min-height:125px}
.settings-field-wide{width:100%}
.settings-field-wide>small{display:block;margin-top:6px;color:var(--text-faint);font-size:10px}
.settings-divider{height:1px;background:linear-gradient(90deg,transparent,#d5e1ed 12%,#d5e1ed 88%,transparent)}
.compact-head{margin:0!important}
.settings-switches{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.settings-submit-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding-top:2px}
.settings-submit-row p{margin:0;color:var(--text-soft);font-size:10.5px}
.settings-submit-row .btn{flex:0 0 auto}

.maintenance-body{min-height:100vh;min-height:100dvh;background:radial-gradient(circle at 12% 12%,rgba(37,99,235,.13),transparent 30%),radial-gradient(circle at 88% 82%,rgba(20,184,166,.12),transparent 32%),linear-gradient(145deg,#edf4fb 0%,#f8fbfe 48%,#edf7f6 100%);overflow-x:hidden}
.maintenance-topbar{width:min(1180px,calc(100% - 32px));margin:18px auto 0;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 14px;border:1px solid rgba(203,216,230,.85);border-radius:21px;background:rgba(255,255,255,.88);box-shadow:var(--shadow-sm);backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}
.maintenance-brand,.maintenance-user{display:flex;align-items:center;gap:11px;min-width:0}
.maintenance-brand>div:last-child,.maintenance-user>div:nth-child(2){min-width:0}
.maintenance-brand strong,.maintenance-user strong{display:block;color:#142039;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.maintenance-brand span,.maintenance-user span{display:block;color:var(--text-faint);font-size:9.5px}
.maintenance-logout{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 13px;border:1px solid #f2c7c3;border-radius:12px;background:#fff5f4;color:#a8271e;font-size:10.5px;font-weight:900;white-space:nowrap}
.maintenance-logout:hover{background:#ffeceb}
.maintenance-main{width:min(940px,calc(100% - 32px));margin:26px auto 44px}
.maintenance-card{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;align-items:center;padding:28px clamp(20px,5vw,58px) 32px;border:1px solid rgba(197,211,226,.9);border-radius:34px;background:rgba(255,255,255,.96);box-shadow:0 35px 90px rgba(15,23,42,.14);text-align:center}
.maintenance-card::before{content:"";position:absolute;z-index:-1;top:-160px;right:-110px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(37,99,235,.13),rgba(37,99,235,0) 68%)}
.maintenance-card::after{content:"";position:absolute;z-index:-1;bottom:-190px;left:-120px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(20,184,166,.12),rgba(20,184,166,0) 68%)}
.maintenance-status-chip{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border:1px solid #f1d18f;border-radius:999px;background:#fff8e7;color:#995c08;font-size:10.5px;font-weight:950}
.maintenance-status-chip>span{width:8px;height:8px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 5px rgba(245,158,11,.13);animation:maintenancePulse 1.8s ease-in-out infinite}
.maintenance-animation{width:min(420px,90%);height:235px;margin:8px auto -2px}
.maintenance-animation svg{width:100%;height:100%;overflow:visible}
.maintenance-gear{transform-box:fill-box;transform-origin:center}
.maintenance-gear-large{animation:maintenanceSpin 9s linear infinite}
.maintenance-gear-small{animation:maintenanceSpinReverse 6s linear infinite}
.maintenance-wrench{transform-box:fill-box;transform-origin:center;animation:maintenanceWrench 2.5s ease-in-out infinite}
.maintenance-spark{transform-box:fill-box;transform-origin:center;animation:maintenanceSpark 1.9s ease-in-out infinite}
.spark-two{animation-delay:.55s}.spark-three{animation-delay:1.05s}
.maintenance-copy{max-width:720px}
.maintenance-eyebrow{display:block;margin-bottom:7px;color:#2563eb;font-size:10.5px;font-weight:950}
.maintenance-copy h1{margin:0;color:#142039;font-size:clamp(23px,3.6vw,36px);line-height:1.65;font-weight:950;letter-spacing:-.025em}
.maintenance-copy p{margin:12px auto 0;color:#5e6e85;font-size:13px;line-height:2.05}
.maintenance-note{width:min(700px,100%);display:flex;align-items:flex-start;justify-content:center;gap:10px;margin-top:24px;padding:13px 16px;border:1px solid #d7e5f2;border-radius:16px;background:#f6faff;color:#4d6079;font-size:10.5px;line-height:1.9;text-align:right}
.maintenance-note-icon{display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;border-radius:8px;background:#dbeafe;color:#1d4ed8;font-family:Arial,sans-serif;font-size:12px;font-weight:900}
@keyframes maintenanceSpin{to{transform:rotate(360deg)}}
@keyframes maintenanceSpinReverse{to{transform:rotate(-360deg)}}
@keyframes maintenanceWrench{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-9px) rotate(4deg)}}
@keyframes maintenanceSpark{0%,100%{opacity:.35;transform:scale(.72)}50%{opacity:1;transform:scale(1.18)}}
@keyframes maintenancePulse{0%,100%{opacity:.7;box-shadow:0 0 0 4px rgba(245,158,11,.11)}50%{opacity:1;box-shadow:0 0 0 8px rgba(245,158,11,.06)}}

@media(max-width:840px){
  .settings-switches{grid-template-columns:1fr}
  .settings-submit-row{align-items:stretch;flex-direction:column}
  .settings-submit-row .btn{width:100%}
  .maintenance-topbar{align-items:stretch;flex-direction:column}
  .maintenance-user{justify-content:space-between}
  .maintenance-user>div:nth-child(2){flex:1}
  .maintenance-main{margin-top:18px}
  .maintenance-card{border-radius:26px;padding:22px 17px 26px}
  .maintenance-animation{height:205px}
}
@media(max-width:480px){
  .maintenance-topbar,.maintenance-main{width:calc(100% - 20px)}
  .maintenance-topbar{margin-top:10px;border-radius:17px}
  .maintenance-brand .brand-mark{width:42px;height:42px;flex-basis:42px;border-radius:14px}
  .maintenance-user{display:grid;grid-template-columns:36px minmax(0,1fr)}
  .maintenance-logout{grid-column:1/-1;width:100%}
  .maintenance-animation{width:100%;height:180px}
  .maintenance-copy h1{font-size:22px}
  .maintenance-copy p{font-size:12px}
  .maintenance-note{justify-content:flex-start}
}
@media(prefers-reduced-motion:reduce){
  .maintenance-gear,.maintenance-wrench,.maintenance-spark,.maintenance-status-chip>span{animation:none!important}
}

/* v40: independent exports for each school-report table */
.table-export-head{align-items:center}
.table-export-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.table-export-actions .btn{min-height:34px}
@media(max-width:840px){
  .table-export-head{align-items:stretch}
  .table-export-actions{justify-content:flex-start;width:100%}
  .table-export-actions .btn{flex:1 1 150px}
}
@media(max-width:520px){
  .table-export-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .table-export-actions .scope-chip{grid-column:1/-1;justify-self:start}
  .table-export-actions .btn{width:100%}
}



/* v43 paginated region summary and centered table content */
.centered-data-table th,.centered-data-table td{text-align:center!important}
.centered-data-table td strong{display:block;text-align:center}
.regions-pagination{margin-top:18px}
@media(max-width:680px){
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td,
  .chart-detail-table>.data-table td{display:grid;grid-template-columns:minmax(0,42%) minmax(0,58%);align-items:center;justify-content:normal;text-align:center!important}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td::before,
  .chart-detail-table>.data-table td::before{width:auto;min-width:0;flex:none;text-align:center!important}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td.actions-cell{display:block;text-align:center!important}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td:not([data-label]),
  .chart-detail-table>.data-table td:not([data-label]){grid-template-columns:1fr}
  .table-wrap:not(.desktop-scroll-table)>.data-table:not(.desktop-scroll-table) td:not([data-label])::before,
  .chart-detail-table>.data-table td:not([data-label])::before{display:none}
}
@media print{
  .data-table th,.data-table td{text-align:center!important}
}

/* v44: viewport-safe mobile filter sheets and searchable select dialogs */
.search-select-control{position:relative;width:100%;min-width:0;min-height:45px}
.search-select-native{position:absolute!important;inset-inline-start:0!important;bottom:0!important;width:1px!important;height:1px!important;min-height:1px!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;clip-path:inset(50%)!important}
.search-select-toggle{width:100%;min-height:45px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px 10px 34px;border:1px solid var(--line-strong);border-radius:13px;background:#fff;color:var(--text);font:inherit;text-align:right;outline:none;cursor:pointer;transition:border-color .16s,box-shadow .16s,background .16s}
.search-select-toggle:hover{border-color:#b7c7da}
.search-select-toggle:focus-visible{border-color:#7aa7f7;box-shadow:0 0 0 4px rgba(37,99,235,.09)}
.search-select-toggle:disabled{background:#f3f5f8;color:#8b98ab;cursor:not-allowed}
.search-select-toggle.is-placeholder .search-select-value{color:#718096}
.search-select-value{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.65}
.search-select-chevron{position:absolute;left:14px;top:50%;width:9px;height:9px;border-left:2px solid #64748b;border-bottom:2px solid #64748b;transform:translateY(-68%) rotate(-45deg);pointer-events:none}
.search-select-toggle[aria-expanded="true"] .search-select-chevron{transform:translateY(-30%) rotate(135deg)}
body.search-select-open{overflow:hidden}
.search-select-portal{position:fixed;inset:0;z-index:1210;display:grid;place-items:center;padding:24px;visibility:hidden;pointer-events:none}
.search-select-portal.is-open{visibility:visible;pointer-events:auto}
.search-select-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(15,23,42,.58);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;transition:opacity .18s}
.search-select-portal.is-open .search-select-backdrop{opacity:1}
.search-select-dialog{position:relative;z-index:1;width:min(560px,100%);max-height:min(78dvh,720px);display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(203,216,230,.95);border-radius:24px;background:#fff;box-shadow:0 30px 90px rgba(15,23,42,.28);opacity:0;transform:translateY(10px) scale(.985);transition:opacity .18s,transform .18s}
.search-select-portal.is-open .search-select-dialog{opacity:1;transform:none}
.search-select-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px 13px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#fff,#f8fbff)}
.search-select-head>div{min-width:0}
.search-select-head small{display:block;color:#728198;font-size:9.5px;font-weight:850}
.search-select-head strong{display:block;margin-top:2px;color:#17233a;font-size:15px;line-height:1.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-select-close{flex:0 0 38px;width:38px;height:38px;border:0;border-radius:12px;background:#eef2f7;color:#334155;font-size:24px;line-height:1;cursor:pointer}
.search-select-search-wrap{position:relative;display:flex;align-items:center;margin:14px 16px 10px}
.search-select-search-wrap>span{position:absolute;right:14px;color:#64748b;font-family:Arial,sans-serif;font-size:22px;pointer-events:none}
.search-select-search{min-height:48px!important;padding-right:43px!important;border-radius:14px!important;background:#f8fbfe!important}
.search-select-options{min-height:90px;overflow:auto;padding:4px 10px 14px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b8c7da #f4f7fb}
.search-select-option{width:100%;min-height:46px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:0;border-bottom:1px solid #edf1f6;border-radius:11px;background:#fff;color:#243149;font:inherit;text-align:right;cursor:pointer}
.search-select-option:hover,.search-select-option:focus-visible{background:#eef5ff;outline:none}
.search-select-option.is-selected{background:#eaf2ff;color:#1d4ed8;font-weight:950}
.search-select-option b{flex:0 0 24px;width:24px;height:24px;display:grid;place-items:center;border-radius:8px;background:#2563eb;color:#fff;font-family:Arial,sans-serif;font-size:13px}
.search-select-option:disabled{opacity:.45;cursor:not-allowed}
.search-select-empty{margin:0 16px 16px;padding:18px;border:1px dashed #cbd8e6;border-radius:14px;background:#f8fbfe;color:#697a91;text-align:center;font-size:11px}

@media(max-width:840px){
  .mobile-filter-backdrop{z-index:1000}
  .mobile-filter-form{z-index:1001;right:0!important;left:0!important;bottom:0!important;top:auto!important;width:100%!important;max-width:none!important;max-height:min(88dvh,760px);overscroll-behavior:contain;transform:translate3d(0,108%,0)}
  .mobile-filter-form.is-open{transform:translate3d(0,0,0)}
  .mobile-filter-sheet-head{top:-16px}
  .search-select-portal{align-items:end;padding:0;z-index:1220}
  .search-select-dialog{width:100%;max-height:min(86dvh,760px);border-radius:26px 26px 0 0;padding-bottom:env(safe-area-inset-bottom,0px);transform:translateY(105%)}
  .search-select-portal.is-open .search-select-dialog{transform:translateY(0)}
  .search-select-head{padding:15px 16px 12px}
  .search-select-search-wrap{margin:12px 14px 8px}
  .search-select-options{padding-inline:8px}
  .search-select-option{min-height:50px;padding-inline:14px}
}

/* v45 — hybrid SPA loading state */
body.spa-is-loading{overflow:hidden!important;cursor:wait}
body.spa-is-loading .app-shell,
body.spa-is-loading .mobile-bottom-nav,
body.spa-is-loading .scroll-top{user-select:none}
.spa-loading-overlay{position:fixed;inset:0;z-index:2500;display:grid;place-items:center;padding:24px;background:rgba(226,232,240,.78);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;pointer-events:none;transition:opacity .18s ease}
.spa-loading-overlay[hidden]{display:none!important}
.spa-loading-overlay.is-visible{opacity:1;pointer-events:all}
.spa-loading-card{width:min(390px,calc(100vw - 40px));display:flex;flex-direction:column;align-items:center;gap:7px;padding:28px 24px 25px;border:1px solid rgba(203,213,225,.95);border-radius:25px;background:rgba(255,255,255,.97);box-shadow:0 28px 80px rgba(15,23,42,.22);text-align:center;color:#17233a}
.spa-loading-card strong{font-size:16px;font-weight:950;line-height:1.8}
.spa-loading-card>span{font-size:11px;font-weight:650;color:#64748b;line-height:1.8}
.spa-loading-animation{position:relative;width:78px;height:78px;margin-bottom:6px;display:grid;place-items:center}
.spa-single-gear{width:72px;height:72px;display:grid;place-items:center;border-radius:50%;background:linear-gradient(145deg,#eff6ff,#ecfeff);box-shadow:inset 0 0 0 1px rgba(37,99,235,.12),0 10px 24px rgba(37,99,235,.14);color:#2563eb}
.spa-single-gear svg{width:48px;height:48px;display:block;fill:currentColor;transform-origin:50% 50%;animation:spa-single-gear-spin 1.35s linear infinite}
.spa-single-gear .spa-gear-hole{fill:#f4fbff}
.spa-single-gear-small{width:54px;height:54px;box-shadow:inset 0 0 0 1px rgba(37,99,235,.12),0 8px 18px rgba(37,99,235,.12)}
.spa-single-gear-small svg{width:35px;height:35px}
@keyframes spa-single-gear-spin{to{transform:rotate(360deg)}}
[data-spa-fragment]{position:relative;isolation:isolate}
[data-spa-fragment].is-fragment-loading{min-height:220px;overflow:hidden}
[data-spa-fragment].is-fragment-loading>*:not(.spa-fragment-loading){filter:grayscale(.12);opacity:.42;pointer-events:none;user-select:none}
.spa-fragment-loading{position:absolute;inset:0;z-index:20;display:grid;place-items:center;padding:18px;border-radius:inherit;background:rgba(241,245,249,.76);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;transition:opacity .15s ease}
.spa-fragment-loading.is-visible{opacity:1}
.spa-fragment-loading-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px 22px;border:1px solid rgba(203,213,225,.92);border-radius:20px;background:rgba(255,255,255,.96);box-shadow:0 18px 45px rgba(15,23,42,.16);text-align:center}
.spa-fragment-loading-card strong{font-size:13px;font-weight:950;color:#24324a;line-height:1.8}
@media(max-width:840px){
  .spa-loading-overlay{padding:18px;background:rgba(226,232,240,.84)}
  .spa-loading-card{width:min(360px,calc(100vw - 30px));padding:24px 20px 22px;border-radius:22px}
  .spa-loading-animation{width:70px;height:70px}
  .spa-single-gear{width:64px;height:64px}
  .spa-single-gear svg{width:43px;height:43px}
  .spa-fragment-loading{padding:12px}
  .spa-fragment-loading-card{width:min(280px,calc(100% - 24px));padding:16px 18px}
  .spa-loading-card strong{font-size:15px}
}
@media(prefers-reduced-motion:reduce){
  .spa-loading-overlay{transition:none}
  .spa-single-gear svg{animation-duration:3s}
}

/* v47 — staged uploads with real progress */
.drop-zone.has-files{border-color:#22a06b;background:linear-gradient(145deg,#f4fff9,#eefbf6)}
.drop-zone.has-files::before{content:"✓";color:#087f5b;background:#ecfdf5}
.drop-zone.is-dragover{transform:translateY(-2px);border-width:2px;box-shadow:0 16px 34px rgba(37,99,235,.13),inset 0 0 0 2px rgba(37,99,235,.08)}
.upload-progress-panel{margin-top:14px;padding:16px 18px;border:1px solid #d8e4f2;border-radius:18px;background:linear-gradient(145deg,#fff,#f7fbff)}
.upload-progress-panel[hidden]{display:none!important}
.upload-progress-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px}
.upload-progress-head>div{min-width:0}
.upload-progress-head strong{display:block;color:#17233b;font-size:13px;font-weight:950;line-height:1.8}
.upload-progress-head span{display:block;margin-top:2px;color:#64748b;font-size:10.5px;font-weight:700;line-height:1.8;overflow-wrap:anywhere}
.upload-progress-head b{flex:0 0 auto;color:#1d4ed8;font-size:19px;font-weight:950;direction:ltr}
.upload-progress-track{height:12px;overflow:hidden;border-radius:999px;background:#e6edf6;box-shadow:inset 0 1px 3px rgba(15,23,42,.08)}
.upload-progress-track>span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#06b6d4);transition:width .18s ease}
.upload-progress-panel[data-state="processing"] .upload-progress-track>span{background:linear-gradient(90deg,#7c3aed,#2563eb);animation:upload-progress-pulse 1.1s ease-in-out infinite alternate}
.upload-progress-panel[data-state="complete"]{border-color:#b9e6ce;background:linear-gradient(145deg,#f8fffb,#effcf5)}
.upload-progress-panel[data-state="complete"] .upload-progress-head b{color:#087f5b}
.upload-progress-panel[data-state="complete"] .upload-progress-track>span{background:linear-gradient(90deg,#16a34a,#0d9488)}
.upload-progress-panel[data-state="error"]{border-color:#efc3bf;background:#fff7f6}
.upload-progress-panel[data-state="error"] .upload-progress-head b{color:#b42318}
.upload-progress-error{margin:10px 0 0;padding:9px 11px;border-radius:11px;background:#feecea;color:#9c241b;font-size:10.5px;font-weight:850;line-height:1.8}
.upload-progress-error[hidden]{display:none!important}
@keyframes upload-progress-pulse{from{filter:saturate(.9);opacity:.82}to{filter:saturate(1.25);opacity:1}}
@media(max-width:840px){
  .upload-progress-panel{padding:14px;border-radius:16px}
  .upload-progress-head{gap:10px}
  .upload-progress-head b{font-size:17px}
}
@media(prefers-reduced-motion:reduce){
  .upload-progress-track>span{transition:none}
  .upload-progress-panel[data-state="processing"] .upload-progress-track>span{animation:none}
}


/* Messenger control centre — v49 */
.messenger-hero{background:linear-gradient(135deg,#0b3b66,#087d8c 60%,#10a6a3);color:#fff}
.messenger-hero .hero-kicker,.messenger-hero p{color:rgba(255,255,255,.82)}
.messenger-orb{background:rgba(255,255,255,.14);color:#fff;border:1px solid rgba(255,255,255,.24)}
.messenger-panel{display:flex;flex-direction:column;gap:20px;overflow:hidden}
.messenger-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.messenger-tab{min-height:78px;display:flex;align-items:center;gap:12px;padding:13px;border:1px solid var(--line);border-radius:17px;background:#f8fafc;color:var(--text);text-align:right}
.messenger-tab.is-active{border-color:#82cbd2;background:linear-gradient(145deg,#effcfc,#f7fbff);box-shadow:0 10px 28px rgba(8,125,140,.11)}
.messenger-tab.is-disabled{opacity:.58;cursor:not-allowed}
.messenger-tab>span:last-child{display:flex;flex-direction:column;gap:3px;min-width:0}
.messenger-tab strong{font-size:13px}.messenger-tab small{color:var(--text-soft);font-size:10px}
.messenger-logo{width:42px;height:42px;display:grid;place-items:center;flex:0 0 42px;border-radius:14px;background:#e8eef6;color:#64748b;font-weight:950;font-size:18px}
.bale-logo{background:linear-gradient(145deg,#13a5c5,#087d8c);color:#fff;box-shadow:0 8px 20px rgba(8,125,140,.2)}
.messenger-status-strip{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 17px;border:1px solid #d8e5ee;border-radius:17px;background:#f7fafc}
.messenger-status-main,.messenger-status-meta{display:flex;align-items:center;gap:11px}.messenger-status-main>div,.messenger-status-meta{flex-direction:column;align-items:flex-start;gap:2px}
.messenger-status-main small,.messenger-status-meta span{color:var(--text-soft);font-size:10px;font-weight:900}.messenger-status-main strong,.messenger-status-meta strong{font-size:12px}
.messenger-status-dot{width:13px;height:13px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 5px rgba(148,163,184,.14)}
.messenger-status-strip[data-connection-status="connected"] .messenger-status-dot{background:#10b981;box-shadow:0 0 0 5px rgba(16,185,129,.14)}
.messenger-status-strip[data-connection-status="testing"] .messenger-status-dot{background:#f59e0b;animation:messengerPulse 1.2s ease-in-out infinite}
.messenger-status-strip[data-connection-status="error"] .messenger-status-dot{background:#ef4444;box-shadow:0 0 0 5px rgba(239,68,68,.12)}
@keyframes messengerPulse{50%{transform:scale(.75);box-shadow:0 0 0 9px rgba(245,158,11,.06)}}
.messenger-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:18px}
.messenger-card{padding:18px;border:1px solid var(--line);border-radius:19px;background:linear-gradient(145deg,#fff,#f9fbfd);box-shadow:0 8px 25px rgba(15,23,42,.04)}
.compact-head{margin-bottom:15px}.compact-head h3{font-size:14px}.compact-head p{font-size:10.5px}
.security-chip,.webhook-state{display:inline-flex;align-items:center;justify-content:center;padding:6px 9px;border-radius:999px;font-size:9px;font-weight:950;white-space:nowrap}
.security-chip{background:#eef5ff;color:#2855a1;border:1px solid #d5e4fa;direction:ltr}
.messenger-token-form{display:flex;flex-direction:column;gap:9px}.messenger-token-form>label{font-size:11px;font-weight:950;color:#34445d}
.messenger-token-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;direction:ltr}.messenger-token-input-row input{direction:ltr;text-align:left;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}
.token-visibility{min-width:68px;border:1px solid #d5e2f2;border-radius:12px;background:#f3f7fc;color:#2459a5;font-weight:950;font-size:10px}
.messenger-existing-token{color:var(--text-soft);font-size:10px;line-height:1.8}.messenger-existing-token b{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;direction:ltr;unicode-bidi:isolate}
.messenger-form-actions,.webhook-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:7px}.btn-secondary{color:#1e4f91;background:#eef5ff;border-color:#d3e2f8}.btn-danger-soft{color:#a61b14;background:#fff0ef;border-color:#f0c6c2}
.messenger-live-check{position:relative;margin-top:17px;padding:15px;display:grid;grid-template-columns:46px minmax(0,1fr);gap:12px;border:1px solid #cfe6eb;border-radius:16px;background:#f2fbfc;overflow:hidden}
.messenger-live-check[hidden]{display:none}.messenger-live-animation{width:46px;height:46px;display:grid;place-items:center;border-radius:50%;background:#fff;border:1px solid #d9eef1}
.messenger-live-animation span{width:23px;height:23px;border:3px solid #0e8a99;border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}
.messenger-live-copy{display:flex;flex-direction:column;gap:3px}.messenger-live-copy strong{font-size:12px}.messenger-live-copy span{color:var(--text-soft);font-size:10px;line-height:1.7}
.messenger-step-list{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.messenger-step-list span{padding:7px;border-radius:9px;background:#e9f1f5;color:#6b7d90;font-size:9px;font-weight:950;text-align:center}.messenger-step-list span.is-active{background:#d8f4f6;color:#087d8c}.messenger-step-list span.is-complete{background:#dcfce7;color:#047857}
.messenger-live-check.is-success{border-color:#b7e4ca;background:#f0fdf6}.messenger-live-check.is-success .messenger-live-animation span{animation:none;border-color:#10b981;background:#10b981;box-shadow:inset 0 0 0 7px #fff}
.messenger-live-check.is-error{border-color:#efc4c0;background:#fff5f4}.messenger-live-check.is-error .messenger-live-animation span{animation:none;border-color:#ef4444}
.messenger-inline-message{margin-top:12px;padding:10px 12px;border-radius:11px;font-size:10.5px;font-weight:900}.messenger-inline-message.is-success{background:#eafaf1;color:#047857}.messenger-inline-message.is-error{background:#fff0ef;color:#a61b14}
.messenger-identity{display:flex;align-items:center;gap:13px;padding:15px;border-radius:16px;background:#f2f7fc}.messenger-bot-avatar{width:56px;height:56px;display:grid;place-items:center;flex:0 0 56px;border-radius:18px;background:linear-gradient(145deg,#13a5c5,#087d8c);color:#fff;font-size:25px;font-weight:950}.messenger-identity-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.messenger-identity-copy strong{font-size:14px;overflow-wrap:anywhere}.messenger-identity-copy span{direction:ltr;text-align:right;color:#47708c;font-size:11px}
.messenger-detail-list{display:grid;gap:0;margin:13px 0 0}.messenger-detail-list div{display:flex;justify-content:space-between;gap:12px;padding:10px 2px;border-bottom:1px dashed #dfe7ef}.messenger-detail-list div:last-child{border-bottom:0}.messenger-detail-list dt{color:var(--text-soft);font-size:10px}.messenger-detail-list dd{margin:0;font-size:10.5px;font-weight:950;text-align:left;overflow-wrap:anywhere}
.messenger-webhook-card{padding:19px}.webhook-state{background:#eef2f7;color:#64748b;border:1px solid #dbe3ec}.webhook-state.is-active{background:#e7f9ef;color:#047857;border-color:#bce6cf}.webhook-state.is-error{background:#fff0ef;color:#b42318;border-color:#f1c7c3}
.webhook-layout{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:center}.webhook-address-box{display:flex;flex-direction:column;gap:5px;padding:13px;border:1px dashed #c9d9e7;border-radius:14px;background:#f8fbfd}.webhook-address-box span,.webhook-address-box small{color:var(--text-soft);font-size:9.5px}.webhook-address-box strong{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;direction:ltr;text-align:left;font-size:10.5px;overflow-wrap:anywhere}.webhook-actions{justify-content:flex-end;margin:0}.messenger-webhook-error{margin-top:12px;padding:10px;border-radius:11px;background:#fff0ef;color:#a61b14;font-size:10px}
.messenger-security-note{padding:14px 17px;border:1px solid #d9e4f1;border-radius:16px;background:#f7faff}.messenger-security-note strong{font-size:12px}.messenger-security-note p{margin:5px 0 0;color:var(--text-soft);font-size:10.5px;line-height:1.9}.messenger-security-note code{direction:ltr;unicode-bidi:isolate}
.messenger-publish-foundation{display:flex;flex-direction:column;gap:20px}.messenger-foundation-state{display:flex;align-items:center;gap:14px;padding:18px;border:1px solid #efd89e;border-radius:18px;background:#fffaf0}.messenger-foundation-state.is-ready{border-color:#bce5cc;background:#effbf4}.messenger-foundation-icon{width:46px;height:46px;display:grid;place-items:center;flex:0 0 46px;border-radius:15px;background:#fff;color:#9a5506;font-size:20px;font-weight:950}.messenger-foundation-state.is-ready .messenger-foundation-icon{color:#047857}.messenger-foundation-state>div{display:flex;flex-direction:column;gap:3px}.messenger-foundation-state small{color:var(--text-soft);font-size:9.5px}.messenger-foundation-state strong{font-size:14px}.messenger-foundation-state p{margin:0;color:var(--text-soft);font-size:10.5px}
.messenger-roadmap-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.messenger-roadmap-grid article{display:flex;gap:10px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#fafcfe}.messenger-roadmap-grid article>span{width:30px;height:30px;display:grid;place-items:center;flex:0 0 30px;border-radius:10px;background:#eaf3ff;color:#1d4ed8;font-weight:950}.messenger-roadmap-grid article div{display:flex;flex-direction:column;gap:4px}.messenger-roadmap-grid strong{font-size:11px}.messenger-roadmap-grid p{margin:0;color:var(--text-soft);font-size:9.5px;line-height:1.8}.messenger-phase-note,.messenger-user-permission{padding:14px;border:1px solid #dce5ef;border-radius:15px;background:#f8fafc}.messenger-phase-note strong,.messenger-user-permission>strong{font-size:11px}.messenger-phase-note p,.messenger-user-permission small{display:block;margin:5px 0 0;color:var(--text-soft);font-size:10px;line-height:1.9}.messenger-user-permission .switch-row{margin-top:10px}
@media(max-width:1024px){.messenger-roadmap-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.messenger-grid{grid-template-columns:1fr}.webhook-layout{grid-template-columns:1fr}.webhook-actions{justify-content:flex-start}}
@media(max-width:840px){.messenger-panel{padding:14px}.messenger-tabs{display:flex;overflow:auto;scroll-snap-type:x mandatory;padding-bottom:4px}.messenger-tab{min-width:215px;scroll-snap-align:start}.messenger-status-strip{align-items:flex-start;flex-direction:column}.messenger-status-meta{width:100%;padding-top:10px;border-top:1px solid #e3ebf2}.messenger-card{padding:15px}.messenger-token-input-row{grid-template-columns:1fr}.token-visibility{min-height:38px}.messenger-form-actions .btn,.webhook-actions .btn{flex:1 1 100%}.messenger-step-list{grid-template-columns:1fr}.messenger-roadmap-grid{grid-template-columns:1fr}.messenger-foundation-state{align-items:flex-start}.webhook-address-box strong{font-size:9.5px}}

.permission-role-note{display:block;width:100%;padding:8px 10px;border-radius:10px;background:#f7f9fc;color:var(--text-soft);font-size:9.5px;line-height:1.8}

.mobile-bottom-nav.is-content-manager{grid-template-columns:repeat(2,minmax(0,1fr));max-width:360px;right:50%;transform:translateX(50%)}

/* v53 — server-authoritative organization scope builder and responsive permissions */
.organization-scope-builder{display:grid;gap:12px;padding:15px;border:1px solid #d9e5f2;border-radius:18px;background:linear-gradient(145deg,#fbfdff,#f4f8fc);min-height:76px}
.scope-builder-placeholder,.scope-builder-error,.scope-builder-complete,.scope-builder-loading{display:flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:10px 12px;border-radius:12px;font-size:10.5px;font-weight:850;line-height:1.8;text-align:center}
.scope-builder-placeholder{color:#64748b;background:#f8fafc;border:1px dashed #cbd5e1}
.scope-builder-error{color:#a61b14;background:#fff0ef;border:1px solid #efc6c2}
.scope-builder-complete{flex-direction:column;color:#31506e;background:#f0f7ff;border:1px solid #d7e7fa}
.scope-builder-complete strong{font-size:12px}.scope-builder-complete span{color:#64748b;font-size:9.5px}
.scope-builder-loading{color:#2459a5;background:#eef6ff;border:1px solid #d4e6fa}
.scope-builder-loading>span{width:20px;height:20px;border:3px solid #93c5fd;border-top-color:#2563eb;border-radius:50%;animation:spin .8s linear infinite}
.scope-builder-row{margin:0}.scope-builder-row.is-locked label::after{content:" امن";margin-right:5px;color:#087f5b;font-size:8px}
.scope-locked-value{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 13px;border:1px solid #cfe5d8;border-radius:13px;background:#f2fcf6}
.scope-locked-value span{color:#668072;font-size:9px;font-weight:800}.scope-locked-value strong{color:#086b4c;font-size:11px;font-weight:950}
.scope-builder-valid{padding:8px 10px;border-radius:10px;background:#e9f9f0;color:#087f5b;font-size:9.5px;font-weight:900;text-align:center}
.permission-create-box{display:flex;flex-direction:column;gap:12px;min-width:0;overflow:hidden;padding:15px;border:1px solid #dbe5ef;border-radius:18px;background:#f9fbfd;container-type:inline-size}
.permission-create-box[hidden]{display:none!important}.permission-create-head{display:flex;min-width:0;flex-direction:column;gap:3px}.permission-create-head strong{font-size:12px}.permission-create-head small{color:#64748b;font-size:10px;line-height:1.9;overflow-wrap:anywhere}
.permission-create-grid{display:grid;min-width:0;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:9px}
.permission-option{display:grid;grid-template-columns:20px minmax(0,1fr);align-items:start;gap:9px;min-width:0;padding:11px 12px;border:1px solid #dce5ef;border-radius:12px;background:#fff;font-size:10.5px;font-weight:800;line-height:1.85;cursor:pointer}
.permission-option:hover{border-color:#b9cce2;background:#fbfdff}.permission-option[hidden]{display:none!important}
.permission-option input[type=checkbox]{appearance:auto!important;-webkit-appearance:checkbox!important;box-sizing:border-box!important;display:block!important;inline-size:18px!important;block-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;max-width:18px!important;min-height:0!important;max-height:18px!important;padding:0!important;margin:3px 0 0!important;border:0!important;border-radius:3px!important;box-shadow:none!important;flex:0 0 18px!important;accent-color:var(--primary)}
.permission-option span{display:block;min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:normal;white-space:normal}
.permission-security-note{margin:0;padding:10px 11px;border-radius:11px;background:#fff8e8;color:#7c5310;font-size:9.5px;font-weight:800;line-height:1.9;overflow-wrap:anywhere}
@container(max-width:500px){.permission-create-grid{grid-template-columns:1fr}.permission-option{padding:10px 11px}}
@media(max-width:840px){.organization-scope-builder,.permission-create-box{padding:12px;border-radius:16px}.scope-locked-value{align-items:flex-start;flex-direction:column;gap:3px}}
@media(max-width:420px){.permission-create-box{padding:10px}.permission-create-grid{gap:7px}.permission-option{font-size:10px;line-height:1.8}}
.scope-builder-unavailable{display:block;margin-top:4px;color:#a04416;font-size:9.5px;font-weight:800;line-height:1.8;overflow-wrap:anywhere}

/* v54 — feed-driven organization structure */
.organization-bootstrap-alert{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;border-width:1px;border-style:solid}
.organization-bootstrap-alert.is-warning{border-color:#f1c86b;background:linear-gradient(135deg,#fffdf5,#fff8df)}
.organization-bootstrap-alert.is-danger{border-color:#efb0b0;background:linear-gradient(135deg,#fffafa,#fff1f1)}
.organization-bootstrap-alert__body{min-width:0}.organization-bootstrap-alert__body strong{display:block;font-size:14px;margin-bottom:5px}.organization-bootstrap-alert__body p{margin:0;color:#64748b;line-height:2;font-size:11px}
.organization-bootstrap-alert__actions{display:flex;flex-wrap:wrap;gap:8px;flex:0 0 auto}
.organization-review-panel{overflow:hidden}.organization-review-status{display:flex;flex-direction:column;gap:4px;margin:0 0 14px;padding:12px 14px;border:1px solid #dbe5ef;border-radius:14px;background:#f8fafc}
.organization-review-status strong{font-size:12px}.organization-review-status span{color:#64748b;font-size:10.5px;line-height:1.9}
.organization-review-list{display:grid;gap:12px}.organization-review-complete{display:flex;flex-direction:column;gap:5px;padding:16px;border:1px solid #b7e2c5;border-radius:14px;background:#f2fbf5}.organization-review-complete strong{font-size:13px}.organization-review-complete span{font-size:10.5px;color:#52725c}
.organization-resolution-card{min-width:0;padding:14px;border:1px solid #dbe5ef;border-radius:16px;background:#fff;transition:opacity .2s ease,border-color .2s ease}.organization-resolution-card.is-busy{opacity:.68;pointer-events:none;border-color:#b9cbe0}
.organization-resolution-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;min-width:0}.organization-resolution-card__head>div{display:flex;flex-direction:column;gap:4px;min-width:0}.organization-resolution-card__head strong{font-size:12.5px;overflow-wrap:anywhere}.organization-resolution-card__head span:not(.scope-chip){font-size:10.5px;color:#64748b;line-height:1.9;overflow-wrap:anywhere}
.organization-resolution-rows{margin-top:8px;color:#64748b;font-size:9.8px;line-height:1.9;overflow-wrap:anywhere}
.organization-resolution-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:end;margin-top:12px}.organization-resolution-controls>.btn{min-height:42px;align-self:end}.organization-resolution-controls .form-row{min-width:0;margin:0}.organization-resolution-controls select,.organization-resolution-controls input{width:100%;min-width:0}.organization-resolution-controls [hidden]{display:none!important}
.organization-resolution-message{margin-top:10px;padding:9px 11px;border-radius:10px;background:#eef6ff;color:#35516f;font-size:10px;line-height:1.8}.organization-resolution-message.is-error{background:#fff1f1;color:#9f3030}
@media(max-width:900px){.organization-bootstrap-alert{align-items:stretch;flex-direction:column}.organization-bootstrap-alert__actions{width:100%}.organization-bootstrap-alert__actions .btn{flex:1 1 180px}.organization-resolution-controls{grid-template-columns:1fr}.organization-resolution-card__head{flex-direction:column}.organization-resolution-card__head .scope-chip{align-self:flex-start}}
@media(max-width:520px){.organization-bootstrap-alert,.organization-resolution-card{padding:11px}.organization-bootstrap-alert__actions{display:grid;grid-template-columns:1fr}.organization-resolution-controls{gap:8px}.organization-review-status{padding:10px 11px}}
