/* Styles for widgets used on single post templates (not the homepage). */
:root{
  --acs-teal:#1c7c6e; --acs-teal-dark:#14594e;
  --acs-text:#20242a; --acs-muted:#6a7178;
}
/* post authors */
.acs-post-authors{display:flex;flex-direction:column;gap:16px}
.acs-post-authors__item{display:flex;flex-direction:column;gap:8px}
.acs-post-authors__head{display:flex;align-items:center;gap:12px}
.acs-post-authors__avatar{box-sizing:border-box;width:48px;height:48px;border-radius:50%;object-fit:cover;display:block;flex:0 0 auto;border:1px solid var(--acs-border,#e2e5e5);box-shadow:0 0 0 6px rgba(28,124,110,.08);background:var(--acs-bg,#E5EFED)}
.acs-post-authors__body{display:flex;flex-direction:column;gap:2px}
.acs-post-authors__name{font-weight:700;color:var(--acs-text);text-decoration:none}
.acs-post-authors__name:hover{color:var(--acs-teal)}
.acs-post-authors__position{color:var(--acs-muted);font-size:.85rem;line-height:1.6}
.acs-post-authors__social{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.acs-post-authors__soc{display:inline-flex;width:20px;height:20px;color:#068788;transition:opacity .15s}
.acs-post-authors__soc:hover{opacity:.75}
.acs-post-authors__soc svg{width:100%;height:100%;fill:currentColor}
/* ---- phones: names only, on one line, separated by a rule ----
   The widget stays a stack of __item > __head > __body on desktop; here every
   part except the name is dropped and the wrappers flip to a row, so the names
   read as a byline. Nothing is removed from the markup, so the Bricks controls
   and the desktop layout are untouched. */
@media(max-width:478px){
  .acs-post-authors{flex-direction:row;flex-wrap:wrap;align-items:center;gap:8px}
  .acs-post-authors__item{flex-direction:row;align-items:center;gap:8px}
  /* the avatar's own <a> wrapper is a direct child of __head, so it has to go
     too — hiding just the <img> would leave an empty link holding the gap */
  .acs-post-authors__head>a,
  .acs-post-authors__avatar,
  .acs-post-authors__position,
  .acs-post-authors__social{display:none}
  /* only BETWEEN items, so a single author gets no stray separator */
  .acs-post-authors__item + .acs-post-authors__item::before{content:"|";flex:0 0 auto;color:var(--acs-muted,#9C999A);font-weight:400}
}
/* post content (acs-post-content): share + text-resize toolbar, then the body */
.acs-postcontent__bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:24px}
.acs-postcontent__share{display:flex;align-items:center;gap:12px;position:relative}
/* The box reads --acs-share-btn, which acs_share_button_style() sets inline per
   button from the repeater's «حجم الزر». A variable rather than an inline width
   so the phone rule further down can substitute a different one — an inline
   width would outrank every selector and leave mobile unstylable. */
.acs-postcontent__btn{display:inline-flex;align-items:center;justify-content:center;width:var(--acs-share-btn,40px);height:var(--acs-share-btn,40px);padding:0;border:0;background:none;color:var(--acs-text);cursor:pointer;font:inherit;font-size:1.1rem;line-height:1;border-radius:50%;box-sizing:border-box;transition:color .15s ease,background-color .15s ease}
.acs-postcontent__btn:hover{color:var(--acs-teal);background:#eef4f3}
.acs-postcontent__btn[disabled]{opacity:.35;cursor:default;background:none}
/* --acs-share-icon is set per button by the repeater's icon-size field */
.acs-postcontent__btn svg{width:var(--acs-share-icon,24px);height:var(--acs-share-icon,24px);fill:currentColor;display:block}
/* Branded share icons BY DEFAULT so every share toolbar (magazine head + body, publication,
   news…) matches without per-instance Bricks colour/size overrides. The monochrome SVGs take
   their colour from the button; Instagram is full-colour via its own SVG (instagram-color). */
.acs-postcontent__btn--copy{color:#068788}
.acs-postcontent__btn--facebook{color:#1877F2}
.acs-postcontent__btn--x{color:#000000}
.acs-postcontent__btn--linkedin{color:#0A66C2}
/* text resizer: a fixed white pill holding − Aa + */
.acs-postcontent__resize{display:flex;align-items:center;justify-content:space-between;position:relative;box-sizing:border-box;width:130px;height:40px;padding:2px 16px;gap:8px;border-radius:14px;background:#FFFFFF}
.acs-postcontent__btn--size{width:24px;height:24px;flex:0 0 auto;color:#168E7E}
.acs-postcontent__btn--size:hover{color:#168E7E;background:#eef4f3}
/* these two glyphs are drawn at their exact Figma sizes, not the 20px default */
.acs-postcontent__btn--size svg{width:14px;height:14px}
.acs-postcontent__btn[data-acs-size="down"] svg{height:2px}
/* the "Aa" indicator is a static size cue, not a control */
.acs-postcontent__size-label{direction:ltr;display:inline-flex;align-items:center;font-family:"Readex Pro";font-weight:600;font-size:24px;line-height:150%;letter-spacing:0;text-align:right;color:#9C999A}
.acs-postcontent__size-label small{font-family:inherit;font-weight:600;font-size:18px;line-height:150%}
/* ---- phones: share icons and the resizer share one row ----
   DOM order is resizer → share, which in RTL puts the resizer on the right;
   `order` flips them to icons-first (the right) without touching the markup, so
   desktop and the Bricks controls are unaffected.

   nowrap is only half of it — the pair has to actually FIT, and at the desktop
   40px button plus a 12px gap it does not on a 390px screen, which is what was
   pushing it onto two lines. The two numbers below are floors: the element's
   «حجم الأيقونة» and «المسافة بين الأيقونات» controls emit `#brxe-<id> …`, so
   anything set there still wins. */
@media(max-width:478px){
  .acs-postcontent__bar{flex-wrap:nowrap;gap:12px}
  .acs-postcontent__share{order:1;flex-wrap:nowrap;min-width:0;gap:8px}
  .acs-postcontent__resize{order:2;flex:0 0 auto;height:32px}
  .acs-postcontent__size-label{font-size:18px}
  .acs-postcontent__size-label small{font-size:16px}
  /* Phone sizes come from the repeater's «(جوال)» fields. Scoped to __share so
     the resizer's own +/− buttons are untouched.

     The two fall back differently on purpose. The BOX drops to 32px when no
     mobile value is set — it has a hard constraint, five buttons plus the 130px
     resizer have to fit ~390px, so inheriting a roomy desktop size would push
     the row over again. The GLYPH falls through to the desktop value, since it
     has no such constraint and should stay visually consistent unless asked
     otherwise. */
  .acs-postcontent__share .acs-postcontent__btn{width:var(--acs-share-btn-m,32px);height:var(--acs-share-btn-m,32px)}
  .acs-postcontent__share .acs-postcontent__btn svg{width:var(--acs-share-icon-m,var(--acs-share-icon,20px));height:var(--acs-share-icon-m,var(--acs-share-icon,20px))}
}
/* copy-link confirmation, anchored under the share row */
.acs-postcontent__toast{position:absolute;top:calc(100% + 6px);inset-inline-start:0;background:var(--acs-teal-dark);color:#fff;font-size:.75rem;padding:4px 10px;border-radius:var(--acs-radius,4px);white-space:nowrap;z-index:2}
.acs-postcontent__body{line-height:1.9;color:var(--acs-text)}
/* --acs-fs is set on the widget root by the resizer; --acs-fs-base is the body
   text size in px. The multiplication happens once here, on the scale wrapper,
   so descendants stay relative (em) and headings, lists and quotes scale too. */
.acs-postcontent__scale{--acs-fs-base:18px;font-size:calc(var(--acs-fs-base) * var(--acs-fs,1))}
/* ===== mobile TOC dropdown (.acs-tocdrop) + read-more =====
   Both are phone-only: the site's separate [acs_toc] widget owns the desktop
   index, and the body is never clamped there. Hidden by default and switched on
   inside the 478px block below, so nothing here leaks upward.

   Every colour is a Bricks control (see the «فهرس المحتويات» and «زر المزيد»
   groups); the values here are the design defaults. */
.acs-tocdrop{display:none;margin-bottom:16px}
.acs-tocdrop__label{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-family:"Readex Pro",sans-serif;font-size:14px;font-weight:500;line-height:150%;color:#9C999A}
.acs-tocdrop__label svg{width:16px;height:16px;flex:0 0 auto;fill:currentColor}
.acs-tocdrop__toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;box-sizing:border-box;padding:12px 16px;border:0;border-radius:4px;background:#CB9B2A;color:#fff;cursor:pointer;font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:500;line-height:150%;text-align:start}
/* the bar is one line whatever the heading length — min-width:0 is what lets a
   flex item shrink far enough for the ellipsis to engage */
.acs-tocdrop__current{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acs-tocdrop__caret{flex:0 0 auto;display:inline-flex;transition:transform .2s ease}
.acs-tocdrop__caret svg{width:12px;height:8px;display:block}
.acs-tocdrop.is-open .acs-tocdrop__caret{transform:rotate(180deg)}
.acs-tocdrop__list{list-style:none;margin:4px 0 0;padding:0;background:#fff;border-radius:4px;overflow:hidden}
.acs-tocdrop__list[hidden]{display:none}
.acs-tocdrop__item + .acs-tocdrop__item{border-top:1px solid var(--acs-border,#e2e5e5)}
.acs-tocdrop__link{display:block;padding:12px 16px;color:#231F20;text-decoration:none;font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:500;line-height:150%}
/* h3 entries indent under their h2 when both levels are listed */
.acs-tocdrop__item--h3 .acs-tocdrop__link{padding-inline-start:32px}
.acs-postcontent__more{text-align: center;display:none;width:100%;box-sizing:border-box;margin-top:16px;padding:12px 16px;border:0;border-radius:4px;background:#068788;color:#fff;cursor:pointer;font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:500;line-height:150%}
@media(max-width:478px){
  .acs-tocdrop{display:block}
  .acs-postcontent.is-clamped .acs-postcontent__more{display:block}
  .acs-postcontent.is-clamped .acs-postcontent__body{position:relative}
  /* The clamp lives on __scale, not __body: em there resolves against the
     resizer's scaled font-size, so «15 lines» stays 15 lines after the reader
     hits (+). A max-height rather than -webkit-line-clamp because the body is
     block content — paragraphs, headings, images — which line-clamp cannot
     measure. line-height 1.9 comes from __body and is inherited. */
  .acs-postcontent.is-clamped .acs-postcontent__scale{max-height:calc(var(--acs-more-lines,15) * var(--acs-more-lh,1.9) * 1em);overflow:hidden}
  .acs-postcontent.is-clamped .acs-postcontent__body::after{content:"";position:absolute;inset-inline:0;bottom:0;height:var(--acs-more-fade,96px);background:linear-gradient(to bottom,transparent,var(--acs-more-fade-color,#fff));pointer-events:none}
}
.acs-postcontent__scale p,.acs-postcontent__scale li,.acs-postcontent__scale blockquote,.acs-postcontent__scale td,.acs-postcontent__scale th,.acs-postcontent__scale figcaption{font-size:1em}
/* body headings (Figma publication body): H2 = Readex 18/500, 24px gap to the
   text below it. Sizes stay in em so the − Aa + resizer still scales them. */
.acs-postcontent__scale h2{font-family:"Readex Pro",sans-serif;font-size:1.125em;font-weight:500;line-height:1.5;color:#231F20;margin:32px 0 24px}
.acs-postcontent__scale h2:first-child{margin-top:0}
.acs-postcontent__scale h3{font-size:1.25em}
.acs-postcontent__scale h4{font-size:1.1em}
/* pull-quote (الاقتباس), Figma: mint box with the bubble radius (all corners 32px
   except bottom-right). The double-quote asset sits at the top inline-END corner
   (top-left in RTL): 8px in from the end edge and nudged 1px up so it straddles
   the top border. The glyph is assets/images/quote.png. */
.acs-postcontent__scale blockquote{position:relative;box-sizing:border-box;margin:24px 32px;padding:16px;background:#E5EFED;border:0;border-radius:32px 32px 0 32px;font-family:"Readex Pro",sans-serif;font-weight:300;font-size:1.125em;line-height:1.5;color:#231F20;text-align:right}
.acs-postcontent__scale blockquote::before{content:"";position:absolute;top:-1px;inset-inline-end:8px;width:32px;height:32px;background:url("images/quote.png") center/contain no-repeat}
.acs-postcontent__scale blockquote > :first-child{margin-top:0}
.acs-postcontent__scale blockquote > :last-child{margin-bottom:0}
.acs-postcontent__scale blockquote p{font-weight:300;margin:0}
/* tag chips under the content (gap/typography/bg overridable in Bricks) */
.acs-postcontent__tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.acs-postcontent__tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:16px;background-color:#E5EFED;color:#101010;font-size:12px;font-weight:400;line-height:150%;text-decoration:none}
a.acs-postcontent__tag:hover{background-color:#d6e7e3}
/* post figure (acs-post-figure): featured image + alt caption ------------------
   image gets the 4px brand radius; caption is Readex 12/400 with a short yellow
   accent line at the inline-end (the left, in RTL — matches Figma). */
.acs-postfigure{margin:0}
.acs-postfigure__img{display:block;width:100%;height:auto;border-radius:4px}
.acs-postfigure__caption{display:flex;align-items:center;gap:16px;margin-top:16px}
.acs-postfigure__caption-text{flex:1;min-width:0;font-family:"Readex Pro",sans-serif;font-weight:400;font-size:12px;line-height:1.5;color:#231F20;text-align:right}
.acs-postfigure__caption::after{content:"";flex:0 0 auto;width:52px;height:4px;border-radius:2px;background:#CB9B2A}
.acs-postfigure .acs-empty{color:var(--acs-muted);padding:16px 0}
/* single-template card lists (author's latest / related posts) */
.acs-scards{margin-block:32px}
/* «أحدث منشورات الكاتب»: a thin-bordered box with 24px inner padding (Figma). */
.acs-scards--author{border:1px solid var(--acs-border,#e2e5e5);border-radius:var(--acs-radius,4px);padding:24px}
.acs-scards--author .acs-section__head{margin-bottom:24px}
/* «منشورات ذات صلة» is the last section — keep exactly 32px down to the footer.
   If a larger gap remains, remove the wrapping Bricks Section's bottom padding. */
.acs-scards--related{margin-top:32px;margin-bottom:32px}
.acs-scards__grid{display:grid;gap:24px}
/* ---- phones: the scards grids that become carousels ----
   acs_scards_grid_html() serves author-latest, related-posts AND
   magazine-related off the same classes, so each carousel passes its own
   __track-- modifier and the sizes below hang off that. magazine-related opts
   into nothing and keeps its grid.

   The track and toolbar behaviour come from the shared component in
   homepage.css (enqueued site-wide). Only `display` is restated here:
   single.css loads AFTER homepage.css, so .acs-scards__grid{display:grid} would
   otherwise win on order — hence the two-class selector. */
/* author-latest card — the SAME fixed horizontal box at every width, not just
   on phones, so it is outside the media query. .acs-scard renders media BEFORE
   body, so `order` is what puts the text first (the right, in RTL) without
   touching the shared card helper. */
.acs-scards__track--author .acs-scard{flex-direction:row;gap:8px;width:624px;height:186px;box-sizing:border-box}
.acs-scards__track--author .acs-scard__body{order:1}
.acs-scards__track--author .acs-scard__media{order:2;flex:0 0 281px}
.acs-scards__track--author .acs-scard__img{width:281px;height:154px;aspect-ratio:auto;object-fit:cover}
@media(max-width:478px){
  .acs-scards__grid.acs-cslider__track{display:flex;gap:16px}
  /* related-posts: the card stays vertical — media on top, then body — which is
     already the DOM order, so only the boxes change. Phone-only, unlike the
     author card above. */
  .acs-scards__track--related .acs-scard{width:317px;height:384px;box-sizing:border-box}
  .acs-scards__track--related .acs-scard__img{width:317px;height:174px;aspect-ratio:auto;object-fit:cover}
}
.acs-scard{background:#fff;border-radius:var(--acs-radius,4px);overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .2s ease,transform .2s ease}
/* scard: site-wide latest hover — image zoom + teal underline, no lift */
.acs-scard:hover{box-shadow:none;transform:none}
.acs-scard__img{transition:transform .35s ease}
.acs-scard:hover .acs-scard__img{transform:scale(1.06)}
.acs-scard:hover .acs-scard__title{color:#068788 !important;text-decoration:underline}
.acs-scard__media{display:block;overflow:hidden;flex:0 0 auto}
.acs-scard__img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.acs-scard__body{padding:16px;display:flex;flex-direction:column;gap:10px;flex:1;min-width:0}
.acs-scard__badges{display:flex;flex-wrap:wrap;gap:6px}
/* Publication card/list title — Figma §6 scale: Readex Pro 500 / 18px / 150%.
   Shared base for every acs-scard consumer (related / author-latest / news-related /
   magazine-related) so titles match without a per-instance Bricks typography override. */
.acs-scard__title{font-family:"Readex Pro",sans-serif;font-size:18px;font-weight:500;color:#231F20;text-decoration:none;line-height:1.5;display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.acs-scard__title:hover{color:var(--acs-teal)}
/* footer pinned to the card bottom, so a short title never lifts the
   author/date block up under it */
.acs-scard__foot{margin-top:auto;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
/* author row: meta sizing, not the title's — the byline sets its own weight */
.acs-scard__author{display:flex;align-items:center;font-size:.78rem;color:var(--acs-muted)}
.acs-scard__meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.78rem;color:var(--acs-muted)}
.acs-scard__date{white-space:nowrap}
/* inline: author at the text start, date pushed to the opposite end */
.acs-scard__meta--inline{width:100%}
.acs-scard__meta--inline .acs-scard__date{margin-inline-start:auto}
/* stacked: date and badge stay packed together at the text start (the right,
   in RTL). Explicitly zero the margin so no wider `__date` rule can push them. */
.acs-scard__meta--stacked{justify-content:flex-start}
.acs-scard__meta--stacked .acs-scard__date{margin-inline-start:0;margin-inline-end:0}
.acs-scard__sep{color:var(--acs-muted);opacity:.5}
/* horizontal variant: image beside the text. row-reverse puts the media (the
   first child) on the left in this RTL layout. */
.acs-scard--h{flex-direction:row-reverse;align-items:stretch}
.acs-scard--h .acs-scard__media{flex:0 0 auto}
.acs-scard--h .acs-scard__img{height:100%;aspect-ratio:auto;min-height:130px}
.acs-scards .acs-empty{color:var(--acs-muted);padding:16px 0}
@media(max-width:860px){.acs-scards__grid{grid-template-columns:1fr!important}}
@media(max-width:560px){.acs-scard--h{flex-direction:column}.acs-scard--h .acs-scard__img{aspect-ratio:16/9;min-height:0}}
/* ============================================================
   research-topic single (acs-topic) — Figma "Category page" scale.
   Fonts: most text = "Readex Pro"; author position + pagination =
   "Bahij TheSansArabic". All sizes in px (page must not look zoomed out).
   ============================================================ */
/* The page is built from three separate widgets (hero / researchers /
   publications). Each keeps the .acs-topic class so the typography scoping
   below still applies, but the Bricks section owns the width and padding. */
.acs-topic--part{max-width:none;padding:0;width:100%;align-self:stretch;box-sizing:border-box}
.acs-topic--part + .acs-topic--part{margin-top:32px}
.acs-topic__title{font-family:"Readex Pro",sans-serif;font-size:32px;font-weight:600;line-height:1.5;color:var(--acs-text);margin:0 0 12px;text-align:right}
.acs-topic__intro{font-family:"Readex Pro",sans-serif;font-weight:300;font-size:16px;line-height:1.5;color:#231F20;margin:0 0 32px;text-align:right}

/* section headings (الباحثون / تصفّح …) — 24 / 600 */
.acs-topic .acs-section__title{font-family:"Readex Pro",sans-serif;font-size:24px;font-weight:600;line-height:1.5}

/* publication cards + list items — title 18/500, excerpt 16/300 */
.acs-topic .acs-card__title,.acs-topic .acs-card--big .acs-card__title,.acs-topic .acs-plist__title{font-family:"Readex Pro",sans-serif;font-size:18px;font-weight:500;line-height:1.5}
.acs-topic .acs-card__excerpt{font-family:"Readex Pro",sans-serif;font-weight:300;font-size:14px;line-height:1.6;color:var(--acs-muted);margin:6px 0 0;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.acs-topic .acs-plist__excerpt{font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:300}
/* type badge | date */
.acs-topic .acs-card__date::before,.acs-topic .acs-plist__date::before{content:"|";margin-inline-end:8px;color:var(--acs-border,#c9d1d1);font-weight:400}
/* meta typography: date + author name = Readex Pro 400 / 12px */
.acs-topic .acs-card__meta,.acs-topic .acs-card__date,.acs-topic .acs-plist__date,.acs-topic .acs-byline__name,.acs-topic .acs-byline__name a{font-family:"Readex Pro",sans-serif;font-weight:400;font-size:12px;line-height:1.5}
/* hero side (h) cards: meta ABOVE the title (Figma), and date+badge before author */
.acs-topic__featured-side .acs-card__meta{order:-1;margin-top:0;flex-direction:column-reverse}
/* Keep the featured h-card text TOP-aligned beside the image. The global
   .acs-card__body{justify-content:center} otherwise floats the (short) text to
   the middle of the card when it stretches to the big card's height — leaving a
   large gap under the fixed-height image. */
.acs-topic__featured-side .acs-card__body{justify-content:flex-start}

/* featured (Figma): big card 519 (right) + two stacked h-cards 785 (left), 16px gaps */
.acs-topic__featured{display:grid;grid-template-columns:519fr 785fr;gap:16px;margin-bottom:32px;align-items:stretch}
.acs-topic__featured-side{display:flex;flex-direction:column;gap:16px}
.acs-topic__featured-side .acs-card{flex:1 1 0;min-height:0}
@media (max-width:860px){.acs-topic__featured{grid-template-columns:1fr}.acs-topic__featured-side .acs-card{flex:auto}}
/* card images: 4px brand radius + subtle image border (clips the hover zoom too) */
.acs-topic .acs-card__media{border-radius:4px;overflow:hidden}
.acs-topic .acs-card__img{border-radius:4px;border:.5px solid rgba(133,135,135,.24);box-sizing:border-box}
/* side featured (h) images: fixed 372.686 x 204.146 (Figma) */
.acs-topic__featured-side .acs-card--h .acs-card__media{flex:0 0 372.686px;max-width:372.686px}
.acs-topic__featured-side .acs-card--h .acs-card__img{width:100%;height:204.146px;min-height:0;object-fit:cover}
/* ---- phones: the featured block becomes the shared swipe carousel ----
   The editorial layout keeps its cards in two wrappers (the big one and the
   side column); display:contents dissolves both so every card becomes a direct
   child of ONE flex track. The wrappers stay in the markup, so desktop is
   untouched. Track, snapping and the .acs-cnav toolbar come from the
   .acs-cslider component in homepage.css.

   The image rules repeat the THREE-class selectors above rather than using a
   shorter one: display:contents removes the wrapper's box, not its place in a
   selector, so `.acs-topic__featured-side .acs-card--h .acs-card__img` still
   matches and would otherwise keep its 204.146px height. */
@media(max-width:478px){
  .acs-cslider__track.acs-topic__featured{display:flex;gap:16px;margin-bottom:16px}
  .acs-topic__featured-main,.acs-topic__featured-side{display:contents}
  .acs-topic__featured .acs-card{flex:0 0 auto;width:318px;height:369px;box-sizing:border-box;scroll-snap-align:start}
  /* every variant renders as the plain vertical card here: --big carries
     height:100%, --h is a row until the 820px rule stacks it */
  .acs-topic__featured .acs-card--h{flex-direction:column}
  .acs-topic__featured-side .acs-card--h .acs-card__media{flex:0 0 auto;max-width:none}
  .acs-topic__featured .acs-card__img,
  .acs-topic__featured .acs-card--big .acs-card__img,
  .acs-topic__featured-side .acs-card--h .acs-card__img{width:318px;height:175px;min-height:0;aspect-ratio:auto;object-fit:cover}
}
/* section-title accent line beside the title (inline), not overlapping it */
.acs-topic .acs-section__title{display:inline-flex;align-items:center;gap:24px}
.acs-topic .acs-section__title::after{position:static;margin-inline-start:0}
/* phones: the 24px between the heading and its dash is the only spacing left
   (the dash's own margin is zeroed above), and it costs width the title needs */
@media(max-width:478px){.acs-topic .acs-section__title{gap:14px}}
/* search-results list image — 4px radius */
.acs-topic .acs-plist__media{border-radius:4px}
/* «تصفّح محتويات هذا المسار» rows (Figma, desktop): 1019×220 card = 401×220
   media + 8px gap + 610×220 text. The shared results row is fixed at 260px with
   a 372px media flush against the body; here the two are separate blocks, so the
   row itself is transparent and the white fill moves to the text column (the 8px
   gap shows the page through). 1019px needs a 277px video column beside it
   (1320 − 24 − 1019) — the default below; the Bricks «عرض عمود الفيديو» control
   still overrides it. Below 861px the layout collapses and the stacked rules apply. */
@media (min-width:861px){
  .acs-topic__browse{--acs-topic-aside:277px}
  .acs-topic__list .acs-results__list .acs-plist__item{height:220px;gap:8px;background:#FFF;border-radius:0}
  .acs-topic__list .acs-results__list .acs-plist__media{flex:0 0 401px;width:401px;height:220px}
  .acs-topic__list .acs-results__list .acs-plist__body{flex:1 1 auto;min-width:0;height:220px;box-sizing:border-box;background:#fff;border-radius:4px}
}

/* researchers slider — photo 126, 8px ring, 52px gap */
.acs-topic__researchers{margin-bottom:32px}
.acs-topic__researchers .acs-section__head{margin-bottom:16px}
.acs-topic__researchers-slider{position:relative}
.acs-topic__researchers-track{display:flex;gap:52px;justify-content:start;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;padding:10px 4px}
.acs-topic__researchers-track::-webkit-scrollbar{display:none}
/* phones: 52px between 126px photos leaves the row mostly empty on a 390px
   screen — the track is already a swipe carousel at every width, only the
   spacing changes here */
@media(max-width:478px){.acs-topic__researchers-track{gap:32px}}
.acs-topic__researchers-slide{flex:0 0 auto;width:126px}
.acs-researcher{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px}
.acs-researcher__photo{display:block;width:126px;height:126px;border-radius:50%;overflow:hidden;background:#eef1f2;box-shadow:0 0 0 8px rgba(229,239,237,1)}
.acs-researcher__photo img{width:100%;height:100%;object-fit:cover;display:block}
.acs-researcher__name{font-family:"Readex Pro",sans-serif;font-weight:500;font-size:16px;line-height:1.5;color:var(--acs-text);text-decoration:none}
a.acs-researcher__name:hover{color:var(--acs-teal)}
.acs-researcher__pos{font-family:"Bahij TheSansArabic",sans-serif;font-weight:400;font-size:11px;line-height:1.5;color:var(--acs-muted)}

/* browse: the white band holds the heading + the mint filter panel */
.acs-topic__browse-bar{margin-bottom: 16px;width:100%;background:#fff;padding:32px 60px;box-sizing:border-box}
.acs-topic__browse-head{background:none;margin-inline:auto;max-width:var(--acs-topic-bar,1440px);box-sizing:border-box}
.acs-topic__browse-head .acs-section__head{margin-bottom:0}
/* the filter panel: capped at 1440, chips under the fields */
.acs-topic__filter{position:relative;z-index:5;margin:16px auto 0;width:100%;max-width:var(--acs-topic-bar,1440px);padding:24px;box-sizing:border-box;display:flex;flex-direction:column;gap:16px;background-color:var(--acs-bg,#E5EFED);border-radius:var(--acs-radius,4px)}
.acs-topic__filter-inner{display:flex;align-items:center;gap:16px;padding:0;position:relative;z-index:2;flex-wrap:wrap}
.acs-topic__filter-label{font-family:"Readex Pro",sans-serif;font-weight:600;font-size:24px;line-height:1.5;color:var(--acs-text)}
.acs-topic__filter-field{display:inline-flex;align-items:center;gap:8px;color:var(--acs-text);font-family:"Readex Pro",sans-serif;font-weight:500;font-size:14px;border-inline-start:1px solid #231F20;padding-inline-start:16px}
.acs-topic__filter-field select{border:0;background:transparent;font:inherit;color:var(--acs-text);cursor:pointer;padding:4px 4px}
/* custom dropdown (native <select> hidden but still submitted/read) */
.acs-topic__filter-field select.acs-select__native{position:absolute;width:1px;height:1px;padding:0;margin:-1px;opacity:0;pointer-events:none;overflow:hidden;clip:rect(0 0 0 0)}
.acs-select{position:relative;display:inline-block}
.acs-select__btn{display:inline-flex;align-items:center;gap:8px;background:transparent;border:0;cursor:pointer;font-family:"Readex Pro",sans-serif;font-weight:500;font-size:14px;color:var(--acs-text);padding:4px 2px}
.acs-select__caret{width:0;height:0;border-inline:5px solid transparent;border-top:6px solid currentColor;opacity:.65;transition:transform .15s}
.acs-select.is-open .acs-select__caret{transform:rotate(180deg)}
.acs-select__list{position:absolute;top:calc(100% + 10px);inset-inline-start:0;min-width:200px;background:#fff;border:1px solid var(--acs-border,#e2e5e5);border-radius:var(--acs-radius,4px);box-shadow:0 10px 28px rgba(20,89,78,.14);padding:6px;z-index:60;display:none;max-height:300px;overflow:auto}
.acs-select.is-open .acs-select__list{display:block}
.acs-select__option{display:block;width:100%;text-align:right;background:transparent;border:0;cursor:pointer;font-family:"Readex Pro",sans-serif;font-weight:500;font-size:14px;line-height:1.5;color:var(--acs-text);padding:9px 12px;border-radius:4px;white-space:nowrap}
.acs-select__option:hover{background:var(--acs-bg,#E5EFED)}
.acs-select__option.is-selected{background:var(--acs-teal);color:#fff}
/* multi-select (النوع) — Figma: 2-column panel, each option a checkbox + label,
   checked box filled #168E7E */
.acs-select--multi .acs-select__list{min-width:480px;max-width:min(720px,92vw);padding:16px}
.acs-select--multi.is-open .acs-select__list{display:grid;grid-template-columns:1fr 1fr;gap:6px 32px}
/* names (الكاتب) can be long — let them wrap instead of overflowing the panel */
.acs-select--multi .acs-select__option{display:flex;align-items:center;direction: ltr;justify-content:flex-end;gap:12px;padding:8px;background:transparent;color:var(--acs-text);font-family:"Readex Pro",sans-serif;font-weight:400;font-size:14px;line-height:1.5;white-space:normal;text-align:right}
.acs-select--multi .acs-select__option:hover,.acs-select--multi .acs-select__option.is-selected:hover{background:var(--acs-bg,#E5EFED)}
.acs-select--multi .acs-select__option.is-selected{background:transparent;color:var(--acs-text)}
.acs-select--multi .acs-select__option::before{content:"";order:2;flex:0 0 auto;width:20px;height:20px;border:1.5px solid #cfd4d6;border-radius:5px;background:#fff;box-sizing:border-box}
.acs-select--multi .acs-select__option.is-selected::before{border-color:#168E7E;background:#168E7E url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E") center/13px 13px no-repeat}
@media(max-width:600px){.acs-select--multi .acs-select__list{min-width:240px}.acs-select--multi.is-open .acs-select__list{grid-template-columns:1fr}}
.acs-topic__chips{display:flex;flex-wrap:wrap;gap:16px;align-items:center;padding:0;position:relative;z-index:1}
.acs-topic__chips:empty{display:none}
.acs-topic__chip{display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--acs-text);border:.5px solid var(--acs-teal,#068788);border-radius:var(--acs-radius,4px);padding:10px 12px;font-family:"Readex Pro",sans-serif;font-weight:400;font-size:12px;line-height:1.5;text-decoration:none;cursor:pointer}
.acs-topic__chip:hover{background:#f4faf9}
.acs-topic__chip-x{display:inline-flex;color:var(--acs-teal);font-weight:400;font-size:15px;line-height:1}
.acs-topic__chip-clear{color:var(--acs-teal);text-decoration:none;font-family:"Readex Pro",sans-serif;font-weight:500;font-size:14px;padding:8px;order:99;margin-inline-end:auto;cursor:pointer}
@media(max-width:600px){.acs-topic__filter-field{border-inline-start:0;padding-inline-start:0}}
/* the sheet chrome exists in the markup at every width but only shows on phones */
.acs-topic__trigger,.acs-topic__panelhead,.acs-topic__apply{display:none}
/* ---- phones: the filter panel becomes a button + full-screen sheet ----
   The same component as the video archive's (see .acs-varch__searchwrap in
   homepage.css, and initVFilter, which drives both off the shared
   data-acs-vfilter hooks).

   Every rule is scoped to .acs-topic__searchwrap, NOT to .acs-topic__filter
   alone: the author page reuses that panel class without the wrap or a trigger,
   and hiding it there would leave its filters unreachable. */
@media(max-width:478px){
  /* the band's 60px desktop inset leaves the trigger floating in the middle of
     a phone screen */
  .acs-topic__browse-bar{padding:24px 16px}
  /* the trigger is a fixed floating action button pinned to the bottom-left
     (RTL end) corner: a 56×56 teal circle with the sliders icon, no label.
     position:fixed keeps it reachable while the results scroll; when the sheet
     opens it sits above (fixed inset:0, z 9995) and hides the FAB behind it. */
  .acs-topic__trigger{position:fixed;left:20px;bottom:24px;z-index:1000;display:flex;align-items:center;justify-content:center;width:56px;height:56px;padding:0;border:0;border-radius:28px;background:#068788;cursor:pointer;box-shadow:0 6px 18px rgba(0,0,0,.12),inset 0 1px 4px rgba(255,255,255,.3)}
  .acs-topic__trigger span{display:none}       /* icon-only FAB — no text label */
  .acs-topic__trigger svg{display:none}        /* hide the inline glyph; the icon below is the shared one */
  .acs-topic__trigger::before{content:"";display:block;width:26px;height:23px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 31 27'%3E%3Cpath d='M12.0474 3.31579C11.6053 1.43684 9.83684 0 7.73684 0C5.63684 0 3.97895 1.43684 3.42632 3.31579H0V5.52632H3.42632C3.86842 7.40526 5.63684 8.8421 7.73684 8.8421C9.83684 8.8421 11.4947 7.40526 12.0474 5.52632H30.9474V3.31579H12.0474ZM7.73684 6.63158C6.52105 6.63158 5.52632 5.63684 5.52632 4.42105C5.52632 3.20526 6.52105 2.21053 7.73684 2.21053C8.95263 2.21053 9.94737 3.20526 9.94737 4.42105C9.94737 5.63684 8.95263 6.63158 7.73684 6.63158ZM23.2105 8.8421C21.1105 8.8421 19.4526 10.2789 18.9 12.1579H0V14.3684H18.9C19.3421 16.2474 21.1105 17.6842 23.2105 17.6842C25.3105 17.6842 26.9684 16.2474 27.5211 14.3684H30.9474V12.1579H27.5211C27.0789 10.2789 25.3105 8.8421 23.2105 8.8421ZM23.2105 15.4737C21.9947 15.4737 21 14.4789 21 13.2632C21 12.0474 21.9947 11.0526 23.2105 11.0526C24.4263 11.0526 25.4211 12.0474 25.4211 13.2632C25.4211 14.4789 24.4263 15.4737 23.2105 15.4737ZM13.2632 17.6842C11.1632 17.6842 9.50526 19.1211 8.95263 21H0V23.2105H8.95263C9.39474 25.0895 11.1632 26.5263 13.2632 26.5263C15.3632 26.5263 17.0211 25.0895 17.5737 23.2105H30.9474V21H17.5737C17.1316 19.1211 15.3632 17.6842 13.2632 17.6842ZM13.2632 24.3158C12.0474 24.3158 11.0526 23.3211 11.0526 22.1053C11.0526 20.8895 12.0474 19.8947 13.2632 19.8947C14.4789 19.8947 15.4737 20.8895 15.4737 22.1053C15.4737 23.3211 14.4789 24.3158 13.2632 24.3158Z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 31 27'%3E%3Cpath d='M12.0474 3.31579C11.6053 1.43684 9.83684 0 7.73684 0C5.63684 0 3.97895 1.43684 3.42632 3.31579H0V5.52632H3.42632C3.86842 7.40526 5.63684 8.8421 7.73684 8.8421C9.83684 8.8421 11.4947 7.40526 12.0474 5.52632H30.9474V3.31579H12.0474ZM7.73684 6.63158C6.52105 6.63158 5.52632 5.63684 5.52632 4.42105C5.52632 3.20526 6.52105 2.21053 7.73684 2.21053C8.95263 2.21053 9.94737 3.20526 9.94737 4.42105C9.94737 5.63684 8.95263 6.63158 7.73684 6.63158ZM23.2105 8.8421C21.1105 8.8421 19.4526 10.2789 18.9 12.1579H0V14.3684H18.9C19.3421 16.2474 21.1105 17.6842 23.2105 17.6842C25.3105 17.6842 26.9684 16.2474 27.5211 14.3684H30.9474V12.1579H27.5211C27.0789 10.2789 25.3105 8.8421 23.2105 8.8421ZM23.2105 15.4737C21.9947 15.4737 21 14.4789 21 13.2632C21 12.0474 21.9947 11.0526 23.2105 11.0526C24.4263 11.0526 25.4211 12.0474 25.4211 13.2632C25.4211 14.4789 24.4263 15.4737 23.2105 15.4737ZM13.2632 17.6842C11.1632 17.6842 9.50526 19.1211 8.95263 21H0V23.2105H8.95263C9.39474 25.0895 11.1632 26.5263 13.2632 26.5263C15.3632 26.5263 17.0211 25.0895 17.5737 23.2105H30.9474V21H17.5737C17.1316 19.1211 15.3632 17.6842 13.2632 17.6842ZM13.2632 24.3158C12.0474 24.3158 11.0526 23.3211 11.0526 22.1053C11.0526 20.8895 12.0474 19.8947 13.2632 19.8947C14.4789 19.8947 15.4737 20.8895 15.4737 22.1053C15.4737 23.3211 14.4789 24.3158 13.2632 24.3158Z'/%3E%3C/svg%3E") center/contain no-repeat}
  /* the panel keeps its own background and padding and just becomes the sheet;
     max-width/margin/radius are cleared so it can fill the screen */
  .acs-topic__searchwrap .acs-topic__filter{display:none;position:fixed;inset:0;z-index:9995;max-width:none;margin:0;border-radius:0;overflow-y:auto}
  /* a column, so the apply button can be pushed to the FOOT of the sheet —
     sticky alone only pins once the content is tall enough to scroll, which four
     collapsed accordions never are */
  .acs-topic__searchwrap.is-open .acs-topic__filter{display:flex;flex-direction:column;justify-content:flex-start;gap:16px}
  html.acs-vfilter-lock,html.acs-vfilter-lock body{overflow:hidden}
  /* head: × at the inline start, title, «مسح» pushed to the far end */
  .acs-topic__panelhead{display:flex;align-items:center;gap:12px}
  .acs-topic__paneltitle{display:inline-flex;align-items:center;gap:8px;font-family:"Readex Pro",sans-serif;font-size:18px;font-weight:600;line-height:150%;color:#231F20}
  .acs-topic__paneltitle svg{width:20px;height:20px;flex:0 0 auto}
  .acs-topic__clear{margin-inline-start:auto;padding:0;border:0;background:none;color:#068788;cursor:pointer;font-family:"Readex Pro",sans-serif;font-size:14px;font-weight:500}
  .acs-topic__close{display:inline-flex;padding:0;border:0;background:none;color:#068788;cursor:pointer}
  .acs-topic__close svg{width:20px;height:20px;display:block}
  /* fields stack full width; the desktop label is redundant beside the sheet's
     own title, which says the same thing */
  .acs-topic__searchwrap .acs-topic__filter-inner{flex-direction:column;align-items:stretch;gap:12px}
  .acs-topic__searchwrap .acs-topic__filter-label{display:none}
  .acs-topic__searchwrap .acs-topic__filter-field{width:100%;box-sizing:border-box;background:#fff;border-radius:4px;padding:12px 16px}
  /* Accordion, not a dropdown: the enhanced panel drops into the flow so the
     group expands in place. Three classes, to beat the .acs-select--multi
     .acs-select__list rules further up this file. */
  .acs-topic__searchwrap .acs-select .acs-select__list{position:static;min-width:0;max-height:none;padding:8px 0 0;border:0;box-shadow:none}
  .acs-topic__searchwrap.is-open .acs-select--multi.is-open .acs-select__list{grid-template-columns:1fr}
  /* margin-top:auto puts it on the foot of a short sheet; sticky keeps it there
     once the accordions are open and the sheet does scroll */
  .acs-topic__apply{display:block;position:sticky;bottom:0;z-index:1;width:100%;box-sizing:border-box;margin-top:auto;padding:12px 16px;border:0;border-radius:10px;background:#068788;color:#fff;cursor:pointer;font-family:"Readex Pro",sans-serif;font-size:18px;font-weight:600;line-height:150%;text-align:center}
}
/* browse: two-column body (list | video aside) */
.acs-topic__layout{width: 1320px;margin: auto;display:grid;grid-template-columns:1019px var(--acs-topic-aside,320px);gap:24px;align-items:start}
/* video aside follows the reader down the long publications list */
.acs-topic__aside{position:sticky;top:100px;align-self:start}
@media (max-width:860px){.acs-topic__layout{grid-template-columns:1fr;width:358px;}.acs-topic__aside{display:none;position:static;top:auto}}
.acs-topic__list{display:block}
.acs-topic__list.is-loading{opacity:.5;transition:opacity .15s}
.acs-topic__empty{color:var(--acs-muted);padding:24px 0}

/* video block — من مكتبة الفيديو (yellow accent lines top + bottom) */
.acs-topic__videos{display:flex;flex-direction:column;gap:24px;background:#fff;border-radius:8px;padding:16px}
.acs-topic__videos-title{font-family:"Readex Pro",sans-serif;font-weight:600;font-size:24px;line-height:1.5;margin:0;color:var(--acs-text);display: flex; align-items: center; gap: 16px;}
.acs-topic__videos-title::after{content:"";display:block;width:52px;height:4px;background:#FFD70D;border-radius:2px;}
.acs-topic .acs-vcard__title{color:var(--acs-text);font-family:"Readex Pro",sans-serif;font-weight:500;font-size:18px;line-height:1.5}
.acs-topic__videos-more{display:inline-block;font-family:"Readex Pro",sans-serif;font-weight:500;font-size:18px;line-height:1.5;color:var(--acs-text);text-decoration:none;padding:18.5px 0;display: flex; align-items: center; gap: 16px;margin:16px}
.acs-topic__videos-more::after{content:"";display:block;width:52px;height:4px;background:#FFD70D;border-radius:2px;}

/* pager */
.acs-topic__pager{margin-top:28px}
.acs-topic__pager ul{display:flex;gap:6px;justify-content:center;list-style:none;padding:0;margin:0}
.acs-topic__pager a,.acs-topic__pager span{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 8px;border:1px solid #d5dbdb;border-radius:var(--acs-radius,4px);color:var(--acs-text);text-decoration:none;font-family:"Bahij TheSansArabic",sans-serif;font-weight:500;font-size:14px}
.acs-topic__pager .current{background:var(--acs-teal);border-color:var(--acs-teal);color:#fff}
.acs-topic__pager a:hover{border-color:var(--acs-teal);color:var(--acs-teal)}

/* ---- hover, shared by the three topic widgets ----
   No lift and no shadow (homepage.css adds both to .acs-topic .acs-card and
   .acs-plist__item): the image zooms a little and the title turns teal +
   underlines. Researcher cards only recolour the name. */
.acs-topic .acs-card,
.acs-topic .acs-card:hover,
.acs-topic .acs-plist__item,
.acs-topic .acs-plist__item:hover{box-shadow:none;transform:none;transition:none}
/* the media box clips the zoom */
.acs-topic .acs-card__media,
.acs-topic .acs-plist__media{overflow:hidden}
.acs-topic .acs-card__img,
.acs-topic .acs-plist__media img{transition:transform .35s ease}
.acs-topic .acs-card:hover .acs-card__img,
.acs-topic .acs-plist__item:hover .acs-plist__media img{transform:scale(1.06)}
/* titles: colour + underline only */
.acs-topic .acs-card:hover .acs-card__title,
.acs-topic .acs-card__title:hover,
.acs-topic .acs-plist__item:hover .acs-plist__title,
.acs-topic .acs-plist__title:hover{color:#068788;text-decoration:underline}
/* researchers */
.acs-topic .acs-researcher:hover .acs-researcher__name,
.acs-topic a.acs-researcher__name:hover{color:#068788;text-decoration:underline}

/* ===== Post video widget (فيديو المنشور) ===== */
.acs-video{width:100%;max-width:360px;margin-inline:auto}
.acs-video__frame{position:relative;aspect-ratio:9/16;border-radius:16px;overflow:hidden;background:#0b1f2a}
.acs-video__media{position:absolute;inset:0}
.acs-video__poster{width:100%;height:100%;object-fit:cover;display:block}
.acs-video__iframe{width:100%;height:100%;border:0;display:block}
/* the shared play badge (--acs-play-icon, homepage.css); the round shadow and
   the hover grow stay — they read as a button, the badge is only the glyph */
.acs-video__play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:64px;height:64px;padding:0;border:0;border-radius:50%;background:var(--acs-play-icon) center/100% 100% no-repeat;cursor:pointer;display:block;z-index:3;box-shadow:0 6px 20px rgba(0,0,0,.25);transition:transform .15s}
.acs-video__play:hover{transform:translate(-50%,-50%) scale(1.06)}
.acs-video__frame.is-playing .acs-video__poster,
.acs-video__frame.is-playing .acs-video__play{display:none}
/* Event intro video (ACS: فيديو الفعالية) — landscape + full width, unlike the
   publication's portrait 360px default. */
.acs-video--event{max-width:100%}
.acs-video--event .acs-video__frame{aspect-ratio:16/9;border-radius:4px}

/* ===== Table of contents (محتويات المقال) ===== */
.acs-toc{background:#fff;border:1px solid var(--acs-border,#e2e5e5);border-radius:8px;padding:24px}
.acs-toc__list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.acs-toc__item{margin:0}
.acs-toc__link{display:flex;align-items:center;gap:16px;text-decoration:none;color:inherit}
.acs-toc__title{flex:1;min-width:0;font-weight:500;font-size:14px;line-height:150%;vertical-align:middle}
.acs-toc__link:hover .acs-toc__title{color:var(--acs-teal,#1c7c6e)}
.acs-toc__num{flex:0 0 auto;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;width:28px;height:25.6px;padding:2.33px 4.67px;border-radius:2.33px;color:#fff;background-color:#CB9B2A;font-weight:500;font-size:14px;line-height:150%;vertical-align:middle}
.acs-toc__gap{display:flex;justify-content:flex-start}
.acs-toc__dots{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;width:28px;height:17px;gap:4px}
.acs-toc__dot{position:relative;z-index:1;width:3px;height:3px;border-radius:50%;background:#9C999A}
/* scroll spy: the entry in view turns teal, and the connectors already passed
   draw a line down through their dots (JS sets is-active / is-done / is-filled) */
.acs-toc__title,.acs-toc__num,.acs-toc__dot{transition:color .25s ease,background-color .25s ease}
.acs-toc__item.is-active .acs-toc__title{color:#068788}
/* the line itself — grows top→bottom behind the three dots */
.acs-toc__dots::after{content:"";position:absolute;top:0;bottom:0;margin-inline-start:0px;width:3px;border-radius:1px;background-color:#068788;transform:scaleY(0);transform-origin:top;transition:transform .45s ease}
.acs-toc__gap.is-filled .acs-toc__dots::after{transform:scaleY(1)}
/* dots light up in sequence, just behind the line's leading edge */
.acs-toc__gap.is-filled .acs-toc__dot{background-color:#068788}
.acs-toc__gap.is-filled .acs-toc__dot:nth-child(1){transition-delay:.08s}
.acs-toc__gap.is-filled .acs-toc__dot:nth-child(2){transition-delay:.2s}
.acs-toc__gap.is-filled .acs-toc__dot:nth-child(3){transition-delay:.32s}
@media(prefers-reduced-motion:reduce){
  .acs-toc__title,.acs-toc__num,.acs-toc__dot,.acs-toc__dots::after{transition:none}
  .acs-toc__gap.is-filled .acs-toc__dot{transition-delay:0s}
}
/* keep anchored headings clear of any sticky header */
:where(h2,h3,h4,h5,h6)[id^="acs-h"]{scroll-margin-top:100px}

/* ===== Post badge widget (شارة المنشور) ===== */
.acs-badgew{display:flex;flex-wrap:wrap;align-items:center;gap:8px}

/* ===== Topics menu widget (قائمة المواضيع البحثية) ===== */
/* column with a fixed 16px row gap between the heading and the menu */
.acs-topicsmenu{display:flex;flex-direction:column;gap:16px}
.acs-topicsmenu .acs-section__head{margin:0}
.acs-topicsmenu__menu{display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;row-gap:8px}
.acs-topicsmenu__item{color:var(--acs-muted,#6a7178);font-size:16px;font-weight:400;line-height:150%;text-decoration:none}
a.acs-topicsmenu__item:hover{color:var(--acs-teal,#1c7c6e)}
.acs-topicsmenu__sep{color:var(--acs-muted,#6a7178);font-size:16px;line-height:150%}

/* ===== Workshop page container — constrain all sections to 1200px ===== */
/* Matches .acs-topic (line 90). workshop-head uses its root; others use __inner. */
/* Element roots fill the Bricks Section/Container and never shrink-to-center.
   Bricks containers default to a centering flex column; forcing width:100% +
   align-self:stretch makes each workshop section span the full content width so
   its RTL content aligns to the start (right) instead of floating centered. */
.acs-wshead,
.acs-wsbody,
.acs-wsnews,
.acs-wspubs,
.acs-wsspeakers,
.acs-wsgallery,
.acs-wsvideos{width:100%;align-self:stretch;box-sizing:border-box}

/* Readable centered column; content inside stays right-aligned (RTL start). */
.acs-wshead,
.acs-wsbody__inner,
.acs-wsnews__inner,
.acs-wspubs__inner,
.acs-wsspeakers__inner,
.acs-wsgallery__inner,
.acs-wsvideos__inner{width:100%;margin-inline:auto;box-sizing:border-box}

/* ===== Workshop head (ترويسة الورشة) — acs-wshead ===== */
/*
 * Fallback brand tokens used (Figma MCP rate-limited at authoring time):
 *   ended   #9C999A  |  upcoming #068788  |  now #CB9B2A
 *   black #231F20, radius 4px, font Readex Pro
 *   title 32px/600, details 16px/400
 */

/* ---- root ---- */
.acs-wshead{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#231F20;
  display:flex;
  flex-direction:column;
  
}

/* ---- status band (full-width pill above the main block) ---- */
.acs-wshead__status{
  display:flex;
  align-items:center;
  justify-content:flex-start;
  width:100%;
  padding:10px 20px;
  border-radius:4px;
  font-size:16px;
  font-weight:700;
  line-height:1.5;
  margin-top: 24px; /* space between the workshop title and the status band */
  color:#fff;
}
/* color per status — driven by the class set on the root */
.acs-wshead.is-ended  .acs-wshead__status{background:#9C999A}
.acs-wshead.is-upcoming .acs-wshead__status{background:#068788}
.acs-wshead.is-now    .acs-wshead__status{background:#CB9B2A}

/* ---- main content block: two rows ----
   row 1 = details + PDF links, row 2 = date (start) | share icons (end) */
.acs-wshead__main{display:flex;flex-direction:column;gap:24px}
.acs-wshead__row{display:flex;flex-wrap:wrap;align-items:center;gap:24px}
.acs-wshead__row--meta{justify-content:space-between}

/* ---- date block — same treatment as the event cards (big day + small month) ---- */
.acs-wshead__date{display:flex;align-items:baseline;gap:6px;font-size:12px;font-weight:400;line-height:150%;color:#9C999A}
.acs-wshead__day{font-size:32px;font-weight:500;line-height:1.2;color:#9C999A}

/* ---- title ---- */
.acs-wshead__title{
  margin:0;
  font-size:32px;
  font-weight:600;
  line-height:1.5;
  color:#231F20;
}

/* ---- details row ---- */
.acs-wshead__details{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:24px;
  font-size:16px;
  font-weight:400;
  line-height:1.5;
  color:#231F20;
}
.acs-wshead__details span{display:inline-flex;align-items:center;gap:8px}
/* detail-row micro-icons — a teal glyph supplied via CSS mask (the mask tints
   the SVG with background-color, so all three share one brand-teal color) */
.acs-wshead .acs-wsic{
  display:inline-block;
  width:16px;height:16px;
  flex:0 0 auto;
  background-color:#068788;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;
}
/* location marker */
.acs-wshead .acs-wsic--pin{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s7-6.2 7-11a7 7 0 1 0-14 0c0 4.8 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21s7-6.2 7-11a7 7 0 1 0-14 0c0 4.8 7 11 7 11z'/%3E%3Ccircle cx='12' cy='10' r='2.5'/%3E%3C/svg%3E");
}
/* mode — globe/broadcast (onsite / online / hybrid) */
.acs-wshead .acs-wsic--mode{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18'/%3E%3Cpath d='M12 3c2.5 2.5 3.8 5.7 3.8 9s-1.3 6.5-3.8 9c-2.5-2.5-3.8-5.7-3.8-9S9.5 5.5 12 3z'/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12h18'/%3E%3Cpath d='M12 3c2.5 2.5 3.8 5.7 3.8 9s-1.3 6.5-3.8 9c-2.5-2.5-3.8-5.7-3.8-9S9.5 5.5 12 3z'/%3E%3C/svg%3E");
}
/* clock */
.acs-wshead .acs-wsic--clock{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3.5 2'/%3E%3C/svg%3E");
          mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3.5 2'/%3E%3C/svg%3E");
}

/* ---- PDF doc links: gold document glyph + underlined label, no box ---- */
.acs-wshead__docs{display:flex;flex-wrap:wrap;gap:24px;align-items:center}
.acs-wshead__doc{
  display:inline-flex;
  align-items:center;
  gap:8px;
  text-decoration:none;
  color:#231F20;
  font-size:16px;
  font-weight:500;
  line-height:1.5;
  transition:color .15s;
}
.acs-wshead__doc-label{text-decoration:underline;text-underline-offset:3px}
.acs-wshead__doc:hover{color:#068788}
/* Icon picked in Bricks. Bricks puts the class on an <i> for icon fonts but on
   the <svg> element itself for an uploaded SVG, so both shapes are covered here.
   Size = font-size, color = `color` — both driven by this element's controls, so
   no section-wide color is needed (that one bleeds into every other SVG). */
.acs-wshead__doc-ic{
  flex:0 0 auto;
  font-size:20px;
  line-height:1;
  color:#CB9B2A;
}
svg.acs-wshead__doc-ic,
.acs-wshead__doc-ic svg{width:1em;height:1em;display:block}
/* uploaded SVGs ship their own fill attributes — make every shape follow `color` */
svg.acs-wshead__doc-ic,
svg.acs-wshead__doc-ic *,
.acs-wshead__doc-ic svg,
.acs-wshead__doc-ic svg *{fill:currentColor}

/* ---- social share row ---- */
.acs-wshare{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.acs-wshare__ic{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:36px;height:36px;
  border-radius:50%;
  background:#f4f5f6;
  color:#231F20;
  cursor:pointer;
  text-decoration:none;
  transition:background .15s,color .15s;
  flex:0 0 auto;
}
.acs-wshare__ic svg{width:18px;height:18px;fill:currentColor;display:block}
/* Per-network hover colors. Scoped to .acs-wshead so they outrank the Bricks
   color/background controls (which target `.brxe-… .acs-wshare__ic`) and the
   hover identity survives whatever base colors the editor picks. */
.acs-wshead .acs-wshare__ic--linkedin:hover{background:#0077B5;color:#fff}
.acs-wshead .acs-wshare__ic--instagram:hover{background:#E1306C;color:#fff}
.acs-wshead .acs-wshare__ic--x:hover{background:#000;color:#fff}
.acs-wshead .acs-wshare__ic--facebook:hover{background:#1877F2;color:#fff}
.acs-wshead .acs-wshare__ic--link:hover{background:#068788;color:#fff}

/* ================================================================
   Style 1 — large PDF cover cards (أغلفة PDF)
   ================================================================ */
/* The PDF links share one look across both styles (see the base rules above);
   style 1 only spaces them a little wider. */
.acs-wshead--style1 .acs-wshead__docs{gap:24px}

/* ================================================================
   Style 2 — compact colored bar (frame 719)
   ================================================================ */
.acs-wshead--style2 .acs-wshead__docs{gap:16px}
.acs-wshead--style2 .acs-wshead__doc{font-size:14px}
/* In style 2 the status band spans the full block width */
.acs-wshead--style2 .acs-wshead__status{
  display:flex;
  width:100%;
  border-radius:4px 4px 0 0;
  margin-bottom:0;
  padding:8px 20px;
}
.acs-wshead--style2 .acs-wshead__main{
  padding:16px;
  border:1px solid #e2e5e5;
  border-top:0;
  border-radius:0 0 4px 4px;
}

/* responsive */
/* phones: the meta row stacks, share icons ABOVE the date (design). DOM order is
   date → share, so `order` is what swaps them without touching the markup — and
   align-items has to be reset, since in a column it is the horizontal axis and
   `center` would centre both blocks instead of hanging them off the start. */
@media(max-width:478px){
  .acs-wshead__row--meta{flex-direction:column;align-items:flex-start;gap:16px}
  .acs-wshead .acs-wshare{order:1}
  .acs-wshead__date{order:2}
}
@media(max-width:600px){
  .acs-wshead__title{font-size:24px}
  .acs-wshead__row{gap:16px}
  .acs-wshead__details{gap:12px;font-size:14px}
  .acs-wshead__docs{gap:16px}
  .acs-wshead__doc{font-size:14px}
  .acs-wshead__day{font-size:26px}
}

/* ===== Workshop body (نص الورشة) — acs-wsbody =====
 * Fallback brand scale used (Figma MCP not queried to avoid rate-limit):
 *   teal #068788, radius 4px, font Readex Pro
 *   body text 16px/300, color #131313
 */

/* ---- section shell ---- */
.acs-wsbody{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#131313;
}
.acs-wsbody__inner{
  display:flex;
  flex-direction:column;
  gap:32px;
}

/* ---- main-video player wrapper ---- */
.acs-wsbody__video{
  width:100%;
}

/* ---- shared video player (.acs-wsvideo*) scoped here ---- */
.acs-wsvideo{
  display:block;
  text-decoration:none;
  border-radius:4px;
  overflow:hidden;
  width:100%;
}
.acs-wsvideo__media{
  display:block;
  position:relative;
  width:100%;
  aspect-ratio:16/9;
  border-radius:4px;
  overflow:hidden;
  background:#0b1f2a;
}
.acs-wsvideo__img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
/* centered play overlay — the shared badge (--acs-play-icon, homepage.css) */
.acs-wsvideo__play{
  position:absolute;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:64px;
  height:64px;
  border-radius:50%;
  background:var(--acs-play-icon) center/100% 100% no-repeat;
  display:block;
  z-index:3;
  box-shadow:0 6px 20px rgba(0,0,0,.25);
  transition:transform .15s;
  pointer-events:none;
}
.acs-wsvideo:hover .acs-wsvideo__play{
  transform:translate(-50%,-50%) scale(1.06);
}

/* ---- body copy ---- */
.acs-wsbody__text{
  /* 24px above the text, separating it from the head's featured image (Figma).
     !important because Bricks' per-element padding control emits a higher-specificity
     inline rule (#brxe-… .acs-wsbody__text{padding-top:0}) that would otherwise win. */
  padding-top:24px !important;
  font-family:"Readex Pro",sans-serif;
  font-size:16px;
  font-weight:300;
  line-height:1.9;
  color:#131313;
}
.acs-wsbody__text p{
  margin:0 0 1em;
}
.acs-wsbody__text p:last-child{
  margin-bottom:0;
}
.acs-wsbody__text h2{
  font-size:1.5em;
  font-weight:600;
  line-height:1.4;
  margin:1.5em 0 .5em;
  color:#231F20;
}
.acs-wsbody__text h3{
  font-size:1.25em;
  font-weight:600;
  line-height:1.4;
  margin:1.25em 0 .5em;
  color:#231F20;
}
.acs-wsbody__text h4{
  font-size:1.1em;
  font-weight:600;
  line-height:1.4;
  margin:1.1em 0 .4em;
  color:#231F20;
}
.acs-wsbody__text ul,
.acs-wsbody__text ol{
  padding-inline-start:1.5em;
  margin:0 0 1em;
}
.acs-wsbody__text li{
  margin-bottom:.4em;
}
.acs-wsbody__text a{
  color:#068788;
  text-decoration:underline;
}
.acs-wsbody__text a:hover{
  opacity:.8;
}

@media(max-width:600px){
  .acs-wsbody__text{font-size:15px}
  .acs-wsvideo__play{width:52px;height:52px}
}
/* ---- phones ----
   The read-more is the same component as «محتوى المنشور»'s: the widget root
   carries `is-clamped` (dropped by initReadMore on the first tap) and
   --acs-more-lines, and the button reuses .acs-postcontent__more so both
   widgets share one look. Everything is inside the media query, so the desktop
   text block is never clamped and the button never shows there. */
@media(max-width:478px){
  /* the head's own stacked spacing is enough — the 40px that separates the two
     blocks on desktop only adds dead space here */
  .acs-wsbody__text{padding-top:0 !important}
  .acs-wsbody.is-clamped .acs-postcontent__more{display:block}
  /* max-height rather than -webkit-line-clamp: the intro is block content —
     paragraphs, headings, lists — which line-clamp cannot measure. The 1.9 is
     .acs-wsbody__text's line-height, inherited by the prose. */
  .acs-wsbody.is-clamped .acs-wsbody__prose{position:relative;max-height:calc(var(--acs-more-lines,10) * var(--acs-more-lh,1.9) * 1em);overflow:hidden}
  .acs-wsbody.is-clamped .acs-wsbody__prose::after{content:"";position:absolute;inset-inline:0;bottom:0;height:var(--acs-more-fade,96px);background:linear-gradient(to bottom,transparent,var(--acs-more-fade-color,#fff));pointer-events:none}
}

/* ===== Workshop related news section (أخبار ذات صلة) — acs-wsnews ===== */
.acs-wsnews{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#131313;
}
.acs-wsnews__inner{
  display:flex;
  flex-direction:column;
  gap:24px;
}
/* static grid (column count comes from the .acs-grid--N class the element adds) */
.acs-wsnews__grid{align-items:stretch}
.acs-wsnews__grid > .acs-card{height:100%}
.acs-wsnews .acs-card__body{flex:1;display:flex;flex-direction:column}
/* date: pushed to the bottom of the body, at the inline start (right in RTL) */
.acs-wsnews .acs-card__meta{margin-top:auto;align-items:flex-start;text-align:start}
/* ---- phones: the grid becomes the shared swipe carousel ----
   Track, snapping and the .acs-cnav toolbar all come from the .acs-cslider
   component in homepage.css; only the card boxes live here. Two classes on the
   track so display:flex beats .acs-grid's display:grid, and the card rules match
   the base `.acs-wsnews__grid > .acs-card{height:100%}` above and come later, so
   the fixed height wins. aspect-ratio has to be cleared — .acs-card__img sets
   16/9, which would fight the explicit 251×141. */
@media(max-width:478px){
  .acs-cslider__track.acs-wsnews__grid{display:flex;gap:16px}
  .acs-wsnews__grid .acs-card{width:251px;height:315px;box-sizing:border-box}
  .acs-wsnews__grid .acs-card__img{width:251px;height:141px;aspect-ratio:auto;object-fit:cover}
}

/* ===== Workshop publications section (أوراق الورشة) — acs-wspubs ===== */
.acs-wspubs{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#131313;
}
.acs-wspubs__inner{
  display:flex;
  flex-direction:column;
  gap:24px;
}
/* 3-in-a-row vertical cards: image on top (rounded, flush), title + meta below
   with the shared 16px body padding. Falls to 2 then 1 column as it narrows. */
.acs-wspubs__list{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:24px;
  align-items:stretch;
}
.acs-wspubs__list > .acs-card{height:100%}
/* title + meta below the image; author/date pinned to the card bottom */
.acs-wspubs .acs-card__meta{margin-top:auto}
/* typography — the shared publication-card spec (Figma / design system) */
.acs-wspubs .acs-card__title{font-family:"Readex Pro",sans-serif;font-weight:500;font-size:18px;line-height:1.5;text-align:right;color:#231F20}
.acs-wspubs .acs-byline__name{font-family:"Readex Pro",sans-serif;font-weight:400;font-size:12px;line-height:1.5;text-align:right;color:#9C999A}
.acs-wspubs .acs-card__date{font-family:"Readex Pro",sans-serif;font-weight:400;font-size:12px;line-height:1.5;text-align:right;color:#9C999A}
/* post-type badge keeps its per-type color; only the font follows the spec */
.acs-wspubs .acs-badge{font-family:"Readex Pro",sans-serif;font-weight:400;font-size:12px;line-height:1.5}
@media(max-width:900px){.acs-wspubs__list{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.acs-wspubs__list{grid-template-columns:1fr}}
/* ---- phones: the list becomes the shared swipe carousel ----
   Track, snapping and the .acs-cnav toolbar come from the .acs-cslider component
   in homepage.css; only the card boxes live here. Two classes on the track so
   display:flex beats the grid rules above, and the card rule matches the base
   `.acs-wspubs__list > .acs-card{height:100%}` and comes later, so the fixed
   height wins. aspect-ratio has to be cleared — .acs-card__img sets 16/9, which
   would fight the explicit 297×163. */
@media(max-width:478px){
  .acs-cslider__track.acs-wspubs__list{display:flex;gap:16px}
  .acs-wspubs__list .acs-card{width:297px;height:375px;box-sizing:border-box}
  .acs-wspubs__list .acs-card__img{width:297px;height:163px;aspect-ratio:auto;object-fit:cover}
}

/* ===== Workshop speakers section (المتحدثون) — acs-wsspeakers ===== */
.acs-wsspeakers{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#131313;
}
.acs-wsspeakers__inner{
  display:flex;
  flex-direction:column;
  gap:24px;
}
/* static grid (column count comes from the .acs-grid--N class the element adds) */
.acs-wsspeakers__grid{gap:32px;align-items:start}
/* each speaker: photo at the inline start (right in RTL), name over position
   beside it — a 2×2 grid so no extra wrapper is needed around the two texts */
.acs-wsspeakers .acs-researcher{
  display:grid;
  grid-template-columns:auto minmax(0,1fr);
  grid-template-areas:"photo name" "photo pos";
  align-items:center;
  align-content:center;
  column-gap:12px;
  row-gap:4px;
  text-align:start;
}
/* same ring treatment as the author page photo (.acs-author__photo) */
.acs-wsspeakers .acs-researcher__photo{grid-area:photo;width:64px;height:64px;border:1px solid var(--acs-border,#e2e5e5);box-shadow:0 0 0 5px rgba(28,124,110,.07);background:var(--acs-bg,#E5EFED)}
.acs-wsspeakers .acs-researcher__name{grid-area:name;align-self:end}
.acs-wsspeakers .acs-researcher__pos{grid-area:pos;align-self:start}
@media(max-width:600px){.acs-wsspeakers__grid{gap:20px}}
/* ---- phones: the grid becomes the shared swipe carousel ----
   Track and snapping come from the .acs-cslider component in homepage.css (no
   .acs-cnav toolbar here — this one is swiped). Two classes on the track so
   display:flex beats .acs-grid's display:grid.

   The card is a fixed 179px box with the photo + text block centred in it — the
   base rule's align-content:center is what does the centring once there is spare
   height. 297px is the slide width, so the next speaker peeks in at the edge. */
@media(max-width:478px){
  .acs-cslider__track.acs-wsspeakers__grid{display:flex;gap:16px}
  .acs-wsspeakers .acs-researcher{width:297px;height:67px;box-sizing:border-box}
  .acs-wsspeakers .acs-researcher__photo{width:56px;height:56px}
}

/* ===== Workshop gallery section (صور) — acs-wsgallery ===== */
/* Figma «صور» section not fetched (per-seat rate limit); prose fallback values used. */
/* the heading is a direct child of the root, so only __inner carries the
   background/padding set in Bricks */
.acs-wsgallery{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#131313;
  display:flex;
  flex-direction:column;
  gap:24px;
}
.acs-wsgallery .acs-section__head{margin-bottom:0;padding:16px 16px 0}
.acs-wsgallery__inner{
  display:flex;
  flex-direction:column;
  gap:16px;
}
/* the stage keeps the lead image and its thumb strip tighter than the heading gap */
.acs-wsgallery__stage{display:flex;flex-direction:column;gap:10px}
.acs-wsgallery__main{
  margin:0;
  width:100%;
}
.acs-wsgallery__main img{
  display:block;
  width:100%;
  height:670px;
  object-fit: contain;
  background: black;
  border-radius:4px;
  cursor:zoom-in;
}
@media(max-width:768px){
  .acs-wsgallery__main img{
    height:260px;
  }
}
/* thumb strip: an arrow at each end, thumbs scrolling between them */
.acs-wsgallery__track{
  position:relative;
  display:flex;
  align-items:center;
  gap:16px;
}
.acs-wsgallery__thumbs{
  flex:1;
  display:flex;
  flex-direction:row;
  gap:8px;
  overflow-x:auto;
  scroll-behavior:smooth;
  -ms-overflow-style:none;
  scrollbar-width:none;
}
.acs-wsgallery__thumbs::-webkit-scrollbar{
  display:none;
}
.acs-wsgallery__thumb{
  flex:0 0 auto;
  width:144px;
  height:81px;
  padding:0;
  border:0;
  border-radius:2px;
  background:none;
  cursor:pointer;
  overflow:hidden;
  opacity:.75;
  transition:opacity .2s;
}
.acs-wsgallery__thumb img{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.acs-wsgallery__thumb:hover,
.acs-wsgallery__thumb.is-active{
  opacity:1;
}
/* Arrows sit inline beside the strip: white circles with a thin light border
   and a slim chevron (‹ ›), per the Figma «صور» section. `order` puts ◀ at the
   left end and ▶ at the right end in this RTL row. */
.acs-wsgallery__arrow.acs-arrow{
  position:static;
  transform:none;
  flex:0 0 auto;
  width:48px;
  height:48px;
  opacity:1;
  visibility:visible;
  background:#fff;
  border:1px solid #E5EFED;
  box-shadow:none;
  font-size: 26px;
  color: #168E7E;;
  transition:background .15s,border-color .15s;
}
.acs-wsgallery__arrow.acs-arrow--prev{order:-1}
.acs-wsgallery__arrow.acs-arrow--next{order:1}
/* show the shared chevron SVG (thin line ‹ ›), tinted by `color` above */
.acs-wsgallery__arrow.acs-arrow svg{display:block;width:18px;height:18px;stroke:currentColor;stroke-width:2}
.acs-wsgallery__arrow.acs-arrow:hover{
  background:#f2f7f6;
  border-color:#cfe0db;
  transform:none;
  box-shadow:none;
}

/* ---- phones ----
   MUST stay after the whole gallery block above: the lead-image height, the
   thumbs' `flex:1` and the arrows' order values are all single- or double-class
   rules like these, so ORDER is what decides — this was under the 768px rule at
   first and lost every one of those.

   The arrows leave the strip and sit on a row of their own beneath it: the
   thumbs take a full line (flex-basis 100% in a wrapping row), which pushes the
   pair onto the next one, and justify-content parks them at the inline end — the
   left, in RTL. The order values keep the desktop reading, prev then next. */
@media(max-width:478px){
  .acs-wsgallery__main img{height:178px}
  .acs-wsgallery__thumb{width:180px;height:99px}
  .acs-wsgallery__track{flex-wrap:wrap;justify-content:flex-end;gap:16px}
  .acs-wsgallery__thumbs{flex:0 0 100%}
  .acs-wsgallery__arrow.acs-arrow--prev{order:1}
  .acs-wsgallery__arrow.acs-arrow--next{order:2}
}

/* Lightbox overlay */
.acs-wslightbox{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(0,0,0,.85);
}
.acs-wslightbox__img{
  max-width:90vw;
  max-height:90vh;
  border-radius:4px;
  object-fit:contain;
  display:block;
}
.acs-wslightbox__close{
  position:absolute;
  top:16px;
  inset-inline-end:16px;
  width:40px;
  height:40px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:rgba(255,255,255,.15);
  border:none;
  border-radius:50%;
  color:#fff;
  font-size:1.5rem;
  cursor:pointer;
  line-height:1;
  transition:background .2s;
}
.acs-wslightbox__close:hover{
  background:rgba(255,255,255,.3);
}
/* fullscreen prev/next: reuse the gallery arrow look (.acs-wsgallery__arrow),
   but sit absolutely at the sides of the image instead of inline in the strip */
.acs-wslightbox .acs-wsgallery__arrow.acs-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2}
.acs-wslightbox .acs-wsgallery__arrow--prev{inset-inline-start:24px}
.acs-wslightbox .acs-wsgallery__arrow--next{inset-inline-end:24px}
.acs-wslightbox .acs-wsgallery__arrow.acs-arrow:hover{transform:translateY(-50%)}
@media(max-width:600px){
  .acs-wslightbox .acs-wsgallery__arrow--prev{inset-inline-start:12px}
  .acs-wslightbox .acs-wsgallery__arrow--next{inset-inline-end:12px}
}

/* ===== Workshop videos section (فيديو) — acs-wsvideos ===== */
.acs-wsvideos{
  font-family:"Readex Pro",sans-serif;
  direction:rtl;
  text-align:right;
  color:#131313;
}
.acs-wsvideos__inner{
  display:flex;
  flex-direction:column;
  gap:24px;
}
.acs-wsvideos__track{
  position:relative;
}
.acs-wsvideos__row{
  display:flex;
  gap:16px;
  overflow-x:auto;
  scroll-behavior:smooth;
  -ms-overflow-style:none;
  scrollbar-width:none;
}
.acs-wsvideos__row::-webkit-scrollbar{
  display:none;
}
/* how many cards fit a view + the gap between them, both Bricks-controllable */
.acs-wsvideos__row{gap:var(--acs-wsv-gap,16px);cursor:grab;user-select:none}
/* drag-to-scroll (homepage.js initDragScroll, same as the curated slider) */
/* scroll-snap is off mid-drag (it comes from the shared .acs-cslider__track on
   phones): with it on, a free drag fights the snap instead of gliding */
.acs-wsvideos__row.is-dragging{cursor:grabbing;scroll-behavior:auto;scroll-snap-type:none}
.acs-wsvideos__row .acs-vcard{
  flex:0 0 calc((100% - (var(--acs-wsv-cols,5) - 1) * var(--acs-wsv-gap,16px)) / var(--acs-wsv-cols,5));
  width:auto;
  min-width:0;
}
/* landscape thumbnails with the play button centered (Figma «فيديو» band) */
.acs-wsvideos .acs-vcard__media{width:100%;height:165px;border-radius:4px}
/* physical left + reset of the base's logical offset: in RTL `inset-inline-start`
   resolves to `right`, and translate(-50%) then pushes the button off-centre */
.acs-wsvideos .acs-vcard__play{
  inset-inline-start:auto;
  inset-inline-end:auto;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%);
  width:46px;
  height:46px;
}
/* duration badge on the opposite corner (left, in this RTL section) */
.acs-wsvideos .acs-vcard__dur{inset-inline-start:auto;inset-inline-end:12px;bottom:12px;font-size:14px}
@media(max-width:900px){.acs-wsvideos{--acs-wsv-cols:3}}
@media(max-width:600px){.acs-wsvideos{--acs-wsv-cols:1}}
/* ---- phones ----
   One card per view (--acs-wsv-cols:1 above) with scroll-snap from the shared
   .acs-cslider__track. The overlay arrows go for the same reason as the hero's
   and the video library's: they are revealed on :hover, which a touch screen
   cannot express — display:none also drops them from the tab order. The .acs-cnav
   toolbar rendered after the track takes over, and initCarousel drives both. */
@media(max-width:478px){
  .acs-wsvideos__track .acs-arrow{display:none}
  /* fixed 301px slides rather than the --acs-wsv-cols share of the row, so the
     next video peeks in at the edge; two classes, and later in the file, so this
     beats the flex-basis math on .acs-wsvideos__row .acs-vcard */
  .acs-wsvideos .acs-vcard{flex:0 0 301px;width:301px}
  .acs-wsvideos .acs-vcard__media{width:301px;height:165px}
}
/* ===== Workshop slider arrows (videos) =====
   The shared .acs-arrow base (homepage.css) hides arrows until their slider is
   hovered; this section opts into the same behaviour and just recolours them.
   (أخبار الورشة and المتحدثون are static grids; the gallery styles its own
   arrows above and keeps them always visible.) */
.acs-wsvideos__arrow.acs-arrow{
  background:#fff;
  color:#068788;
  transition:opacity .2s,visibility .2s,transform .2s,background .15s,color .15s;
}
.acs-wsvideos__track:hover .acs-wsvideos__arrow.acs-arrow,
.acs-wsvideos__arrow.acs-arrow:focus-visible{
  opacity:1;
  visibility:visible;
}
.acs-wsvideos__arrow.acs-arrow:hover{
  background:#fff;
  color:#05696a;
  transform:translateY(-50%) scale(1.08);
}
/* ===== single video page (ACS: صفحة الفيديو) =====
   Two nested flex columns so the two gaps are independent knobs: the root gap
   spaces the player from the text block (16px), the body gap spaces the three
   text rows from each other (24px). */
.acs-vsingle{display:flex;flex-direction:column;gap:16px}
/* max-width, not width, so the video-width control can set any value without
   overflowing a narrower column; align-self is what the alignment control moves */
.acs-vsingle__player{width:100%;max-width:100%;align-self:flex-start}
/* This widget shares the .acs-video__* classes with «الفيديو التعريفي» — which
   is portrait — purely to reuse single.js's click-to-play, so the landscape
   frame is restored here. */
.acs-vsingle .acs-video__frame{aspect-ratio:16/9;border-radius:4px}
.acs-vsingle__body{display:flex;flex-direction:column;gap:24px}
.acs-vsingle__title{margin:0;font-family:"Readex Pro",sans-serif;font-size:20px;font-weight:600;line-height:1.6;color:var(--acs-text,#20242a)}
.acs-vsingle__text{color:var(--acs-muted,#6a7178);font-family:"Readex Pro",sans-serif;font-size:14px;font-weight:300;line-height:1.9}
.acs-vsingle__text p{margin:0 0 10px}
.acs-vsingle__text p:last-child{margin-bottom:0}
/* date on the inline start (right in RTL), share buttons at the far end */
.acs-vsingle__meta{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.acs-vsingle__date{font-family:"Readex Pro",sans-serif;font-size:12px;font-weight:400;line-height:1.5;color:#9C999A}
@media(max-width:560px){
  .acs-vsingle__meta{align-items:flex-start;gap:24px;flex-direction: column;}
}
/* ===== more videos grid (ACS: فيديوهات أخرى) =====
   Fixed-height card split in two: a full-bleed image and a padded text block.
   The padding sits on __body, never on the card — that is what keeps the image
   flush to the card's edges however far the padding control is pushed. */
.acs-vmore__grid{display:grid;grid-template-columns:repeat(var(--acs-vmore-cols,4),minmax(0,1fr));column-gap:16px;row-gap:24px}
.acs-vmore__empty{color:var(--acs-muted,#6a7178);text-align:center;padding:40px 0}
.acs-vmore-card{display:flex;flex-direction:column;box-sizing:border-box;height:364px;background:#2B2B2B;border-radius:4px;overflow:hidden}
.acs-vmore-card__media{position:relative;flex:0 0 auto;display:block;width:100%;height:179px;overflow:hidden;background:rgba(0,0,0,.15)}
.acs-vmore-card__img{width:100%;height:100%;object-fit:cover;display:block}
.acs-vmore-card__play{position:absolute;top:12px;inset-inline-end:12px;width:40px;height:40px;background:var(--acs-play-icon) center/100% 100% no-repeat}
.acs-vmore-card__dur{position:absolute;bottom:12px;inset-inline-end:12px;background:rgba(16,16,16,.72);color:#fff;font-family:"Readex Pro",sans-serif;font-size:12px;line-height:1.5;padding:2px 8px;border-radius:4px}
/* min-height:0 lets the clamped title shrink inside the fixed-height card
   instead of pushing the date past the bottom edge */
.acs-vmore-card__body{flex:1;min-height:0;box-sizing:border-box;padding:16px;display:flex;flex-direction:column;gap:8px}
.acs-vmore-card__title{font-family:"Readex Pro",sans-serif;font-size:14px;font-weight:400;line-height:1.6;color:#fff;text-decoration:none;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.acs-vmore-card__title:hover{text-decoration:underline}
/* margin-top:auto pins the date to the bottom, align-self keeps it on the
   inline start — the right, in RTL */
.acs-vmore-card__date{margin-top:auto;align-self:flex-start;font-family:"Readex Pro",sans-serif;font-size:12px;font-weight:300;line-height:1.5;color:#9C999A}
@media(max-width:1100px){.acs-vmore__grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}}
/* 479–560px: one full-width card per row. Below 479 the carousel block takes
   over, so this band stops there — a stretched auto-height card is not what a
   318px slide wants. */
@media(max-width:560px) and (min-width:479px){
  .acs-vmore__grid{grid-template-columns:1fr}
  .acs-vmore-card{height:auto}
}
/* phones: the grid becomes the shared swipe carousel (.acs-cslider, homepage.css
   + initCarousel). Two classes on the track so display:flex beats the
   single-class grid rule above whatever order the sheets load in. Card 318x364,
   image 318x179 — the width is what the flex track needs, the heights are the
   desktop values, restated because the 560px band no longer reaches here. */
@media(max-width:478px){
  .acs-cslider__track.acs-vmore__grid{display:flex;gap:16px}
  .acs-vmore__grid .acs-vmore-card{flex:0 0 auto;width:318px;height:364px}
  .acs-vmore__grid .acs-vmore-card__media{height:179px}
}

/* ===== الاستشهاد بالدراسة — citations block (acs-citation) + jump button ===== */
.acs-citation{padding: 16px;box-sizing:border-box;background:#fff;border-radius:var(--acs-radius,4px)}
.acs-citation:focus{outline:none}
/* Zero-height jump target; scroll-margin clears the sticky header on jump. */
.acs-citation__anchor{display:block;height:0;scroll-margin-top:100px}
.acs-citation__anchor:focus{outline:none}
.acs-citation__title{display:flex;flex-direction:row;gap:12px;margin:0 0 24px;color:var(--acs-text,#231F20);font-family:"Readex Pro",sans-serif;font-size:24px;font-weight:600;line-height:150%;align-items: center;}
.acs-citation__title::after{content:"";width:52px;height:4px;border-radius:2px;background:var(--acs-teal,#068788)}

/* Tab bar — active tab picks up the teal underline + colour. */
.acs-citation__tabs{display:flex;flex-wrap:wrap;gap:8px 24px;border-bottom:1px solid #E7E7E7;margin-bottom:20px}
.acs-citation__tab{appearance:none;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;padding:8px 2px;cursor:pointer;color:var(--acs-dark-gray,#9C999A);font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:500;line-height:150%;transition:color .15s,border-color .15s}
.acs-citation__tab:hover{color:var(--acs-text,#231F20)}
.acs-citation__tab.is-active{color:var(--acs-teal,#068788);border-bottom-color:var(--acs-teal,#068788)}
.acs-citation__tab:focus-visible{outline:2px solid var(--acs-teal,#068788);outline-offset:2px;border-radius:2px}

/* Panels — only the active one shows (JS also toggles the `hidden` attribute). */
.acs-citation__panel[hidden]{display:none}
.acs-citation__panel:not(.is-active){display:none}
.acs-citation__text{background:#F7F7F7;border-radius:var(--acs-radius,4px);padding: 16px;overflow-wrap: break-word;color:var(--acs-text,#231F20);font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:300;line-height:1.9}
.acs-citation__text--code{font-family:"SFMono-Regular",Consolas,"Liberation Mono",Menlo,monospace;font-size:14px;line-height:1.7;white-space:pre-wrap;word-break:break-word;overflow-x:auto;margin:0}

.acs-citation__actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.acs-citation__btn{display:inline-flex;align-items:center;gap:8px;box-sizing:border-box;padding:8px 16px;border:1px solid var(--acs-teal,#068788);border-radius:var(--acs-radius,4px);background:var(--acs-teal,#068788);color:#fff;cursor:pointer;font-family:"Readex Pro",sans-serif;font-size:14px;font-weight:500;line-height:150%;transition:opacity .15s,background-color .15s}
.acs-citation__btn:hover{opacity:.9}
.acs-citation__btn svg{flex:0 0 auto}
/* Download reads as a secondary/outline action next to Copy. */
.acs-citation__btn--dl{background:#fff;color:var(--acs-teal,#068788)}
.acs-citation__btn--dl:hover{background:#F1F7F6;opacity:1}
.acs-citation__btn.is-copied{background:var(--acs-teal,#068788);color:#fff;border-color:var(--acs-teal,#068788);opacity:1}

/* Jump button under the TOC — full-width in the sidebar like the mobile «المزيد». */
.acs-cite-btnwrap{margin-top:16px}
.acs-cite-btn{display:flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;width:100%;padding:12px 16px;border:0;border-radius:var(--acs-radius,4px);background:var(--acs-teal,#068788);color:#fff;text-decoration:none;cursor:pointer;font-family:"Readex Pro",sans-serif;font-size:16px;font-weight:500;line-height:150%;transition:background-color .15s,opacity .15s}
.acs-cite-btn:hover{opacity:.92}
.acs-cite-btn__icon{flex:0 0 auto;width:18px;height:18px}

@media(max-width:478px){
  /* Tabs scroll horizontally rather than wrapping into a tall stack. */
  .acs-citation__tabs{flex-wrap:nowrap;gap:16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .acs-citation__tabs::-webkit-scrollbar{display:none}
  .acs-citation__tab{white-space:nowrap;flex:0 0 auto}
  .acs-citation__title{font-size:20px}
  .acs-citation__text{padding:14px 16px;font-size:15px;}
  .acs-citation__btn{flex:1 1 auto;justify-content:center}
}
