/* =============================================================================
   WPS 2026 SHARED COMPONENTS (design-system component layer)
   Loaded LAST on every page (homepage and inner pages) by functions.php, after
   typography.css. Shared components from the web-team master live here once, so
   every page gets the same behaviour. Colours, radii and type come from the site
   tokens and typography.css; never set raw values for a role here.
   ============================================================================= */

/* ---- Countdown widget (.fab-reg) ----
   ≥761px: a compact card fixed in the top-right corner, below the nav: days left,
   "days to go" and a Register pill. ≤760px: the full-width bottom bar (unchanged). */
@media (min-width:761px){
  .fab-reg,.fab-reg.is-closed{
    top:92px;right:20px;bottom:auto;left:auto;width:132px;min-width:0;
    flex-direction:column;align-items:center;gap:0;
    padding:14px 12px 12px;border:0;border-radius:18px;
    background:var(--wps-brand,#023689);box-shadow:0 16px 36px rgba(2,54,137,.32);
    transform:none!important} /* the widget script scales the card; keep it steady */
  .fab-reg:hover{transform:translateY(-2px)!important;box-shadow:0 20px 42px rgba(20,18,70,.38)}
  .fab-reg::before,.fab-reg::after,.fab-reg__head{display:none}
  .fab-reg__body,.fab-reg__body-in{display:contents}
  .fab-reg__num{margin:0;font-size:34px;font-weight:800;line-height:1;color:#fff}
  .fab-reg__lbl{margin:6px 0 10px;font-size:9px;letter-spacing:.18em;color:rgba(255,255,255,.62)}
  .fab-reg__go{width:100%;margin:0;padding:9px 10px;font-size:13px;font-weight:800;background:#fff;color:var(--wps-brand,#023689)}
  .fab-reg__go:hover{background:#E8F0FB;color:var(--wps-brand,#023689)}
  html[data-theme="dark"] .fab-reg{background:var(--wps-brand,#023689);border:1px solid rgba(255,255,255,.14)}
  html[dir="rtl"] .fab-reg,html[dir="rtl"] .fab-reg.is-closed{right:auto;left:20px}
}

/* ---- Chat bubble: keep clear of the phone bottom bar on every page ---- */
@media (max-width:760px){
  #chatFab,.chat-fab-global{bottom:74px!important}
}

/* ---- Page title header (.page-title) ----
   Plain one-colour H1 on the page background, no photo hero, no badge, no intro.
   Web-team master: FAQs #1, and Contact Us "same as the FAQs page".
   <header class="page-title"><div class="page-title__wrap"><h1>…</h1></div></header>
   Type comes from typography.css (inner H1). Top padding clears the fixed nav. */
.page-title{padding:clamp(140px,13vw,190px) 0 44px;background:transparent}
.page-title__wrap{width:min(100% - 48px,var(--shell,1240px));margin-inline:auto}
.page-title h1{margin:0;color:var(--ink,#16213A)}
.page-title h1 em{font-style:normal;color:inherit} /* one colour by rule */
html[data-theme="dark"] .page-title h1{color:#fff}
@media (max-width:760px){.page-title{padding-top:118px}.page-title__wrap{width:min(100% - 32px,var(--shell,1240px))}}
.page-title + .faq-approved{padding-top:20px} /* 44 + 20 = the same 64px title gap as Contact (its #quick has 20px) */

/* ---- Accordion (.acc on <details>) ----
   Shared by FAQs and Venue (web-team master Venue #20 "same accordion as FAQs").
   Closed: hairline border. Open: brand-blue border + soft shadow, chevron flips.
   Question text uses the H5 role (.t-h5 on the summary text). */
.acc{background:var(--surface,#fff);border:1px solid var(--brd,#E0E9F4);border-radius:var(--r-md,20px);overflow:hidden;transition:border-color .2s,box-shadow .2s}
.acc:hover{border-color:var(--card-brd-hi,rgba(0,157,217,.55))}
.acc[open]{border-color:var(--card-brd-hi,rgba(0,157,217,.55));box-shadow:0 12px 32px rgba(2,54,137,.1)}
.acc>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 22px;cursor:pointer;color:var(--ink,#16213A)}
.acc>summary::-webkit-details-marker{display:none}
.acc>summary:focus-visible{outline:3px solid var(--wps-light,#009DD9);outline-offset:3px}
.acc[open]>summary{color:var(--wps-dark,#023689)}
html[data-theme="dark"] .acc{border-color:rgba(255,255,255,.12)}
html[data-theme="dark"] .acc[open]{border-color:var(--card-brd-hi,rgba(0,157,217,.55));box-shadow:0 12px 32px rgba(0,0,0,.35)}
html[data-theme="dark"] .acc>summary,html[data-theme="dark"] .acc[open]>summary{color:#fff}
/* Parts for pages that build the accordion from scratch (FAQs keeps its own
   chevron and answer classes). .acc-grid = two columns whose rows line up; opening
   an item grows only its own row (Venue #20). One column on phones. */
.acc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;align-items:start}
.acc__chev{flex:none;width:9px;height:9px;margin-top:-4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .2s}
.acc[open] .acc__chev{margin-top:4px;transform:rotate(225deg)}
.acc__a{padding:0 22px 20px;color:var(--w55,#5A6B85)}
.acc__a>:first-child{margin-top:0}.acc__a>:last-child{margin-bottom:0}
.acc__a p{margin:10px 0 0}.acc__a ul{margin:10px 0 0;padding-inline-start:18px}
.acc__a a{color:var(--wps-light,#009DD9);text-decoration:underline;text-underline-offset:3px}
html[data-theme="dark"] .acc__a{color:rgba(255,255,255,.7)}
@media (max-width:760px){.acc-grid{grid-template-columns:1fr}}

/* ---- Icon tile (.tile__ic, base.css) on the radius scale: 15px → 14px ---- */
.tile__ic{border-radius:14px}

/* ---- Pass cards (.pass, homepage + Registration) on the radius scale: 24px → r-lg ---- */
.pass,.registration-passes .pass{border-radius:var(--r-lg,28px)}

/* ---- Dark panels on phones (wps.css sets 26px): keep them on r-lg ---- */
@media (max-width:760px){.stats__panel,.white-panel,.awards__panel{border-radius:var(--r-lg,28px)}}

/* ---- Filter chips (.fchip) ----
   One row of topic chips over a list (Speakers, Knowledge Hub). The row never wraps; chips
   that don't fit go into a "More topics" dropdown. No counts in chips. Pressed = wps-dark. */
.fchip{flex:none;display:inline-flex;align-items:center;padding:9px 16px;border:1px solid var(--brd,#E0E9F4);border-radius:999px;background:var(--glass,rgba(255,255,255,.72));color:var(--w,#16213A);font:inherit;font-size:var(--t-card-size,13.5px);font-weight:700;line-height:1.2;white-space:nowrap;cursor:pointer;transition:border-color .2s,background .2s,color .2s}
.fchip:hover{border-color:var(--card-brd-hi,rgba(0,157,217,.55))}
.fchip[aria-pressed="true"]{background:var(--wps-dark,#023689);border-color:var(--wps-dark,#023689);color:#fff}
.fchip:focus-visible{outline:3px solid var(--wps-light,#009DD9);outline-offset:2px}
.fchip[hidden]{display:none}

/* ---- Pager (.pager) ----
   "← Previous · 1 2 3 … 9 · Next →" under a paged list. Current page filled navy;
   Previous/Next disabled at the ends; hidden when everything fits on one page. */
.pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin-top:34px}
.pager[hidden]{display:none}
.pager__nums{display:flex;align-items:center;gap:6px}
.pager button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:42px;height:42px;padding:0 14px;border:1px solid var(--brd,#E0E9F4);border-radius:999px;background:var(--glass,rgba(255,255,255,.72));color:var(--w,#16213A);font:inherit;font-weight:700;cursor:pointer;transition:border-color .2s,background .2s}
.pager button:hover:not([disabled]){border-color:var(--card-brd-hi,rgba(0,157,217,.55))}
.pager button[aria-current="page"]{background:var(--wps-dark,#023689);border-color:var(--wps-dark,#023689);color:#fff}
.pager button[disabled]{opacity:.4;cursor:default}
.pager__gap{min-width:20px;text-align:center;color:var(--w55,#5A6B85)}
@media (max-width:480px){.pager__step{padding:0 12px}.pager button{min-width:38px;height:38px}}

/* ---- Chip row with "More topics" ([data-chip-row], chip-row.js) ---- */
[data-chip-row]{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;overflow:hidden;min-width:0;flex:1 1 auto}
[data-chip-row] .gal__f span{display:none} /* no counts in chips */
.chiprow__more{flex:none}
.chiprow__more[hidden]{display:none}
.chiprow__more select{padding:9px 16px;border:1px solid var(--brd,#E0E9F4);border-radius:999px;background:var(--glass-hi,rgba(255,255,255,.92));color:var(--w,#16213A)}

/* ---- Article header (reports, publications, press releases: main.art) ----
   Web-team master, Knowledge Hub p.182: plain page background, the breadcrumb as a small
   text line, one meta line (topic · credit · date), cover capped so the text starts on the
   first screen at 1280 × 800, and a title at a readable measure. */
main.art::before{display:none}
main.art .art__crumbs{padding:0;border:0;border-radius:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;gap:8px;font-size:var(--t-card-size,13.5px);color:var(--w55,#5A6B85)}
main.art .art__crumbs a,main.art .art__crumbHome{padding:0;background:none;color:var(--w55,#5A6B85);text-decoration:none}
.art__crumbs a:hover{color:var(--w,#16213A);text-decoration:underline;text-underline-offset:3px}
.art__crumbIcon{display:none}
.art__crumbSep{width:auto;height:auto;background:none;-webkit-mask:none;mask:none}
.art__crumbSep::before{content:"›";color:var(--w40,#7C8BA3)}
.art__crumbCurrent{color:var(--w,#16213A)}
main.art .art__t{max-width:36ch;color:var(--w,#16213A)}
.art__meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.art__meta>*+*::before{content:"·";margin-inline-end:14px;color:var(--w40,#7C8BA3)}
.art__meta>.art__pub::before,.art__meta>.rpt__topic::before{content:none}
.art__meta>.rpt__topic{align-self:center}
main.art .art__cover{height:auto;max-height:320px;border-radius:var(--r-lg,28px);overflow:hidden}
main.art .art__cover img{display:block;width:100%;height:320px;max-height:320px;object-fit:cover}
.art__pn{display:none}
.report-dl-modal .modal__card{max-width:620px;max-height:calc(100vh - 40px);overflow-y:auto}

/* ---- Media Centre gallery card: the Newsletters card pattern (p.194-195) ----
   Clean image on top; label, title and action in the white body. Nothing over the image. */
.mc__grid .mc--gallery{display:flex;flex-direction:column;align-items:stretch;padding:0;text-align:start;background:#fff;border:1px solid var(--card-brd,rgba(0,157,217,.32));border-radius:var(--r-md,20px);color:var(--ink,#16213A);overflow:hidden;cursor:pointer}
.mc__grid .mc--gallery:hover{border-color:var(--card-brd-hi,rgba(0,157,217,.55))}
.mc__grid .mc--gallery .insight-card__media{position:relative;inset:auto;display:block;aspect-ratio:16/10;overflow:hidden}
.mc__grid .mc--gallery .insight-card__media::before,.mc__grid .mc--gallery .insight-card__media::after,.mc__grid .mc--gallery::before,.mc__grid .mc--gallery::after{display:none}
.mc__grid .mc--gallery .insight-card__media img{width:100%;height:100%;object-fit:cover}
.mc__grid .mc--gallery .insight-card__copy{position:static;display:grid;gap:8px;padding:20px 22px;background:none;color:var(--ink,#16213A)}
.mc__grid .mc--gallery .insight-card__copy>span:first-child{color:var(--teal-ink,#1C6F62);font-size:var(--t-eyebrow-size,11px);font-weight:500;letter-spacing:.22em;text-transform:uppercase}
.mc__grid .mc--gallery .insight-card__copy b{color:var(--ink,#16213A);font-size:var(--t-h4-size,16.5px);line-height:var(--t-h4-lh,1.05)}
.mc__grid .mc--gallery .insight-card__act{margin-top:6px}
.mc__grid .mc--gallery .insight-card__act,.mc__grid .mc--gallery .insight-card__act>span{color:var(--wps-dark);font-size:14px;font-weight:700;letter-spacing:0;text-transform:none;opacity:1}
[data-theme="dark"] .mc__grid .mc--gallery{background:rgba(255,255,255,.04);border-color:rgba(255,255,255,.12);color:#fff}
[data-theme="dark"] .mc__grid .mc--gallery:hover{border-color:rgba(127,211,242,.45)}
[data-theme="dark"] .mc__grid .mc--gallery .insight-card__copy,[data-theme="dark"] .mc__grid .mc--gallery .insight-card__copy b{color:#fff}
[data-theme="dark"] .mc__grid .mc--gallery .insight-card__copy>span:first-child{color:#7FD3F2}
[data-theme="dark"] .mc__grid .mc--gallery .insight-card__act,[data-theme="dark"] .mc__grid .mc--gallery .insight-card__act>span{color:#7FD3F2}
.mc__grid .mc--gallery .insight-card__act{display:inline-flex;align-items:center;gap:7px;padding-top:0}
.mc__grid .mc--gallery .insight-card__act svg{flex:none;width:15px;height:15px}
@media (max-width:600px){#mcGalleryCollections{min-width:0;max-width:100%;flex:1 1 100%}#mcGalleryCollections .gal__filters{max-width:100%;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}#mcGalleryCollections .gal__filters::-webkit-scrollbar{display:none}#mcGalleryCollections .gal__f{flex:none}}

/* Year and category filters on one line (p.195 #2) */
.mc__bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px}
.mc__bar .mc__gallery-seg{margin:0}
.mc__bar .mc__gallery-seg[hidden]{display:none}

/* Chip rows that scroll sideways on phones ([data-chip-scroll]) */
[data-chip-row].is-scroll{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
[data-chip-row].is-scroll::-webkit-scrollbar{display:none}

/* ---- Legal pages on phones: sticky "Jump to section" (site dropdown with search) ---- */
@media (max-width:760px){
  .legal-page .legal__side{position:sticky;top:64px;z-index:30;background:var(--bg,#F7FAFD)}
  .legal-page .legal__jump .wsel,.legal-page .legal__jump .wsel__btn{width:100%!important}
}
html[data-theme="dark"] .legal-page .legal__jump{background:var(--bg,#07061A)}
.legal-page .legal__jump select{border-radius:999px} /* trigger copies this: pill like the other dropdowns */

/* ---- Menu: flyout inside a dropdown (Programme › Side events and workshops, master p.84) ----
   Same surface as .nvi__dd (shell.css); the list scrolls inside itself when there are many events. */
.nvi__sub{position:relative}
.nvi__dd .nvi__subT{display:flex;align-items:center;justify-content:space-between;gap:18px}
.nvi__subT b{font-weight:400;opacity:.7}
.nvi__fly{position:absolute;left:calc(100% + 8px);top:-8px;min-width:250px;max-height:min(62vh,440px);overflow-y:auto;overscroll-behavior:contain;padding:8px;border-radius:14px;background:rgba(10,9,32,.94);border:1px solid rgba(255,255,255,.12);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 18px 42px rgba(0,0,0,.45);opacity:0;visibility:hidden;transform:translateX(6px);transition:opacity .2s var(--ease,ease),transform .2s var(--ease,ease),visibility .2s}
.nvi__fly::before{content:"";position:absolute;top:0;bottom:0;left:-14px;width:14px}
.nvi__sub:hover>.nvi__fly,.nvi__sub:focus-within>.nvi__fly{opacity:1;visibility:visible;transform:none}
.nvi__fly a.is-all{font-weight:700;color:#fff}
.nav.is-stuck .nvi__fly{background:rgba(255,255,255,.96);border-color:#D7E2F0;box-shadow:0 18px 42px rgba(20,71,156,.14)}
.nav.is-stuck .nvi__fly a.is-all{color:var(--ink,#16213A)}
html[data-theme="dark"] .nav.is-stuck .nvi__fly{background:rgba(10,9,32,.94);border-color:rgba(255,255,255,.12);box-shadow:0 18px 42px rgba(0,0,0,.45)}
html[data-theme="dark"] .nav.is-stuck .nvi__fly a.is-all{color:#fff}
[dir="rtl"] .nvi__fly{left:auto;right:calc(100% + 8px);transform:translateX(-6px)}
[dir="rtl"] .nvi__fly::before{left:auto;right:-14px}
/* Phone menu: the flyout becomes a second level that expands in place */
.mobile-menu .mm-sub summary{display:flex;align-items:center;justify-content:space-between;padding:11px 0;border-bottom:1px solid var(--brd);color:var(--ink);font-size:17px;font-weight:700;list-style:none;cursor:pointer}
.mobile-menu .mm-sub summary::-webkit-details-marker{display:none}
.mobile-menu .mm-sub summary::after{content:"+";font-weight:400;color:var(--w40)}
.mobile-menu .mm-sub[open] summary::after{content:"−"}
html[data-theme="dark"] .mobile-menu .mm-sub summary{color:#fff}
.mobile-menu .mm-sub__list a{padding-inline-start:16px;font-size:15px}
.mobile-menu .mm-sub__list a.is-all{font-weight:700}

/* ---- Dialogs: the global reset zeroes <dialog> margins, pinning every pop-up top-left. Centre them. ---- */
dialog{margin:auto}
dialog:modal{inset:0;margin:auto;max-height:calc(100dvh - 32px)}

/* Inner-page banner (template-parts/page-banner.php): same photo banner on every inner page */
.pagehero.pagehero--banner{min-height:46vh;padding-top:150px;padding-bottom:88px}
.pagehero--banner .crumbs,.pagehero--banner .crumbs a{color:rgba(255,255,255,.78)}
.pagehero--banner .crumbs a:hover{color:#fff}
.pagehero--banner .crumbs span[aria-hidden]{color:rgba(255,255,255,.5)}
.pagehero--banner h1{margin-bottom:0;color:#fff}
.pagehero--banner .sev-meta{margin-top:18px;color:rgba(255,255,255,.86)}
.pagehero--banner .sev-meta>*+*::before{color:rgba(255,255,255,.5)}
.pagehero--banner .sev-meta__topic{background:rgba(0,206,175,.22);color:#A6F4E6}
.pagehero--banner .p5__logo{display:none}
.pagehero--banner .p5__logo--dark{display:inline-block}
@media (max-width:760px){.pagehero.pagehero--banner{min-height:0;padding-top:128px;padding-bottom:56px}}

/* Tabs on dark brand panels (e.g. Speakers "Hear from the speakers"): the selected tab is the solid white one */
html:root .vsec--dark .tab{background:transparent;border-color:rgba(255,255,255,.34);color:rgba(255,255,255,.86);box-shadow:none}
html:root .vsec--dark .tab:hover{border-color:#fff;color:#fff;background:rgba(255,255,255,.08)}
html:root .vsec--dark .tab[aria-selected="true"]{background:#fff;border-color:#fff;color:var(--wps-dark,#023689);box-shadow:0 6px 16px rgba(0,0,0,.18)}
html:root .vsec--dark .tab:focus-visible{outline:3px solid var(--wps-light);outline-offset:2px}

/* Section rhythm (design system: .sect 88/72/60px). One section's padding separates two blocks:
   no extra margins on padded sections, no top padding on a CTA banner that follows a section,
   and the first section after the shared page banner starts at the standard section padding. */
main > section.sect,main > section.bot{margin-block:0}
main > .sect + .sect--cta,main > section + .sect--cta{padding-top:0}
main > .pagehero--banner + section{padding-top:88px}
@media (max-width:1024px){main > .pagehero--banner + section{padding-top:72px}}
@media (max-width:640px){main > .pagehero--banner + section{padding-top:60px}}

/* Subheadings inside article text (press releases, newsletters, reports, publications):
   an H2 in the body is a subtitle, so it takes the H3 role; an H3 takes the H4 role. */
main .art__body h2{font-size:var(--t-h3-size)!important;line-height:var(--t-h3-lh)!important;letter-spacing:var(--t-h3-ls);font-weight:var(--t-h3-weight);margin:1.6em 0 .5em}
main .art__body h3{font-size:var(--t-h4-size)!important;line-height:var(--t-h4-lh)!important;letter-spacing:var(--t-h4-ls);font-weight:var(--t-h4-weight);margin:1.4em 0 .45em}

/* Press / newsletter cards: every card title at the card-title (H4) size. typography.css gives the
   first card in a grid the H3 size, which makes one card shout whenever it happens to come first. */
html .mc__grid > .mc:nth-child(n) .mc__t{font-size:var(--t-h4-size)!important;line-height:var(--t-h4-lh)!important;letter-spacing:var(--t-h4-ls)!important}
/* card titles: H4 line-height +10% (1.05 → 1.155) for multi-line titles; same on every card type */
html .mc__grid > .mc:nth-child(n) .mc__t,html .rpt .rpt__t{line-height:calc(var(--t-h4-lh) * 1.1)!important}

/* Press articles: no gradient accent tab on top of the intro box */
.media-article .art__body>p:first-of-type::before{content:none!important;display:none!important}

/* ---- Dark-mode contrast fixes (sitewide audit, 30 Sep) ---- */
/* Registration: the Government, Student and Visitor pass cards used dark ink on the dark card */
html[data-theme="dark"] .registration-passes .pass:not(.pass--hero) .pass__n,
html[data-theme="dark"] .registration-passes .pass:not(.pass--hero) .pass__p{color:#fff}
html[data-theme="dark"] .registration-passes .pass:not(.pass--hero) li{color:rgba(255,255,255,.78)}
html[data-theme="dark"] .registration-passes .pass:not(.pass--hero) .pass__was{color:rgba(255,255,255,.5)}
/* Venue "Dubai guide" (and any .acc panel): the panel stayed white while its text turned white */
html[data-theme="dark"] .acc{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12)}
html[data-theme="dark"] .acc[open]{border-color:rgba(127,211,242,.45)}
/* Homepage venue strip: the facts used dark ink on the dark page */
html[data-theme="dark"] .home-venue-strip__details dd{color:#fff}
/* FAQ answers: links in brand blue were too dark on navy */
html[data-theme="dark"] .faq-approved__answer a{color:#7FD3F2}
/* Policing 5.0 "Think tank workshop" pill: teal-ink is too dark on the dark page */
html[data-theme="dark"] .sev-meta__topic{background:rgba(0,206,175,.16);color:#7EEAD8}

/* Speaker cards (both themes): the country label was light grey on the white card (3.4:1) */
.spk .spk__c{color:#5E6678}

/* Nav dropdown caret: rounded triangle icon (was a tiny "▾" at 40% opacity); takes the link colour */
html body .nav .nvi__car{display:inline-flex;align-items:center;margin-left:6px;font-size:0;line-height:0;color:inherit;opacity:.8}
html body .nav .nvi__car svg{display:block;width:9px;height:6px}
html body .nav .nvi:hover .nvi__car,html body .nav .nvi:focus-within .nvi__car{opacity:1}
html[dir="rtl"] body .nav .nvi__car{margin-left:0;margin-right:6px}
@media (max-width:1280px){html body .nav .nvi__car{margin-left:4px}html[dir="rtl"] body .nav .nvi__car{margin-right:4px}}

/* Nav dropdown chevron: 2px smaller (was 9x6) */
html body .nav .nvi__car svg{width:7px;height:4.5px}
/* Countdown card: Register hover/focus = dark blue with white text and arrow (light and dark mode) */
html body .fab-reg .fab-reg__go:hover,html body .fab-reg .fab-reg__go:focus-visible,
html[data-theme="dark"] body .fab-reg .fab-reg__go:hover,html[data-theme="dark"] body .fab-reg .fab-reg__go:focus-visible{background:#023689;color:#fff}
html body .fab-reg .fab-reg__go:hover .ar,html body .fab-reg .fab-reg__go:focus-visible .ar{color:#fff}
html body .fab-reg .fab-reg__go:focus-visible{outline:2px solid #fff;outline-offset:2px}
html body .fab-reg:hover .fab-reg__go,html[data-theme="dark"] body .fab-reg:hover .fab-reg__go{background:#0B4BAE;color:#fff}
html body .fab-reg:hover .fab-reg__go .ar{color:#fff}

/* ---- Pop-up motion: one soft entrance everywhere (fade, slight lift and scale), backdrop fades ---- */
@keyframes wpsPopIn{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
@keyframes wpsFadeIn{from{opacity:0}to{opacity:1}}
/* native dialogs (Exhibit enquiry, venue map, registration contact): enter and leave */
dialog{transition:opacity .28s cubic-bezier(.22,.7,.2,1),transform .32s cubic-bezier(.22,.7,.2,1),overlay .32s allow-discrete,display .32s allow-discrete;opacity:0;transform:translateY(10px) scale(.985)}
dialog[open]{opacity:1;transform:none}
@starting-style{dialog[open]{opacity:0;transform:translateY(10px) scale(.985)}}
dialog::backdrop{transition:background-color .3s ease,overlay .32s allow-discrete,display .32s allow-discrete}
@starting-style{dialog[open]::backdrop{background-color:transparent}}
/* lightboxes and pop-ups shown by removing [hidden] */
.insight-lightbox:not([hidden]){animation:wpsFadeIn .26s ease both}
.insight-lightbox:not([hidden]) > :not(.insight-lightbox__back){animation:wpsPopIn .34s cubic-bezier(.22,.7,.2,1) both}
.modal:not([hidden]){animation:wpsFadeIn .26s ease both}
.modal:not([hidden]) .modal__card{animation:wpsPopIn .34s cubic-bezier(.22,.7,.2,1) both}
/* class-toggled viewers: the gallery viewer gets the same lift as the Awards pop-ups */
.glb{transition:opacity .28s cubic-bezier(.22,.7,.2,1)}
.glb > *{transition:transform .34s cubic-bezier(.22,.7,.2,1)}
.glb:not(.is-open) > *{transform:translateY(10px) scale(.985)}
@media (prefers-reduced-motion:reduce){dialog,dialog::backdrop,.glb,.glb > *{transition:none}.insight-lightbox:not([hidden]),.insight-lightbox:not([hidden]) > *,.modal:not([hidden]),.modal:not([hidden]) .modal__card{animation:none}}

/* ---- Banner fade (every inner-page photo banner, EN and AR, both themes) ----
   A longer, eased fade into the page colour: no grey band, no visible edge. */
html .pagehero__veil{background:
  linear-gradient(180deg,rgba(247,250,253,0) 0%,rgba(247,250,253,.03) 18%,rgba(247,250,253,.09) 32%,rgba(247,250,253,.2) 46%,rgba(247,250,253,.36) 58%,rgba(247,250,253,.56) 70%,rgba(247,250,253,.76) 81%,rgba(247,250,253,.9) 90%,#F7FAFD 100%) bottom/100% 300px no-repeat,
  linear-gradient(180deg,rgba(7,6,26,.5) 0%,rgba(7,6,26,.4) 44%,rgba(7,6,26,.46) 100%)}
html[data-theme="dark"] .pagehero__veil{background:
  linear-gradient(180deg,rgba(7,6,26,0) 0%,rgba(7,6,26,.04) 18%,rgba(7,6,26,.12) 32%,rgba(7,6,26,.25) 46%,rgba(7,6,26,.42) 58%,rgba(7,6,26,.62) 70%,rgba(7,6,26,.8) 81%,rgba(7,6,26,.93) 90%,#07061A 100%) bottom/100% 300px no-repeat,
  linear-gradient(180deg,rgba(7,6,26,.5) 0%,rgba(7,6,26,.4) 44%,rgba(7,6,26,.46) 100%)}
@media (max-width:760px){html .pagehero__veil,html[data-theme="dark"] .pagehero__veil{background-size:100% 200px,auto}}
/* the first block after a banner sits on the page colour and starts at the standard section padding */
main > .pagehero--banner + .sect,main > .pagehero--banner + section{padding-top:88px}
@media (max-width:1024px){main > .pagehero--banner + .sect,main > .pagehero--banner + section{padding-top:72px}}
@media (max-width:640px){main > .pagehero--banner + .sect,main > .pagehero--banner + section{padding-top:60px}}
html .faq-approved{background:transparent}

/* Homepage testimonials: cut-out portraits sit on the photo edge, never cropped (EN left, AR right). */
html:not([dir="rtl"]) .voice__bg img.voice__portrait--cutout{object-position:left bottom}

/* ---------- Plain page titles (client round 2, 2 Oct 2026): no photo hero, the page starts with
   its H1 in the section-title green (--wps-teal), same size and top spacing on every inner page. ---------- */
.page-title--plain{padding-bottom:0}
.page-title--plain h1,.page-h1,html[data-theme="dark"] .page-title--plain h1,html[data-theme="dark"] .page-h1{color:var(--wps-teal)!important;margin:0}
.page-title--plain + .sect,.page-title--plain + section,.page-title--plain + .faq-approved,.page-title--plain + div{padding-top:clamp(28px,3.4vw,44px)!important}
/* Knowledge Hub, Reports, Videos, Publications, Media Centre: the first section's own title is the page title */
#main > section:first-child:has(.page-h1){padding-top:clamp(140px,13vw,190px)!important}
.page-h1 + .para{margin-top:16px}
@media (max-width:760px){#main > section:first-child:has(.page-h1){padding-top:118px!important}}

/* Knowledge Hub count buttons (client round 2): block top-aligned with the page title; number, label and
   arrow centred on one line, the same spacing in each button, numbers in a fixed column so labels line up. */
.khintro{align-items:start!important}
.khintro__stats{gap:12px}
.khstat{align-items:center!important;gap:0!important;min-height:76px;padding:0 24px!important}
.khstat .khstat__n{flex:0 0 3ch;line-height:1;font-variant-numeric:tabular-nums}
.khstat .khstat__l{flex:1 1 auto;padding-inline-start:14px;line-height:1.2}
.khstat .khstat__go{flex:none;margin:0!important;line-height:1}
html[dir="rtl"] .khstat .khstat__go{transform:scaleX(-1)}
html[dir="rtl"] .khstat:hover .khstat__go{transform:scaleX(-1) translateX(4px)}

/* Homepage group labels (Official Airline, Partners, Sponsors, Exhibitors, Startups, Academics): more visible,
   the same H4 style as the tier labels on Exhibit & Sponsor (client round 2). */
#partners .pcar__label,#exhibition .ex__groupLabel{display:block;font-family:inherit;font-size:var(--t-h4-size)!important;font-weight:700!important;line-height:var(--t-h4-lh,1.3)!important;letter-spacing:var(--t-h4-ls,-.025em)!important;text-transform:none!important;color:var(--ink,#16213A)!important;margin-bottom:16px}
html[data-theme="dark"] #partners .pcar__label,html[data-theme="dark"] #exhibition .ex__groupLabel{color:#fff!important}
#exhibition .ex{cursor:default}

/* "In attendance" logo cards: bigger, one card size; the logo inside is sized by area in front-page.php. */
.home #supported-by #pcarForces .plogo{flex:0 0 auto;width:168px;height:108px;min-height:0;display:flex;align-items:center;justify-content:center;padding:10px}
.home #supported-by #pcarForces .plogo img{max-width:none;max-height:none;object-fit:contain}
@media (max-width:760px){.home #supported-by #pcarForces .plogo{width:140px;height:92px}}

/* Homepage awards block: the three figures stack top to bottom on the right, as on the Awards page (client round 2). */
.home .awards .astat__grid{grid-column:3!important;grid-template-columns:1fr!important}
@media (max-width:1080px){.home .awards .astat__grid{grid-column:auto!important;grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media (max-width:600px){.home .awards .astat__grid{grid-template-columns:1fr!important}}
/* Testimonials: name sits right under the quote; card height comes from the longest quote (front-page.php). */
.home .voice__q{min-height:0!important;margin-bottom:0}
.home .voice__n{margin-top:20px}
.home .voice__card{min-height:440px!important}
.home .voice__body{padding-top:44px;padding-bottom:40px}

/* "Media and press" strip under the passes (approved mockup): light tinted strip, icon left, button right;
   on phones the button drops under the text, full width. */
.media-strip{display:flex;align-items:center;gap:16px;max-width:820px;margin:22px auto 0;padding:16px 20px;background:#EAF4FB;border:1px solid #D6E6F5;border-radius:18px}
.media-strip__ic{flex:none;width:44px;height:44px;display:grid;place-items:center;border-radius:12px;background:#fff;border:1px solid #D6E6F5}
.media-strip__ic svg{width:22px;height:22px;fill:none;stroke:#12307F;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.media-strip__t{min-width:0}
.media-strip__t b{display:block;font-size:16px;font-weight:700;color:var(--ink,#16213A)}
.media-strip__t span{display:block;font-size:14px;color:#5A5A72}
.media-strip__btn{flex:none;margin-inline-start:auto;display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:999px;background:#12307F;color:#fff!important;font-size:14px;font-weight:700;text-decoration:none;white-space:nowrap;transition:background .25s}
.media-strip__btn:hover{background:#0B4BAE}
html[data-theme="dark"] .media-strip{background:#14234F;border-color:#22305A}
html[data-theme="dark"] .media-strip__ic{background:#111E44;border-color:#22305A}
html[data-theme="dark"] .media-strip__ic svg{stroke:#3F9BD8}
html[data-theme="dark"] .media-strip__t b{color:#fff}
html[data-theme="dark"] .media-strip__t span{color:#B7C0D6}
html[data-theme="dark"] .media-strip__btn{background:#3F9BD8}
html[dir="rtl"] .media-strip__btn .ar{transform:scaleX(-1)}
@media (max-width:560px){.media-strip{flex-wrap:wrap}.media-strip__btn{margin-inline-start:0;width:100%;justify-content:center}}


/* Post Show Reports panel: edition title and description above the download buttons. */
.eds__title{margin:14px 0 6px;font-size:var(--t-h5-size,18px);font-weight:700;color:var(--ink,#16213A)}
.eds__desc{margin:0 0 18px;color:var(--w60,#5A5A72);line-height:1.55;max-width:56ch}
html[data-theme="dark"] .eds__title{color:#fff}
html[data-theme="dark"] .eds__desc{color:rgba(255,255,255,.72)}

/* Speaker cards (client round 2): the whole photo, sharp, inside the same box; the space beside it shows a
   soft blurred copy of the photo (--ph, set by speaker-cards.js). Text clamped; height equalised by the JS. */
.spk__ph{isolation:isolate}
.spk__ph::before{content:"";position:absolute;inset:-12%;z-index:-1;background:var(--ph,none) center/cover no-repeat;filter:blur(18px) saturate(1.1);opacity:.9}
.spk__ph img{object-fit:contain!important;object-position:center bottom!important;position:relative}
.spk:hover .spk__ph img{transform:none}
.spk__n{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.spk__r{display:-webkit-box!important;-webkit-box-orient:vertical;-webkit-line-clamp:3!important;overflow:hidden}
.spk__o{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.spk__b{overflow:hidden}

/* Registration: group-bookings note and the media strip side by side, same height; tighter note padding. */
.reg-lines{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;align-items:stretch;max-width:var(--shell,1240px);margin:22px auto 0}
.reg-lines .smallnote{margin:0!important;padding:16px 20px!important;display:flex;align-items:center;max-width:none}
.reg-lines .media-strip{margin:0;max-width:none}
@media (max-width:900px){.reg-lines{grid-template-columns:1fr}}
/* keep the space between "contact" and the email: block box, vertically centred */
.reg-lines .smallnote{display:block!important;align-content:center}

/* Plain page titles on a dark navy brand band (5 Oct 2026). Same height as before: the band only adds
   the 44px bottom padding the title row already had; the green title reads on navy in both themes. */
.page-title--plain{position:relative;isolation:isolate;padding-bottom:44px!important;background:radial-gradient(900px 320px at 85% 0%,rgba(0,206,175,.16),transparent 60%),radial-gradient(700px 300px at 0% 100%,rgba(0,157,217,.18),transparent 60%),linear-gradient(135deg,#07103A 0%,#0B1B4D 45%,#023689 100%)}
.page-title--plain + .sect,.page-title--plain + section,.page-title--plain + .faq-approved,.page-title--plain + div{padding-top:clamp(40px,4.4vw,64px)!important}
@media (max-width:760px){.page-title--plain{padding-bottom:32px!important}}
.page-title--plain{padding-top:calc(clamp(140px,13vw,190px) - 44px)!important}
@media (max-width:760px){.page-title--plain{padding-top:calc(118px - 32px)!important}}

/* Card hover (Marwa, 7 Oct 2026): logo cards lift 4px on hover; the carousels that clip them get
   room above and below so the lifted card is never cut. No outer shadow inside a clipped strip. */
.pcar{padding-top:8px;padding-bottom:8px;margin-top:-8px;margin-bottom:-8px}
.pcar .plogo:hover,html[data-theme="dark"] .pcar .plogo:hover{box-shadow:none}

/* Speaker cards (Marwa, 7 Oct 2026; General comments p.2). Photo area = the API photo ratio (4:5,
   1080 x 1350), filled edge to edge from the top, no blurred copy behind. Text in two blocks:
   name + position, then organisation + country; speaker-cards.js gives each block the same height
   across the row so every card lines up.
   No movement on hover (only the border colour changes), so nothing is ever cut. */
.spk{display:flex;flex-direction:column}
.spk,.spk:hover{transform:none!important}
.spk__ph{flex:none;aspect-ratio:4/5!important;height:auto!important}
.spk__ph::before{content:none!important;display:none!important}
.spk__ph img{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center top!important;transform:none!important}
.spk .spk__b{display:flex!important;flex-direction:column;flex:1 1 auto;gap:12px;overflow:visible}
.spk__who{display:flex;flex-direction:column;gap:5px;min-width:0}
.spk__at{display:flex;flex-direction:column;gap:7px;min-width:0;padding-top:12px;border-top:1px solid rgba(2,54,137,.09)}
.spk__who .spk__r,.spk__at .spk__o,.spk__at .spk__c{margin-top:0!important}
html[data-theme="dark"] .spk__at{border-top-color:rgba(255,255,255,.1)}

/* Arrows (Marwa, 7 Oct 2026): the thin line arrow used on the live site, drawn as an icon in place of
   the text glyph (which stays in the markup for no-CSS readers). Size follows the text. Direction
   variants: .ar--back (previous), .ar--down (download / scroll), .ar--external (opens elsewhere).
   Arabic pages already mirror .ar (scaleX(-1)), so the icon itself is never flipped for RTL. */
.ar{position:relative;display:inline-block!important;width:1.15em;height:1.15em;flex:none;overflow:hidden;white-space:nowrap;text-indent:300%;vertical-align:-.2em;color:inherit}
.ar::before{content:"";position:absolute;inset:0;background-color:currentColor;-webkit-mask:url("../icons-ui/arrow-right.svg") center/contain no-repeat;mask:url("../icons-ui/arrow-right.svg") center/contain no-repeat}
.ar--back::before{transform:scaleX(-1)}
.ar--down::before{-webkit-mask-image:url("../icons-ui/arrow-down.svg");mask-image:url("../icons-ui/arrow-down.svg")}
.ar--external::before{-webkit-mask-image:url("../icons-ui/arrow-up-right.svg");mask-image:url("../icons-ui/arrow-up-right.svg")}

/* ---- Forms (Gravity Forms): one look for every site form (8 Oct 2026) ----
   Reference: the approved Contact form (.cform-card, DESIGN-SPECS §4.3). Applies to every Gravity Forms
   form on the site (Contact, Exhibit & Sponsor enquiry, report downloads in any modal), so a form looks the
   same wherever it is placed. Field width comes from the field's CSS class in the form editor: "wps-half"
   (half row) or "wps-full". Narrow containers (modals) stack to one column.
   The "html body" prefix out-specifies Gravity Forms' Orbital theme and older per-page form rules. */
html body .gform_wrapper.gform-theme{
  --wpsf-bg:#F5F8FC;--wpsf-bg-focus:#fff;--wpsf-brd:#C9D7E8;--wpsf-brd-hover:#9FB6D2;--wpsf-focus:#009DD9;
  --wpsf-ink:var(--ink,#16213A);--wpsf-label:#5A6B85;--wpsf-ph:#8A97AD;--wpsf-err:#D64545;--wpsf-h:48px;--wpsf-r:14px;
  container-type:inline-size;margin:0;font-family:inherit}
html[data-theme="dark"] body .gform_wrapper.gform-theme{
  --wpsf-bg:rgba(232,242,255,.06);--wpsf-bg-focus:rgba(232,242,255,.1);--wpsf-brd:rgba(191,214,244,.26);--wpsf-brd-hover:rgba(191,214,244,.45);--wpsf-focus:#7FD3F2;
  --wpsf-ink:#F2F7FF;--wpsf-label:rgba(224,236,255,.72);--wpsf-ph:rgba(224,236,255,.5);--wpsf-err:#FF8A8A}
html body .gform_wrapper.gform-theme .gform_fields{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:18px 16px!important}
html body .gform_wrapper.gform-theme .gfield{grid-column:1/-1!important;margin:0!important;padding:0!important;min-width:0;border:0}
html body .gform_wrapper.gform-theme .gfield.wps-half{grid-column:auto!important}
html body .gform_wrapper.gform-theme :is(.gfield--type-hidden,.gform_validation_container){display:none!important}
@container (max-width:600px){html body .gform_wrapper.gform-theme .gfield.wps-half:is(.gfield--type-phone,.gfield--type-email){grid-column:1/-1!important}} /* phone needs the row; email pairs with it */
@container (max-width:440px){html body .gform_wrapper.gform-theme .gfield.wps-half{grid-column:1/-1!important}}
/* Labels: small caps-style, as on Contact; the required mark is a red asterisk, not "(Required)". */
html body .gform_wrapper.gform-theme :is(.gfield_label,legend.gfield_label){display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:flex-start!important;text-align:start!important;gap:4px!important;width:auto;margin:0 0 7px!important;padding:0;font-family:inherit!important;font-size:11px!important;font-weight:600!important;line-height:1.3!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:var(--wpsf-label)!important}
html body .gform_wrapper.gform-theme .gfield_required{display:inline-flex!important;margin:0!important;color:var(--wpsf-err)!important;font-size:0!important}
html body .gform_wrapper.gform-theme .gfield_required::after{content:"*";font-size:13px;font-weight:700;line-height:1}
html body .gform_wrapper.gform-theme .gfield_required .gfield_required::after{content:none} /* Gravity Forms nests the mark: one asterisk only */
html body .gform_wrapper.gform-theme :is(.gfield_description,.gform_fileupload_rules){margin:6px 0 0!important;padding:0!important;font-size:12.5px!important;line-height:1.5;color:var(--wpsf-label)!important}
/* Controls */
html body .gform_wrapper.gform-theme .gfield :is(input:not([type=checkbox]):not([type=radio]):not([type=hidden]):not([type=submit]):not([type=button]):not([type=file]),select:not([multiple]),textarea){
  width:100%!important;height:var(--wpsf-h)!important;min-height:var(--wpsf-h)!important;margin:0!important;padding:0 16px!important;
  border:1px solid var(--wpsf-brd)!important;border-radius:var(--wpsf-r)!important;background:var(--wpsf-bg)!important;color:var(--wpsf-ink)!important;
  font-family:inherit!important;font-size:15px!important;font-weight:400!important;line-height:1.4!important;box-shadow:none!important;
  transition:border-color .2s,background-color .2s,box-shadow .2s}
html body .gform_wrapper.gform-theme .gfield textarea:not([type=a]):not([type=b]):not([type=c]):not([type=d]):not([type=e]):not([type=f]){height:160px!important;min-height:132px!important;padding:13px 16px!important;line-height:1.55!important;resize:vertical} /* the :not()s match the specificity of the control rule above */
html body .gform_wrapper.gform-theme .gfield :is(input,select,textarea):hover{border-color:var(--wpsf-brd-hover)!important}
html body .gform_wrapper.gform-theme .gfield :is(input,select,textarea):focus{outline:none!important;border-color:var(--wpsf-focus)!important;background:var(--wpsf-bg-focus)!important;box-shadow:0 0 0 3px rgba(0,157,217,.15)!important}
html body .gform_wrapper.gform-theme .gfield :is(input,textarea)::placeholder{color:var(--wpsf-ph)!important;opacity:1}
/* Site dropdowns (wps-select.js) inside forms: full width, same height and surface as the inputs. */
html body .gform_wrapper.gform-theme .gfield .wsel{width:100%!important;display:block}
html body .gform_wrapper.gform-theme .gfield .wsel__btn{width:100%!important;height:var(--wpsf-h)!important;min-height:var(--wpsf-h)!important;padding:0 16px!important;justify-content:space-between;
  border:1px solid var(--wpsf-brd)!important;border-radius:var(--wpsf-r)!important;background:var(--wpsf-bg)!important;color:var(--wpsf-ink)!important;font-family:inherit!important;font-size:15px!important;font-weight:400!important;box-shadow:none!important}
html body .gform_wrapper.gform-theme .gfield .wsel__btn:hover{border-color:var(--wpsf-brd-hover)!important}
html body .gform_wrapper.gform-theme .gfield .wsel.is-open .wsel__btn,html body .gform_wrapper.gform-theme .gfield .wsel__btn:focus-visible{border-color:var(--wpsf-focus)!important;box-shadow:0 0 0 3px rgba(0,157,217,.15)!important}
html body .gform_wrapper.gform-theme .gfield .wsel__ph{color:var(--wpsf-ph)!important;opacity:1}
/* Phone: country code + number on one line. */
html body .gform_wrapper.gform-theme .wf-phone{display:flex!important;align-items:stretch!important;gap:8px} /* Gravity Forms' reset can load later and unset these */
html body .gform_wrapper.gform-theme .gfield .wsel__btn{display:flex!important;flex-direction:row!important;align-items:center!important}
html body .gform_wrapper.gform-theme .gfield .wsel__val{display:flex!important;align-items:center;gap:8px}
html body .gform_wrapper.gform-theme .wf-phone .wsel{width:auto!important;flex:none}
html body .gform_wrapper.gform-theme .wf-phone .wsel__btn{width:auto!important;padding:0 12px!important;gap:8px}
/* Choices and consent */
html body .gform_wrapper.gform-theme :is(.gfield_checkbox,.gfield_radio){display:grid!important;gap:10px!important}
html body .gform_wrapper.gform-theme :is(.gchoice,.ginput_container_consent){display:flex!important;align-items:flex-start;gap:10px}
html body .gform_wrapper.gform-theme :is(.gchoice,.ginput_container_consent) input{flex:none;width:18px!important;height:18px!important;margin:2px 0 0!important;accent-color:#023689;cursor:pointer}
html body .gform_wrapper.gform-theme :is(.gchoice label,.gfield_consent_label){margin:0!important;font-size:14px!important;font-weight:400!important;line-height:1.55!important;letter-spacing:0!important;text-transform:none!important;color:var(--wpsf-ink)!important;cursor:pointer}
html body .gform_wrapper.gform-theme .gfield_consent_label a{color:inherit;text-decoration:underline;text-underline-offset:2px}
/* Errors */
html body .gform_wrapper.gform-theme .gfield_error :is(input,select,textarea),html body .gform_wrapper.gform-theme .gfield_error .wsel__btn{border-color:var(--wpsf-err)!important}
html body .gform_wrapper.gform-theme .gfield_validation_message{margin:6px 0 0!important;padding:0!important;border:0!important;background:none!important;font-size:12.5px!important;font-weight:500;color:var(--wpsf-err)!important}
html body .gform_wrapper.gform-theme .gform_validation_errors{margin:0 0 18px!important;padding:12px 16px!important;border:1px solid rgba(214,69,69,.35)!important;border-radius:var(--wpsf-r)!important;background:rgba(214,69,69,.06)!important;box-shadow:none!important}
html body .gform_wrapper.gform-theme .gform_validation_errors :is(h2,.gform_submission_error){margin:0!important;font-size:13.5px!important;font-weight:600!important;color:var(--wpsf-err)!important}
/* Submit: full-width brand pill, as on Contact. */
html body .gform_wrapper.gform-theme .gform-footer{margin:24px 0 0!important;padding:0!important}
html body .gform_wrapper.gform-theme .gform-footer :is(.gform_button,input[type=submit],button[type=submit]){
  display:inline-flex!important;align-items:center;justify-content:center;width:100%!important;min-height:54px!important;margin:0!important;padding:0 30px!important;
  border:0!important;border-radius:999px!important;background:#023689!important;color:#fff!important;font-family:inherit!important;font-size:15px!important;font-weight:700!important;
  box-shadow:0 8px 24px rgba(2,54,137,.28)!important;cursor:pointer;transition:transform .25s var(--ease,ease),background-color .2s,box-shadow .25s}
html body .gform_wrapper.gform-theme .gform-footer :is(.gform_button,input[type=submit],button[type=submit]):hover{background:#0E3178!important;transform:translateY(-2px);box-shadow:0 12px 28px rgba(2,54,137,.32)!important}
html body .gform_wrapper.gform-theme .gform-footer :is(.gform_button,input[type=submit],button[type=submit]):focus-visible{outline:3px solid var(--wps-light,#009DD9);outline-offset:3px}
html[data-theme="dark"] body .gform_wrapper.gform-theme .gform-footer :is(.gform_button,input[type=submit],button[type=submit]){background:var(--wps-light,#36A4DD)!important;color:#04243c!important;box-shadow:0 8px 24px rgba(54,164,221,.22)!important}
@media (prefers-reduced-motion:reduce){html body .gform_wrapper.gform-theme .gform-footer :is(.gform_button,input[type=submit],button[type=submit]):hover{transform:none}}
/* Thank-you message */
html body .gform_confirmation_wrapper .gform_confirmation_message{padding:18px 20px;border:1px solid rgba(0,144,127,.3);border-radius:var(--r-sm,14px);background:rgba(0,199,177,.07);color:var(--ink,#16213A);font-size:15px;line-height:1.6}

/* QC 19 Oct 2026 #21: on phones the pass cards scroll sideways, and that row clips anything above it — so the
   "Most popular" badge, which hangs half above its card, lost its top half. Give the row room above the cards. */
@media (max-width:1024px){
  .pass__grid{padding-top:16px!important}
}

/* ==== QC 19 Oct 2026 #4-5: one brand blue across the website ==========================================
   The blue of the hero "Register for a Delegate Pass" button, set once and used by every button, slider,
   carousel, active chip, the moving strip and the Days-to-go box, in light and dark mode and in Arabic.
   On a brand-blue surface a control is drawn the other way round (white, blue text) so it stays visible. */
:root{--wps-brand:#023689}
html body .marquee,html[data-theme="dark"] body .marquee{background:var(--wps-brand)}
/* Days to go box + its Register button */
html body .fab-reg,html[data-theme="dark"] body .fab-reg{background:var(--wps-brand);border-color:rgba(255,255,255,.14)}
html body .fab-reg .fab-reg__go,html[data-theme="dark"] body .fab-reg .fab-reg__go{background:#fff;color:var(--wps-brand)}
html body .fab-reg .fab-reg__go .ar{color:var(--wps-brand)}
html body .fab-reg:hover .fab-reg__go,html[data-theme="dark"] body .fab-reg:hover .fab-reg__go,
html body .fab-reg .fab-reg__go:hover,html body .fab-reg .fab-reg__go:focus-visible,
html[data-theme="dark"] body .fab-reg .fab-reg__go:hover,html[data-theme="dark"] body .fab-reg .fab-reg__go:focus-visible{background:#E8F0FB;color:var(--wps-brand)}
html body .fab-reg .fab-reg__go:hover .ar,html body .fab-reg .fab-reg__go:focus-visible .ar{color:var(--wps-brand)}
/* Carousel / slider dots and arrows */
html body .dot[aria-current="true"],html[data-theme="dark"] body .dot[aria-current="true"],
html body .ex26-controls .ex26-dots .dot[aria-current="true"],html body .ex26-logo-row .ex26-controls .ex26-dots .dot[aria-current="true"]{background:var(--wps-brand);box-shadow:none}
html[data-theme="dark"] body .dot[aria-current="true"],html[data-theme="dark"] body .ex26-controls .ex26-dots .dot[aria-current="true"]{box-shadow:0 0 0 1px rgba(255,255,255,.55)}
html body .media-strip__btn,html[data-theme="dark"] body .media-strip__btn{background:var(--wps-brand)}
/* Homepage track list: the selected track, same in dark mode */
html[data-theme="dark"] body .trk__b[aria-selected="true"]{background:var(--wps-brand);background-image:none;border-color:var(--wps-brand)}
/* Media cards without a photo */
html body .mc__media{background:var(--wps-brand)}
/* Selected audience / edition tiles and the "Register Now" row button: brand blue in light and dark mode */
html body .tile[aria-selected="true"],html body .tile[aria-pressed="true"],
html[data-theme="dark"] body .tile[aria-selected="true"],html[data-theme="dark"] body .tile[aria-pressed="true"]{background:var(--wps-brand);background-image:none;border-color:var(--wps-brand)}
html body .row--go,html[data-theme="dark"] body .row--go{background:var(--wps-brand);background-image:none;color:#fff}

/* Phone carousels (QC 19 Oct 2026 #13 + #19): card grids become one swipe row with dots and arrows on phones.
   Each card fills the row's content box and the side padding is the peek of the next card, so the card sits centred.
   assets/js/mobile-carousel.js adds .mcar and the controls; without the script the grid stays as it was. */
@media (max-width:760px){
  html body .mcar{--mcar-pad:9%;display:flex!important;flex-wrap:nowrap!important;grid-template-columns:none!important;gap:12px!important;overflow-x:auto!important;overflow-y:hidden;
    scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;
    padding:4px var(--mcar-pad) 10px!important;scroll-padding-inline:var(--mcar-pad)}
  html body .mcar::-webkit-scrollbar{display:none}
  html body .mcar>*{flex:0 0 100%!important;width:auto!important;max-width:none!important;min-width:0;margin:0!important;grid-column:auto!important;scroll-snap-align:center}
  html body .mcar--logo{--mcar-pad:0px}
  html body .mcar.gal__grid>*{aspect-ratio:4/3;height:auto}
  html body .mcar--logo>*{flex-basis:calc(50% - 6px)!important;scroll-snap-align:start}
  .mcar__ctl{display:flex;align-items:center;justify-content:center;gap:14px;margin:14px 0 0;color:var(--wps-brand)}
  .mcar__ctl[hidden]{display:none}
  .mcar__arrow{display:inline-grid;place-items:center;flex:0 0 40px;width:40px;height:40px;padding:0;border:1px solid currentColor;border-radius:50%;background:transparent;color:inherit;cursor:pointer;transition:background .2s,color .2s,opacity .2s}
  .mcar__arrow--next svg,[dir="rtl"] .mcar__arrow:not(.mcar__arrow--next) svg{transform:scaleX(-1)}
  [dir="rtl"] .mcar__arrow--next svg{transform:none}
  .mcar__arrow:not(:disabled):active{background:var(--wps-brand);border-color:var(--wps-brand);color:#fff}
  .mcar__arrow:disabled{opacity:.3;cursor:default}
  .mcar__arrow:focus-visible,.mcar__dots .dot:focus-visible{outline:3px solid var(--wps-light);outline-offset:2px}
  .mcar__dots{display:flex;align-items:center;gap:8px}
  .mcar__dots .dot{width:8px;height:8px;min-width:0;padding:0;border:0;border-radius:999px;background:currentColor;opacity:.25;font-size:0;cursor:pointer;transition:width .3s,opacity .3s}
  .mcar__dots .dot[aria-current="true"]{width:24px;opacity:1}
  .mcar__count{display:none;min-width:56px;text-align:center;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}
  .mcar__ctl.is-count .mcar__dots{display:none}
  .mcar__ctl.is-count .mcar__count{display:block}
  html[data-theme="dark"] .mcar__ctl{color:#fff}
  html[data-theme="dark"] .mcar__arrow:not(:disabled):active{background:#fff;border-color:#fff;color:var(--wps-brand)}
  html[data-theme="dark"] body .mcar__dots .dot[aria-current="true"]{background:#fff;box-shadow:none}
}

/* QC 23 Oct 2026 #5 + #6: mobile header and menu. The dark mode button sits on the right, next to the menu button;
   the language switch is at the top right of the open menu; groups are closed dropdown rows. */
@media (max-width:1100px){
  .nav__end{margin-inline-start:auto}
  .burger,[dir="rtl"] .burger{margin-left:0!important;margin-right:0!important}
}
.mobile-menu__top{display:flex;justify-content:flex-end;margin:0 0 6px}
.mobile-menu .mobile-menu__top a.mobile-menu__lang{display:inline-flex;align-items:center;padding:7px 14px;border:1px solid var(--brd);border-bottom:1px solid var(--brd);border-radius:999px;font-size:14px;color:var(--wps-dark)}
html[data-theme="dark"] .mobile-menu .mobile-menu__top a.mobile-menu__lang{color:#fff}
.mobile-menu .mm-grp > summary{padding:12px 0}
.mobile-menu .mm-grp .mm-sub summary{font-size:15px;padding-inline-start:16px}
.mobile-menu .mm-grp .mm-sub .mm-sub__list a{padding-inline-start:32px}

/* Desktop menu breathing room (26 Oct 2026): the items share the free width of the bar (at least the old gap), so wide
   screens get more space between them while 1280px still fits on one line. */
/* Desktop menu: items centred with a fixed 24px gap on every screen size (28 Oct 2026). */
@media (min-width:1101px){
  .nav__links{justify-content:center;padding-inline:0;column-gap:24px}
}

/* Pass carousels on phones: the "Most popular" badge sits 12px above the card (top:-12px), and the
   carousel clips overflow-y, so give the row room on top (client feedback 29 Oct 2026). */
@media (max-width:760px){
  html body .pass__grid.mcar{padding-top:18px!important}
}

/* Arabic pages: link arrows (.fx-arr) point left everywhere, not only on the Forensic Science Forum page (29 Oct 2026). */
html[dir="rtl"] .fx-arr{display:inline-block;transform:scaleX(-1)}

/* Contact page on phones: space between the desk-card carousel controls and the phone/location/dates box (29 Oct 2026). */
@media (max-width:760px){
  .mcar__ctl + .cmeta{margin-top:28px}
}

/* Tracks explorer everywhere (programme, side events), same as the homepage: the first track
   (Plenary Stage) runs the full width of the list, the 14 thematic tracks follow two per row (29 Oct 2026). */
.trk__list > .trk__b:first-child{grid-column:1 / -1}

/* Phone carousels, site-wide (29 Oct 2026): the first card lines up with the heading at the start edge and the next
   card peeks in at the end (was: centred with a gap on both sides). A 6px inset, pulled back by the negative margin,
   keeps the card shadow from being clipped. Logo rows (.mcar--logo) keep their own two-up layout. */
@media (max-width:760px){
  html body .mcar:not(.mcar--logo){padding-inline:6px var(--mcar-pad)!important;margin-inline-start:-6px!important;scroll-padding-inline:6px}
  html body .mcar:not(.mcar--logo)>*{scroll-snap-align:start}
}

/* About Us trustee cards link to the profiles */
.bot__track .spk.bot__has-link{position:relative;cursor:pointer}
.bot__track .bot__link{position:absolute;inset:0;z-index:2;border-radius:inherit}
.bot__track .bot__link:focus-visible{outline:2px solid #023689;outline-offset:3px}
.bot__track .spk.bot__has-link:hover .spk__n{text-decoration:underline}

/* 29 Oct 2026: speaker flags (flag-icons 4x3). The box is 4:3 and the flag is stretched to fill it once,
   so iOS Safari cannot tile the SVG (the UAE flag showed an extra red strip on the right). */
html body .spk__flag{width:16px;height:12px;background-size:100% 100%!important;background-repeat:no-repeat!important;background-position:center!important;background-origin:border-box;overflow:hidden}
