/* assets/css/ua_app_shell_contract.css
   App Shell Contract - تنظيم هيكلي فقط.
   هذا الملف لا يعيد تصميم الواجهة ولا يغير أماكن السايدبار أو شريط الإحصاء أو شريط النوافذ.
   هدفه تثبيت أسماء مناطق الواجهة الحالية حتى تصبح التعديلات اللاحقة داخل Workspace فقط. */

:root{
  /* Aliases only: لا تغيّر أي قيمة حالية، بل تقرأ المتغيرات الموجودة في التصميم. */
  --ua-contract-sidebar-w: var(--ua-sidebar-w, 238px);
  --ua-contract-sidebar-gap: var(--ua-sb-gap, 8px);
  --ua-contract-stats-h: 46px;
  --ua-contract-windowbar-h: 42px;
  --ua-contract-workspace-w: 100vw;
  --ua-contract-viewport-h: 100vh;
  --ua-contract-workspace-top: 130px;
  --ua-contract-workspace-h: calc(var(--ua-contract-viewport-h) - var(--ua-contract-workspace-top));
  --ua-contract-workspace-min-h: max(320px, var(--ua-contract-workspace-h));
  --ua-contract-edge-gap: clamp(6px, 1vw, 16px);
}

@supports (height:100dvh){
  :root{--ua-contract-viewport-h:100dvh;}
}

[data-ua-shell-contract="locked"] [data-ua-shell-region]{
  box-sizing:border-box;
}

/* حماية معنوية للهيكل: المناطق معرفة فقط، بدون تغيير هندسة أو ألوان. */
#uaShellRoot,
#uaShellStatsBar,
#uaShellGoldLine,
#uaShellWindowBar,
#uaShellMain,
#uaWorkspaceHost{
  box-sizing:border-box;
}

/* Workspace الرسمي هو نفس .ua-page الحالي، حتى لا ننشئ طبقة جديدة تغيّر القياسات. */
#uaWorkspaceHost[data-ua-workspace-host="1"]{
  min-width:0;
  width:100%;
  max-width:100%;
}

/* One responsive geometry contract for every desktop page. */
:where(
  #uaShellRoot,
  #uaShellMain,
  #uaWorkspaceHost,
  .ua-main,
  .ua-page,
  .content-wrapper,
  .content,
  .container,
  .container-fluid,
  .row,
  .card,
  .ua-card,
  .ua-panel,
  .ua-widget
){
  box-sizing:border-box;
  min-width:0;
  max-width:100%;
}

:where(.table-responsive,.ua-table-wrap,[data-ua-scroll-region]){
  box-sizing:border-box;
  min-width:0;
  max-width:100%;
  overflow:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}

[data-ua-scroll-region].ua-scroll-y-needed{
  scrollbar-gutter:stable;
}

/* Pages that should consume the remaining screen opt into this contract. */
[data-ua-viewport-fill]{
  box-sizing:border-box;
  min-width:0;
  width:100%;
  min-height:var(--ua-fill-available-h, var(--ua-contract-workspace-min-h));
}

/* Conventional dialogs remain inside the visible monitor at every scale. */
:where(.modal-dialog,.ua-modal,.ua-dialog,[role="dialog"] > :first-child){
  box-sizing:border-box;
  max-width:min(var(--ua-dialog-max-w, 960px), calc(100vw - (var(--ua-contract-edge-gap) * 2)));
  max-height:calc(var(--ua-contract-viewport-h) - (var(--ua-contract-edge-gap) * 2));
}

@media (max-width:900px){
  :root{
    --ua-contract-edge-gap:8px;
    --ua-contract-workspace-min-h:max(280px, var(--ua-contract-workspace-h));
  }
}
