/* archive.css — design tokens, the page shell (sidebar / topbar / mobile menu) and the shared
   components every page uses. Page-specific rules live in archive-<area>.css (one file per area).

   COMPONENT CONTRACT (class names the page templates rely on)
   Buttons   .button (primary) · .button.secondary · .button.danger · .button.text · .button.small · .text-button
   Badges    .badge · .badge.green/.success · .badge.amber/.warning · .badge.red/.danger · .badge.blue/.info
   Notices   .notice (plain) · .notice.success · .notice.warning · .notice.error · .notice.info — icon via ::before
   Panels    .panel · .panel-heading (title + optional link/button) · .panel.narrow
   Forms     label (block) · .hint / .field-hint (grey helper text) · .field-error (red text) ·
             .is-invalid on a control or [aria-invalid=true] · .form-actions (button row) · .fields-2/-3/-4 grids
   Checks    .checks > label (checkbox/radio rows, ≥44px tall touch targets) · .checks.stack (one per line)
   Choices   .choices > label.choice > input + .choice-title + .choice-hint (card-style radios with an example line)
   Steps     ol.steps > li.step (numbered wizard sections inside ONE form; CSS counter, no script)
   Details   details > summary (expandable blocks)
   Tables    .table-scroll > table (horizontal scroll on narrow screens)
   Tabs      CSS-only radio tabs — markup:
             <div class="tabs">
               <input type="radio" name="t" id="t-1" class="tab-input" checked><label for="t-1" class="tab">الأول</label>
               <input type="radio" name="t" id="t-2" class="tab-input"><label for="t-2" class="tab">الثاني</label>
               <div class="tab-panels"><section class="tab-panel">…</section><section class="tab-panel">…</section></div>
             </div>
             Rules: inputs come first (alternating input/label), the N-th input shows the N-th .tab-panel
             (up to 8 tabs); ids must be unique per page; one input carries `checked`.
   Loading   archive.js adds .is-loading to a clicked link / submitted form and a .page-progress bar to <body>.
   Hidden    .hp (visually hidden but focusable) */

:root{
  /* colours */
  --color-primary:#0b7a6f;--color-primary-strong:#075f57;--color-primary-soft:#e3f3f0;
  --color-success:#1f7a46;--color-success-soft:#e7f6ec;--color-success-line:#bfe3cc;
  --color-warning:#7a5300;--color-warning-soft:#fff6e0;--color-warning-line:#efd79a;
  --color-danger:#b3261e;--color-danger-soft:#fdeeec;--color-danger-line:#f1c3bf;
  --color-info:#1d5f8a;--color-info-soft:#e8f2fb;--color-info-line:#bcd6ec;
  /* text: 3 levels, all ≥4.5:1 on white and on the page background */
  --text-1:#16292e;--text-2:#44585c;--text-3:#5f7478;--text-on-dark:#ffffff;
  /* surfaces and borders */
  --surface:#ffffff;--surface-2:#f4f7f6;--surface-3:#e9f0ee;--surface-nav:#122c31;--surface-nav-2:#1b3b41;
  --border:#d8e2e0;--border-strong:#aebfbc;
  /* spacing 4/8/12/16/24/32 */
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;
  /* type scale, base 16px */
  --text-xs:13px;--text-sm:14px;--text-base:16px;--text-lg:18px;--text-xl:22px;--text-2xl:28px;--text-3xl:34px;
  /* radii, shadows, focus */
  --radius-sm:6px;--radius:10px;--radius-lg:14px;--radius-full:999px;
  --shadow-sm:0 1px 2px rgba(22,41,46,.06);--shadow:0 4px 16px rgba(22,41,46,.07);--shadow-lg:0 12px 32px rgba(22,41,46,.16);
  --focus:#2a9d8f;--topbar-h:64px;--sidebar-w:248px;
  /* legacy aliases used by older page styles */
  --ink:var(--text-1);--muted:var(--text-3);--green:var(--color-primary);--line:var(--border);--paper:var(--surface-2);--nav:var(--surface-nav)
}

/* ---- base ---------------------------------------------------------------------------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--surface-2);color:var(--text-1);font-family:Tahoma,Arial,"Segoe UI",sans-serif;font-size:var(--text-base);line-height:1.7}
a{color:var(--color-primary);text-decoration:none}
a:hover{text-decoration:underline}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:var(--radius-sm)}
h1,h2,h3,h4,p{margin-top:0}
h1{font-size:var(--text-2xl);line-height:1.35;margin-bottom:0}
h2{font-size:var(--text-xl);line-height:1.4;margin-bottom:var(--space-4)}
h3{font-size:var(--text-lg);line-height:1.45;margin-bottom:var(--space-3)}
h4{font-size:var(--text-base);margin-bottom:var(--space-2)}
p{margin-bottom:var(--space-3)}
small{font-size:var(--text-sm)}
.muted{color:var(--text-3)}
.hp{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
img,video{max-width:100%}

/* ---- buttons --------------------------------------------------------------------------- */
.button{border:1px solid var(--color-primary);background:var(--color-primary);color:var(--text-on-dark);border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-5);font-weight:bold;font-size:var(--text-base);line-height:1.3;text-decoration:none;white-space:nowrap;cursor:pointer;transition:background .15s,box-shadow .15s}
.button:hover{background:var(--color-primary-strong);border-color:var(--color-primary-strong);text-decoration:none}
.button:disabled,.button[aria-disabled=true]{opacity:.55;cursor:default}
.button.secondary,.secondary{background:var(--surface);border-color:var(--border-strong);color:var(--text-1)}
.button.secondary:hover,.secondary:hover{background:var(--surface-3);border-color:var(--border-strong)}
.button.danger,.danger{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger-line)}
.button.danger:hover,.danger:hover{background:#f9dcd8;border-color:var(--color-danger)}
.button.text,.light{background:transparent;border-color:transparent;color:var(--color-primary)}
.button.text:hover,.light:hover{background:var(--color-primary-soft);text-decoration:none}
.button.small{min-height:36px;padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}
.button.block{width:100%}
.text-button{border:0;background:none;color:var(--color-primary);padding:var(--space-2) var(--space-3);min-height:44px;font-size:var(--text-sm);font-weight:bold;border-radius:var(--radius-sm)}
.text-button:hover{background:var(--color-primary-soft)}
.form-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center;margin-top:var(--space-4)}

/* ---- badges ---------------------------------------------------------------------------- */
.badge{display:inline-block;border-radius:var(--radius-sm);background:var(--surface-3);color:var(--text-2);padding:2px var(--space-2);font-size:var(--text-xs);font-weight:bold;line-height:1.6;white-space:nowrap}
.badge.green,.badge.success,.green{background:var(--color-success-soft);color:var(--color-success)}
.badge.amber,.badge.warning,.amber{background:var(--color-warning-soft);color:var(--color-warning)}
.badge.red,.badge.danger,.red{background:var(--color-danger-soft);color:var(--color-danger)}
.badge.blue,.badge.info,.blue{background:var(--color-info-soft);color:var(--color-info)}

/* ---- notices --------------------------------------------------------------------------- */
.notice{display:flex;gap:var(--space-3);align-items:flex-start;background:var(--surface-3);border:1px solid var(--border);color:var(--text-1);padding:var(--space-3) var(--space-4);border-radius:var(--radius);margin-bottom:var(--space-5);font-size:var(--text-sm);line-height:1.7}
.notice::before{content:"i";flex-shrink:0;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:var(--text-3);color:#fff;font-weight:bold;font-size:14px;line-height:1;margin-top:1px}
.notice.success{background:var(--color-success-soft);border-color:var(--color-success-line);color:var(--color-success)}
.notice.success::before{content:"✓";background:var(--color-success)}
.notice.warning{background:var(--color-warning-soft);border-color:var(--color-warning-line);color:var(--color-warning)}
.notice.warning::before{content:"!";background:var(--color-warning)}
.notice.error{background:var(--color-danger-soft);border-color:var(--color-danger-line);color:var(--color-danger)}
.notice.error::before{content:"✕";background:var(--color-danger)}
.notice.info{background:var(--color-info-soft);border-color:var(--color-info-line);color:var(--color-info)}
.notice.info::before{background:var(--color-info)}
.notice a{color:inherit;text-decoration:underline;font-weight:bold}
.notice p:last-child{margin-bottom:0}
/* The shell's own notice row sits right under the topbar, before the page heading. */
.notices{padding:var(--space-4) var(--space-6) 0;max-width:1500px;margin:auto;width:100%}
.notices .notice{margin-bottom:0}

/* ---- panels ---------------------------------------------------------------------------- */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);margin-bottom:var(--space-5);box-shadow:var(--shadow-sm);min-width:0}
.panel-heading{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--space-3);margin-bottom:var(--space-4)}
.panel-heading h2,.panel-heading h3{margin:0}
.panel-heading .badge{white-space:normal;max-width:100%;overflow-wrap:anywhere} /* a long summary (what is saved) wraps on a phone instead of widening the page */
.panel-heading a{font-size:var(--text-sm);font-weight:bold}
.narrow{max-width:720px}

/* ---- forms ----------------------------------------------------------------------------- */
label{display:block;font-size:var(--text-sm);font-weight:bold;color:var(--text-1)}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=range]),select,textarea{display:block;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:10px var(--space-3);width:100%;min-height:44px;margin:var(--space-1) 0 var(--space-4);color:var(--text-1);font-size:var(--text-base);min-width:0}
input:focus,select:focus,textarea:focus{outline:3px solid var(--focus);outline-offset:0;border-color:var(--color-primary)}
input::placeholder,textarea::placeholder{color:var(--text-3)}
textarea{resize:vertical;line-height:1.6}
.hint,.field-hint{display:block;color:var(--text-3);font-size:var(--text-xs);font-weight:normal;line-height:1.6;margin:-10px 0 var(--space-4)}
label .hint,label .field-hint{margin-top:2px}
fieldset .field-hint{margin:-8px 0 var(--space-2)}
.field-hint span[dir=ltr]{white-space:nowrap}
.field-error{display:block;color:var(--color-danger);font-size:var(--text-xs);font-weight:bold;margin:-10px 0 var(--space-4)}
.is-invalid,[aria-invalid=true]{border-color:var(--color-danger)!important;background:#fffafa}
.field.invalid label,.invalid>label{color:var(--color-danger)}
fieldset{border:1px solid var(--border);border-radius:var(--radius);margin:var(--space-4) 0;padding:var(--space-3) var(--space-4) 0;min-width:0}
legend{font-size:var(--text-sm);font-weight:bold;padding:0 var(--space-2)}
.fields-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-4)}
.fields-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 var(--space-4)}
.fields-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 var(--space-3)}
input[type=checkbox],input[type=radio]{width:22px;height:22px;margin:0;padding:0;accent-color:var(--color-primary);flex-shrink:0;cursor:pointer}
/* Check rows: the whole row is the target (≥44px). */
.checks{display:flex;gap:var(--space-2) var(--space-4);flex-wrap:wrap;margin:var(--space-3) 0 var(--space-4)}
.checks label{display:flex;align-items:center;gap:var(--space-3);font-weight:normal;font-size:var(--text-base);min-height:44px;padding:var(--space-2) var(--space-3);border-radius:var(--radius);cursor:pointer}
.checks label:hover{background:var(--surface-3)}
.checks label small{font-weight:normal}
.checks form{margin:0}
.checks.stack{flex-direction:column;gap:0}
/* Card-style choices with an explanation line each. */
.choices{display:grid;gap:var(--space-2);margin:var(--space-2) 0 var(--space-4)}
.choice{display:grid;grid-template-columns:auto 1fr;gap:0 var(--space-3);align-items:center;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;font-weight:normal;min-height:44px}
.choice:hover{border-color:var(--border-strong)}
.choice:has(input:checked){border-color:var(--color-primary);background:var(--color-primary-soft);box-shadow:inset 0 0 0 1px var(--color-primary)}
.choice input{grid-row:span 2}
.choice-title{font-weight:bold;font-size:var(--text-base)}
.choice-hint{color:var(--text-3);font-size:var(--text-xs);line-height:1.6}
.choice-hint code,.example{direction:ltr;unicode-bidi:isolate;display:inline-block;font-family:monospace;font-size:var(--text-xs);background:var(--surface-3);border-radius:4px;padding:0 6px}
/* Numbered wizard steps inside one form. */
.steps{list-style:none;counter-reset:step;margin:0 0 var(--space-4);padding:0}
.step{counter-increment:step;position:relative;padding:var(--space-4) 0;padding-inline-start:56px;border-top:1px solid var(--border)}
.step:first-child{border-top:0}
.step::before{content:counter(step);position:absolute;inset-inline-start:0;top:var(--space-4);width:40px;height:40px;border-radius:50%;background:var(--color-primary);color:#fff;font-weight:bold;font-size:var(--text-lg);display:grid;place-items:center}
.step>h2,.step>h3,.step-title{font-size:var(--text-lg);margin:6px 0 var(--space-3)}
.step-intro{color:var(--text-3);font-size:var(--text-sm);margin-top:-6px}
.step>:last-child{margin-bottom:0}

/* ---- details, tables, pre ------------------------------------------------------------------ */
details{border:1px solid var(--border);border-radius:var(--radius);padding:0 var(--space-4);margin:var(--space-3) 0;background:var(--surface)}
summary{cursor:pointer;color:var(--color-primary);font-weight:bold;font-size:var(--text-base);padding:var(--space-3) 0;min-height:44px;display:flex;align-items:center;gap:var(--space-2);list-style:none}
summary::-webkit-details-marker{display:none}
summary::before{content:"›";display:inline-block;transition:transform .15s;font-size:var(--text-xl);line-height:1}
details[open]>summary::before{transform:rotate(-90deg)}
details>:not(summary){margin-bottom:var(--space-4)}
details form{padding-top:var(--space-2)}
pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:var(--text-xs);padding:var(--space-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);max-height:350px;overflow:auto}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 calc(-1 * var(--space-2));padding:0 var(--space-2)}
table{width:100%;border-collapse:collapse;text-align:start;font-size:var(--text-sm)}
th,td{padding:var(--space-3);border-bottom:1px solid var(--border);vertical-align:top}
th{color:var(--text-2);background:var(--surface-2);font-weight:bold;white-space:nowrap}
td{overflow-wrap:anywhere}
tr:hover td{background:#fafcfb}
dl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-3) var(--space-2);font-size:var(--text-sm);margin:var(--space-5) 0}
dt{color:var(--text-3)}
dd{margin:0;overflow-wrap:anywhere}

/* ---- tabs (CSS-only radio tabs; see the contract at the top) --------------------------- */
.tabs{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-1);margin-bottom:var(--space-5)}
.tabs>.tab-panel{flex:1 1 100%;min-width:0} /* a panel never widens the page past the phone screen */
@media (max-width:480px){.button{max-width:100%;white-space:normal;text-align:center}}
.tab-input{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.tab{display:inline-flex;align-items:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-bottom:0;border-radius:var(--radius) var(--radius) 0 0;background:var(--surface-2);color:var(--text-2);font-weight:bold;font-size:var(--text-sm);cursor:pointer;margin-bottom:-1px}
.tab:hover{color:var(--text-1);background:var(--surface-3)}
.tab-input:checked+.tab{background:var(--surface);color:var(--color-primary);border-color:var(--border);box-shadow:inset 0 3px 0 var(--color-primary);position:relative;z-index:1}
.tab-input:focus-visible+.tab{outline:3px solid var(--focus);outline-offset:-3px}
.tab-panels{flex-basis:100%;width:100%;border:1px solid var(--border);border-radius:0 var(--radius) var(--radius) var(--radius);background:var(--surface);padding:var(--space-5);min-width:0}
.tab-panel{display:none}
.tab-panel>:last-child{margin-bottom:0}
.tab-input:nth-of-type(1):checked~.tab-panels>.tab-panel:nth-child(1),
.tab-input:nth-of-type(2):checked~.tab-panels>.tab-panel:nth-child(2),
.tab-input:nth-of-type(3):checked~.tab-panels>.tab-panel:nth-child(3),
.tab-input:nth-of-type(4):checked~.tab-panels>.tab-panel:nth-child(4),
.tab-input:nth-of-type(5):checked~.tab-panels>.tab-panel:nth-child(5),
.tab-input:nth-of-type(6):checked~.tab-panels>.tab-panel:nth-child(6),
.tab-input:nth-of-type(7):checked~.tab-panels>.tab-panel:nth-child(7),
.tab-input:nth-of-type(8):checked~.tab-panels>.tab-panel:nth-child(8){display:block}

/* ---- shell: sidebar + workspace ------------------------------------------------------ */
.shell{display:flex;min-height:100vh}
.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--surface-nav);color:#c5d6d6;padding:var(--space-5) var(--space-4);position:sticky;top:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto}
.brand{font-size:34px;color:#7fd3c2;display:flex;align-items:center;gap:var(--space-3);line-height:1;padding:0 var(--space-2)}
.brand:hover{text-decoration:none}
.brand span{font-size:var(--text-xl);font-weight:bold;color:#fff}
.brand small{display:block;font-size:10px;letter-spacing:3px;margin-top:var(--space-2);color:#9ebdbd}
.nav-label{font-size:var(--text-xs);color:#9ebdbd;margin:var(--space-6) var(--space-3) var(--space-3)}
.nav-item{display:flex;align-items:center;gap:var(--space-1);margin:2px 0;border-radius:var(--radius)}
.nav-item>a{flex:1;display:flex;align-items:center;gap:var(--space-3);color:#d4e2e2;border-radius:var(--radius);padding:10px var(--space-3);min-height:44px;font-size:var(--text-base);font-weight:bold;min-width:0}
.nav-item>a:hover{background:var(--surface-nav-2);color:#fff;text-decoration:none}
.nav-item.current>a,.sidebar nav a[aria-current]{color:#fff;background:#22514f;box-shadow:inset -3px 0 #7dd9be}
.nav-icon{font-size:var(--text-xl);width:24px;text-align:center;line-height:1;flex-shrink:0}
.nav-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-item .info-wrap{margin:0 var(--space-1);color:#9ebdbd}
.nav-item .info-button{opacity:.85}
.sidebar-bottom{font-size:var(--text-xs);margin-top:auto;padding:var(--space-5) var(--space-2) 0;color:#c5d6d6}
.sidebar-bottom small{display:block;color:#9ebdbd;margin-top:var(--space-2);line-height:1.7;font-size:var(--text-xs)}
.dot{display:inline-block;width:8px;height:8px;background:#74c9ae;border-radius:50%;margin-inline-end:var(--space-1)}
.workspace{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--border);min-height:var(--topbar-h);padding:0 var(--space-6);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);color:var(--text-2);font-size:var(--text-sm)}
.topbar-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:bold;color:var(--text-1)}
.topbar-crumb{font-weight:normal;color:var(--text-3)}
.topbar b{padding:0 var(--space-2);color:var(--border-strong)}
.topbar form{display:flex;gap:var(--space-2);align-items:center;margin:0;flex-shrink:0}
.user-avatar{width:36px;height:36px;background:var(--color-primary-soft);border-radius:50%;display:grid;place-items:center;color:var(--color-primary);font-weight:bold;flex-shrink:0}
.menu-button{display:none}
main#main{padding:var(--space-6);max-width:1500px;margin:0 auto;width:100%;flex:1}
.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-5);gap:var(--space-4)}
.eyebrow{font-size:var(--text-xs);color:var(--text-3);display:block;margin-bottom:var(--space-1)}
.environment{font-size:var(--text-xs);background:var(--surface-3);color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px var(--space-2);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.environment:empty{display:none}
footer{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2) var(--space-4);border-top:1px solid var(--border);padding-top:var(--space-4);margin-top:var(--space-6);font-size:var(--text-xs);color:var(--text-3)}
.footer-env:empty{display:none}

/* ---- loading indicator (archive.js) ----------------------------------------------------- */
.page-progress{position:fixed;top:0;inset-inline:0;height:3px;z-index:1000;background:transparent;overflow:hidden;pointer-events:none}
.page-progress::before{content:"";position:absolute;inset:0;background:var(--color-primary);transform-origin:left;animation:page-progress 2.5s cubic-bezier(.2,.6,.3,1) forwards}
@keyframes page-progress{0%{transform:scaleX(0)}60%{transform:scaleX(.7)}100%{transform:scaleX(.92)}}
a.is-loading,button.is-loading,.button.is-loading{opacity:.7;cursor:progress}
a.is-loading::after,button.is-loading::after{content:"";display:inline-block;width:.8em;height:.8em;border:2px solid currentColor;border-inline-end-color:transparent;border-radius:50%;margin-inline-start:.5em;vertical-align:middle;animation:spin .8s linear infinite}
form.is-loading{cursor:progress}
form.is-loading .button,form.is-loading button{pointer-events:none}
@keyframes spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.page-progress::before{animation-duration:.01s}a.is-loading::after,button.is-loading::after{animation:none}}

/* ---- "i" explanations next to labels: tap/click opens a short plain-language note ----------- */
.info-wrap{position:relative;display:inline-block;margin-inline-start:.35em;vertical-align:middle;line-height:1}
.info-button{position:relative;width:24px;height:24px;border-radius:50%;border:1px solid currentColor;background:transparent;color:inherit;font:bold 13px/1 serif;cursor:pointer;opacity:.75;padding:0;display:inline-grid;place-items:center;touch-action:manipulation}
.info-button::before{content:"";position:absolute;inset:-10px}  /* 44px tap target */
.info-button:hover,.info-button:focus-visible,.info-button[aria-expanded="true"]{opacity:1}
/* Touch screens: the button itself is 32px (the ::before area reaches 44px) while the drawn ring stays 24px and
   the negative margin keeps the 24px footprint, so rows neither move nor wrap. */
@media(pointer:coarse){.info-button{width:32px;height:32px;margin:-4px;border:0;background:radial-gradient(circle,transparent 10.5px,currentColor 11px,currentColor 11.5px,transparent 12px)}.info-button::before{inset:-6px}}
.info-popover{position:absolute;z-index:40;inset-inline-start:0;top:calc(100% + 8px);width:max-content;min-width:12rem;max-width:min(22rem,calc(100vw - 24px));padding:var(--space-2) var(--space-3);border-radius:var(--radius);background:#1f2a2a;color:#fff;font-size:var(--text-sm);font-weight:normal;line-height:1.6;box-shadow:var(--shadow-lg);white-space:normal;text-align:start;direction:rtl}
.info-popover.flip{inset-inline-start:auto;inset-inline-end:0}
.info-popover.above{top:auto;bottom:calc(100% + 8px)}
.info-popover[hidden]{display:none}
.info-popover a{color:#9fe3d6}

/* ---- shared page pieces (dashboard, lists, filters, details) ----------------------------- */
.hero{background:var(--color-primary-soft);border:1px solid #c7e0d8;border-radius:var(--radius-lg);padding:var(--space-6);display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5);overflow:hidden}
.hero h2{font-size:var(--text-2xl);margin:var(--space-1) 0 var(--space-2);font-weight:normal}
.hero p{font-size:var(--text-sm);color:var(--text-2);margin-bottom:var(--space-4)}
.hero .eyebrow{color:var(--color-primary)}
.hero-mark{font-size:120px;line-height:1;color:#91c5b5;transform:rotate(-8deg);padding-inline-start:var(--space-5)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-4);margin-bottom:var(--space-5)}
.stat{padding:var(--space-4) var(--space-5);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);color:var(--text-1);box-shadow:var(--shadow-sm)}
.stat-top{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-sm);color:var(--text-2)}
.stat i{font-style:normal;font-size:var(--text-xl);color:var(--color-primary)}
.stat strong{font-size:var(--text-3xl);font-weight:normal;display:block;line-height:1.4;margin:var(--space-2) 0 var(--space-3)}
.stat small{display:flex;justify-content:space-between;border-top:1px solid var(--border);padding-top:var(--space-2);color:var(--color-primary)}
.columns{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:var(--space-5)}
.record-card{display:flex;align-items:center;gap:var(--space-3);color:var(--text-1);padding:var(--space-3) 0;border-top:1px solid var(--border);min-width:0;flex:1;min-height:60px}
.record-card:hover{text-decoration:none;background:var(--surface-2)}
.record-icon{background:var(--color-primary-soft);color:var(--color-primary);width:40px;height:40px;border-radius:var(--radius);display:grid;place-items:center;font-size:var(--text-xl);flex-shrink:0}
.record-copy{flex:1;min-width:0}
.record-copy strong{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:var(--text-base);font-weight:normal}
.record-copy small{display:block;color:var(--text-3);font-size:var(--text-xs);margin-top:2px}
.arrow{color:var(--text-3)}
.coverage p{font-size:var(--text-sm);color:var(--text-2)}
.coverage .button{margin-top:var(--space-4);width:100%}
.empty{text-align:center;padding:var(--space-6) var(--space-4);color:var(--text-3)}
.empty>span{font-size:40px;color:#8aaba2}
.empty h3{color:var(--text-1);margin-top:var(--space-3)}
.empty p{font-size:var(--text-sm)}
.filters{display:flex;align-items:flex-end;gap:var(--space-3);flex-wrap:wrap}
.filters label{flex:1;min-width:150px}
.filters .search{flex:2.3}
.filters input,.filters select{margin-bottom:0}
.select-row{display:flex;align-items:center;gap:var(--space-3)}
.select-row .badge{flex-shrink:0}
.selection-bar{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);display:flex;align-items:flex-end;gap:var(--space-4);margin-top:var(--space-3)}
.selection-bar label{flex:1}
.selection-bar input{margin-bottom:0!important}
.pagination{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-5);font-size:var(--text-sm)}
.breadcrumb{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);align-items:center;margin-bottom:var(--space-4);font-size:var(--text-sm)}
.message-text,.original-text{white-space:pre-wrap;overflow-wrap:anywhere;padding:var(--space-4);border-radius:var(--radius);background:#edf7f3;line-height:1.9}
.original-text{background:var(--surface-2);color:var(--text-2)}
.correction{border-top:1px solid var(--border);padding-top:var(--space-5);margin-top:var(--space-5)}
.history-row{display:block;border-bottom:1px solid var(--border);padding:var(--space-3) 0}
.history-row small{display:block;color:var(--text-3)}
.reference{overflow-wrap:anywhere;font:var(--text-xs)/1.7 monospace;max-width:280px}
/* Technical facts (ids, hashes, formats) folded away for support; ordinary readers never need them. */
details.tech-id,details.tech-details{border:0;padding:0;margin:6px 0 0;background:none;font-size:var(--text-xs);color:var(--text-2)}
details.tech-id>summary,details.tech-details>summary{min-height:36px;padding:0;font-size:var(--text-xs);font-weight:normal;color:var(--text-3);display:inline-flex;align-items:center;gap:4px}
details.tech-id>summary::before,details.tech-details>summary::before{font-size:var(--text-base)}
details.tech-id>:not(summary),details.tech-details>:not(summary){margin-bottom:var(--space-2)}
.permission-row{border-bottom:1px solid var(--border);padding:var(--space-3) 0;display:flex;justify-content:space-between;gap:var(--space-4);align-items:center;font-size:var(--text-sm)}
.permission-row small{display:block;color:var(--text-3);margin-top:2px}
.inline-form{display:flex;align-items:flex-end;gap:var(--space-3);margin-top:var(--space-4);flex-wrap:wrap}
.inline-form label{flex:1;min-width:160px}
.inline-form input{margin-bottom:0!important}
.row-actions{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}
.link-box{border-top:1px solid var(--border);margin:var(--space-2) 0 var(--space-5);padding-top:var(--space-4)}
.link-box .button{margin-top:var(--space-1)}
.qr{display:grid;place-items:center;padding:var(--space-4);background:#fff;border:1px solid var(--border);border-radius:var(--radius-lg);margin:var(--space-2) 0 var(--space-5)}
.qr img{width:280px;max-width:100%;height:auto;image-rendering:pixelated}
.pairing-code{font:bold 34px/1.6 monospace;letter-spacing:6px;text-align:center;background:#edf7f3;border-radius:var(--radius-lg);padding:var(--space-4);margin:var(--space-2) 0 var(--space-5)}
.history-progress{display:block;width:100%;height:12px;border:0;border-radius:6px;background:var(--surface-3);overflow:hidden;margin:var(--space-1) 0 var(--space-4);appearance:none}
.history-progress::-webkit-progress-bar{background:var(--surface-3);border-radius:6px}
.history-progress::-webkit-progress-value{background:var(--color-primary);border-radius:6px}
.history-progress::-moz-progress-bar{background:var(--color-primary);border-radius:6px}

/* ---- error page + credential ------------------------------------------------------------ */
.error-page{text-align:center;max-width:620px;margin:var(--space-6) auto;padding:var(--space-6)}
.error-mark{display:grid;place-items:center;width:64px;height:64px;margin:0 auto var(--space-4);border-radius:50%;background:var(--color-danger-soft);color:var(--color-danger);font-size:var(--text-3xl);font-weight:bold}
.error-reason{font-size:var(--text-lg);color:var(--text-1);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-3) var(--space-4);margin:var(--space-3) 0}
.error-actions{display:flex;justify-content:center;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5)}
.credential-token{font-family:monospace;font-size:var(--text-sm)}

/* ---- login (public pages keep their own layout) ------------------------------------------- */
.login-layout{display:grid;grid-template-columns:1fr 1fr;min-height:100vh}
.login-story{background:var(--surface-nav);color:white;padding:65px 13%;display:flex;flex-direction:column;justify-content:center}
.login-story .brand{margin-bottom:80px;padding:0}
.login-story .eyebrow{color:#78bdaa}
.login-story h1{font-size:52px;line-height:1.5}
.login-story p{color:#a6c4bf;margin-top:var(--space-5);line-height:1.9}
.story-note{color:#8fb3aa;font-size:var(--text-xs);margin-top:60px}
.login-form{display:grid;place-items:center;padding:var(--space-6);background:#fbfcfb}
.login-box{width:100%;max-width:380px}
.login-box h2{font-size:var(--text-2xl);margin-bottom:var(--space-2)}
.login-box .environment{display:inline-block;margin-bottom:var(--space-5)}
.login-box .button{width:100%;margin-top:var(--space-3)}
.login-box p{font-size:var(--text-sm)}

/* ---- responsive ------------------------------------------------------------------------ */
/* ---- linking a number by QR (macros qr_card, link_progress, qr_expired in archive.html) ---------
   Big code in a white frame (a quiet zone on any background), the four steps beside it on wide cards
   and under it on phones; archive-live.js swaps the image in place and drives the countdown. */
.qr-link{container-type:inline-size;display:grid;gap:var(--space-3);text-align:center;padding:var(--space-1) 0}
.qr-link>h1,.qr-link>h2,.qr-link>h3{margin:0;font-size:var(--text-xl);line-height:1.45}
.qr-link>p{margin:0}
.qr-same-phone{padding:var(--space-3) var(--space-4);border:1px solid var(--color-warning-line);background:var(--color-warning-soft);color:var(--color-warning);border-radius:var(--radius);font-weight:bold;font-size:var(--text-sm);line-height:1.7}
.qr-body{display:grid;gap:var(--space-4);justify-items:center}
.qr-frame{width:min(100%,360px);background:#fff;padding:14px;border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow)}
.qr-image{display:block;width:100%;height:auto;aspect-ratio:1;image-rendering:pixelated}
.qr-side{display:grid;gap:var(--space-3);width:100%;max-width:420px}
.qr-countdown{margin:0;font-size:var(--text-sm);color:var(--text-2)}
.qr-countdown b{font-size:var(--text-lg);color:var(--text-1);font-variant-numeric:tabular-nums;margin-inline-start:var(--space-1)}
.qr-countdown .countdown-over{display:none}
.qr-countdown.over b{display:none}
.qr-countdown.over .countdown-over{display:inline}
.qr-steps{list-style:none;counter-reset:qr;margin:0;padding:0;display:grid;gap:var(--space-2);text-align:start}
.qr-steps li{counter-increment:qr;display:grid;grid-template-columns:32px 1fr;column-gap:var(--space-3);align-items:center;padding:var(--space-2) var(--space-3);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-base);line-height:1.5}
.qr-steps li::before{content:counter(qr);grid-row:1 / span 3;width:32px;height:32px;border-radius:50%;background:var(--color-primary);color:#fff;display:grid;place-items:center;font-weight:bold;font-size:var(--text-sm)}
.qr-steps small,.qr-steps .en{grid-column:2;color:var(--text-3);font-size:var(--text-xs);font-weight:normal;line-height:1.5}
.qr-actions{display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:center;align-items:flex-end}
.qr-actions form{margin:0}
.qr-actions .connect-again .button{margin-top:0}
.qr-fallback-phone{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:flex-end;justify-content:center;text-align:start}
.qr-fallback-phone label{flex:1 1 220px;font-size:var(--text-sm)}
.qr-fallback-phone input{margin-bottom:0}
.qr-note{color:var(--text-3);font-size:var(--text-xs)}
.qr-mark{width:64px;height:64px;margin:0 auto;border-radius:50%;display:grid;place-items:center;font-size:30px;background:var(--color-success-soft);color:var(--color-success)}
.qr-link.is-expired .qr-mark{background:var(--color-warning-soft);color:var(--color-warning)}
.qr-spinner{display:block;width:48px;height:48px;margin:0 auto;border-radius:50%;border:5px solid var(--surface-3);border-top-color:var(--color-primary);animation:qr-spin .9s linear infinite}
@keyframes qr-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.qr-spinner{animation-duration:3s}}
@container (min-width:640px){
  .qr-body{grid-template-columns:minmax(0,360px) minmax(0,1fr);align-items:center;justify-items:stretch;text-align:start}
  .qr-frame{width:100%}
}
@media(max-width:480px){
  .qr-actions{flex-direction:column;align-items:stretch}
  .qr-actions .button{width:100%}
  .qr-frame{padding:10px;border-radius:14px}
}

@media(max-width:1100px){
  :root{--sidebar-w:216px}
  .sidebar{padding:var(--space-4) var(--space-3)}
  .topbar{padding:0 var(--space-5)}
  main#main{padding:var(--space-5)}
  .notices{padding:var(--space-4) var(--space-5) 0}
  .columns{grid-template-columns:1fr}
  .hero-mark{font-size:90px;padding:0}
  .hero h2{font-size:var(--text-xl)}
  .stats{gap:var(--space-3)}
  .stat{padding:var(--space-4)}
  .detail-columns{grid-template-columns:1.5fr 1fr}
  .login-story h1{font-size:40px}
}
@media(max-width:760px){
  :root{--topbar-h:56px}
  .shell{display:block}
  /* The topbar carries the menu button; the sidebar becomes a full-width vertical panel below it. */
  .topbar{padding:0 var(--space-3);gap:var(--space-2)}
  .topbar-crumb{display:none}
  .topbar .user-name{display:none}
  /* Tab rows wrap on a phone: a hidden scroll row hid the last tabs (no scrollbar, no hint). */
  body .tab-bar,body .tab-list{flex-wrap:wrap}
  .menu-button{display:inline-flex;align-items:center;gap:var(--space-2);min-width:44px;min-height:44px;padding:0 var(--space-2);border-radius:var(--radius);font-weight:bold;color:var(--text-1);cursor:pointer;user-select:none;flex-shrink:0}
  .menu-button:hover{background:var(--surface-3)}
  .menu-open,.menu-close{font-size:22px;line-height:1}
  .menu-close{display:none}
  .nav-toggle:checked~.workspace .menu-open{display:none}
  .nav-toggle:checked~.workspace .menu-close{display:inline}
  .nav-toggle:focus-visible~.workspace .menu-button{outline:3px solid var(--focus);outline-offset:0}
  .sidebar{display:none;position:fixed;top:var(--topbar-h);inset-inline:0;bottom:0;width:100%;height:auto;z-index:30;padding:var(--space-3) var(--space-3) var(--space-5);overflow-y:auto;box-shadow:var(--shadow-lg)}
  .nav-toggle:checked~.sidebar{display:flex}
  .sidebar .brand{display:none}
  .nav-label{margin:var(--space-2) var(--space-3) var(--space-2)}
  .sidebar nav{display:flex;flex-direction:column;gap:0}
  .nav-item>a{min-height:48px;font-size:var(--text-lg)}
  .sidebar-bottom{padding-top:var(--space-4)}
  main#main{padding:var(--space-4)}
  .notices{padding:var(--space-3) var(--space-4) 0}
  .page-heading{gap:var(--space-2);align-items:flex-start;margin-bottom:var(--space-4);flex-wrap:wrap}
  h1{font-size:var(--text-xl)}
  h2{font-size:var(--text-lg)}
  .page-heading .environment{max-width:100%;white-space:normal;overflow:visible;line-height:1.5}
  .hero{padding:var(--space-4);margin-bottom:var(--space-4)}
  .hero h2{font-size:var(--text-xl)}
  .hero-mark{display:none}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}
  .stat{padding:var(--space-3) var(--space-4)}
  .stat strong{font-size:var(--text-2xl);margin:var(--space-1) 0 var(--space-2)}
  .panel{padding:var(--space-4);margin-bottom:var(--space-4);border-radius:var(--radius)}
  .columns,.detail-columns{grid-template-columns:1fr;gap:0}
  .fields-2,.fields-3,.fields-4{grid-template-columns:1fr}
  .filters label,.filters .search{flex-basis:100%}
  .filters .button{width:100%}
  .select-row{gap:var(--space-2);flex-wrap:wrap}
  .selection-bar{display:block}
  .selection-bar .button{width:100%;margin-top:var(--space-3)}
  .permission-row{flex-wrap:wrap;gap:var(--space-2)}
  .row-actions{width:100%;justify-content:space-between}
  .inline-form label{flex-basis:100%}
  .inline-form .button{width:100%}
  .checks{gap:0;flex-direction:column}
  .checks label{width:100%}
  .form-actions .button{flex:1}
  .pagination{gap:var(--space-2)}
  .tab-panels{padding:var(--space-4)}
  .tab{padding:var(--space-2) var(--space-3)}
  .step{padding-inline-start:44px}
  .step::before{width:32px;height:32px;font-size:var(--text-base);top:18px}
  .error-page{margin:var(--space-4) auto;padding:var(--space-5) var(--space-4)}
  .error-actions .button{flex:1}
  footer{flex-direction:column}
  .login-layout{grid-template-columns:1fr}
  .login-story{padding:var(--space-6) var(--space-5)}
  .login-story .brand{margin-bottom:var(--space-5)}
  .login-story h1{font-size:var(--text-2xl)}
  .login-story h1 br{display:none}
  .login-story p,.story-note,.login-story>.eyebrow{display:none}
  .login-form{padding:var(--space-6) var(--space-4)}
}
@media(min-width:1500px){main#main{padding-top:40px}}
@media print{.sidebar,.topbar,.page-progress,.info-button,footer{display:none!important}.shell{display:block}main#main{padding:0}}
/* The owner's per-kind media policy forms (/settings/capture, number page, chat menu). */
.media-policy-form .media-kinds{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px 16px;margin:8px 0}
.media-policy-form .media-kind{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px}
.media-policy-form .media-kind select{min-width:0;max-width:100%}
.media-policy-form .media-size{display:block;margin:8px 0;max-width:320px}
.wa-media-policy{margin-top:8px}
.wa-media-policy .media-policy-form .media-kinds{grid-template-columns:1fr}
.media-card .inline-form{display:inline}

/* ---- the installed app (archive-app.js): «ثبّت التطبيق» above the member's tabs, iPhone's steps ---- */
.app-install[hidden],.app-sheet[hidden],[data-app-install-go][hidden]{display:none!important}
.app-install{position:fixed;z-index:40;inset-inline:12px;bottom:calc(16px + env(safe-area-inset-bottom,0));max-width:440px;margin-inline:auto;display:flex;align-items:center;gap:12px;padding:10px 12px;background:#fff;color:#111b21;border:1px solid #e9edef;border-radius:16px;box-shadow:0 8px 28px rgba(11,20,26,.18)}
.app-install img{flex:0 0 auto;border-radius:10px}
.app-install-copy{flex:1;min-width:0;margin:0;line-height:1.45}
.app-install-copy strong{display:block;font-size:15px}
.app-install-copy small{display:block;color:#667781;font-size:12.5px}
.app-install .button{min-height:40px;padding:6px 16px;border-radius:20px;background:#008069;border-color:#008069}
.app-install-close{flex:0 0 auto;width:36px;height:36px;border:0;border-radius:50%;background:transparent;color:#667781;font-size:16px;cursor:pointer}
.app-install-close:hover{background:#f0f2f5}
.is-app .app-install,body.wa-open .app-install{display:none!important}
.app-sheet{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:rgba(11,20,26,.45)}
.app-sheet-box{width:100%;max-width:480px;background:#fff;color:#111b21;border-radius:20px 20px 0 0;padding:22px 20px calc(18px + env(safe-area-inset-bottom,0));box-shadow:0 -8px 28px rgba(11,20,26,.2)}
.app-sheet-box h2{font-size:18px;margin:0 0 12px}
.app-sheet-box .button{width:100%;margin-top:8px;background:#008069;border-color:#008069}
.app-steps{margin:0 0 12px;padding-inline-start:22px;line-height:1.9}
.app-steps li{margin-bottom:6px}
.ios-share{vertical-align:-3px;color:#007aff}
@media(max-width:760px){
  body.has-tabs .app-install{bottom:calc(56px + 10px + env(safe-area-inset-bottom,0))}
  .has-app-offer body.has-tabs .workspace{padding-bottom:calc(56px + 84px + env(safe-area-inset-bottom,0))}
}
@media(prefers-color-scheme:dark){
  :root:not([data-theme=light]) .app-install{background:#233138;color:#e9edef;border-color:#2a3942}
  :root:not([data-theme=light]) .app-install-copy small,:root:not([data-theme=light]) .app-install-close{color:#8696a0}
  :root:not([data-theme=light]) .app-install-close:hover{background:#2a3942}
  :root:not([data-theme=light]) .app-sheet-box{background:#233138;color:#e9edef}
}
