/* 4SO VPN Enterprise — cohesive responsive console (DBaaS visual language).
   Loaded AFTER legacy styles so design/layout overrides stay isolated. */
@font-face{font-family:Vazirmatn;src:url('/assets/fonts/Vazirmatn.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
@font-face{font-family:'IBM Plex Sans';src:url('/assets/fonts/IBMPlexSans-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'IBM Plex Sans';src:url('/assets/fonts/IBMPlexSans-500.woff2') format('woff2');font-style:normal;font-weight:500;font-display:swap}
@font-face{font-family:'IBM Plex Sans';src:url('/assets/fonts/IBMPlexSans-600.woff2') format('woff2');font-style:normal;font-weight:600 800;font-display:swap}
@font-face{font-family:'IBM Plex Mono';src:url('/assets/fonts/IBMPlexMono-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
:root{--ui-sidebar:262px;--ui-radius:10px;--ui-shadow:0 6px 28px rgba(10,23,29,.035);--ui-focus:0 0 0 3px rgba(10,124,114,.14)}
html{scroll-behavior:smooth}
html[lang="fa"] body,html[lang="fa"] button,html[lang="fa"] input,html[lang="fa"] select,html[lang="fa"] textarea{font-family:Vazirmatn,Tahoma,Arial,sans-serif}
html[lang="en"] body,html[lang="en"] button,html[lang="en"] input,html[lang="en"] select,html[lang="en"] textarea{font-family:'IBM Plex Sans','Segoe UI',sans-serif}
body{font-size:14px;line-height:1.72;overflow-x:hidden}
[hidden]{display:none!important}
button{transition:background .16s ease,border-color .16s ease,color .16s ease}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--v3-accent);outline-offset:2px}
button,.button{border-radius:7px;min-height:40px}
h1,h2,h3{font-weight:760;line-height:1.42;letter-spacing:0}
h1{font-size:clamp(22px,2.1vw,29px)}
h2{font-size:17px}
h3{font-size:14px}
.muted{color:var(--v3-ink-2)}
.small{font-size:12px}
.mono,code,pre,.latin{font-family:'IBM Plex Mono',Consolas,monospace;direction:ltr;unicode-bidi:isolate;font-variant-numeric:tabular-nums}
:root[data-theme="dark"]{--ui-shadow:0 6px 28px rgba(0,0,0,.2)}
/* App shell; grid respects HTML writing direction automatically. */
.shell{display:grid;grid-template-columns:var(--ui-sidebar) minmax(0,1fr);min-height:100dvh;max-width:100%;align-items:stretch}
.sidebar{position:sticky;inset-block-start:0;height:100dvh;min-width:0;min-height:0;display:flex;flex-direction:column;gap:16px;background:var(--v3-surface);border-inline-end:1px solid var(--v3-line);padding:22px 14px}
.sidebar .brand{margin:0 5px;padding:3px 4px 22px;border-bottom:1px solid var(--v3-line)}
.logo,.logo-picture{width:42px;height:42px;flex-shrink:0;border-radius:9px}
.brand strong{font-size:15px;white-space:nowrap}.brand small{font-size:11px}
.sidebar-nav{display:block;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding-inline:3px;scrollbar-width:thin}
.nav-section{display:flex;flex-direction:column;gap:4px;margin:0 0 23px}
.nav-section-label{padding:8px 10px 9px;color:var(--v3-ink-3);font-size:10px;font-weight:750;letter-spacing:.035em;text-align:start;direction:inherit;line-height:1.6}
.sidebar-nav .nav-section button{display:flex;align-items:center;justify-content:flex-start;gap:12px;min-height:42px;width:100%;padding:10px 12px;border:1px solid transparent;border-radius:8px;text-align:start;font-weight:530;color:var(--v3-ink-2);background:transparent;white-space:normal;line-height:1.48}
.nav-section button .nav-icon{width:19px;height:19px;flex-shrink:0;opacity:.76}
.nav-section button .nav-text{min-width:0;flex:1}
.sidebar-nav .nav-section button:hover{color:var(--v3-ink);background:var(--v3-surface-2)}
.sidebar-nav .nav-section button.active{color:var(--v3-accent);background:var(--v3-accent-soft);border-color:transparent;font-weight:760;border-inline-start:3px solid var(--v3-accent);padding-inline-start:10px}
.sidebar-nav .nav-section button.active .nav-icon{opacity:1}
.side-foot{margin-top:auto;margin-inline:4px;padding:15px 9px;border-top:1px solid var(--v3-line);font-size:11px;line-height:1.7}
.workspace{min-width:0;max-width:100%;width:100%}
.topbar{height:72px;background:var(--v3-surface);border-bottom:1px solid var(--v3-line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,3vw,46px);gap:12px}
.topbar-identity{display:flex;align-items:center;gap:12px;min-width:0}
.topbar-identity>div{min-width:0}
.topbar-identity strong{font-size:13px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-identity small{font-size:11px;display:block}
.topbar-avatar{width:37px;height:37px;background:var(--v3-accent-soft);color:var(--v3-accent);border:1px solid var(--v3-line);border-radius:10px;display:grid;place-items:center;font-weight:800}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}
.topbar-actions button{padding:7px 12px;font-size:12px;min-height:36px}
.menu-toggle{display:none!important}
.menu-scrim{display:none}
.page{width:100%;max-width:1580px;margin:0 auto;padding:clamp(22px,2.6vw,38px) clamp(18px,3vw,46px) 72px;min-width:0}
.page-header{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:0 0 23px;margin:0 0 24px;border-bottom:1px solid var(--v3-line)}
.page-header h1{margin:0;font-size:clamp(22px,2.2vw,28px)}
.page-header p{margin:2px 0 0;max-width:840px;line-height:1.75;color:var(--v3-ink-2)}
.page-header .eyebrow{letter-spacing:.085em;font:600 10px/1.5 'IBM Plex Mono',monospace;color:var(--v3-accent)}
.page-content{min-width:0}
.page-content>.note{margin:0 0 20px}
.page-content>.actions{margin:0 0 18px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(176px,1fr));gap:14px;margin:0 0 19px}
.metric,.panel{background:var(--v3-surface);border:1px solid var(--v3-line);box-shadow:var(--ui-shadow);border-radius:var(--ui-radius)}
.metric{padding:20px;min-width:0;margin-bottom:0}
.metric strong{font-size:clamp(23px,2.4vw,30px);line-height:1.35}
.metric small{font-size:12px;color:var(--v3-ink-2)}
.panel{min-width:0;padding:clamp(17px,2vw,25px);margin:0 0 18px}
.panel-head{margin:0 0 18px;min-height:30px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.panel-head h2{margin:0;font-size:16px}
.note{border-radius:8px;border-inline-start-width:3px}
.empty-box{border-radius:9px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:20px;row-gap:13px;align-items:end}
.field{min-width:0;display:flex;flex-direction:column;gap:7px;margin:0}
.field>span{font-size:12px;line-height:1.65;color:var(--v3-ink-2);font-weight:650}
.field input,.field select,.field textarea,input,select,textarea{min-width:0;font-size:13px;min-height:43px;border-radius:7px}
.field input,.field select,.field textarea{width:100%;padding:9px 12px}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--v3-accent);box-shadow:var(--ui-focus);outline:none}
.field input[dir="ltr"],.field textarea[dir="ltr"]{text-align:left}
.form-grid>.wide-row{grid-column:1/-1}
.form-grid>button:not(.wide-row){align-self:end}
.table-wrap{overflow-x:auto;max-width:100%;border-radius:8px;border:1px solid var(--v3-line);background:var(--v3-surface)}
table{width:100%;border-collapse:collapse;min-width:610px}
table th,table td{padding:12px 13px;text-align:start;vertical-align:middle;white-space:normal;border-bottom:1px solid var(--v3-line)}
table th{color:var(--v3-ink-3);font-size:11px;font-weight:760;white-space:nowrap;background:var(--v3-surface-2)}
table td{font-size:12px;line-height:1.8}
table tr:last-child td{border-bottom:0}
table tbody tr:hover{background:var(--v3-surface-2)}
table td .actions{margin:0}
table td button{min-height:32px;padding:5px 10px;font-size:11px;white-space:nowrap}
button.primary{background:var(--v3-accent);border-color:var(--v3-accent);color:white}
button.primary:hover{filter:brightness(.94)}
.grid-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.profile-tile{border-radius:9px}
.latin,[dir="ltr"]{unicode-bidi:isolate}
.check-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
/* Purposeful page composition: cards beside alerts, instead of infinite stack. */
.page-content[data-page="overview"],.page-content[data-page="credentials"]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.page-content[data-page="overview"]>.cards,.page-content[data-page="overview"]>.actions,.page-content[data-page="credentials"]>.cards,.page-content[data-page="credentials"]>.actions{grid-column:1/-1;margin:0}
.page-content[data-page="overview"]>.panel,.page-content[data-page="credentials"]>.panel{margin:0}
.page-content[data-page="overview"]>.note,.page-content[data-page="credentials"]>.note{grid-column:1/-1}
/* Explicit content tabs, keyboard accessible and RTL arrow aware. */
.module-tabs{width:100%;min-width:0}
.module-tablist{display:flex;align-items:center;gap:5px;overflow-x:auto;overscroll-behavior-x:contain;padding:2px 2px 0;margin:0 0 21px;border-bottom:1px solid var(--v3-line);scrollbar-width:thin}
.module-tab{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:45px;padding:11px 18px;border:0;border-bottom:3px solid transparent;border-radius:8px 8px 0 0;background:transparent;color:var(--v3-ink-2);font-size:12px;font-weight:670;white-space:nowrap}
.module-tab:hover{background:var(--v3-surface-2);color:var(--v3-ink)}
.module-tab[aria-selected="true"]{border-bottom-color:var(--v3-accent);background:var(--v3-surface);color:var(--v3-accent);font-weight:800}
.module-tabpanels{min-width:0}
.module-tabpanel{min-width:0;outline-offset:4px}
.module-tabpanel>.panel{margin-bottom:16px}
.module-tabpanel>.panel:last-child{margin-bottom:0}
.module-tabpanel>.panel:only-child{min-height:160px}
.module-tabpanel .form-grid{margin-bottom:18px}
.module-tabpanel .form-grid:last-child{margin-bottom:0}
.module-tabpanel .form-grid+table,.module-tabpanel .form-grid+.table-wrap{margin-top:15px}
.module-tabpanel pre{max-width:100%;overflow-x:auto}
.login-layout{min-height:100dvh}
.login-visual{padding:clamp(30px,4vw,74px)}
.login-card{border-radius:13px;box-shadow:var(--ui-shadow)}
.login-pitch h1{line-height:1.48}
@media(max-width:1120px){:root{--ui-sidebar:232px}.page{padding-inline:24px}.sidebar{padding-inline:10px}.cards{grid-template-columns:repeat(auto-fit,minmax(152px,1fr))}}
@media(max-width:900px){
  .shell{display:block}
  .sidebar{position:fixed;inset-block:0;inset-inline-start:0;width:min(320px,85vw);height:100dvh;z-index:1100;overflow:hidden;padding:23px 14px;box-shadow:0 12px 40px rgba(0,0,0,.14);transition:transform .2s ease;visibility:hidden}
  html[dir="rtl"] .sidebar{transform:translateX(110%)}
  html[dir="ltr"] .sidebar{transform:translateX(-110%)}
  .shell.menu-open .sidebar{transform:translateX(0);visibility:visible}
  .sidebar-nav{display:block;overflow-y:auto}
  .nav-section{display:flex;flex-direction:column;margin-bottom:18px}
  .nav-section-label{display:block}
  .sidebar-nav .nav-section button{width:100%;white-space:normal}
  .side-foot{display:block}
  .menu-toggle{display:inline-flex!important}
  .menu-scrim{position:fixed;inset:0;background:rgba(5,14,20,.52);border:0;border-radius:0;min-height:0;z-index:1050;padding:0}
  .shell.menu-open .menu-scrim{display:block}
  .topbar{height:64px;padding-inline:18px}
  .page{padding:24px 18px 60px}
  .page-content[data-page="overview"],.page-content[data-page="credentials"]{grid-template-columns:1fr}
  .login-layout{grid-template-columns:1fr}
  .login-visual{display:none}
  .grid-two{grid-template-columns:1fr}
}
@media(max-width:600px){
  body{font-size:13px}
  .page{padding:19px 13px 44px}
  .page-header{padding-block-end:17px;margin-bottom:17px}
  .topbar{padding-inline:12px}
  .topbar-actions{gap:5px}
  .topbar-actions button{padding:6px 9px;min-height:34px}
  .topbar-identity small{display:none}
  .form-grid{grid-template-columns:1fr;gap:14px}
  .cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .metric{padding:13px}
  .metric strong{font-size:22px}
  .panel{padding:15px}
  .module-tablist{gap:2px;margin-bottom:16px}
  .module-tab{padding-inline:13px}
  .login-card{padding:23px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Search/filter/pagination on every data table */
.search-console{display:flex;flex-direction:column;gap:10px;margin:0 0 15px;min-width:0}
.search-toolbar{display:grid;grid-template-columns:minmax(165px,2.3fr) minmax(100px,1fr) minmax(110px,1fr) 95px;gap:10px;align-items:end}
.search-toolbar label{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:11px;font-weight:650;color:var(--v3-ink-2)}
.search-toolbar input,.search-toolbar select{min-width:0;width:100%;height:40px;font-size:12px;background:var(--v3-surface);border:1px solid var(--v3-line);border-radius:7px;padding:6px 10px}
.search-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:35px;font-size:11px;color:var(--v3-ink-2);flex-wrap:wrap}
.search-pagination{display:flex;align-items:center;gap:8px}.search-pagination button{min-height:32px;padding:4px 11px}.search-pagination button:disabled{opacity:.4;cursor:not-allowed}
@media(max-width:800px){.search-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.search-query{grid-column:1/-1}}

/* Connection center — certified installers and profile modes */
.client-selectors{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;max-width:860px}
.client-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.client-card{padding:20px;border:1px solid var(--v3-line);background:var(--v3-surface);box-shadow:var(--ui-shadow);border-radius:10px;min-width:0}
.client-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.client-card h3{font-size:16px;margin:6px 0 10px}
.client-actions{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}
.client-actions>a,.client-actions>button{display:inline-flex;align-items:center;justify-content:center;min-height:37px;padding:7px 13px;font-size:12px}
.client-actions button:disabled{opacity:.55;cursor:not-allowed}
.client-help{border-top:1px solid var(--v3-line);padding-top:12px;margin:16px 0 0;color:var(--v3-ink-2);font-size:12px}
@media(max-width:850px){.client-grid{grid-template-columns:1fr}}
@media(max-width:590px){.client-selectors{grid-template-columns:1fr}}
