/* AlSalim Business Suite 2.0.7 — unified bilingual experience layer
   Logical properties work in Arabic RTL and English LTR without script-based mirroring.
   This stylesheet intentionally does not change saved data, authorization, or workflows. */
:root{--asg-focus:#087b72;--asg-control-height:42px;--asg-reading-size:13px}
html{scroll-padding-block-start:90px;text-size-adjust:100%;-webkit-text-size-adjust:100%}
html[lang="ar"] body{font-family:Cairo,Inter,system-ui,sans-serif}
html[lang="en"] body{font-family:Inter,Cairo,system-ui,sans-serif}
:where(button,input,select,textarea){font:inherit}
:where(button,a,input,select,textarea,[tabindex]):focus-visible{outline:3px solid var(--asg-focus)!important;outline-offset:3px}
:where(button,a){-webkit-tap-highlight-color:transparent}
:where(img,svg,video){max-inline-size:100%}
:where(.admin-main,.client-main,.admin-content,.client-content,.panel,.client-panel,.form-panel,.client-form,.modal-card,.page-head,.client-page-head){min-inline-size:0}
:where(.admin-content,.client-content,.panel,.client-panel,.form-panel,.client-form,.modal-card,.page-head,.client-page-head) :where(p,h1,h2,h3,h4,b,strong,small,span,a){overflow-wrap:anywhere}
/* Arabic content can contain Latin identifiers: keep numeric and network fields readable. */
html[dir="rtl"] :where(input[type="email"],input[type="url"],input[type="tel"],input[type="number"],input[type="date"],input[type="time"],input[type="datetime-local"],input[name="otp"],input[name="code"]){direction:ltr;text-align:start;unicode-bidi:plaintext}
:where(input,select,textarea){max-inline-size:100%}
:where(.admin-app,.portal-v190) :where(button,a,input,select,textarea){touch-action:manipulation}
:where(.admin-app,.portal-v190) :where(input,select,textarea)::placeholder{opacity:1;color:#77869a}
html[data-theme="dark"] .portal-v190 :where(input,textarea)::placeholder{color:#aab6c7}
:where(.portal-v190 .table-wrap,.portal-v190 .client-table-wrap){max-inline-size:100%;overflow-x:auto;overscroll-behavior-inline:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
:where(.portal-v190 .data-table,.portal-v190 .client-table){font-variant-numeric:tabular-nums}
:where(.portal-v190 .data-table td,.portal-v190 .client-table td){vertical-align:middle;line-height:1.65}
:where(.portal-v190 .row-actions,.portal-v190 .document-actions,.portal-v190 .form-actions){gap:9px;flex-wrap:wrap}
:where(.portal-v190 .row-actions a,.portal-v190 .row-actions button,.portal-v190 .document-actions a,.portal-v190 .document-actions button){min-block-size:36px;display:inline-flex;align-items:center;justify-content:center;padding-inline:11px}
:where(.portal-v190 .badge-status,.portal-v190 .client-status){line-height:1.5;max-inline-size:100%;white-space:normal;overflow-wrap:anywhere}
/* Admin workspace: predictable typography, cards and dense data. */
.portal-v190 .topbar h1,.portal-v190 .client-topbar-title h1{font-size:clamp(16px,1.35vw,19px);line-height:1.5;letter-spacing:0}
.portal-v190 .topbar-eyebrow{font-size:10px!important;letter-spacing:0!important}
.portal-v190 .topbar :where(.pill,.topbar-primary-action,.user-meta b),.portal-v190 .client-topbar :where(.client-top-pill,.client-top-primary,.client-user-chip b){font-size:12px}
.portal-v190 .topbar :where(.pill,.icon-button),.portal-v190 .client-topbar :where(.client-top-pill,.client-notify,.icon-button){min-block-size:40px;min-inline-size:40px}
.portal-v190 .topbar :where(.user-meta small),.portal-v190 .client-topbar :where(.client-user-chip small){font-size:10.5px}
.portal-v190 .topbar .v190-command input,.portal-v190 .client-topbar .portal-command input{font-size:12px}
.portal-v190 .topbar :where(.v190-command kbd),.portal-v190 .client-topbar :where(.portal-command kbd){font-size:10px}
.portal-v190 .side-group{font-size:11px!important;letter-spacing:.035em!important;line-height:1.5}
.portal-v190 :where(.side-link,.side-accordion-toggle,.side-submenu .side-link){font-size:12px!important;line-height:1.6}
.portal-v190 :where(.side-link-label,.side-accordion-label,.client-link-label,.client-nav-label){min-inline-size:0;overflow-wrap:anywhere}
.portal-v190 :where(.page-head h2,.client-page-head h2){font-size:clamp(21px,2.3vw,27px);line-height:1.45}
.portal-v190 :where(.page-head p,.client-page-head p,.v190-client-intro p){font-size:13px;line-height:1.75}
.portal-v190 :where(.panel h3,.client-panel-head h3){font-size:15px;line-height:1.5}
.portal-v190 :where(.panel-kicker,.client-panel-head>div>span){font-size:11px;letter-spacing:.03em}
.portal-v190 :where(.stat-card span,.stat-card small,.client-stat span,.client-stat small){font-size:12px;line-height:1.5}
.portal-v190 :where(.data-table th,.client-table th){font-size:11px;letter-spacing:0;line-height:1.6}
.portal-v190 :where(.data-table td,.client-table td){font-size:12.5px}
.portal-v190 :where(.btn,.client-btn){font-size:12.5px;min-block-size:var(--asg-control-height);line-height:1.5}
.portal-v190 :where(label,.client-form label){font-size:12.5px;line-height:1.65}
.portal-v190 :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,textarea,.client-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),.client-form select,.client-form textarea){font-size:13px;min-block-size:var(--asg-control-height)}
.portal-v190 :where(.muted,.system-note,.client-muted,.text-link,.client-small-link){font-size:12px;line-height:1.65}
.portal-v190 .pagination a{font-size:12px;min-inline-size:36px;min-block-size:36px;display:inline-grid;place-items:center}
.portal-v190 :where(.admin-content,.client-content) .panel,.portal-v190 :where(.admin-content,.client-content) .client-panel{box-shadow:0 1px 3px rgba(15,23,42,.025)}
.portal-v190 :where(.field-error-message,.client-alert,.alert){font-size:12px;line-height:1.7}
.portal-v190 :where(.topbar-actions,.client-topbar-actions,.topbar-leading,.client-topbar-leading){min-inline-size:0}
/* Make short, icon-only controls understandable on hover AND keyboard focus. */
.portal-v190 :where(.icon-pill,.client-notify,.client-top-pill,.icon-button){flex-shrink:0}
.portal-v190 :where(.topbar-actions,.client-topbar-actions) a{white-space:nowrap}
/* Mobile: permit action wrapping instead of clipping either long Arabic or English names. */
@media(max-width:1100px){
 .portal-v190 .topbar,.portal-v190 .client-topbar{gap:9px;padding-inline:16px}
 .portal-v190 .topbar :where(.topbar-primary-action span,.view-site span,.content-edit-toggle span,.notification-pill span){display:none}
 .portal-v190 :where(.topbar-primary-action,.content-edit-toggle,.notification-pill,.view-site){min-inline-size:40px;justify-content:center}
}
@media(max-width:850px){
 .portal-v190 .topbar,.portal-v190 .client-topbar{block-size:auto;min-block-size:66px;padding-block:9px;flex-wrap:wrap}
 .portal-v190 .topbar-leading,.portal-v190 .client-topbar-leading{flex:1 1 165px;min-inline-size:0}
 .portal-v190 .topbar-actions,.portal-v190 .client-topbar-actions{flex:0 1 auto;margin-inline-start:auto;display:flex;flex-wrap:wrap;justify-content:flex-end;min-inline-size:0}
 .portal-v190 .topbar :where(.user-meta,.user-chip-arrow),.portal-v190 .client-topbar :where(.client-user-chip>div,.client-user-chip>i){display:none}
 .portal-v190 .topbar :where(.pill,.user-chip),.portal-v190 .client-topbar :where(.client-top-pill,.client-notify,.client-user-chip){padding-inline:7px}
 .portal-v190 .admin-content,.portal-v190 .client-content{padding:17px 14px 36px}
 .portal-v190 .form-cols,.portal-v190 .client-form-grid{grid-template-columns:minmax(0,1fr)}
 .portal-v190 .form-cols .span-2,.portal-v190 .client-form-grid .span-2{grid-column:1/-1}
}
@media(max-width:520px){
 .portal-v190 .topbar,.portal-v190 .client-topbar{gap:7px}
 .portal-v190 .topbar-leading,.portal-v190 .client-topbar-leading{flex-basis:100%;max-inline-size:100%}
 .portal-v190 .topbar-actions,.portal-v190 .client-topbar-actions{inline-size:100%;justify-content:flex-start;margin-inline-start:0}
 .portal-v190 :where(.page-head,.client-page-head){min-inline-size:0}
 .portal-v190 :where(.cards,.client-stats,.client-mini-stats,.v190-portal-stats,.v190-portal-quick){grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .portal-v190 :where(.page-head .form-actions,.client-page-head .form-actions){width:100%}
 .portal-v190 :where(.row-actions,.form-actions){justify-content:flex-start}
}
@media(max-width:380px){.portal-v190 :where(.cards,.client-stats,.client-mini-stats,.v190-portal-stats,.v190-portal-quick){grid-template-columns:minmax(0,1fr)}}
/* The same form and reading refinements on login/register/recovery screens. */
:where(.login-card,.install-card,.client-auth-card){max-inline-size:100%;box-sizing:border-box}
:where(.login-card,.install-card,.client-auth-card) :where(label,input,select,textarea){font-size:13px;line-height:1.6}
:where(.login-card,.install-card,.client-auth-card) :where(input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),select,textarea){min-block-size:var(--asg-control-height)}
:where(.login-card,.install-card,.client-auth-card) :where(.btn,.client-btn){min-block-size:44px;font-size:13px}
@media(max-width:480px){:where(.login-card,.install-card,.client-auth-card){padding-inline:20px}}
/* Public landing page: fewer clipped bilingual headings and better control accessibility. */
.site-header :where(.lang,.client-link,.admin-link),.btn-site{min-block-size:42px;display:inline-flex;align-items:center;justify-content:center}
:where(.hero-copy,.section-head,.service-card,.contact-form,.footer-main) :where(h1,h2,h3,p){overflow-wrap:anywhere}
html[lang="en"] .hero h1{letter-spacing:-.018em;line-height:1.17}
html[lang="ar"] .hero h1{letter-spacing:0;line-height:1.45}
:where(.contact-form input,.contact-form textarea){font-size:14px;line-height:1.6;min-block-size:44px}
@media(max-width:580px){.hero h1{font-size:clamp(30px,8.4vw,38px)!important}.nav-actions{gap:7px}.contact-form .two{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
