
/* ---- jas-tokens ---- */

:root{
  /* ---- surfaces (light bands) ---- */
  --jas-bg:#FFFFFF;            /* default page ground */
  --jas-surface:#FAFAFA;       /* cards on light bands */
  --jas-soft:#F7F7F7;          /* alternating soft band */
  --jas-tint-cool:#EEF1F4;     /* cool slate panel tint (hub filters, meta panels) */

  /* ---- text on light ---- */
  --jas-ink:#262626;           /* headings; never pure black */
  --jas-body:#3C3C3C;          /* body copy */
  --jas-muted:#6B6B6B;         /* secondary text */
  --jas-muted-soft:#9A9A9A;    /* tertiary/meta text */

  /* ---- action colour (ONE blue) ---- */
  --jas-accent:#1C69D4;        /* every action: buttons, links, eyebrows, active states */
  --jas-accent-deep:#0653B6;   /* every hover */
  --jas-sky:#8FB8F0;           /* accents/links on dark bands */
  --jas-accent-tint:#D9E7F9;   /* eyebrows on the brand-blue band */
  --jas-focus-ring:0 0 0 3px rgba(28,105,212,.12);

  /* ---- brand (logo family) ---- */
  --jas-navy:#183060;          /* small dark surfaces: stat cards, active tabs, skip links */
  --jas-steel:#6898D0;
  --jas-navy-glass:#183060B0;   /* logo navy at ~70%, badges over imagery */
  --jas-steel-08:rgba(104,152,208,.08);  /* card fill on dark bands */
  --jas-steel-09:rgba(104,152,208,.09);  /* dot-grid texture */
  --jas-steel-22:rgba(104,152,208,.22);  /* card border on dark bands */

  /* ---- dark content bands (slate-to-navy) ---- */
  --jas-grad-a:#1A2129; --jas-grad-b:#152C50; --jas-grad-c:#1B3A69;
  --jas-grad:linear-gradient(115deg,#1A2129 0%,#152C50 55%,#1B3A69 100%);
  --jas-footer:#1A2129;        /* the sole flat dark surface */
  --jas-on-dark:#FFFFFF;
  --jas-on-dark-muted:#AAB3BD; /* never #BBBBBB on dark */
  --jas-line-on-dark:rgba(255,255,255,.14);
  /* dark-band support greys (from jasx templates) */
  --jas-slate-700:#2E3946; --jas-slate-500:#4A5158;
  --jas-slate-400:#5F6B77; --jas-slate-300:#8A939D;

  /* ---- secondary surfaces and lines (2026-08-13 sweep) ---- */
  --jas-hover-tint:#F5F8FC;   /* row/card hover wash on light */
  --jas-input-line:#CFD5DB;   /* form input and consent hairlines */
  --jas-dark-card:#212A34;    /* solid card on dark bands */
  --jas-recruiting-bright:#4ADE80; /* recruiting accents on dark bands */
  --jas-error-deep:#C0392B;   /* form validation text */
  --jas-warn-bright:#D97706;  /* limited/soon status accents */

  /* ---- hairlines ---- */
  --jas-line:#E6E6E6;          /* light-band hairline */
  --jas-line-strong:#CCCCCC;   /* outline-button border */

  /* ---- status ---- */
  --jas-recruiting:#16A34A;    /* recruiting badges ONLY */
  --jas-recruiting-deep:#15803D;
  --jas-warn:#B45309;
  --jas-error:#DC2626;

  /* ---- typography ---- */
  --jas-font:Inter,sans-serif; /* the only family on the site */
  --jas-w-heading:700; --jas-w-body:300; --jas-w-ui:700;
  --jas-lh-heading:1.15; --jas-lh-body:1.55;
  --jas-eyebrow-track:.115em;  /* canonical eyebrow tracking, see jas_ds.php */
  --jas-btn-track:.07em;       /* one letter-spacing for every button */

  /* ---- ACTION SYSTEM (2026-08-21) --------------------------------------
     Three interaction roles, four components, per the CTA and Link
     Implementation Direction. Before this group existed, every button and
     link re-declared its own font, weight, tracking and padding in whichever
     file emitted it, and those files load in an order that decided who won:
     jas_responsive 131, jas_landfix 134, jas_a11y 140, jas_studytype 145,
     jas_chips 146. A measured sweep of eight page types found 37 distinct
     action classes, five different letter-spacings inside the one tier that
     was otherwise consistent (.5 / .6 / .84 / .98 / 1px), controls set in
     --jas-w-body 300, and one control at 20px.

     ACT   the decision. Solid or outlined button, uppercase.
     GO    the detour. Directional link or outlined button.
     READ  education. Editorial link, never a filled button.
     Chips, status labels and eyebrows are NOT CTAs and keep their own group.

     Composition, not inheritance: jas_actions.php maps every legacy class
     onto these values at wp_head 150, after every file above, so a
     correction cannot lose on source order. */
  --jas-t-act:700 var(--jas-fs-sm)/1 var(--jas-font);
  --jas-t-go:700 var(--jas-fs-label)/1.2 var(--jas-font);
  --jas-t-read:400 var(--jas-fs-base)/var(--jas-lh-body) var(--jas-font);
  --jas-t-chip:400 var(--jas-fs-micro)/1 var(--jas-font);
  --jas-cta-track:var(--jas-btn-track);  /* act + go. ends the five-value drift */
  --jas-chip-track:.04em;                /* chips only, lighter at 11px */
  --jas-cta-h:44px;                      /* minimum target, every role */
  --jas-cta-h-lg:48px;                   /* hero and closing bands */
  --jas-cta-pad:15px 18px;
  --jas-cta-pad-sm:12px 14px;
  --jas-cta-gap:8px;                     /* label to arrow. never a literal space */
  --jas-arrow:16px;                      /* one arrow size sitewide */

  /* One focus ring. jas_responsive.php painted 2px and jas_a11y.php painted
     3px, both !important, so summary and [tabindex] got 2px and everything
     else got 3px; the 3px rule also set border-radius:2px on a site whose
     radius token is 0. Both were removed 2026-08-21. */
  --jas-focus-w:3px;
  --jas-focus-offset:2px;
  --jas-focus-color:var(--jas-accent);
  --jas-focus-color-on-dark:#FFFFFF;

  /* ---- TYPE SCALE (2026-08-18) ----------------------------------------
     ELEVEN steps. These are the ONLY font sizes permitted on the site.
     Before this existed the site carried 62 distinct literal sizes in the
     jas_* modules and 19 more inside Elementor widget settings, so a hero
     H1 rendered at 30/36/40/42/46/52px depending on which template you
     landed on and a section H2 at anything from 20 to 34px. Every module
     now consumes a step; nothing declares a raw px size.

     The four heading steps clamp between their mobile and desktop values
     across the 640-1280px viewport range, so a heading NEVER needs a
     media-query override again. Do not add breakpoint font-size rules.
     If a new value seems necessary, the answer is a different step, not a
     new number. jas_typeaudit.php enforces this. */
  --jas-fs-micro:11px;    /* badges, status pills, tiny meta */
  --jas-fs-label:12px;    /* micro-labels, card kickers, filter labels, legal */
  --jas-fs-eyebrow:13px;  /* canonical section eyebrow; dense meta rows */
  --jas-fs-sm:14px;       /* secondary UI text, nav, captions, table cells */
  --jas-fs-base:16px;     /* body copy default */
  --jas-fs-md:18px;       /* emphasised body, card titles, article measure */
  --jas-fs-lg:20px;       /* sub-headings, large card titles, stat values */
  --jas-fs-h3:clamp(22px,.625vw + 18px,26px);    /* in-prose h2, minor headings */
  --jas-fs-h2:clamp(26px,.9375vw + 20px,32px);   /* band / section headings */
  --jas-fs-h1:clamp(30px,1.5625vw + 20px,40px);  /* page hero h1, big stat figures */
  --jas-fs-display:clamp(32px,2.5vw + 16px,48px);/* the home hero only */
  /* role aliases - they point at steps, they never introduce a new value */
  --jas-fs-btn:var(--jas-fs-sm);        /* every standard button */
  --jas-fs-btn-sm:var(--jas-fs-label);  /* compact card / inline buttons */
  --jas-eyebrow-size:var(--jas-fs-eyebrow); /* legacy alias, keep working */

  /* ---- spacing ---- */
  --jas-sp-xs:8px; --jas-sp-sm:16px; --jas-sp-md:28px;
  --jas-sp-lg:56px; --jas-sp-xl:84px;
  --jas-band-pad:84px;         /* standard section rhythm, desktop */
  --jas-band-pad-utility:64px; /* sponsor strips, community band */
  --jas-band-pad-mobile:56px;

  /* ---- LAYOUT / CONTAINERS (2026-08-18) -------------------------------
     One content column, one gutter, one prose measure. Every wrapper on
     the site consumes these instead of restating 1180/1120/1240/1280. */
  --jas-container:1280px;         /* canonical content box (= Elementor kit box) */
  --jas-container-narrow:1120px;  /* deliberate exceptions: sponsor wall, consent bar */
  --jas-gutter:20px;              /* canonical side inset, desktop and mobile */
  --jas-gutter-shortcode:10px;    /* shortcode blocks rendered INSIDE an Elementor
                                     container, which already contributes 10px:
                                     10 + 10 lands them on the same edge as the
                                     headings above them. Never used elsewhere. */
  --jas-measure:760px;            /* article / prose reading measure */
  --jas-measure-sm:620px;
  --jas-measure-wide:900px;      /* display headings, FAQ columns, part lists */         /* ledes, intros, single-column notes */
  --jas-rail:340px;               /* article and study sidebars */

  /* ---- shape ---- */
  --jas-radius:0px;            /* square corners everywhere; no exceptions */
  --jas-radius-round:50%;      /* dots/avatars only */
}

/* ---- jas-overrides ---- */
.xpro-elementor-horizontal-navbar-nav{flex-wrap:nowrap!important;align-items:center;}.xpro-elementor-horizontal-navbar-nav>li{list-style:none!important;margin:0!important;}.xpro-elementor-horizontal-navbar-nav>li::marker{content:none!important;}.xpro-elementor-horizontal-navbar-nav a{white-space:nowrap;}.elementor-widget-icon-list .elementor-icon-list-items{list-style:none!important;margin:0;padding:0;}.elementor-widget-icon-list .elementor-icon-list-item{list-style:none!important;}
/* ---- jas-ff-css ---- */

.fluentform .ff-el-form-control,.fluentform select,.fluentform input[type=text],.fluentform input[type=email],.fluentform input[type=tel],.fluentform input[type=number],.fluentform input[type=date],.fluentform textarea{border-radius:0!important;border:1px solid var(--jas-input-line)!important;padding:12px 14px!important;font-size:var(--jas-fs-base)!important;line-height:1.4!important;color:var(--jas-ink)!important;background:#fff!important;box-shadow:none!important;-webkit-appearance:none;appearance:none;}
.fluentform textarea{min-height:120px;}
.fluentform .ff-el-form-control:focus,.fluentform select:focus,.fluentform textarea:focus{border-color:var(--jas-accent)!important;outline:none!important;box-shadow:inset 0 0 0 1px var(--jas-accent)!important;}
.fluentform .ff-el-input--label label{color:var(--jas-ink)!important;font-weight:400!important;font-size:var(--jas-fs-base)!important;line-height:1.45!important;}
.fluentform .ff-el-is-required.asterisk-right label:after,.fluentform .ff-el-is-required label .ff-el-is-required{color:var(--jas-error-deep)!important;}
.fluentform .ff-el-group{margin-bottom:22px!important;}
.fluentform .ff-el-form-check{margin:6px 0!important;}
.fluentform .ff-el-form-check-label{color:var(--jas-ink)!important;font-size:var(--jas-fs-base)!important;line-height:1.5!important;font-weight:400!important;}
.fluentform .ff-btn-submit,.fluentform button[type=submit],.fluentform .ff_btn_style{border-radius:0!important;background:var(--jas-accent)!important;color:#fff!important;padding:15px 34px!important;font-size:var(--jas-fs-btn)!important;font-weight:700!important;letter-spacing:.01em!important;border:none!important;box-shadow:none!important;transition:background .15s ease;}
.fluentform .ff-btn-submit:hover,.fluentform button[type=submit]:hover,.fluentform .ff_btn_style:hover{background:var(--jas-accent-deep)!important;}
.fluentform h2,.fluentform h3,.fluentform h4{color:var(--jas-footer)!important;font-weight:700!important;}
.fluentform hr{border:0;border-top:1px solid var(--jas-line);margin:26px 0;}
.fluentform .ff-custom_html p{color:var(--jas-slate-500);line-height:1.6;}
.fluentform .img-rounded{border-radius:0!important;}
.fluentform .ff-el-progress{border-radius:0!important;}
.fluentform .ff-el-progress-bar{background:var(--jas-accent)!important;border-radius:0!important;}
/* the step label ships as 0.9em (14.4px) - put it on the scale */
.fluentform .ff-el-progress-status{font-size:var(--jas-fs-sm)!important;}
/* flatpickr (the date fields) ships 1.05rem and .9em - put its chrome on the scale */
.flatpickr-monthDropdown-month,.flatpickr-current-month{font-size:var(--jas-fs-md)!important;}
.flatpickr-weekday{font-size:var(--jas-fs-label)!important;}
.fluentform .ff-btn-next,.fluentform .ff-btn-prev{border-radius:0!important;font-family:Inter,sans-serif!important;font-weight:700!important;font-size:var(--jas-fs-btn)!important;letter-spacing:.05em!important;text-transform:uppercase!important;padding:13px 24px!important;line-height:1!important;cursor:pointer;} .fluentform .ff-btn-next{background:var(--jas-accent)!important;border:1px solid var(--jas-accent)!important;color:#fff!important;} .fluentform .ff-btn-next:hover{background:var(--jas-accent-deep)!important;border-color:var(--jas-accent-deep)!important;} .fluentform .ff-btn-prev{background:transparent!important;border:1px solid var(--jas-input-line)!important;color:var(--jas-footer)!important;margin-right:10px!important;} .fluentform .ff-btn-prev:hover{border-color:var(--jas-accent)!important;color:var(--jas-accent)!important;} 
/* ---- jas-qmap-css ---- */

.jas-qdir{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--jas-line);border-left:1px solid var(--jas-line);}
.jas-qdir-card{display:flex;flex-direction:column;gap:10px;padding:22px 24px;border-right:1px solid var(--jas-line);border-bottom:1px solid var(--jas-line);text-decoration:none!important;background:#fff;transition:background .15s ease;}
.jas-qdir-card:hover{background:var(--jas-hover-tint);}
.jas-qdir-name{font-size:var(--jas-fs-md);font-weight:700;color:var(--jas-footer);line-height:1.3;}
.jas-qdir-go{font-size:var(--jas-fs-label);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-accent);}
.jas-qcta{border:1px solid var(--jas-line);background:var(--jas-hover-tint);padding:24px 28px;margin:0 0 30px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;}
.jas-qcta-t{flex:1 1 300px;}
.jas-qcta-k{font-size:var(--jas-fs-label);letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);font-weight:700;margin-bottom:6px;}
.jas-qcta-h{font-size:var(--jas-fs-lg);color:var(--jas-footer);font-weight:700;line-height:1.3;}
.jas-qcta-s{font-size:var(--jas-fs-sm);color:var(--jas-slate-500);margin-top:5px;}
.jas-qcta-b{display:inline-block;background:var(--jas-accent);color:#fff!important;font-weight:700;font-size:var(--jas-fs-btn);padding:14px 28px;text-decoration:none!important;white-space:nowrap;transition:background .15s ease;}
.jas-qcta-b:hover{background:var(--jas-accent-deep);}
.jas-qcta-a{display:flex;flex-direction:column;gap:9px;align-items:flex-start;}
.jas-qcta-l{font-size:var(--jas-fs-eyebrow);font-weight:700;color:var(--jas-accent)!important;text-decoration:none!important;}
.jas-qcta-l:hover{text-decoration:underline!important;}
@media(max-width:900px){.jas-qdir{grid-template-columns:repeat(2,1fr);}}
@media(max-width:560px){.jas-qdir{grid-template-columns:1fr;}}

/* ---- jas-overrides-2 ---- */
.elementor-widget-button .elementor-button{white-space:nowrap;}.xpro-elementor-horizontal-navbar-nav>li>a{padding-top:6px;padding-bottom:6px;}
/* ---- jas-grid-css ---- */

.jas-wrap{max-width:var(--jas-container);margin:0 auto;}
.jas-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media(max-width:1024px){.jas-grid{grid-template-columns:repeat(2,1fr);}}
@media(max-width:640px){.jas-grid{grid-template-columns:1fr;}}
.jas-card{border:1px solid var(--jas-line);background:#fff;padding:22px;display:flex;flex-direction:column;gap:11px;}
.jas-card h3{font:700 var(--jas-fs-md)/1.32 Inter,sans-serif;color:var(--jas-ink);margin:0;}
.jas-card h3 a{color:var(--jas-ink);text-decoration:none;}.jas-card h3 a:hover{color:var(--jas-accent);}
.jas-card p{font:300 var(--jas-fs-sm)/1.55 Inter,sans-serif;color:var(--jas-muted);margin:0;}
.jas-tag{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:1.1px;text-transform:uppercase;color:var(--jas-accent);}
.jas-count-b{font-weight:700;font-size:var(--jas-fs-h3);line-height:1;font-family:Inter,sans-serif;color:var(--jas-ink);}
.jas-cta{font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--jas-accent);text-decoration:none;align-self:flex-start;white-space:nowrap;}
.jas-cta:hover{color:var(--jas-accent-deep);}
.jas-btn{display:inline-block;background:var(--jas-accent);color:#fff !important;font:700 var(--jas-fs-btn)/1 Inter,sans-serif;letter-spacing:.5px;text-transform:uppercase;padding:13px 18px;text-decoration:none;white-space:nowrap;}
.jas-btn:hover{background:var(--jas-accent-deep);}
.jas-actions{margin-top:auto;display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding-top:4px;}
.jas-meta{font:400 var(--jas-fs-label)/1.45 Inter,sans-serif;color:var(--jas-muted-soft);}
.jas-empty{padding:44px 24px;text-align:center;color:var(--jas-muted);border:1px dashed var(--jas-line-strong);font:300 var(--jas-fs-base)/1.6 Inter,sans-serif;}
/* two-column studies */
.jas-studies{display:grid;grid-template-columns:248px 1fr;gap:44px;max-width:var(--jas-container);margin:0 auto;}
@media(max-width:900px){.jas-studies{grid-template-columns:1fr;gap:28px;}}
.jas-filters{position:sticky;top:118px;align-self:start;}
@media(max-width:900px){.jas-filters{position:static;}}
.jas-filters h2{font:700 var(--jas-fs-lg)/1 Inter,sans-serif;color:var(--jas-ink);margin:0 0 22px;}
.jas-flabel{display:block;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:var(--jas-muted-soft);margin:0 0 12px;}
.jas-fgroup{margin:0 0 24px;}
.jas-search{width:100%;box-sizing:border-box;border:1px solid var(--jas-line-strong);padding:11px 12px;font:300 var(--jas-fs-sm)/1 Inter,sans-serif;color:var(--jas-ink);}
.jas-search:focus{outline:none;border-color:var(--jas-ink);}
.jas-chips{display:flex;flex-wrap:wrap;gap:8px;}
.jas-fchip{display:inline-block;font:400 var(--jas-fs-eyebrow)/1 Inter,sans-serif;color:var(--jas-body);border:1px solid var(--jas-line-strong);padding:8px 12px;text-decoration:none;}
.jas-fchip:hover{border-color:var(--jas-accent);color:var(--jas-accent);}
.jas-fchip.active{border-color:var(--jas-accent);color:var(--jas-accent);border-width:2px;padding:7px 11px;font-weight:700;}
.jas-notsure{background:var(--jas-soft);border:1px solid #ebebeb;padding:20px;margin-top:8px;}
.jas-notsure b{display:block;font:700 var(--jas-fs-base)/1.3 Inter,sans-serif;color:var(--jas-ink);margin-bottom:8px;}
.jas-notsure p{font:300 var(--jas-fs-eyebrow)/1.55 Inter,sans-serif;color:var(--jas-muted);margin:0 0 12px;}
.jas-notsure a{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--jas-accent);text-decoration:none;}
.jas-rtop{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--jas-line);padding-bottom:14px;margin-bottom:4px;flex-wrap:wrap;gap:12px;}
.jas-count{font:400 var(--jas-fs-sm)/1 Inter,sans-serif;color:var(--jas-muted);}
.jas-vt{display:flex;border:1px solid var(--jas-line-strong);}
.jas-vt button{background:#fff;border:0;font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--jas-muted);padding:9px 14px;cursor:pointer;}
.jas-vt button.active{background:var(--jas-accent);color:#fff;}
.jas-list .jas-srow{display:flex;justify-content:space-between;gap:30px;padding:26px 0;border-bottom:1px solid #eeeeee;}
.jas-list .jas-sc{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:11px;text-align:right;}
.jas-boxes{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding-top:22px;}
@media(max-width:640px){.jas-boxes{grid-template-columns:1fr;}}
.jas-boxes .jas-srow{display:flex;flex-direction:column;border:1px solid var(--jas-line);padding:22px;gap:10px;}
.jas-boxes .jas-sc{margin-top:auto;flex-direction:row;align-items:center;gap:18px;text-align:left;padding-top:6px;}
.jas-smeta{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--jas-muted);display:flex;align-items:center;gap:8px;margin-bottom:2px;flex-wrap:wrap;}
.jas-dot{width:8px;height:8px;border-radius:50%;background:#22C55E;display:inline-block;}
.jas-srow h3{font:700 var(--jas-fs-lg)/1.3 Inter,sans-serif;margin:6px 0 2px;}
.jas-srow h3 a{color:var(--jas-ink);text-decoration:none;}.jas-srow h3 a:hover{color:var(--jas-accent);}
.jas-shook{font:300 var(--jas-fs-base)/1.55 Inter,sans-serif;color:var(--jas-body);margin:0;}
.jas-sloc{font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif;color:var(--jas-muted-soft);letter-spacing:.3px;}

/* ---- jas-overrides-3 ---- */
.jas-hlogo{flex:0 0 auto !important;width:auto !important;}.jas-hnav{flex:1 1 auto !important;width:auto !important;min-width:0 !important;}.jas-hcta{flex:0 0 auto !important;width:auto !important;}.jas-chrome-top{position:sticky !important;top:0 !important;z-index:1000 !important;box-shadow:0 1px 0 rgba(0,0,0,.08);}@media(max-width:1024px){.jas-hnav .xpro-elementor-horizontal-navbar-nav{flex-wrap:wrap !important;}}
/* ---- jas-overrides-4 ---- */
body.elementor-page .elementor > .e-con:first-child{position:sticky !important;top:0 !important;z-index:1000 !important;box-shadow:0 1px 0 rgba(0,0,0,.08);}html{scroll-padding-top:120px;}
/* ---- jas-overrides-5 ---- */
body.elementor-template-canvas,body.elementor-template-canvas #page,body.elementor-template-canvas #main{overflow:visible !important;}body.elementor-template-canvas #page{display:block;}
/* ---- jas-condhub-css ---- */

.jchub{max-width:var(--jas-container);margin:0 auto;}
.jchub-tabs{display:flex;flex-wrap:wrap;border-bottom:1px solid var(--jas-line);margin:0 0 30px;}
.jchub-tab{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.7px;text-transform:uppercase;color:var(--jas-muted);padding:15px 18px;cursor:pointer;background:none;border:0;border-bottom:2px solid transparent;margin-bottom:-1px;}
.jchub-tab.active{color:var(--jas-accent);border-bottom-color:var(--jas-accent);}
.jchub-tab:hover{color:var(--jas-accent);}
.jchub-ftop{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:0 0 24px;}
.jchub-flabel{display:block;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:1.2px;text-transform:uppercase;color:var(--jas-muted-soft);margin:0 0 10px;}
.jchub-search{width:380px;max-width:100%;box-sizing:border-box;border:1px solid var(--jas-line-strong);padding:12px 14px;font:300 var(--jas-fs-base)/1 Inter,sans-serif;color:var(--jas-ink);}
.jchub-search:focus{outline:none;border-color:var(--jas-ink);}
.jchub-rc{font:400 var(--jas-fs-eyebrow)/1 Inter,sans-serif;color:var(--jas-accent);white-space:nowrap;}
.jchub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;}
.jchub-cond .jchub-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
@media(max-width:900px){.jchub-grid,.jchub-cond .jchub-grid{grid-template-columns:1fr;}}
.jchub-card{border:1px solid var(--jas-line);background:#fff;padding:24px;display:flex;flex-direction:column;min-height:230px;}
.jchub-count{display:block;font:700 var(--jas-fs-micro)/1.4 Inter,sans-serif;letter-spacing:.7px;text-transform:uppercase;color:var(--jas-recruiting);margin:0 0 8px;}
.jchub-card h3{font:700 var(--jas-fs-md)/1.28 Inter,sans-serif;color:var(--jas-ink);margin:0 0 12px;}
.jchub-desc{font:300 var(--jas-fs-sm)/1.55 Inter,sans-serif;color:var(--jas-muted);margin:0;}
.jchub-links{margin-top:auto;display:flex;flex-direction:column;gap:9px;border-top:1px solid #eeeeee;padding-top:16px;margin-top:18px;}
.jchub-links a{font:700 var(--jas-fs-label)/1.2 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--jas-accent);text-decoration:none;}
.jchub-links a:hover{color:var(--jas-accent-deep);}
.jchub-links a.g{text-transform:none;letter-spacing:0;font-weight:600;font-size:var(--jas-fs-eyebrow);color:#5f5f5f;}
.jchub-links a.g:hover{color:var(--jas-accent);}
.jchub-h{flex-direction:row;align-items:stretch;padding:0;min-height:132px;overflow:hidden;}
.jchub-h .jchub-img{width:158px;flex:0 0 158px;object-fit:cover;background:var(--jas-tint-cool);display:block;}
.jchub-h .jchub-hbody{flex:1;min-width:0;padding:20px 22px;display:flex;flex-direction:column;justify-content:center;}
.jchub-h .jchub-count{margin:0 0 6px;}
.jchub-h h3{font-size:var(--jas-fs-md);margin:0 0 14px;}
.jchub-h .jchub-links{margin-top:0;border-top:none;padding-top:0;flex-direction:row;gap:20px;align-items:center;flex-wrap:wrap;}
@media(max-width:520px){.jchub-h .jchub-img{width:104px;flex-basis:104px;}.jchub-h .jchub-hbody{padding:16px;}}
.jchub-empty{grid-column:1/-1;padding:40px;text-align:center;color:var(--jas-muted);border:1px dashed var(--jas-line-strong);font:300 var(--jas-fs-base)/1.6 Inter,sans-serif;}
/* ---- condition card hierarchy (2026-08-21) ----
   The two actions used to sit side by side in one row, both .jchub-view, both
   accent blue, both forced to a 44px target, differing only in case and
   colour. Two actions of near-equal weight on a card is the same 'no clear
   first action' problem the location card had, so the studies route is now a
   filled button and the guide sits beneath it as education.
   Three classes here beats .jchub-h .jchub-links above, so the row becomes a
   column without !important. */
.jchub-cond .jchub-h .jchub-links{flex-direction:column;align-items:flex-start;gap:0;}
/* The visible gap was never the flex gap. jas_a11y.php forces .jchub-view to a
   44px min-height with !important, so a 15px line of text sat in a 44px box
   with about 15px of dead space under it, and the 10px gap landed on top of
   that: roughly 25px between two links that belong together.
   Both links drop to 28px on a mouse, which still clears WCAG 2.5.8 at AA
   (24px) and is the same call jas_chips.php documents for its 32px chip, and
   both return to the full 44px target on touch. Gap 0, because at 28px each
   box already carries its own 6px of breathing room. */
.jchub-cond .jchub-links a.jchub-view,
.jchub-cond .jchub-links a.jchub-guide{min-height:28px !important;}
@media(max-width:900px),(pointer:coarse){
.jchub-cond .jchub-links a.jchub-view,
.jchub-cond .jchub-links a.jchub-guide{min-height:var(--jas-cta-h) !important;}
}
/* No filled button here (user, 2026-08-21). The hierarchy is carried by the two
   link treatments the design system already has rather than by a surface:
   .jchub-view is the go role, 12px/700/.07em uppercase accent; .jchub-guide is
   the read role, 14px/400 title case muted. Uppercase bold accent still reads
   as the first action next to muted title case, and a solid blue button was
   both heavier than this hub needs and a false promise on the 55 of 78
   conditions that have no enrolling study.

   Selector is .jchub-links a.jchub-guide rather than a bare class on purpose:
   .jchub-links a above already sets accent blue, and it is a class plus an
   element, so a bare .jchub-guide loses on specificity and stays blue.

   The 44px target is applied on touch only, deliberately: at 44px on desktop
   this text link added 24px of dead space to every one of 78 cards. */
.jchub-links a.jchub-guide{display:inline-flex;align-items:center;gap:6px;color:var(--jas-muted);text-decoration:none;}
.jchub-links a.jchub-guide:hover{color:var(--jas-accent);}

/* ---- jasx-css ---- */

body.jas-t{margin:0;background:#fff;color:var(--jas-ink);font:300 var(--jas-fs-base)/1.65 Inter,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;}
.jas-t img{max-width:100%;height:auto;}
.jasx-wrap{max-width:var(--jas-container);margin:0 auto;padding:0 var(--jas-gutter);box-sizing:border-box;}
.jasx-hero{background:var(--jas-footer);padding:46px 0 44px;}
.jasx-crumb{font-size:var(--jas-fs-eyebrow);margin-bottom:22px;}
.jasx-crumb a{color:var(--jas-sky);text-decoration:none;}
.jasx-sep{color:#5b6570;padding:0 9px;}
.jasx-cur{color:#dfe3e7;}
.jasx-label{font-size:var(--jas-fs-eyebrow);font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-sky);margin-bottom:10px;}
.jasx-h1{font-size:var(--jas-fs-h1);line-height:1.15;font-weight:700;color:#fff;margin:0 0 12px;max-width:var(--jas-measure-wide);}
.jasx-intro{color:var(--jas-on-dark-muted);font-size:var(--jas-fs-md);max-width:760px;}
.jasx-meta{color:var(--jas-slate-300);font-size:var(--jas-fs-sm);margin-top:14px;}
.jasx-main{padding:44px 0 70px;}
.jasx-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:48px;align-items:start;}
.jasx-rail-card{border:1px solid var(--jas-line);padding:22px 24px;margin-bottom:20px;}
.jasx-k{font-size:var(--jas-fs-label);font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:10px;}
.jasx-rail-card ul{margin:0;padding:0;list-style:none;}
.jasx-rail-card li{padding:7px 0;border-bottom:1px solid var(--jas-line);font-size:var(--jas-fs-sm);}
.jasx-rail-card li:last-child{border-bottom:none;}
.jasx-rail-card a{color:var(--jas-accent);text-decoration:none;}
.jasx-chip{display:inline-block;border:1px solid var(--jas-line);padding:6px 12px;margin:0 8px 8px 0;font-size:var(--jas-fs-eyebrow);color:var(--jas-footer);text-decoration:none!important;}
.jasx-chip:hover{border-color:var(--jas-accent);color:var(--jas-accent);}
.jasx-content{font-size:var(--jas-fs-base);}
.jasx-content p{margin:0 0 18px;}
.jasx-content h2{font-size:var(--jas-fs-h3);font-weight:700;line-height:1.25;margin:36px 0 12px;color:var(--jas-footer);}
.jasx-content h3,.jasx-content h4,.jasx-content h5{font-size:var(--jas-fs-lg);font-weight:700;margin:28px 0 10px;color:var(--jas-footer);}
.jasx-content a{color:var(--jas-accent);}
.jasx-content ul,.jasx-content ol{margin:0 0 20px 22px;padding:0;}
.jasx-content li{margin-bottom:8px;}
.jasx-sec-h{font-size:var(--jas-fs-h3);font-weight:700;color:var(--jas-footer);margin:46px 0 18px;}
.jasx-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;}
.jasx-card{border:1px solid var(--jas-line);padding:20px 22px;display:flex;flex-direction:column;gap:9px;}
.jasx-card-s{display:flex;align-items:center;gap:7px;font-size:var(--jas-fs-label);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-recruiting);}
.jasx-dot{width:8px;height:8px;border-radius:50%;background:var(--jas-recruiting);display:inline-block;}
.jasx-card-k{font-size:var(--jas-fs-label);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-accent);}
.jasx-card-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);text-decoration:none;line-height:1.35;}
.jasx-card-a{margin-top:auto;display:flex;flex-direction:column;gap:9px;align-items:flex-start;padding-top:6px;}
.jasx-quiet{font:700 var(--jas-fs-label)/1.2 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);text-decoration:none;gap:6px;}
.jasx-acard{border:1px solid var(--jas-line);padding:20px 22px;display:flex;flex-direction:column;gap:8px;text-decoration:none!important;}
.jasx-acard:hover{background:var(--jas-hover-tint);}
.jasx-acard-k{font-size:var(--jas-fs-label);color:var(--jas-muted);}
.jasx-acard-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);line-height:1.4;}
.jasx-acard-go{font-size:var(--jas-fs-label);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-accent);}
.jasx-comm{background:var(--jas-footer);padding:30px 34px;margin-top:46px;display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;}
.jasx-comm-k{color:var(--jas-sky);font-size:var(--jas-fs-label);font-weight:700;letter-spacing:.07em;text-transform:uppercase;margin-bottom:7px;}
.jasx-comm-h{color:#fff;font-size:var(--jas-fs-md);font-weight:700;max-width:640px;line-height:1.4;}
.jasx-img{margin:0 0 26px;}
.jasx-gal{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:26px;}
.jasx-404{padding:80px 0;text-align:left;}

/* condition prototype */
.jasx-hbtns{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px;}
.jasx-hbtn{display:inline-block;background:var(--jas-accent);color:#fff !important;font:700 var(--jas-fs-btn)/1 Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase;padding:15px 24px;text-decoration:none !important;}
.jasx-hbtn:hover{background:var(--jas-accent-deep);}
.jasx-hbtn-o{display:inline-block;background:transparent;border:1px solid var(--jas-slate-500);color:#fff !important;font:700 var(--jas-fs-btn)/1 Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase;padding:14px 24px;text-decoration:none !important;}
.jasx-hbtn-o:hover{border-color:var(--jas-sky);color:var(--jas-sky) !important;}
.jasx-truststrip{background:#fff;border-bottom:1px solid var(--jas-line);padding:13px 0;font-size:var(--jas-fs-eyebrow);color:var(--jas-slate-500);}
.jasx-truststrip .ok{color:var(--jas-recruiting);font-weight:700;margin-right:6px;}
.jasx-truststrip b{color:var(--jas-footer);}
.jasx-statcard{background:var(--jas-footer);padding:22px 24px;margin-bottom:20px;}
.jasx-statcard .k{color:var(--jas-sky) !important;}
.jasx-statcard .v{color:#fff;font-size:var(--jas-fs-lg);font-weight:700;line-height:1.35;}
.jasx-statcard .s{color:var(--jas-slate-300);font-size:var(--jas-fs-label);margin-top:9px;}
.jasx-dashwrap ul{list-style:none;margin:0 0 6px;padding:0;}
.jasx-dashwrap li{padding:11px 0 11px 30px;border-bottom:1px solid var(--jas-line);position:relative;font-size:var(--jas-fs-base);margin:0;}
.jasx-dashwrap li:before{content:'\2014';position:absolute;left:0;color:var(--jas-accent);}
.jasx-condband{padding:64px 0;}
.jasx-scards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px;}
.jasx-scard{background:#fff;border:1px solid var(--jas-line);padding:20px 22px;display:flex;flex-direction:column;gap:9px;}
.jasx-scard-top{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.jasx-scard-meta{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-slate-300);}
.jasx-scard-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);line-height:1.4;text-decoration:none;}
.jasx-scard-d{font-size:var(--jas-fs-sm);color:var(--jas-slate-500);line-height:1.5;}
.jasx-scard-c{font-size:var(--jas-fs-label);color:var(--jas-muted);}
.jasx-scard-a{margin-top:auto;display:flex;align-items:center;gap:14px;padding-top:8px;}
.jasx-scard-a .jasd-btn{padding:12px 14px !important;font-size:var(--jas-fs-btn-sm) !important;}
.jasx-content h5,.jasx-content h6{color:var(--jas-footer) !important;font-size:var(--jas-fs-md);}
@media(max-width:640px){.jasx-hbtns{flex-direction:column;}.jasx-hbtn,.jasx-hbtn-o{text-align:center;}}
/* study prototype layout */
.jas-t .jasx-hero .jasx-h1{color:#fff !important;}
.jasx-sline{display:flex;align-items:center;gap:9px;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-recruiting-bright);margin-bottom:14px;}
.jasx-sline .lim{color:var(--jas-slate-300);}
.jasx-sdot{width:9px;height:9px;border-radius:50%;background:var(--jas-recruiting-bright);display:inline-block;}
.jasx-tag{color:#c6cdd4;font-size:var(--jas-fs-md);margin:2px 0 10px;max-width:760px;}
.jasx-enrol{color:var(--jas-slate-300);font-size:var(--jas-fs-sm);}
.jasx-facts{display:flex;flex-wrap:wrap;border-top:1px solid var(--jas-slate-700);margin-top:30px;}
.jasx-fact{padding:18px 44px 4px 0;margin-right:6px;}
body.jas-t .jasx-hero .jasx-fact b{display:block;color:#fff !important;-webkit-text-fill-color:#fff;font-size:var(--jas-fs-lg);font-weight:700;line-height:1.2;}
.jasx-fact span{display:block;color:var(--jas-slate-300);font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;margin-top:6px;}
.jasx-swrap{display:grid;grid-template-columns:190px minmax(0,1fr) 330px;gap:44px;align-items:start;}
.jasx-toc{position:sticky;top:26px;font-size:var(--jas-fs-sm);}
.jasx-toc .k{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-muted-soft);margin-bottom:12px;}
.jasx-toc a{display:block;color:var(--jas-slate-500);text-decoration:none;padding:7px 0;border-top:1px solid var(--jas-line);}
.jasx-toc a:first-of-type{border-top:none;}
.jasx-toc a:hover{color:var(--jas-accent);}
.jasx-toc a.c{color:var(--jas-accent);font-weight:700;}
.jasx-sh2{font-size:var(--jas-fs-h3);font-weight:700;color:var(--jas-footer);margin:0 0 14px;}
.jasx-sec{margin-bottom:42px;}
.jasx-reg{font-size:var(--jas-fs-label);color:var(--jas-muted-soft);margin-top:14px;}
.jasx-reg a{color:var(--jas-accent);text-decoration:none;}
.jasx-qpanel{display:grid;grid-template-columns:1fr 1fr;gap:0;border:1px solid var(--jas-line);}
.jasx-qcol{padding:22px 24px;}
.jasx-qcol+.jasx-qcol{border-left:1px solid var(--jas-line);background:var(--jas-hover-tint);}
.jasx-qcol .qk{font:700 var(--jas-fs-label)/1.3 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;margin-bottom:14px;}
.jasx-qcol .qk.g{color:var(--jas-recruiting);}
.jasx-qcol .qk.d{color:var(--jas-slate-500);}
.jasx-qcol ul{list-style:none;margin:0;padding:0;}
.jasx-qcol li{position:relative;padding:0 0 12px 26px;font-size:var(--jas-fs-sm);line-height:1.5;}
.jasx-qcol:first-child li:before{content:'\2713';position:absolute;left:0;top:0;color:var(--jas-recruiting);font-weight:700;}
.jasx-qcol+.jasx-qcol li:before{content:'\2013';position:absolute;left:0;top:0;color:var(--jas-slate-400);font-weight:700;}
.jasx-qnote{font-size:var(--jas-fs-label);color:var(--jas-muted);margin-top:12px;}
.jasx-dash{list-style:none;margin:0;padding:0;}
.jasx-dash li{padding:12px 0 12px 30px;border-bottom:1px solid var(--jas-line);position:relative;font-size:var(--jas-fs-base);}
.jasx-dash li:before{content:'\2014';position:absolute;left:0;color:var(--jas-accent);}
.jasx-fnote{font-size:var(--jas-fs-label);color:var(--jas-slate-300);margin-top:12px;}
.jasx-acc{border-top:1px solid var(--jas-line);}
.jasx-acc details{border-bottom:1px solid var(--jas-line);}
.jasx-acc summary{cursor:pointer;font-weight:700;font-size:var(--jas-fs-base);color:var(--jas-footer);padding:16px 30px 16px 2px;list-style:none;position:relative;}
.jasx-acc summary::-webkit-details-marker{display:none;}
.jasx-acc summary:after{content:'\203A';position:absolute;right:8px;top:14px;color:var(--jas-slate-300);font-size:var(--jas-fs-lg);transform:rotate(90deg);transition:transform .15s;}
.jasx-acc details[open] summary:after{transform:rotate(-90deg);}
.jasx-acc .a{padding:0 2px 18px;color:#333;font-size:var(--jas-fs-base);max-width:640px;}
.jasx-srail{position:sticky;top:26px;}
.jasx-icard{border:1px solid var(--jas-line);padding:22px 24px;margin-bottom:18px;background:#fff;}
.jasx-icard .k{font-size:var(--jas-fs-md);font-weight:700;color:var(--jas-footer);margin-bottom:10px;}
.jasx-lim{font:700 var(--jas-fs-micro)/1.5 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-warn-bright);margin-bottom:12px;}
.jasx-icard ul{list-style:none;margin:0 0 16px;padding:0;}
.jasx-icard li{position:relative;padding:0 0 9px 24px;font-size:var(--jas-fs-sm);color:var(--jas-body);}
.jasx-icard li:before{content:'\2713';position:absolute;left:0;color:var(--jas-recruiting);font-weight:700;}
.jasx-cta-p{display:block;background:var(--jas-accent);color:#fff !important;text-align:center;font:700 var(--jas-fs-btn-sm)/1 Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase;padding:15px 12px;text-decoration:none !important;margin-bottom:10px;white-space:nowrap;}
.jasx-cta-p:hover{background:var(--jas-accent-deep);}
.jasx-cta-s{display:block;border:1px solid var(--jas-input-line);color:var(--jas-footer) !important;text-align:center;font:700 var(--jas-fs-btn-sm)/1 Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase;padding:14px 12px;text-decoration:none !important;white-space:nowrap;}
.jasx-cta-s:hover{border-color:var(--jas-accent);color:var(--jas-accent) !important;}
.jasx-icard.c .k{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:12px;}
.jasx-icard.c .jasx-chip{margin:0 8px 8px 0;}
.jasx-icard.t .k{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-slate-400);}
.jasx-icard.t p,.jasx-icard.i p{font-size:var(--jas-fs-sm);color:var(--jas-body);margin:0;}
.jasx-icard.i{background:var(--jas-hover-tint);}
.jasx-icard.i .k{font-size:var(--jas-fs-sm);}
.jasx-mcta{display:none;}
/* study lower-half (prototype) */
html{scroll-behavior:smooth;}
.jasx-sec[id],section[id]{scroll-margin-top:24px;}
.jasx-locband{background:var(--jas-soft);padding:64px 0;margin-top:46px;}
.jasx-locband .jasx-k{margin-bottom:8px;}
.jasx-locband h2{font-size:var(--jas-fs-h2);font-weight:700;color:var(--jas-footer);margin:0 0 22px;}
.jasx-loccards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;}
.jasx-loccard{background:#fff;border:1px solid var(--jas-line);padding:20px 22px;display:flex;flex-direction:column;gap:8px;}
.jasx-loccard-k{font:700 var(--jas-fs-micro)/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-slate-300);}
.jasx-loccard-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);line-height:1.35;}
.jasx-loccard-m{font-size:var(--jas-fs-label);color:var(--jas-muted);}
.jasx-golink{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);text-decoration:none;margin-top:auto;padding-top:6px;}
.jasx-golink:hover{color:var(--jas-accent-deep);}
.jasx-lower{padding:52px 0 0;}
.jasx-ccards{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:18px;}
.jasx-ccard{border:1px solid var(--jas-line);padding:22px 24px;display:flex;flex-direction:column;gap:8px;background:#fff;}
.jasx-ccard-k{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-accent);}
.jasx-ccard-t{font-size:var(--jas-fs-md);font-weight:700;color:var(--jas-footer);}
.jasx-ccard-x{font-size:var(--jas-fs-sm);color:var(--jas-slate-500);line-height:1.55;}
.jasx-hrow{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin:0 0 18px;}
.jasx-hrow h2{font-size:var(--jas-fs-h2);font-weight:700;color:var(--jas-footer);margin:0;}
body.jas-t h3.jasx-sub{font:700 var(--jas-fs-label)/1 Inter,sans-serif !important;letter-spacing:.08em !important;text-transform:uppercase;color:var(--jas-accent) !important;margin:0 0 16px;}
.jasx-learnband{background:#fff;padding:64px 0 56px;}
.jasx-lgroup{margin-bottom:52px;}
.jasx-lgroup:last-child{margin-bottom:0;}
.jasx-rrcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));gap:18px;}
.jasx-rrcard{border:1px solid var(--jas-line);background:#fff;padding:20px 22px;display:flex;flex-direction:column;gap:8px;text-decoration:none!important;}
.jasx-rrcard:hover{background:var(--jas-hover-tint);}
.jasx-rrcard-k{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-slate-300);}
.jasx-rrcard-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);line-height:1.4;}
.jasx-ocards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px;margin-bottom:8px;}
.jasx-ocard{border:1px solid var(--jas-line);background:#fff;padding:20px 22px;display:flex;flex-direction:column;gap:9px;text-decoration:none!important;}
.jasx-ocard:hover{background:var(--jas-hover-tint);}
.jasx-ocard-s{display:flex;align-items:center;gap:7px;font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-recruiting);}
.jasx-ocard-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);line-height:1.4;}
.jasx-ocard-c{font-size:var(--jas-fs-label);color:var(--jas-muted);margin-top:auto;}
.jasx-faqband{padding:56px 0 64px;}
.jasx-band-g{background:var(--jas-soft) !important;border-top:0 !important;}
.jasx-band-w{background:#fff !important;border-top:1px solid var(--jas-line) !important;}
.jasx-band-navy{background:var(--jas-footer) !important;border-top:0 !important;}
.jasx-band-navy .jasx-k{color:var(--jas-sky);}
.jasx-band-navy .jasx-contact-h2{color:#fff;}
.jasx-band-navy .jasx-contact-x{color:var(--jas-on-dark-muted);}
.jasx-faqband .jasx-acc{max-width:780px;}
.jasx-contactband{background:var(--jas-soft);margin-top:0;padding:72px 0 80px;}
.jasx-contact{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:48px;align-items:start;}
.jasx-contact-h2{font-size:var(--jas-fs-h2);font-weight:700;color:var(--jas-footer);margin:6px 0 12px;line-height:1.2;}
.jasx-contact-x{color:var(--jas-slate-500);font-size:var(--jas-fs-base);max-width:420px;}
.jasx-formcard{border:1px solid var(--jas-line);background:#fff;padding:28px 30px;}
@media(max-width:960px){.jasx-loccards,.jasx-ocards{grid-template-columns:1fr 1fr;}.jasx-ccards,.jasx-rrcards{grid-template-columns:1fr;}.jasx-contact{grid-template-columns:1fr;}}
@media(max-width:640px){.jasx-loccards,.jasx-ocards{grid-template-columns:1fr;}}
@media(max-width:1160px){.jasx-swrap{grid-template-columns:minmax(0,1fr) 320px;}.jasx-toc{display:none;}}
@media(max-width:900px){.jasx-swrap{grid-template-columns:minmax(0,1fr);}.jasx-srail{position:static;}
.jasx-qpanel{grid-template-columns:1fr;}.jasx-qcol+.jasx-qcol{border-left:none;border-top:1px solid var(--jas-line);}
.jasx-facts{gap:0 30px;}.jasx-fact{padding-right:10px;}
.jasx-mcta{display:block;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--jas-line);padding:10px 16px calc(10px + env(safe-area-inset-bottom));z-index:999;}
.jasx-mcta a{display:block;background:var(--jas-accent);color:#fff !important;text-align:center;font:700 var(--jas-fs-btn)/1 Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase;padding:15px;text-decoration:none !important;}
body.jas-t.jasx-study{padding-bottom:74px;}}
.jasx-crith{font-size:var(--jas-fs-lg);font-weight:700;color:var(--jas-footer);margin:34px 0 12px;padding-top:22px;border-top:1px solid var(--jas-line);}
.jasx-railimg{padding:0 !important;overflow:hidden;}
.jasx-railimg img{width:100%;height:180px;object-fit:cover;display:block;}
.jasx-tk{border:1px solid var(--jas-line);background:var(--jas-hover-tint);padding:18px 22px;margin:0 0 26px;}
.jasx-tk ul{margin:8px 0 0 18px;padding:0;}
.jasx-tk li{margin:6px 0;}
/* .jasx-faq and .jasx-acc are the same component under two class names, and
   until 2026-08-21 they looked nothing alike: .jasx-acc drew a hairline list
   with a chevron on the right, this drew a bordered box per item with the
   browser's default disclosure triangle. .jasx-acc is the one the rest of the
   site shows, so .jasx-faq now matches it. Same rules live in jas_seosys.php,
   which covers the landing pages and the four shortcode pages this stylesheet
   never reaches (jas_t_css is gated on jas_t_on). */
.jasx-faq{border-top:1px solid var(--jas-line);}
.jasx-faq-i{border:0;border-bottom:1px solid var(--jas-line);margin:0;padding:0;}
.jasx-faq-i summary{cursor:pointer;font-weight:700;padding:16px 34px 16px 2px;color:var(--jas-footer);font-size:var(--jas-fs-base);list-style:none;position:relative;}
.jasx-faq-i summary::-webkit-details-marker{display:none;}
.jasx-faq-i summary:after{content:'\203A';position:absolute;right:8px;top:14px;color:var(--jas-slate-300);font-size:var(--jas-fs-lg);line-height:1;transform:rotate(90deg);transition:transform .15s ease;}
.jasx-faq-i[open] summary:after{transform:rotate(-90deg);}
.jasx-faq-a{padding:0 2px 18px;color:var(--jas-body);}
@media(prefers-reduced-motion:reduce){.jasx-faq-i summary:after{transition:none;}}
@media(max-width:960px){.jasx-grid{grid-template-columns:1fr;gap:34px;}.jasx-cards{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.jasx-wrap{padding:0 20px;}.jasx-hero{padding:34px 0 32px;}.jasx-cards,.jasx-gal{grid-template-columns:1fr;}.jasx-main{padding:32px 0 54px;}}

/* ---- jas-lochub-css ---- */
.jchub-loc .jchub-grid{grid-template-columns:repeat(2,minmax(0,1fr));}@media(max-width:900px){.jchub-loc .jchub-grid{grid-template-columns:1fr;}}.jchub-h .jchub-region{font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif;color:var(--jas-muted-soft);margin:0 0 12px;}.jchub-clk{position:relative;cursor:pointer;transition:transform .18s ease,border-color .18s ease;}.jchub-clk .jchub-t{color:inherit;text-decoration:none;}.jchub-clk .jchub-t::after{content:"";position:absolute;inset:0;z-index:1;}.jchub-clk:hover{transform:translateY(-3px);border-color:var(--jas-accent);}.jchub-clk:hover .jchub-view{color:var(--jas-accent-deep);}.jchub-clk .jchub-t:focus-visible{outline:none !important;}.jchub-clk:has(.jchub-t:focus-visible){outline:var(--jas-focus-w) solid var(--jas-focus-color) !important;outline-offset:var(--jas-focus-offset);}@media (prefers-reduced-motion:reduce){.jchub-clk{transition:none;}.jchub-clk:hover{transform:none;}}.jchub-browse{margin:var(--jas-sp-md) 0 0;}
/* ---- jas-box-css ---- */
.jas-simg{display:none;}.jas-boxes .jas-simg{display:block;width:100%;height:158px;object-fit:cover;margin:0 0 14px;background:var(--jas-tint-cool);}.jas-list .jas-simg{display:none;}
/* ---- jas-comm-css ---- */
.jas-commband{border:1px solid var(--jas-line);border-top:3px solid var(--jas-accent);background:var(--jas-hover-tint);padding:26px 30px;margin:44px 0 10px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:18px;}.jas-commband-t{flex:1 1 300px;}.jas-commband-k{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:7px;}.jas-commband-h{font:700 var(--jas-fs-lg)/1.3 Inter,sans-serif;color:var(--jas-footer);}.jas-commband-s{font:400 var(--jas-fs-sm)/1.5 Inter,sans-serif;color:var(--jas-slate-500);margin-top:5px;}.jas-commband-a{display:flex;flex-direction:column;gap:10px;}.jas-commband-b{display:inline-block;background:var(--jas-accent);color:#fff!important;font:700 var(--jas-fs-base)/1 Inter,sans-serif;padding:15px 28px;text-decoration:none!important;}.jas-commband-b:hover{background:var(--jas-accent-deep);}.jas-commband-l{font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif;color:var(--jas-accent)!important;text-decoration:none!important;}.jas-commband-l:hover{text-decoration:underline!important;}
/* ---- jas-dyn-css ---- */

.jasd-btn{display:inline-block;background:var(--jas-accent);color:#fff !important;font:700 var(--jas-fs-btn)/1 Inter,sans-serif;letter-spacing:.5px;text-transform:uppercase;padding:14px 20px;text-decoration:none !important;}
.jasd-btn:hover{background:var(--jas-accent-deep);}
.jasd-link{color:var(--jas-accent);text-decoration:none;font-weight:700;}
.jasf-card{background:#20293380;border:1px solid var(--jas-slate-700);padding:24px 26px;display:flex;flex-direction:column;gap:10px;background:var(--jas-dark-card);}
.jasf-big{margin-bottom:22px;padding:34px 36px;}
.jasf-status{display:flex;align-items:center;gap:8px;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-recruiting-bright);}
.jasf-dot{width:8px;height:8px;border-radius:50%;background:var(--jas-recruiting-bright);}
.jasf-lim{color:var(--jas-slate-300);margin-left:8px;}
.jasf-k{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-sky);}
.jasf-t{font:700 var(--jas-fs-lg)/1.3 Inter,sans-serif;color:#fff;}
.jasf-big .jasf-t{font-size:var(--jas-fs-h3);}
.jasf-s{color:var(--jas-on-dark-muted);font:300 var(--jas-fs-base)/1.5 Inter,sans-serif;}
.jasf-note{margin:0 0 20px;max-width:700px;color:var(--jas-on-dark-muted);font:300 var(--jas-fs-base)/1.55 Inter,sans-serif;}
.jasf-foot{margin:18px 0 0;color:var(--jas-slate-300);font:300 var(--jas-fs-eyebrow)/1.5 Inter,sans-serif;}
.jasf-loc{display:flex;align-items:center;gap:7px;color:var(--jas-slate-300);font:400 var(--jas-fs-sm)/1.4 Inter,sans-serif;}
.jasf-loc svg{flex:0 0 auto;color:var(--jas-sky);}
.jasf-a{margin-top:auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding-top:8px;}
.jasf-quiet{color:var(--jas-sky);font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif;letter-spacing:.5px;text-transform:uppercase;text-decoration:none;}
.jasf-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;}
@media(max-width:1100px){.jasf-grid{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:640px){.jasf-grid{grid-template-columns:1fr;}.jasf-big{padding:24px;}}
/* how-it-works timeline */
.jashw{color:var(--jas-on-dark-muted);}
.jashw-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:44px;flex-wrap:wrap;}
.jashw-k{font:700 var(--jas-fs-label)/1.4 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--jas-sky);margin-bottom:12px;}
.jashw-h{font-weight:700 !important;font-size:var(--jas-fs-h2) !important;line-height:1.15 !important;font-family:Inter,sans-serif !important;color:#fff!important;margin:0;max-width:560px;}
.jashw-intro{font:300 var(--jas-fs-base)/1.6 Inter,sans-serif;color:var(--jas-on-dark-muted);max-width:400px;margin:0;}
.jashw-grid{display:grid;grid-template-columns:repeat(4,1fr);list-style:none;margin:0 0 30px;padding:0;position:relative;border-top:1px solid var(--jas-slate-700);}
.jashw-cell{position:relative;display:flex;flex-direction:column;padding:26px 26px 6px 0;border-left:1px solid var(--jas-slate-700);}
.jashw-cell:first-child{border-left:0;}
.jashw-cell:not(:first-child){padding-left:26px;}
.jashw-cell::before{content:"";position:absolute;top:-5px;left:0;width:9px;height:9px;border-radius:50%;background:var(--jas-sky);}
.jashw-cell:not(:first-child)::before{left:-5px;}
.jashw-n{font:700 var(--jas-fs-label)/1 Inter,sans-serif;color:var(--jas-sky);margin-bottom:52px;}
.jashw-t{font-weight:700;font-size:var(--jas-fs-h3);line-height:1.2;font-family:Inter,sans-serif;color:#fff;margin-bottom:10px;}
.jashw-d{font:300 var(--jas-fs-sm)/1.55 Inter,sans-serif;color:var(--jas-on-dark-muted);}
.jashw-pill{display:inline-flex;align-items:center;gap:14px;border:1px solid var(--jas-slate-700);background:var(--jas-dark-card);padding:14px 22px 14px 14px;max-width:880px;}
.jashw-ic{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--jas-slate-700);color:var(--jas-sky);}
.jashw-pill p{font:300 var(--jas-fs-sm)/1.55 Inter,sans-serif;color:var(--jas-on-dark-muted);margin:0;}
.jashw-pill strong{color:#fff;font-weight:700;}
.jashw-pill a{color:var(--jas-sky);font-weight:700;text-decoration:none;}
.jashw-pill a:hover{color:#fff;}
@media(max-width:900px){
.jashw-grid{grid-template-columns:1fr;border-top:0;}
.jashw-cell{border-left:0;border-top:1px solid var(--jas-slate-700);padding:20px 0 14px;}
.jashw-cell:first-child{border-top:0;padding-top:0;}
.jashw-cell:not(:first-child){padding-left:0;}
.jashw-cell::before{display:none;}
.jashw-n{margin-bottom:10px;}
.jashw-head{margin-bottom:30px;}
}
/* decision guide */
.jasg-head{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:28px;flex-wrap:wrap;}
.jasg-k{font:700 var(--jas-fs-label)/1.4 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:12px;}
.jasg-h{font-weight:700;font-size:var(--jas-fs-h2);line-height:1.15;font-family:Inter,sans-serif;color:var(--jas-ink);margin:0;max-width:560px;}
.jasg-intro{font:300 var(--jas-fs-base)/1.6 Inter,sans-serif;color:var(--jas-muted);max-width:420px;margin:0;}
/* ---- tab affordance pass (2026-08-21) ----
   The two inactive tabs read as background rather than as controls. Measured
   cause: the inactive surface was --jas-surface at #FAFAFA, the panel below is
   #FFFFFF and the band behind is #F7F7F7, so all three sat within 3 percent of
   each other and only a hairline separated a control from its own container.
   Inactive tabs are white now, so they sit ON the band instead of in it.

   The step numbers were the weakest thing on the tab at opacity .55, roughly
   2.2 to 1 against the inactive surface and 4.4 to 1 on the navy, both under
   the 4.5 minimum. They are the element that says there are three of these, so
   they are now full opacity in a bordered chip: hairline box when inactive,
   accent fill when active.

   Hover was background:var(--jas-line), the hairline token, which reads as a
   disabled flash rather than an invitation. It is the accent tint now, with the
   number chip picking up an accent border.

   Nothing here loops or pulses. The direction doc rules out aggressive
   animation, and a permanent pulse is also a WCAG 2.2.2 problem. Movement is
   triggered only: the rail slides on change, the panel fades in once. */
.jasg-tabs{display:grid;grid-template-columns:repeat(var(--jasg-n,3),1fr);position:relative;}
/* The track: a faint full-width line under the strip, so the accent segment on
   it reads as one of several positions rather than as a lone underline. On
   ::before rather than ::after so it paints below the buttons; a parent ::after
   is the last child and would cover each tab indicator. */
.jasg-tabs::before{content:'';position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--jas-line);pointer-events:none;}
/* The indicator is a per-tab bar that changes colour, NOT one bar that slides.
   A sliding rail was tried first and abandoned after measuring, on this element,
   in this page:
     transform:translateX(calc(var(--jasg-i) * 100%))   no movement
     left:calc(var(--jasg-i) * 100% / var(--jasg-n))    no movement
     left:66.6667%, !important, inline                  computed 0px
     transform:translateX(200%), !important, inline     computed identity
   and a CSSOM sweep for stylesheet rules declaring transform that match the
   element returned nothing, so there is no rule to out-specify either. Whatever
   is neutralising transform and percentage offsets here sits outside the
   sandbox and cannot be reached from it.

   Colour change on a per-tab bar needs neither property. The strip still reads
   as a track with three positions, because the faint full-width line is always
   visible behind and the accent only fills the active third. What is lost is
   the slide itself, which was the nicer version of the same information. */
.jasg-tab::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:3px;background:transparent;transition:background-color .18s ease;pointer-events:none;}
.jasg-tab.is-on::after{background:var(--jas-accent);}
.jasg-tab{position:relative;display:flex;align-items:center;gap:10px;padding:18px 22px!important;background:var(--jas-bg)!important;border:1px solid var(--jas-line)!important;border-left:0!important;border-radius:0!important;font:700 var(--jas-fs-sm)/1.3 Inter,sans-serif !important;color:var(--jas-muted)!important;cursor:pointer;text-align:left;box-shadow:none!important;text-transform:none!important;letter-spacing:0!important;transition:background .15s ease,color .15s ease;}
.jasg-tab:first-child{border-left:1px solid var(--jas-line)!important;}
.jasg-tab:hover{background:var(--jas-hover-tint)!important;color:var(--jas-ink)!important;}
.jasg-tab.is-on,.jasg-tab.is-on:hover{background:var(--jas-navy)!important;color:#fff!important;border-color:var(--jas-navy)!important;}
.jasg-tab:focus-visible{outline:2px solid var(--jas-accent);outline-offset:-2px;}
.jasg-tn{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;opacity:1;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;box-sizing:border-box;border:1px solid var(--jas-line-strong);color:var(--jas-muted);font-variant-numeric:tabular-nums;transition:background .15s ease,border-color .15s ease,color .15s ease;}
.jasg-tab:hover .jasg-tn{border-color:var(--jas-accent);color:var(--jas-accent);}
.jasg-tab.is-on .jasg-tn,.jasg-tab.is-on:hover .jasg-tn{background:var(--jas-accent);border-color:var(--jas-accent);color:#fff;}
/* 10px between the strip and the panel (user, 2026-08-21). The panel used to be
   joined to the tabs and borrowed the active tab border as its own top edge,
   which is why border-top was 0. Detached, it needs that edge back, so the
   border is all four sides now. */
.jasg-stack{display:grid;margin-top:10px;}
.jasg-panel{grid-area:1/1;display:grid;grid-template-columns:38% 1fr;border:1px solid var(--jas-line);background:#fff;}
/* A true cross-fade, and the reason the panels are stacked in one grid cell.

   The first version swapped display none/grid and transitioned display with
   allow-discrete. That made the screen jump on every tab change (user,
   2026-08-21) and the mechanism is worth recording, because allow-discrete
   looks harmless: on exit the outgoing panel keeps display grid for the whole
   150ms while the incoming one is already laid out, so the section is briefly
   as tall as both panels and then snaps back. Two layout shifts per click.

   Stacking removes the swap entirely. All three panels occupy grid-area 1/1 of
   .jasg-stack, so the stack is always as tall as the tallest panel and nothing
   reflows when the active one changes. Measured at 1200px: the stack holds 377
   and the note below it holds y=721 on all three tabs.

   Visibility rather than display does the hiding, so the inactive panels stay
   out of the accessibility tree and out of tab order while still occupying the
   cell. It is delayed by the fade duration on the way out and immediate on the
   way in, which is what lets the two panels overlap for 150ms.

   The cost is a fixed reserve equal to the tallest panel rather than a height
   that follows the content. That is the right trade here: the panels are close
   in height, and a stable page beats a snug box.

   Below 900px the strip is hidden and every panel is shown in normal flow, so
   the mobile block has to put back display, opacity, visibility and grid-area. */
.jasg-panel{opacity:0;visibility:hidden;transition:opacity .15s ease,visibility 0s linear .15s;}
.jasg-panel.is-on{opacity:1;visibility:visible;transition:opacity .15s ease,visibility 0s;}
@media(prefers-reduced-motion:reduce){
.jasg-tab::after{transition:none;}
.jasg-tab{transition:none;}
.jasg-tn{transition:none;}
.jasg-panel{transition:none;}
}
.jasg-left{background:rgba(28,105,212,.05);padding:34px 36px;}
.jasg-lk{font:700 var(--jas-fs-micro)/1.4 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:14px;}
.jasg-lh{font-weight:700;font-size:var(--jas-fs-h3);line-height:1.25;font-family:Inter,sans-serif;color:var(--jas-ink);margin:0 0 14px;}
.jasg-lp{font:300 var(--jas-fs-base)/1.6 Inter,sans-serif;color:var(--jas-body);margin:0 0 20px;}
.jasg-go{font:700 var(--jas-fs-sm)/1 Inter,sans-serif;color:var(--jas-accent);text-decoration:none;}
.jasg-go:hover{color:var(--jas-accent-deep);}
.jasg-grid{display:grid;grid-template-columns:1fr 1fr;}
.jasg-cell{display:flex;gap:12px;padding:26px 28px;border-left:1px solid var(--jas-line);border-top:1px solid var(--jas-line);}
.jasg-cell:nth-child(-n+2){border-top:0;}
.jasg-cn{font:700 var(--jas-fs-micro)/1.6 Inter,sans-serif;color:var(--jas-accent);}
.jasg-ct{font:700 var(--jas-fs-base)/1.35 Inter,sans-serif;color:var(--jas-ink);margin-bottom:5px;}
.jasg-cd{font:300 var(--jas-fs-sm)/1.5 Inter,sans-serif;color:var(--jas-muted);}
.jasg-imp{display:flex;align-items:center;gap:16px;border:1px solid var(--jas-line);background:#fff;padding:12px 20px;margin-top:14px;}
.jasg-imp span{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-accent);flex:0 0 auto;}
.jasg-imp p{font:300 var(--jas-fs-eyebrow)/1.5 Inter,sans-serif;color:var(--jas-body);margin:0;}
@media(max-width:900px){
.jasg-tabs{display:none;}
.jasg-stack{display:block;margin-top:0;}
.jasg-panel{grid-area:auto;display:grid;opacity:1;visibility:visible;grid-template-columns:1fr;border-top:1px solid var(--jas-line);margin-top:0;margin-bottom:14px;}
.jasg-grid{grid-template-columns:1fr;}
.jasg-cell{border-left:0;}
.jasg-cell:nth-child(-n+2){border-top:1px solid var(--jas-line);}
.jasg-cell:first-child{border-top:0;}
.jasg-left{padding:26px 24px;}
}
.jasen{display:grid;grid-template-columns:1.25fr 1fr 1fr 1fr;border:1px solid var(--jas-line);background:#fff;}
.jasen-lead{padding:24px 26px;}
.jasen-k{font:700 var(--jas-fs-micro)/1.4 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:8px;}
.jasen-q{font:700 var(--jas-fs-lg)/1.2 Inter,sans-serif;color:var(--jas-ink);margin:0;}
.jasen-c{display:flex;flex-direction:column;gap:6px;padding:24px 22px;border-left:1px solid var(--jas-line);text-decoration:none !important;}
.jasen-c:hover{background:var(--jas-soft);}
.jasen-hl{background:rgba(28,105,212,.05);}
.jasen-hl:hover{background:rgba(28,105,212,.09);}
.jasen-n{font:700 var(--jas-fs-label)/1 Inter,sans-serif;color:var(--jas-muted-soft);}
.jasen-t{font:700 var(--jas-fs-base)/1.3 Inter,sans-serif;color:var(--jas-ink);}
.jasen-a{color:var(--jas-accent);margin-left:8px;}
.jasen-d{font:300 var(--jas-fs-sm)/1.45 Inter,sans-serif;color:var(--jas-muted);}
/* The eyebrow is the canonical 13px/.115em spec and "Start in the way that
   feels easiest" wrapped to two lines in the lead column (Wasif 2026-08-18).
   Rather than shrink the label or hard-code a column width, let the label set
   the track's floor: an `fr` track's automatic minimum is min-content, so a
   nowrap eyebrow makes the lead column at least one line wide and the three
   answer columns give up the difference. Self-correcting if the copy changes.
   Scoped to 1200px and up, not 1025: the 4-across layout starts at 1025, and
   between there and ~1150 a nowrap lead track (label + 52px padding, ~381px)
   would squeeze the three answer columns to about 157px of content each. Above
   1200 every column still has room, and below it the label may wrap as before. */
@media(min-width:1200px){.jasen-k{white-space:nowrap;}}
@media(max-width:1024px){.jasen{grid-template-columns:1fr 1fr;}.jasen-lead{grid-column:1/-1;border-bottom:1px solid var(--jas-line);}.jasen-c:nth-of-type(odd){border-left:0;}}
@media(max-width:640px){.jasen{grid-template-columns:1fr;}.jasen-c{border-left:0;border-top:1px solid var(--jas-line);}}
.jas-locimg img{aspect-ratio:4/5;object-fit:cover;width:100%;display:block;}
.jasqp{background:#fff;border:1px solid var(--jas-line);padding:24px 26px;width:100%;box-sizing:border-box;}
.jasqp-k{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-muted);margin-bottom:10px;}
.jasqp-q{font:700 var(--jas-fs-md)/1.3 Inter,sans-serif;color:var(--jas-ink);margin-bottom:16px;}
.jasqp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;}
.jasqp-c{display:flex;align-items:center;border:1px solid var(--jas-line-strong);background:#fff;color:var(--jas-ink);font:400 var(--jas-fs-sm)/1.35 Inter,sans-serif;padding:11px 13px;text-decoration:none !important;}
.jasqp-c:hover{border-color:var(--jas-accent);color:var(--jas-accent);}
.jasqp-go{grid-column:1/-1;justify-content:center;background:var(--jas-accent);border-color:var(--jas-accent);color:#fff !important;font-weight:700;}
.jasqp-go:hover{background:var(--jas-accent-deep);border-color:var(--jas-accent-deep);color:#fff !important;}
.jasqp-f{margin-top:14px;font:300 var(--jas-fs-label)/1.5 Inter,sans-serif;color:var(--jas-muted);}
@media(max-width:420px){.jasqp-grid{grid-template-columns:1fr;}}
.jasha{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;}
@media(max-width:900px){.jasha{grid-template-columns:1fr;}}
.jasha-card{border:1px solid var(--jas-line);background:#fff;padding:22px 24px;display:flex;flex-direction:column;gap:9px;text-decoration:none !important;}
.jasha-card:hover{background:var(--jas-hover-tint);}
.jasha-k{font:400 var(--jas-fs-label)/1 Inter,sans-serif;color:var(--jas-muted);}
.jasha-t{font:700 var(--jas-fs-md)/1.4 Inter,sans-serif;color:var(--jas-footer);}
.jasha-go{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-accent);margin-top:auto;padding-top:6px;}

/* ---- jas-box-css2 ---- */
.jas-simg{display:none;}.jas-simg-status{display:none;}.jas-boxes .jas-srow{display:flex;flex-direction:column;padding:0;overflow:hidden;border:1px solid var(--jas-line);background:#fff;}.jas-boxes .jas-simg-status{display:flex;align-items:center;gap:8px;order:1;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--jas-recruiting);padding:18px 20px 12px;}.jas-boxes .jas-simg{display:block;order:2;width:100%;height:172px;object-fit:cover;margin:0;background:var(--jas-tint-cool);}.jas-boxes .jas-sm{order:3;padding:18px 20px 6px;}.jas-boxes .jas-smeta,.jas-boxes .jas-shook,.jas-boxes .jas-sloc{display:none;}.jas-boxes .jas-srow h3{margin:0;font-size:var(--jas-fs-md);}.jas-boxes .jas-srow h3 a{color:var(--jas-ink);text-decoration:none;}.jas-boxes .jas-sc{order:4;padding:8px 20px 22px;flex-direction:column-reverse;align-items:flex-start;text-align:left;gap:14px;}
/* ---- jas-hubflip-css ---- */

.jas-hubstudies{margin:0 0 30px;}
.jas-hubstudies-k,.jas-hubflip-k{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:7px;}
.jas-hubstudies-h,.jas-hubflip-h{font:700 var(--jas-fs-lg)/1.3 Inter,sans-serif;color:var(--jas-footer);margin-bottom:16px;}
.jas-hubstudies-g{display:grid;grid-template-columns:repeat(2,1fr);gap:0;border-top:1px solid var(--jas-line);border-left:1px solid var(--jas-line);}
.jas-hubstudy{display:flex;flex-direction:column;gap:8px;padding:20px 22px;border-right:1px solid var(--jas-line);border-bottom:1px solid var(--jas-line);background:#fff;text-decoration:none!important;transition:background .15s ease;}
.jas-hubstudy:hover{background:var(--jas-hover-tint);}
.jas-hubstudy-s{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-recruiting);}
.jas-hubstudy-t{font:700 var(--jas-fs-base)/1.35 Inter,sans-serif;color:var(--jas-footer);}
.jas-hubstudy-l{font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif;color:var(--jas-muted);}
.jas-hubstudy-go{font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-accent);margin-top:4px;}
.jas-hubflip{border:1px solid var(--jas-line);border-top:3px solid var(--jas-accent);background:var(--jas-hover-tint);padding:26px 30px;margin:0 0 30px;}
.jas-hubflip-s{font:400 var(--jas-fs-sm)/1.6 Inter,sans-serif;color:var(--jas-slate-500);margin-bottom:16px;max-width:560px;}
.jas-hubflip-b{display:inline-block;background:var(--jas-accent);color:#fff!important;font:700 var(--jas-fs-base)/1 Inter,sans-serif;padding:15px 28px;text-decoration:none!important;}
.jas-hubflip-b:hover{background:var(--jas-accent-deep);}
@media(max-width:760px){.jas-hubstudies-g{grid-template-columns:1fr;}}

/* ---- jas-box-css3 ---- */
.jas-boxes .jas-sc{display:flex !important;flex-direction:column-reverse !important;align-items:flex-start !important;gap:14px !important;}.jas-boxes .jas-sc .jas-btn{margin:0;}
/* ---- jas-box-css4 ---- */
.jas-list .jas-a-details::after{content:" →";}.jas-boxes .jas-srow{position:relative;}.jas-boxes .jas-simg{height:150px !important;}.jas-boxes .jas-simg-status{position:absolute !important;top:12px;left:12px;z-index:2;margin:0 !important;padding:5px 10px !important;background:var(--jas-recruiting);color:#ffffff;border-radius:0;font:700 var(--jas-fs-micro)/1 Inter,sans-serif !important;letter-spacing:.6px;text-transform:uppercase;}.jas-boxes .jas-simg-status .jas-dot{display:none;}.jas-boxes .jas-sm{padding:14px 16px 2px !important;}.jas-boxes .jas-srow h3{font-size:var(--jas-fs-base) !important;margin:0 !important;}.jas-boxes .jas-sc{display:flex !important;flex-direction:column !important;gap:10px !important;align-items:stretch !important;padding:10px 16px 18px !important;}.jas-boxes .jas-a-details{order:1;display:block !important;background:var(--jas-accent) !important;color:#ffffff !important;border:1px solid var(--jas-accent) !important;border-radius:0 !important;padding:12px 16px !important;margin:0 !important;font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif !important;letter-spacing:.5px !important;text-transform:uppercase !important;text-align:center !important;}.jas-boxes .jas-a-details:hover{background:var(--jas-accent-deep) !important;border-color:var(--jas-accent-deep) !important;color:#ffffff !important;}.jas-boxes .jas-a-qualify{order:2;display:block !important;background:transparent !important;color:var(--jas-accent) !important;border:none !important;padding:0 !important;margin:0 !important;font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif !important;letter-spacing:0 !important;text-transform:none !important;text-align:center !important;}.jas-boxes .jas-a-qualify::before{content:"or ";color:var(--jas-muted-soft);}
/* ---- jas-box-css5 ---- */
.jas-list .jas-a-details::after{content:none !important;}
/* ---- jas-box-css6 ---- */
.jas-boxes{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}@media(max-width:1024px){.jas-boxes{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}}@media(max-width:600px){.jas-boxes{grid-template-columns:1fr !important;}}.jas-boxes .jas-sc{align-items:center !important;}.jas-boxes .jas-a-details{min-width:170px;}
/* ---- jas-studyhub-css ---- */

.jas-fchip{background:#fff;cursor:pointer;font-family:Inter,sans-serif;line-height:1;}
.jas-lstatus{display:none;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase;color:var(--jas-recruiting);align-items:center;gap:7px;margin:0 0 9px;}
.jas-conds{display:none;font:700 var(--jas-fs-label)/1.45 Inter,sans-serif;letter-spacing:.8px;text-transform:uppercase;color:var(--jas-accent);margin:9px 0 0;}
.jas-list .jas-lstatus{display:flex;}
.jas-list .jas-conds{display:block;}
.jas-list .jas-shook{display:none;}
.jas-list .jas-a-details::after{content:' →' !important;}
.jas-boxes .jas-lstatus,.jas-boxes .jas-conds,.jas-boxes .jas-sloc{display:none !important;}

/* ---- jas-box-css7 ---- */
.jas-boxes .jas-sc{align-items:center !important;}.jas-boxes .jas-a-details{display:inline-block !important;width:auto !important;align-self:center !important;}.jas-boxes .jas-a-qualify{display:inline-block !important;width:auto !important;align-self:center !important;}
/* ---- jas-box-css8 ---- */
.jas-list .jas-sc{flex-direction:column !important;align-items:flex-end !important;gap:9px !important;}.jas-list .jas-a-details{order:1;display:inline-block !important;background:var(--jas-accent) !important;color:#ffffff !important;border:1px solid var(--jas-accent) !important;border-radius:0 !important;padding:13px 20px !important;font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif !important;letter-spacing:.5px !important;text-transform:uppercase !important;text-align:center !important;}.jas-list .jas-a-details:hover{background:var(--jas-accent-deep) !important;border-color:var(--jas-accent-deep) !important;color:#ffffff !important;}.jas-list .jas-a-details::after{content:none !important;}.jas-list .jas-a-qualify{order:2;display:inline-block !important;background:transparent !important;color:var(--jas-accent) !important;border:none !important;padding:0 !important;font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif !important;letter-spacing:0 !important;text-transform:none !important;}.jas-list .jas-a-qualify::before{content:"or ";color:var(--jas-muted-soft);}
/* ---- jas-list-img ---- */
.jas-list .jas-srow{align-items:center !important;justify-content:flex-start !important;gap:22px !important;}.jas-list .jas-sm{flex:1 1 auto !important;min-width:0 !important;}.jas-list .jas-simg{display:block !important;width:108px !important;height:108px !important;object-fit:cover !important;flex:0 0 108px !important;background:var(--jas-tint-cool) !important;border-radius:0 !important;}.jas-list .jas-simg-status{display:none !important;}@media(max-width:600px){.jas-list .jas-simg{width:76px !important;height:76px !important;flex-basis:76px !important;}}
/* ---- jas-uifix ---- */

.jas-ctarow{margin-top:auto !important;}
/* qualify-first on studies hub rows (list view) */
.jas-list .jas-a-qualify{order:1 !important;display:inline-block !important;background:var(--jas-accent) !important;color:#ffffff !important;border:1px solid var(--jas-accent) !important;border-radius:0 !important;padding:12px 16px !important;font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif !important;letter-spacing:.5px !important;text-transform:uppercase !important;text-decoration:none !important;}
.jas-list .jas-a-qualify:hover{background:var(--jas-accent-deep) !important;border-color:var(--jas-accent-deep) !important;}
.jas-list .jas-a-qualify::before{content:'' !important;}
.jas-list .jas-a-details{order:2 !important;display:inline-block !important;background:transparent !important;color:var(--jas-accent) !important;border:none !important;padding:0 !important;font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif !important;letter-spacing:0 !important;text-transform:none !important;}
.jas-list .jas-a-details::before{content:'or ' !important;color:var(--jas-muted-soft) !important;}
.jas-list .jas-a-details::after{content:' →' !important;}
/* qualify-first on studies hub cards (boxes view) */
.jas-boxes .jas-a-qualify{order:1 !important;display:inline-block !important;width:auto !important;background:var(--jas-accent) !important;color:#ffffff !important;border:1px solid var(--jas-accent) !important;border-radius:0 !important;padding:12px 16px !important;font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif !important;letter-spacing:.5px !important;text-transform:uppercase !important;text-decoration:none !important;align-self:flex-start !important;}
.jas-boxes .jas-a-qualify:hover{background:var(--jas-accent-deep) !important;border-color:var(--jas-accent-deep) !important;}
.jas-boxes .jas-a-qualify::before{content:'' !important;}
.jas-boxes .jas-a-details{order:2 !important;display:inline-block !important;width:auto !important;background:transparent !important;color:var(--jas-accent) !important;border:none !important;padding:0 !important;font:400 var(--jas-fs-eyebrow)/1.4 Inter,sans-serif !important;letter-spacing:0 !important;text-transform:none !important;align-self:flex-start !important;}
.jas-boxes .jas-a-details::before{content:'or ' !important;color:var(--jas-muted-soft) !important;}
.jas-boxes .jas-a-details::after{content:' →' !important;}

/* kit-button neutralizer: Elementor kit styles all <button> — restore hub chip/tab design */
.jas-fchip,.jchub-tab,.jas-vt button{background:#fff !important;color:var(--jas-footer) !important;border:1px solid #d9dde2 !important;border-radius:0 !important;font:700 var(--jas-fs-label)/1 Inter,sans-serif !important;letter-spacing:.04em !important;text-transform:uppercase !important;padding:9px 13px !important;cursor:pointer !important;box-shadow:none !important;text-align:center !important;}
.jchub-tab{padding:11px 18px !important;font-size:var(--jas-fs-label) !important;}
.jas-fchip:hover,.jchub-tab:hover,.jas-vt button:hover{border-color:var(--jas-accent) !important;color:var(--jas-accent) !important;background:#fff !important;}
.jas-fchip.active,.jchub-tab.active,.jas-vt button.active{background:var(--jas-accent) !important;border-color:var(--jas-accent) !important;color:#fff !important;}

/* ---- jas-sponsors ---- */

.dl-sponsors{max-width:var(--jas-container);margin:0 auto;text-align:center}
.dl-sponsors-k{font:700 var(--jas-fs-md)/1.35 Inter,sans-serif !important;letter-spacing:0!important;text-transform:none!important;color:var(--jas-ink)!important;margin:0 0 26px}
/* grid rather than flex-wrap: even rows and even optical gutters at every width */
.dl-sponsors-row{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fit,minmax(110px,1fr));
  align-items:center;justify-items:center;column-gap:16px;row-gap:26px}
@media(min-width:901px){.dl-sponsors-row{grid-template-columns:repeat(9,1fr)}}
.dl-sponsors-row li{margin:0;padding:0;display:flex;align-items:center;justify-content:center;min-height:44px}
/* --w/--h come from the optical-area calculation; max-width keeps a mark inside
   its cell no matter how narrow the viewport gets */
.dl-sponsors-row img{width:var(--w);height:var(--h);max-width:100%;object-fit:contain;
  filter:grayscale(1);opacity:.62;transition:opacity .18s ease,filter .18s ease}
.dl-sponsors-row img:hover{filter:none;opacity:1}
@media(max-width:900px){
  .dl-sponsors-row{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));column-gap:14px;row-gap:24px}
  .dl-sponsors-row li{min-height:46px}
  /* .78 rather than a smaller uniform scale: the wide wordmarks are already
     width-bound by the cell (max-width:100% clamps them), so a larger scale
     only buys height for the narrow/round marks -- same band height, bigger
     average mark. */
  .dl-sponsors-row img{width:calc(var(--w) * .78);height:calc(var(--h) * .78)}
}
/* Touch devices cannot hover, so the colour reveal never fires for most of the
   audience -- lift the resting state instead of leaving it at 62%. */
@media(hover:none){
  .dl-sponsors-row img{opacity:.82}
  .dl-sponsors-row img:hover{filter:grayscale(1);opacity:.82}
}
@media(prefers-reduced-motion:reduce){.dl-sponsors-row img{transition:none}}

/* ---- jas-visuals ---- */
/* ---------- hero: fill the empty column, add depth ---------- */
.elementor-element-jas0006b{position:relative;overflow:hidden}
.elementor-element-jas0006b::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(rgba(143,184,240,.10) 1px,transparent 1px);background-size:24px 24px}
.elementor-element-jas0006b::after{content:'';position:absolute;z-index:0;pointer-events:none;left:-12%;top:-25%;width:44%;height:110%;background:radial-gradient(ellipse at center,rgba(28,105,212,.12),rgba(28,105,212,0) 60%)}
.elementor-element-jas0006b>.e-con-inner{position:relative;z-index:1}
.elementor-element-jvhero00{padding:0!important;align-self:stretch}
/* the full-height img no longer props up the flex line; pin the row so the band
   keeps its original 788px (560 slot + 228 padding) — desktop layouts only */
@media(min-width:1025px){.elementor-element-jas0006a{min-height:560px}}
.jv-heroimg,.jv-heroimg .elementor-widget-container,.jv-heroimg figure,.jv-heroimg .elementor-image{height:100%;margin:0}
/* Hero source is a 16:9 landscape frame (1672x941) held at full size, so each
   breakpoint frames its own window via object-position instead of shipping a
   pre-cropped file: desktop takes the 5:6 slice, phone/tablet get the wide frame.
   object-position-x maps 1:1 onto "how far along the slack" the window sits.
   Mask is LEFT ONLY. The photo has a bright pale wall, and fading four edges into
   dark slate turned it into a dirty vignette — a single left dissolve over the
   plain wall is clean and loses nothing. */
/* Full band height (2026-08-10, matching the why-join hero): the image column's
   content box is 560 tall, but the band is 788 — the inner (104px) and row (10px)
   vertical paddings inset the photo. Pull the img past both with negative margins
   and grow its height to compensate, so it touches the band's top and bottom.
   The ≤1024 stacked layout resets this. */
.jv-heroimg img{width:100%!important;height:calc(100% + 228px)!important;margin-top:-114px;margin-bottom:-114px;min-height:560px;object-fit:cover;object-position:58% 18%;display:block;border-radius:0!important;max-width:none;filter:saturate(.94) contrast(1.05);
  -webkit-mask-image:linear-gradient(to right,transparent 0,rgba(0,0,0,.5) 22%,#000 40%);
  mask-image:linear-gradient(to right,transparent 0,rgba(0,0,0,.5) 22%,#000 40%)}

/* Full-bleed right: run the hero photo out to the page edge instead of stopping at
   the 1200 content box. The IMAGE overflows its column — widening the column itself
   makes it wrap onto its own line, because .e-con-inner allows flex wrap.
   The boxed inner is centred with max-width 1280 and 10px padding, so the distance
   from the image's right edge to the viewport edge is (100vw - 1280px)/2 + 10px.
   100vw includes the scrollbar, so this overshoots ~7px — harmless, the band is
   overflow:hidden, and it guarantees no sliver of slate is left showing.
   Fade is a fixed 200px here, not 30%, so it stays constant as the image widens. */
@media(min-width:1281px){
  .jv-heroimg,.jv-heroimg .elementor-widget-container{overflow:visible}
  .jv-heroimg img{width:calc(100% + (100vw - 1280px)/2 + 10px)!important;
    -webkit-mask-image:linear-gradient(to right,transparent 0,rgba(0,0,0,.5) 22%,#000 40%);
    mask-image:linear-gradient(to right,transparent 0,rgba(0,0,0,.5) 22%,#000 40%)}
}
@media(max-width:1024px){
  .elementor-element-jvhero00{width:100%!important;margin-top:24px}
  /* stacked: the box is landscape, so show the wide frame and drop the mask —
     a bottom fade on a bright photo reads as a grey smear, a clean edge does not */
  .jv-heroimg img{min-height:0;height:58vw!important;max-height:360px;margin-top:0;margin-bottom:0;object-position:60% 18%;-webkit-mask-image:none;mask-image:none}
}

/* ---------- featured study cards: image band, flush to card edges ---------- */
.jasf-card{overflow:hidden}
.jasf-img{display:block;object-fit:cover;aspect-ratio:16/9;width:calc(100% + 52px);margin:-24px -26px 8px;filter:saturate(.9) brightness(.97)}
.jasf-big .jasf-img{aspect-ratio:3/1;width:calc(100% + 72px);margin:-34px -36px 14px}
@media(max-width:640px){.jasf-big .jasf-img{width:calc(100% + 48px);margin:-24px -24px 10px}}

/* ---------- blog cards: image on top ---------- */
.jasha-card{padding:0!important;gap:0!important;overflow:hidden}
.jasha-img{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;filter:saturate(.95)}
.jasha-in{display:flex;flex-direction:column;gap:9px;padding:20px 24px 22px;flex:1}

/* ---------- dark bands: subtle texture so flat slate reads as designed ---------- */
.elementor-element-jas000b0,.elementor-element-jas000fa{position:relative;overflow:hidden}
.elementor-element-jas000b0::before,.elementor-element-jas000fa::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(rgba(143,184,240,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(143,184,240,.055) 1px,transparent 1px);background-size:56px 56px}
.elementor-element-jas000b0>.e-con-inner,.elementor-element-jas000fa>.e-con-inner{position:relative;z-index:1}

/* ---------- phone header: make the row actually fit ----------
   At 375px the GET MATCHED button rendered 157px wide inside a 92px column,
   running 31px past the viewport and clipping the primary CTA. Let the column
   size to its content and tighten the button so the whole row fits. */
@media(max-width:560px){
  .elementor-element-jasaae63{width:auto!important;flex:0 0 auto!important;overflow:visible!important}
  .elementor-element-jasaae66{padding:10px 6px!important}
  .elementor-element-jasaae63 .elementor-button{padding:10px 12px!important;font-size:var(--jas-fs-label)!important;letter-spacing:.02em!important;white-space:nowrap}
}

/* ---------- mobile: stop the closed Xpro off-canvas panel from widening the page ----------
   The panel is parked at left:100% and is never clipped, so it extends scrollWidth
   to ~406px at a 375px viewport and the whole page scrolls sideways.
   overflow-x:clip is used in preference to hidden because it does not create a
   scroll container, so sticky/fixed positioning elsewhere is unaffected. */
@media(max-width:1024px){
  html{overflow-x:hidden;overflow-x:clip}
  body{overflow-x:hidden;overflow-x:clip}
}

@media(prefers-reduced-motion:reduce){.jv-heroimg img{filter:none}}
/* ---- jas-mobile ---- */

/* --- track-blowout guards (all breakpoints) --- */
.jas-studies{grid-template-columns:248px minmax(0,1fr);}
@media(max-width:900px){.jas-studies{grid-template-columns:minmax(0,1fr);}}
.jas-results,.jas-list,.jas-boxes{min-width:0;}
.jas-srow h3,.jas-conds,.jas-sloc,.jas-shook{overflow-wrap:anywhere;}

/* --- filter toggle: plain heading on desktop, button on mobile --- */
.jas-filters>h2>.jas-ftoggle{display:block;width:100%;background:none !important;border:0 !important;border-radius:0 !important;padding:0 !important;margin:0 !important;font:inherit !important;color:inherit !important;letter-spacing:inherit !important;text-transform:none !important;text-align:left !important;box-shadow:none !important;cursor:default;}
.jas-filters>h2>.jas-ftoggle .jas-fcount{display:none;}

/* --- phones: stack list-row CTAs --- */
@media(max-width:720px){
.jas-list .jas-srow{flex-wrap:wrap !important;align-items:flex-start !important;gap:0 16px !important;padding:22px 0 !important;}
.jas-list .jas-simg{width:72px !important;height:72px !important;flex:0 0 72px !important;}
.jas-list .jas-sm{flex:1 1 0 !important;min-width:0 !important;}
.jas-list .jas-sc{flex:1 0 100% !important;flex-direction:row !important;align-items:center !important;justify-content:flex-start !important;text-align:left !important;gap:16px !important;margin-top:14px !important;}
.jas-list .jas-a-qualify{white-space:normal !important;padding:13px 18px !important;}
.jas-list .jas-srow h3{font-size:var(--jas-fs-md) !important;line-height:1.35 !important;}
.jas-list .jas-conds{margin-top:7px !important;}
.jas-boxes .jas-a-details{min-width:0 !important;}
.jas-rtop{align-items:center !important;gap:10px 14px !important;}
.jas-count{font-size:var(--jas-fs-eyebrow) !important;}
.jas-vt button{padding:10px 14px !important;min-height:40px !important;}
.jas-studies{gap:22px !important;}
}

/* --- mobile header row ---
 * Elementor scaled the logo fluidly down to 44x24 inside an 84px-tall bar, and
 * the "Get matched" anchor is white-space:nowrap at 157px inside a ~109px slot,
 * so it was clipped by its own container on phones. Mobile layout is now:
 * logo (42px tall) left, hamburger hard right, and the Get matched CTA moves
 * into the drawer panel as a full-width button (injected in jas_mobile_js). */
@media(max-width:767px){
.elementor-element-jasaae64{padding-left:0 !important;}
.elementor-element-jasaae64 img{height:42px !important;width:auto !important;max-width:none !important;}
.elementor-element-jasaae66{display:none !important;}
/* the nav container is a column flex, so flex-end on the cross axis is what
   pulls the hamburger to the right edge of the header row */
.elementor-element-jasaae65{align-items:flex-end !important;margin-left:auto !important;padding-right:0 !important;}
/* drawer list is content-width by default; stretch it so links get real
   tap targets and the CTA can read as a full-width button */
.xpro-elementor-horizontal-navbar-nav{width:100% !important;align-items:stretch !important;}
.xpro-elementor-horizontal-navbar-nav>li>a{padding:13px 0 !important;font-size:var(--jas-fs-base) !important;}
.jas-mnav-cta{margin-top:20px !important;}
.jas-mnav-cta>.jas-mnav-btn{display:block !important;background:var(--jas-accent) !important;color:#fff !important;font:700 var(--jas-fs-btn)/1 Inter,sans-serif !important;letter-spacing:.5px !important;text-transform:uppercase !important;padding:16px 18px !important;text-align:center !important;text-decoration:none !important;}
.jas-mnav-cta>.jas-mnav-btn:hover{background:var(--jas-accent-deep) !important;}
}
@media(min-width:768px){.jas-mnav-cta{display:none !important;}}

/* --- narrow phones: stack the two CTAs so the button never wraps mid-word --- */
@media(max-width:380px){
.jas-list .jas-sc{flex-direction:column !important;align-items:stretch !important;gap:10px !important;}
.jas-list .jas-a-qualify{text-align:center !important;}
.jas-list .jas-a-details{align-self:center !important;text-align:center !important;}
}

/* --- collapsible filter panel --- */
@media(max-width:900px){
.jas-filters>h2{margin:0 0 18px !important;}
.jas-filters>h2>.jas-ftoggle{display:flex !important;align-items:center;gap:12px;padding:14px 16px !important;border:1px solid #d9dde2 !important;background:#fff !important;font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif !important;letter-spacing:.06em !important;text-transform:uppercase !important;color:var(--jas-footer) !important;cursor:pointer !important;-webkit-user-select:none;user-select:none;}
.jas-filters>h2>.jas-ftoggle::after{content:'';flex:0 0 auto;margin-left:auto;width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .16s ease;}
.jas-filters.jas-f-open>h2>.jas-ftoggle{border-color:var(--jas-accent) !important;color:var(--jas-accent) !important;}
.jas-filters.jas-f-open>h2>.jas-ftoggle::after{transform:rotate(-135deg) translateY(-2px);}
.jas-filters>h2>.jas-ftoggle .jas-fcount{display:inline;font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.04em;color:var(--jas-accent);text-transform:none;}
.jas-filters.jas-f-ready .jas-fgroup{display:none;}
.jas-filters.jas-f-ready.jas-f-open .jas-fgroup{display:block;}
.jas-filters .jas-notsure{margin-top:0;}
.jas-filters .jas-notsure a{display:inline-block;padding:12px 0;min-height:24px;}
.jas-fchip{padding:11px 14px !important;}
}

/* ---- jas-navy ---- */

:root{--jasnavy-grad:linear-gradient(115deg,var(--jas-footer) 0%,var(--jas-grad-b) 55%,var(--jas-grad-c) 100%);--jassteel:104,152,208;}
/* gradient on every dark band, on every page */
.elementor-element-jas0006b:not(#jasx),.elementor-element-jas00092:not(#jasx),.elementor-element-jas000b0:not(#jasx),.elementor-element-jas000c9:not(#jasx),.elementor-element-jas000eb:not(#jasx),.elementor-element-jas00006:not(#jasx),.wj-dark,.jasx-hero,.jasx-comm,.jasx-band-navy:not(#jasx),.jasl-record{background:var(--jasnavy-grad)!important;position:relative;overflow:hidden;}
/* ONE texture everywhere: fine steel dot grid */
.elementor-element-jas0006b:not(#jasx)::before,.elementor-element-jas00092:not(#jasx)::before,.elementor-element-jas000b0:not(#jasx)::before,.elementor-element-jas000c9:not(#jasx)::before,.elementor-element-jas000eb:not(#jasx)::before,.elementor-element-jas00006:not(#jasx)::before,.wj-dark::before,.jasx-hero::before,.jasx-comm::before,.jasx-band-navy:not(#jasx)::before,.jasl-record::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:none!important;background-image:radial-gradient(rgba(var(--jassteel),.09) 1px,transparent 1px)!important;background-size:26px 26px!important;}
/* thin circle arcs, alternating corners */
.elementor-element-jas0006b:not(#jasx)::after,.elementor-element-jas000b0:not(#jasx)::after,.elementor-element-jas000c9:not(#jasx)::after,.wj-cta::after,.jasl-record::after{content:'';position:absolute;z-index:0;pointer-events:none;width:560px;height:560px;border-radius:50%;border:1px solid rgba(var(--jassteel),.16);background:none!important;}
.elementor-element-jas0006b:not(#jasx)::after{left:auto;right:-160px;top:-220px;bottom:auto;}
.elementor-element-jas000b0:not(#jasx)::after{left:-220px;right:auto;top:auto;bottom:-300px;width:620px;height:620px;}
.elementor-element-jas000c9:not(#jasx)::after{left:auto;right:-200px;top:auto;bottom:-260px;}
.wj-cta::after{left:auto;right:-180px;top:auto;bottom:-280px;}
.jasl-record::after{left:-240px;right:auto;top:auto;bottom:-300px;width:620px;height:620px;}
/* content above texture */
.elementor-element-jas0006b>.e-con-inner,.elementor-element-jas00092>.e-con-inner,.elementor-element-jas000b0>.e-con-inner,.elementor-element-jas000c9>.e-con-inner,.elementor-element-jas000eb>.e-con-inner,.elementor-element-jas00006>.elementor-container,.elementor-element-jas00006>.e-con-inner,.wj-dark>*,.jasx-hero>*,.jasx-comm>*{position:relative;z-index:1;}
/* dark-band surfaces: translucent steel instead of slate grey */
.jasf-card{background:rgba(var(--jassteel),.08)!important;border-color:rgba(var(--jassteel),.22)!important;}
.jashw-grid{border-top-color:rgba(var(--jassteel),.28)!important;}
.jashw-cell{border-left-color:rgba(var(--jassteel),.22)!important;}
@media(max-width:900px){.jashw-cell{border-top-color:rgba(var(--jassteel),.22)!important;}}
.jashw-pill{background:rgba(var(--jassteel),.09)!important;border-color:rgba(var(--jassteel),.22)!important;}
.jashw-ic{background:rgba(var(--jassteel),.18)!important;}
.elementor-element-jas000e9:not(#jasx){background-color:rgba(var(--jassteel),.08)!important;border-color:rgba(var(--jassteel),.25)!important;}
.elementor-element-jas000e9 .e-con{border-color:rgba(var(--jassteel),.22)!important;}
/* jasx template dark surfaces */
.jasx-statcard{background:var(--jas-navy)!important;}
.jasx-statcard .s{color:var(--jas-on-dark-muted)!important;}
.jasx-hbtn-o{border-color:rgba(var(--jassteel),.45)!important;}

/* ---- jas-ds ---- */

/* --- section eyebrows: one spec everywhere --- */
.jas-eyebrow .elementor-heading-title,.wj-eyebrow,.jashw-k,.jasg-k,.jasen-k,
.jasx-label,.jasx-k,.jasx-comm-k,.jas-hubstudies-k,.jas-hubflip-k{
  font:var(--jas-w-ui,700) var(--jas-eyebrow-size,13px)/1.4 var(--jas-font,Inter,sans-serif)!important;
  letter-spacing:var(--jas-eyebrow-track,.115em)!important;
  text-transform:uppercase!important;display:block!important;}
.jas-eyebrow .elementor-heading-title::before,.wj-eyebrow::before,.jashw-k::before,
.jasg-k::before,.jasen-k::before,.jasx-label::before,.jasx-k::before,
.jasx-comm-k::before,.jas-hubstudies-k::before,.jas-hubflip-k::before{content:none!important;}
/* --- dark footer (template 35885, flat var(--jas-footer) by design): readable links --- */
.elementor-element-jase7f10 a{color:var(--jas-on-dark-muted,var(--jas-on-dark-muted))!important;text-decoration:none;}
.elementor-element-jase7f10 a:hover{color:var(--jas-on-dark,#FFFFFF)!important;}
.elementor-element-jase7f10 .elementor-element-jase7ef1 a{color:var(--jas-on-dark,#FFFFFF)!important;}
/* --- ONE CONTENT EDGE (2026-08-19, measured in Chrome at 1440px) ---
   Every top-level Elementor container on the site is already the same box:
   max-width:min(100%,1280px). The bands did not line up because their INNER
   gutter was set three different ways. Measured on the home page: 12 boxed
   containers with 0px padding (content 1280, text edge 73), one with 10px
   (content 1260, edge 83) and three with 20px (content 1240, edge 93). The
   10px and 20px ones came from per-id !important patches in jas_rhythm.php
   that were calibrated against an older DOM. Those are now deleted and the
   gutter is declared ONCE, here, from the token.

   Canonical result: content 1240 at text edge 93 on a 1440 viewport, which is
   what the theme wrappers (.jasx-wrap, .jash-in, .wj-in, .jasph-close-in)
   already measured, so Elementor bands and theme-rendered pages finally share
   an edge. Nested boxed containers reset to 0 so depth never adds a second
   gutter, and shortcode blocks rendered inside a container inherit the
   parent's gutter rather than contributing their own. */
/* MOBILE FIRST, added 2026-08-19 after measuring a phone. Elementor gives
   every .e-con its own inline padding (20px phone, 24px from 768) AND every
   nested container another 10px. Desktop hides the stacking because the boxed
   inner caps at 1280 and centres, absorbing it. A 360px phone does not:
   measured 20+20+10+10+10 = 70px per side, leaving 220px of a 360px screen.
   So the gutter is contributed by EXACTLY ONE element, the boxed container's
   .e-con-inner, at every width. Desktop lands on the same 1240@93 as before;
   the phone gains 100px of usable width. */
.e-con.e-con-boxed{padding-left:0 !important;padding-right:0 !important;}
.e-con.e-con-boxed > .e-con-inner{
  padding-left:var(--jas-gutter,20px);padding-right:var(--jas-gutter,20px);
  max-width:var(--jas-container,1280px);box-sizing:border-box;}
/* a nested boxed container sits inside the gutter already */
.e-con-inner .e-con.e-con-boxed > .e-con-inner{padding-left:0;padding-right:0;max-width:none;}
/* nested layout containers contribute nothing. The six research-area tiles are
   the only nested containers on the site with a background AND a border, i.e.
   the only real cards, so they keep their 24px. */
.e-con-inner .e-con-full:not(.elementor-element-jas0002d):not(.elementor-element-jas00032):not(.elementor-element-jas00037):not(.elementor-element-jas0003c):not(.elementor-element-jas00041):not(.elementor-element-jas00046){padding-left:0 !important;padding-right:0 !important;}
/* Scoped to BOXED parents on purpose. A wrapper inside a boxed container is
   already inside the gutter, so it must contribute none. A wrapper inside a
   FULL-width container (.jasph-close-in, measured at 93 on the hub pages) is
   the only thing providing the gutter there, so it keeps its own. */
.e-con-boxed > .e-con-inner .jchub,.e-con-boxed > .e-con-inner .jas-wrap,
.e-con-boxed > .e-con-inner .jas-studies,.e-con-boxed > .e-con-inner .dl-sponsors,
.e-con-boxed > .e-con-inner .jasf2,.e-con-boxed > .e-con-inner .jash-in,
.e-con-boxed > .e-con-inner .jasx-wrap,.e-con-boxed > .e-con-inner .wj-in{
  padding-left:0;padding-right:0;max-width:none;}

/* --- FULL-BLEED WITHOUT THE SCROLLBAR OVERSHOOT (2026-08-19) ---
   A 100vw full-bleed overshoots by the width of a classic scrollbar, because
   100vw counts it and the layout viewport does not. It is clipped and cannot
   be panned, but it kept reporting 8px of overflow, and an audit that always
   shows a known-benign number is an audit people stop reading.
   Below 1280 the boxed inner is NOT capped, so it spans the viewport and the
   band can bleed with plain negative margins of exactly one gutter: no vw, no
   scrollbar, exact. At 1280 and up the cap binds and vw is still needed, where
   the few clipped pixels of a full-width gradient are invisible.
   (An @property capture of calc(100vw - 100%) was tried first and does not
   work: a registered <length> cannot hold a percentage, so it fell back to 0.) */
@media (max-width:1279px){
  .jasph-close:not(#jasx){width:auto !important;
    margin-left:calc(-1 * var(--jas-gutter)) !important;
    margin-right:calc(-1 * var(--jas-gutter)) !important;}
}

/* --- component headings outrank the Elementor kit's tag defaults (2026-08-18) ---
   The Elementor kit publishes `.elementor-kit-<id> h1 .. h6`, which is a
   (0,1,1) selector. A component title written as a single class - .jasf2-t,
   .jasen-q, .jasx-sh2 - is (0,1,0), so the KIT wins and a study-card title
   renders at the section-heading size. That is why the featured cards showed
   26px titles, and it is a specificity problem, not a scale problem: the
   component already asked for the right step and simply lost.
   Descendant rules like `.jasx-locband h2` are (0,1,1) and tie with the kit,
   which our later source order settles, so only the single-class ones need
   help. Prefixing with `body` lifts them to (0,1,2) and no !important is
   needed. Sizes still come from the scale; this block only settles who wins.
   Add a line here whenever a new component title uses a real heading tag. */
body h1.jasx-h1,body h1.jasn-h1{font-size:var(--jas-fs-h1);}
body h2.jashw-h,body h2.jasg-h,body h2.jash-h2,body h2.jasl-h2d,
body h2.jasx-contact-h2{font-size:var(--jas-fs-h2);}
body h2.jasx-sh2,body h2.jasx-sec-h,body h3.jasg-lh{font-size:var(--jas-fs-h3);}
body h2.jasen-q,body h2.jasx-crith{font-size:var(--jas-fs-lg);}
body h3.jasf2-t,body h3.jasl-h3{font-size:var(--jas-fs-md);line-height:1.32;}

/* --- button letter-spacing: one value everywhere --- */
.elementor-widget-button .elementor-button,.jasd-btn,.jas-btn,.wj-btn,
.jasx-hbtn,.jasx-hbtn-o,.jasx-cta-p,.jasx-cta-s,.jas-qcta-b,.jasx-mcta a,
.jas-c-btn,.jas-mnav-cta>.jas-mnav-btn,.fluentform .ff-btn-submit,
.fluentform .ff-btn-next,.fluentform .ff-btn-prev{letter-spacing:var(--jas-btn-track,.07em)!important;}

/* ---- jas-responsive ---- */

/* ============================================================
   0. RESTORE SCROLLING BELOW 1024px
   jas_visuals.php sets html{overflow-x:hidden;overflow-x:clip} inside
   @media(max-width:1024px) to mask horizontal overflow. Setting overflow-x on
   the ROOT element propagates to the viewport and makes the document
   programmatically unscrollable: window.scrollTo(0,600) returned 0 on a 3833px
   page. That is the real cause of audit P0-3 -- Fluent Forms could not scroll
   to the next step, and neither could anchor links or the skip link.
   The hack is no longer needed: horizontal overflow now measures 0 across every
   template at 320-1440px, and body{overflow-x:clip} below still catches any
   regression without creating a scroll container.
   ============================================================ */
@media(max-width:1024px){
  html{overflow-x:visible !important}
  body{overflow-x:clip}
}

/* ============================================================
   0a. ONE CONTENT WIDTH: 1280
   Measured at 1440px across every template, comparing CONTENT boxes (padding
   excluded). The site already agreed on 1280@73 almost everywhere:
     header, footer                        1280@73
     home page, all 13 sections            1280@73
     condition / article / location pages  1280@73 (.jasx-wrap)
     every Elementor page section          1280@73
   The only holdouts were the custom hub components, capped at max-width:1180,
   which rendered 1180@123 — 50px narrower each side than the section they sit
   in, so the studies hub, conditions hub, locations hub and blog grid were all
   inset from the header above them. Matching them to 1280 needs no change to
   the header or footer.
   ============================================================ */

/* Align to x=83, not 73.
   Elementor puts 10px of side padding on its containers, so section headings
   render at 83 (or 93 where two containers nest). The header's logo widget also
   sits at 83. The odd ones out were the shortcode-rendered blocks — the studies
   hub, condition/location/blog grids, featured-studies cards and sponsor wall —
   which render straight into the row with no padding and so started at 73.
   Matching them to 83 aligns everything to the edge the header and headings
   already use, and needs no change to the header or footer. box-sizing is
   border-box, so the outer width stays 1280 and the content becomes 1260@83. */
.jas-studies,.jchub,.jas-wrap,.dl-sponsors{box-sizing:border-box}
/* The featured cards get MARGIN, not padding. .jasf-card.jasf-big carries its own
   34px/36px internal padding, which its full-bleed .jasf-img cancels with
   negative margins; overriding that padding to 10px made the image overflow the
   card by 35px each side. Margin shifts the card without touching the inside. */
.jasf-card.jasf-big,.jasf-grid{margin-left:var(--jas-gutter-shortcode);margin-right:var(--jas-gutter-shortcode)}

/* Featured-studies cards (jas_visuals.php): .jasf-img already asks for the right
   width — calc(100% + 72px) on the lead, +52px on the thumbnails — so that its
   negative margins can break it out of the card padding for a full-bleed image.
   A global img{max-width:100%} was capping it back to the CONTENT box, so the
   lead image rendered 1206 instead of 1280 and stopped 73px short of the card's
   right edge (thumbnails 53px short). The calc needs max-width released. */
.jasf-img{max-width:none !important}

/* ============================================================
   0b. PAGE-SPECIFIC LAYOUT CORRECTION — /why-join-a-study/ (page 9693)
   That page's body container had align-items:center on a column flex, so its
   single child shrank to its content width (845px) and centred at x=300, while
   the hero and footer containers use stretch and sit on the 73px page gutter.
   The result was body copy indented ~210px further than the H1 above it.
   The 845px measure is right for reading, so only the alignment is corrected —
   flex-start puts it back on the gutter without making the lines longer.
   ============================================================ */
/* The jas00009 / jas0000a pair is a shared Elementor pattern used by 36 of the
   41 pages. Its .e-con-inner carries align-items:center on a column flex, so the
   single child shrink-wraps to 845px and centres at x=290 inside a 1280
   container — leaving ~435px empty on the right and never lining up with the
   hero, the footer, or the 896px measure the theme templates use. Elementor
   resolves align-items from a --align-items custom property, so the variable is
   what has to be overridden.

   Applied to the PROSE pages only. The other 30 pages on this pattern are
   questionnaires and forms, where a centred ~845 column is correct: stretching a
   text input to 1260px would make those pages worse, not more consistent.
   Consistency here means one coherent system, not one identical width. */
.elementor-9693 .elementor-element-jas0000a > .e-con-inner,
.elementor-45 .elementor-element-jas0000a > .e-con-inner,
.elementor-16853 .elementor-element-jas0000a > .e-con-inner,
.elementor-3958 .elementor-element-jas0000a > .e-con-inner,
.elementor-49 .elementor-element-jas0000a > .e-con-inner{
  --align-items:stretch !important;align-items:stretch !important}
.elementor-9693 .elementor-element-jas0000a > .e-con-inner > .elementor-element,
.elementor-45 .elementor-element-jas0000a > .e-con-inner > .elementor-element,
.elementor-16853 .elementor-element-jas0000a > .e-con-inner > .elementor-element,
.elementor-3958 .elementor-element-jas0000a > .e-con-inner > .elementor-element,
.elementor-49 .elementor-element-jas0000a > .e-con-inner > .elementor-element{width:100% !important}
/* ============================================================
   0c. PHONE CTAs GO FULL WIDTH (2026-08-19, measured)
   Elementor buttons are nowrap. The 29-character label on the community band
   renders 324px at 14px, which does not fit a 320px content column on a 360px
   phone, so the whole document scrolled sideways. Rather than police label
   length forever, phone CTAs become full-width blocks that may wrap: a
   two-line button beats a page that pans, and full-width primary actions are
   the mobile norm anyway.
   ============================================================ */
@media(max-width:640px){
  .elementor-widget-button .elementor-button{display:flex;width:100%;
    justify-content:center;text-align:center;white-space:normal;}
}

/* ============================================================
   1. TRACK / OVERFLOW GUARDS  (all breakpoints)
   A grid track of `1fr` floors at min-content. Where content holds an
   unbreakable run (nbsp-joined phrases, long URLs) the track blows past its
   container and body{overflow-x:clip} then silently CLIPS the text.
   ============================================================ */
.jasx-grid{grid-template-columns:minmax(0,1fr) 340px;}
@media(max-width:960px){.jasx-grid{grid-template-columns:minmax(0,1fr);}}
.jasx-main,.jasx-wrap,.jasx-grid,.jasx-content,.jasx-side,.jasx-swrap{min-width:0;}
/* A grid or flex ITEM has an automatic minimum of min-content, so a track
   written as plain 1fr grows past its container when an item cannot shrink.
   Measured at 320px: .jasx-swrap resolved a 297px track inside 265px, and
   .jash-topicgrid a 309px track inside 265px. Flooring the ITEMS is the
   general cure and does not require rewriting 111 track declarations.
   Only containers whose children hold long labels are listed. */
.jash-topicgrid>*,.jash-sergrid>*,.jash-grid>*,.jash-parts>*,
.jasl-people>*,.jasl-areas>*,.jasl-tl li>*,.jasl-vrow>*,.jasl-steps li>*,
.jasx-scards>*,.jasx-loccards>*,.jasx-ccards>*,.jasx-ocards>*,.jasx-rrcards>*,
.jas-boxes>*,.jas-grid>*,.jchub-grid>*,.jasf2-grid>*,.jas-lrn-grid>*,
.wj-cards4>*,.wj-rights>*,.wj-bal>*{min-width:0;}
/* the topic link is itself a flex row; its label must be allowed to wrap */
.jash-topic{min-width:0;}
/* The label may shrink and break; the count may not. This was one rule over
   every child, so min-width:0 let the count shrink to 12px and 41 wrapped to
   4 over 1, while overflow-wrap:break-word let the label break mid-word
   (Neurodegenerativ / e). Splitting it keeps the overflow protection on the
   label, where it was needed, and takes it off the digits. */
.jash-topic>.t{min-width:0;overflow-wrap:break-word;}
.jash-topic>.n{flex:0 0 auto;white-space:nowrap;overflow-wrap:normal;}
/* auto-fill tracks must not floor above a narrow container */
.jasx-rrcards{grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr)) !important;}

/* article bodies: let unbreakable runs wrap, keep media inside the column */
.jasx-content,.jasx-content p,.jasx-content li,.jasx-content h1,.jasx-content h2,
.jasx-content h3,.jasx-content h4,.jasx-content h5,.jasx-content h6,.jasx-content blockquote{overflow-wrap:break-word;}
.jasx-content img,.jasx-content video,.jasx-content iframe,.jasx-content embed,.jasx-content object{max-width:100%;}
.jasx-content img{height:auto;}
/* wide tables scroll in place instead of being clipped */
.jasx-content table{display:block;width:100%;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;}

/* condition names like "Neurological/Neurodegenerative" are a single 30-char
   token; inside overflow:hidden cards they were clipped rather than wrapped */
.jchub-card,.jchub-hbody,.jchub-t,.jchub-k,.jas-card,.jasx-card,.jasx-card-t{overflow-wrap:anywhere;}

/* hub search: the wrapper was sized by the input's fixed 380px, so the input's
   own max-width:100% resolved against the wrong box and ran 25px off-screen */
.jchub-ftop,.jchub-ftop>*{min-width:0;max-width:100%;}
.jchub-search{max-width:100% !important;box-sizing:border-box !important;}

/* jas_theme_render prints inline grid-template-columns on .jasx-cards, and an
   inline style outranks every media query — only !important can reach it. The
   1-column intent at <=640px was being silently ignored. */
@media(max-width:640px){
.jasx-cards,.jasx-gal{grid-template-columns:1fr !important;}
}
/* .jas-qcta-b is white-space:nowrap (227px) inside a column-flex card action
   area that is only as wide as its card — it ran 73px past the card edge. */
@media(max-width:900px){
.jasx-card-a{align-items:stretch !important;}
.jasx-card-a .jas-qcta-b,.jasx-comm .jas-qcta-b{white-space:normal !important;text-align:center;}
.jas-qcta-b{max-width:100%;box-sizing:border-box;}
}

/* ============================================================
   2. FOCUSABLE TEXT FIELDS >= 16px  (iOS zooms the page below 16px)
   ============================================================ */
.jas-search,.jchub-search,input[type=text],input[type=search],input[type=email],
input[type=tel],input[type=number],input[type=url],input[type=date],select,textarea{font-size:var(--jas-fs-base);}

/* ============================================================
   3. TOUCH TARGETS
   Gated on pointer type as well as width: a 1024px tablet is a touch device
   and was still getting 16-22px targets under a width-only breakpoint.
   ============================================================ */
@media(max-width:900px),(pointer:coarse){
/* Elementor's small buttons rendered only 22px tall */
.elementor-button.elementor-size-sm,.elementor-button.elementor-size-xs{display:inline-flex !important;align-items:center;justify-content:center;min-height:44px;padding-top:12px !important;padding-bottom:12px !important;}
/* standalone text CTAs that were 13-21px tall */
.jasf-quiet,.jchub-view,.jasx-quiet,.jasx-golink,.jas-notsure a,.jasx-card-a a{display:inline-flex !important;align-items:center;min-height:44px;}
/* theme-template controls, measured 2026-08-19 on study / condition / location
   / article pages, which the earlier sweeps never covered: the sticky rail CTA
   pair sat at 42px, the location rail link at 20px and the on-this-page links
   at 31px. Card TITLES are deliberately not included - they are text. */
.jasx-cta-p,.jasx-cta-s,.jasl-raillink,.jasl-quiet,.jasx-ctoc a,.jasn-ontoc a,
.jasx-rail-card>a,.jasx-rail-card p>a,.jasn-railseries li a{
  min-height:44px !important;display:flex !important;align-items:center !important;}
.jasx-cta-p,.jasx-cta-s{justify-content:center !important;}
/* chips + segmented tabs */
.jchub-tab,.jas-fchip,.jas-vt button{min-height:44px !important;}
/* 12px uppercase is too small for a primary filter control */
.jas-fchip{font-size:var(--jas-fs-eyebrow) !important;}
/* secondary "Study details" CTA sat 18px tall directly under the primary button */
.jas-cta,.jas-a-details{display:inline-flex !important;align-items:center;min-height:44px;}
/* breadcrumb links were 16px tall (.jasx-crumb on theme templates,
   the jas00001 widget on the Elementor-built pages) */
.jasx-crumb,.elementor-element-jas00001 p{line-height:1.9;}
.jasx-crumb a,.elementor-element-jas00001 a{display:inline-flex;align-items:center;min-height:44px;padding:2px;}
/* header logo link measured 42px, two short of the target */
.elementor-element-jasaae61 a,.jas-hlogo a{display:inline-flex !important;align-items:center;min-height:44px !important;}
/* the cookie-choices control sits inline in the footer legal sentence; inline-flex
   keeps it in the line while giving it a real tap area */
.jas-consent-reopen.in-footer{display:inline-flex !important;align-items:center;min-height:44px;}
/* drawer close button to match the 44px toggler */
button.xpro-elementor-horizontal-menu-close{min-width:44px !important;min-height:44px !important;}
/* top utility bar link (visible from 768px up) was a 16px tall target */
.elementor-element-jasc350a a,.elementor-element-jasd6d82 a{min-height:24px;}
.elementor-element-jasc350a .elementor-widget-text-editor a,.elementor-element-jasd6d82 .elementor-widget-text-editor a{display:inline-block;padding-top:8px;padding-bottom:8px;}
/* the hamburger is the most-used control on mobile — 40px to a full 44px */
button.xpro-elementor-horizontal-menu-toggler{min-width:44px !important;min-height:44px !important;}
/* a link that is the whole list item is a real target, not an inline-in-sentence
   link, so WCAG 2.5.8's inline exception does not cover it (was 17-20px tall) */
/* display:block, never inline-block: an inline-block anchor is an atomic box
   that cannot wrap, so long link text would overflow the column instead */
.jasx-main li>a:only-child,.jasx-rail-card>a,.jasx-rail-card p>a,
.elementor-widget-text-editor li>a:only-child,
a.jas-tap{display:block;padding-top:10px;padding-bottom:10px;}
.jasx-golink{font-size:var(--jas-fs-eyebrow) !important;}
/* footer link lists were 17px inline targets */
.elementor-element-jase7f10 .elementor-widget-text-editor a{display:inline-flex;align-items:center;min-height:44px;padding-top:6px;padding-bottom:6px;}
/* footer legal/disclaimer copy was 12px */
.elementor-element-jase7f10 p{font-size:var(--jas-fs-eyebrow);}
/* floating back-to-top control */
a.scroll-top,.scroll-top{min-width:44px;min-height:44px;display:inline-flex !important;align-items:center;justify-content:center;}
}

/* ============================================================
   4. FLUENT FORMS ON MOBILE  (the whole conversion funnel)
   Radios/checkboxes were 13x13px. Each option becomes a full-width tappable
   row in the existing design language: 0 radius, hairline border, action blue.
   ============================================================ */
@media(max-width:900px),(pointer:coarse){
.fluentform .ff-el-form-check{margin:0 0 10px !important;}
.fluentform .ff-el-form-check-label{display:flex !important;align-items:center;gap:12px;min-height:48px;padding:11px 14px !important;border:1px solid #d5d9dd;background:#fff;font-size:var(--jas-fs-base) !important;line-height:1.35 !important;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.fluentform .ff-el-form-check-input{width:24px !important;height:24px !important;min-width:24px;margin:0 !important;flex:0 0 24px;accent-color:var(--jas-accent);}
.fluentform .ff-el-form-check-label:has(input:checked){border-color:var(--jas-accent);box-shadow:inset 0 0 0 1px var(--jas-accent);}
/* step nav + submit: full-width primary, 48px tall, no float */
.fluentform .ff-btn-next,.fluentform .ff-btn-submit,.fluentform button[type=submit]{width:100% !important;min-height:48px !important;justify-content:center;}
.fluentform .ff-float-right{float:none !important;}
.fluentform .ff-btn-prev{min-height:48px !important;width:100% !important;margin:0 0 10px !important;}
.fluentform .step-nav{display:flex !important;flex-direction:column-reverse;gap:0;}
.fluentform .ff-el-group{margin-bottom:20px !important;}
/* privacy/consent notes under the fields were 12px */
.fluentform .ff-custom_html p,.fluentform .ff-custom_html{font-size:var(--jas-fs-eyebrow) !important;line-height:1.55 !important;}
}

/* ============================================================
   5. READABILITY  — 13px floor, prose measure, modern wrapping
   ============================================================ */
.jasx-content{line-height:1.65;}
.jasx-content p,.jasx-content li{text-wrap:pretty;}
.jasx-content h1,.jasx-content h2,.jasx-content h3,.jasx-h1,.jasx-sec-h{text-wrap:balance;}
@media(max-width:900px){
.jasx-content h2{font-size:var(--jas-fs-h3) !important}
.jasx-content h3,.jasx-content h4{font-size:var(--jas-fs-lg) !important}
/* sub-13px text raised to a readable floor */
.jchub-count{font-size:var(--jas-fs-eyebrow) !important;}
.jasx-fnote,.jasx-qnote,.jasx-reg,.jasf-k,.jas-commband-k,.dl-sponsors-k,.jasx-k,.qk{font-size:var(--jas-fs-sm) !important;line-height:1.55 !important;}
.jas-conds,.jas-smeta{font-size:var(--jas-fs-label) !important;}
}

/* ============================================================
   5b. CONDITION HUB CARDS - mobile crop
   ============================================================ */
/* .jchub-h is flex-direction:row / align-items:stretch, so the card image is
   stretched to whatever height the text makes the card. Measured 2026-08-07 at
   375px: 104x200-243, i.e. only 29% of the 16:9 source width was visible. The v2
   image set only guarantees the subject inside a 4:3 safe area, so stack the image
   on top at full width below 520px. Desktop is deliberately untouched: 158x130
   shows 68% of the width and all 23 images were verified to read at that crop. */
/* Match the Learn tiles (jas_learn.php): images rest slightly dulled and lift to
   brighter-than-normal on hover. Same values as .jas-lrn-img so the two card
   systems read as one. Touch devices never get the hover lift, so they rest a
   little brighter and drop the transition. */
.jchub-h .jchub-img{filter:brightness(.82) saturate(.96);transition:filter .3s ease;}
.jchub-h:hover .jchub-img,.jchub-h:focus-within .jchub-img{filter:brightness(1.06) saturate(1.02);}
@media(hover:none){
  .jchub-h .jchub-img{filter:brightness(.88) saturate(1);transition:none;}
}

@media(max-width:520px){
  .jchub-h{flex-direction:column !important;}
  .jchub-h .jchub-img{width:100% !important;flex:0 0 auto !important;height:auto !important;aspect-ratio:16/9;}
}

/* ============================================================
   6. MODERN BASELINE  (a11y + device fit)
   ============================================================ */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;}
/* anchor jumps must clear the sticky header */
[id]{scroll-margin-top:104px;}
/* The focus ring lived here at 2px and in jas_a11y.php at 3px, both
   !important, so summary and [tabindex] took the 2px and everything else took
   the 3px. Both removed 2026-08-21; one tokenised ring now lives in
   jas_actions.php at wp_head 150. */
/* notched devices in landscape */
@media(max-width:900px){
.elementor-element-jasc350a>.e-con-inner,.elementor-element-jasd6d82>.e-con-inner{padding-left:max(0px,env(safe-area-inset-left));padding-right:max(0px,env(safe-area-inset-right));}
.xpro-elementor-horizontal-navbar-wrapper{padding-right:max(30px,env(safe-area-inset-right)) !important;}
}
@media(prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important;}
}
/* 'Study details' was a quiet 'or ...' footnote; reading the study first is the
   primary patient behaviour, so it becomes a true secondary button under the
   qualify CTA — same bordered style as the study-page rail (2026-08-12). */
.jas-list .jas-a-details,.jas-boxes .jas-a-details{order:1 !important;display:flex !important;
  align-items:center;justify-content:center;align-self:auto !important;width:auto !important;
  background:#fff !important;color:var(--jas-footer) !important;border:1px solid #cfd5db !important;
  padding:10px 14px !important;min-height:44px !important;margin:0 !important;
  font:700 var(--jas-fs-btn-sm)/1 Inter,sans-serif !important;letter-spacing:.05em !important;
  text-transform:uppercase !important;text-decoration:none !important;}
.jas-list .jas-a-qualify,.jas-boxes .jas-a-qualify{order:2 !important;align-self:auto !important;text-align:center !important;min-height:44px !important;padding:12px 16px !important;font-size:var(--jas-fs-btn) !important;}
/* Option 01 (user, 2026-08-25): on desktop the action column stacks instead of
   running as one line. Stacked, the column sizes to the wider button rather than
   to both plus a gap: 222px instead of 349px, and the title column takes the
   127px back. Measured on the live list before shipping, six rows fell from
   1656px to 1282px of total height, because titles stop wrapping to four and
   seven lines. Wider titles and a shorter page, from one rule.

   This restores what the comment above line 323 already described, a secondary
   button under the qualify CTA. That intent was written and then overridden by
   this very media query.

   Order is flipped inside the query. The order:1/order:2 pair above puts details
   on the LEFT in a row, which in a column would put it on TOP. Qualify leads. */
@media (min-width:861px){
.jas-list .jas-sc{flex-direction:column !important;align-items:flex-end !important;justify-content:center !important;gap:10px !important;}
}
/* The order flip starts at 721px, not 861px, because the column starts earlier
   than this file admits: between 721 and 860 the strip is already stacked, from
   the unmediated rule in jas_build. Left alone, qualify would sit on top above
   861 and underneath just below it, which is a flip nobody would design on
   purpose. It predates this change and only became visible once the desktop
   stacked too. Below 721 the strip is a row again and keeps its own order. */
@media (min-width:721px){
.jas-list .jas-a-qualify{order:1 !important;}
.jas-list .jas-a-details{order:2 !important;}
}
/* Phones are stacked too, and were leading with details. That was consistent
   while the desktop row also read details first; once the desktop stacked and
   put qualify on top, the phone became the one place that led with the
   secondary action, which is the width where leading with the primary matters
   most. Same flip, applied to the other stacked state. The 641 to 720 band is
   left alone deliberately: it is a row there, not a column. */
@media (max-width:640px){
.jas-list .jas-a-qualify{order:1 !important;}
.jas-list .jas-a-details{order:2 !important;}
}
.jas-boxes .jas-sc{flex-direction:column !important;align-items:stretch !important;gap:10px !important;}
.jas-boxes .jas-a-details,.jas-boxes .jas-a-qualify{width:100% !important;}
/* phones: both row CTAs are full-width 44px blocks (2026-08-19) */
@media(max-width:640px){.jas-list .jas-a-details,.jas-list .jas-a-qualify{width:100% !important;}
.jas-list .jas-sc{flex-direction:column !important;align-items:stretch !important;gap:10px !important;}}
.jas-list .jas-a-details:hover,.jas-boxes .jas-a-details:hover{background:#fff !important;border-color:var(--jas-accent) !important;color:var(--jas-accent) !important;}
.jas-list .jas-a-details::before,.jas-boxes .jas-a-details::before{content:none !important;}
.jas-list .jas-a-details::after,.jas-boxes .jas-a-details::after{content:none !important;}

/* ---- jas-condmed ---- */
.jascn-fig{margin:26px 0 28px;padding:22px 24px 20px;background:var(--jas-surface);border:1px solid var(--jas-line);}.jascn-k{font:700 var(--jas-fs-eyebrow)/1.2 Inter,sans-serif;letter-spacing:.115em;text-transform:uppercase;color:var(--jas-accent);margin:0 0 14px;padding:0;}.jascn-hero{display:block;margin:0 0 10px;}.jascn-heron{display:block;font-weight:700;font-size:var(--jas-fs-display);line-height:1.02;font-family:Inter,sans-serif;color:var(--jas-navy);letter-spacing:-.015em;font-variant-numeric:proportional-nums;}.jascn-heroc{display:block;font:300 var(--jas-fs-base)/1.5 Inter,sans-serif;color:var(--jas-body);margin-top:8px;max-width:60ch;}.jascn-meter{margin:14px 0 6px;}.jascn-track{display:block;height:10px;background:rgba(104,152,208,.22);overflow:hidden;}.jascn-fill{display:block;height:10px;background:var(--jas-accent);}.jascn-mlbl{display:block;font:700 var(--jas-fs-label)/1.3 Inter,sans-serif;letter-spacing:.04em;color:var(--jas-body);margin-top:7px;text-transform:none;}.jascn-src{display:block;font:400 var(--jas-fs-label)/1.45 Inter,sans-serif;color:var(--jas-muted-soft);margin-top:6px;}.jascn-src a{color:var(--jas-muted-soft);text-decoration:underline;text-underline-offset:2px;}.jascn-src a:hover{color:var(--jas-accent-deep);}.jascn-extra{list-style:none;margin:18px 0 0;padding:18px 0 0;border-top:1px solid var(--jas-line);}.jascn-extra li{font:300 var(--jas-fs-base)/1.55 Inter,sans-serif;color:var(--jas-body);margin:0 0 14px;padding:0 0 0 16px;position:relative;}.jascn-extra li:last-child{margin-bottom:0;}.jascn-extra li:before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;background:var(--jas-steel);}.jascn-extra .jascn-src{margin-top:4px;}.jascn-world{margin-top:18px;padding-top:16px;border-top:1px solid var(--jas-line);}.jascn-wk{display:block;font:700 var(--jas-fs-micro)/1.2 Inter,sans-serif;letter-spacing:.115em;text-transform:uppercase;color:var(--jas-muted);margin-bottom:6px;}.jascn-wv{display:block;font:300 var(--jas-fs-base)/1.55 Inter,sans-serif;color:var(--jas-body);}.jascn-wv b{font-weight:700;color:var(--jas-navy);}.jascn-srcs{margin:34px 0 8px;border-top:1px solid var(--jas-line);padding-top:16px;}.jascn-srcs summary{cursor:pointer;font:700 var(--jas-fs-eyebrow)/1.3 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-accent);list-style:none;}.jascn-srcs summary::-webkit-details-marker{display:none;}.jascn-srcs summary:after{content:" +";font-weight:700;}.jascn-srcs[open] summary:after{content:" \2212";}.jascn-srcs ol{margin:14px 0 0;padding-left:22px;}.jascn-srcs li{font:300 var(--jas-fs-sm)/1.6 Inter,sans-serif;color:var(--jas-muted);margin-bottom:7px;}.jascn-srcs a{color:var(--jas-accent);}.jascn-srcs a:hover{color:var(--jas-accent-deep);}.jascn-rev{font:300 var(--jas-fs-eyebrow)/1.6 Inter,sans-serif;color:var(--jas-muted);margin:16px 0 0;padding-top:12px;border-top:1px solid var(--jas-line);}.jascn-photo{margin:24px 0 26px;}.jascn-photo figcaption{font:300 var(--jas-fs-eyebrow)/1.5 Inter,sans-serif;color:var(--jas-muted);margin-top:9px;}.jasx-cond .jasx-content .jascn-photo img{margin:0;}@media(max-width:767px){.jascn-fig{padding:18px 16px 16px;}.jascn-heroc{font-size:var(--jas-fs-base);}}
/* ---- jas-semantics ---- */

/* visible only on keyboard focus (WCAG 2.4.1 bypass blocks) */
.jas-skip{position:absolute;left:-9999px;top:0;z-index:100000;display:inline-block;
  padding:14px 20px;background:var(--jas-navy);color:#fff;font:700 var(--jas-fs-sm)/1 Inter,sans-serif;
  letter-spacing:.02em;text-decoration:none}
.jas-skip:focus{left:8px;top:8px;outline:3px solid var(--jas-accent);outline-offset:2px}
/* the skip target must clear the sticky header when focused */
#main-content{scroll-margin-top:104px}

/* ---- jas-status ---- */

.jas-st{display:inline-flex;align-items:center;gap:6px;}
.jas-st[data-st='closed'],.jas-st[data-st='unknown'],.jas-st[data-st='hold']{color:#5A6875 !important;}
.jas-st[data-st='closed'] > span:first-child,
.jas-st[data-st='unknown'] > span:first-child,
.jas-st[data-st='hold'] > span:first-child{background:#98A4B0 !important;box-shadow:none !important;animation:none !important;}
.jas-st[data-st='soon']{color:#8A5200 !important;}
.jas-st[data-st='soon'] > span:first-child{background:#C58218 !important;box-shadow:none !important;animation:none !important;}
.jas-st-lim{font-weight:400;opacity:.85;}
/* a closed study should not carry a primary-action button */
.jas-srow[data-recruiting='0'] .jas-a-qualify,
.jasx-scard[data-recruiting='0'] .jasd-btn,
.jasf-card[data-recruiting='0'] .jas-qcta-b,
.jasx-card[data-recruiting='0'] .jas-qcta-b{background:#EDF1F5 !important;color:#5A6875 !important;border-color:#D7DEE6 !important;pointer-events:none;}

/* ---- jas-forms-ux ---- */

/* the focus target must clear the sticky header when scrolled to */
.fluentform-step [data-jas-stepfocus]{scroll-margin-top:104px;outline:none}
/* a programmatic focus target should not paint a focus ring — the ring belongs
   to real controls. Keyboard users still get the announcement + scroll. */
.fluentform-step [data-jas-stepfocus]:focus:not(:focus-visible){outline:none}

/* ---- jas-social ---- */
.jas-socialwrap{margin:0}.jas-socialwrap--center{text-align:center}.jas-social-k{font:var(--jas-w-ui) var(--jas-fs-eyebrow)/1.4 var(--jas-font);letter-spacing:var(--jas-eyebrow-track);text-transform:uppercase;color:var(--jas-accent);margin:0 0 var(--jas-sp-sm)}.jas-social{display:flex;gap:var(--jas-sp-xs);align-items:center;flex-wrap:wrap;margin:0;padding:0;list-style:none}.jas-social--center{justify-content:center}.jas-social li{margin:0;padding:0;list-style:none}.jas-social li::marker{content:""}.jas-social a{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--jas-line);border-radius:var(--jas-radius);color:var(--jas-muted);background:transparent;text-decoration:none;transition:color .18s ease,background-color .18s ease,border-color .18s ease}.jas-social svg{width:17px;height:17px;display:block;fill:currentColor}.jas-social a:hover,.jas-social a:focus-visible{color:#FFFFFF;background:var(--jas-accent);border-color:var(--jas-accent)}.jas-social a:focus-visible{outline:none;box-shadow:var(--jas-focus-ring)}.jas-social--dark a{border-color:var(--jas-line-on-dark);color:var(--jas-on-dark-muted)}.jas-social--dark a:hover,.jas-social--dark a:focus-visible{color:#FFFFFF;background:var(--jas-accent);border-color:var(--jas-accent)}.jas-social--dark+.jas-social-k,.jas-social--dark .jas-social-k{color:var(--jas-sky)}.jas-social--onblue a{border-color:rgba(255,255,255,.45);color:#FFFFFF}.jas-social--onblue a:hover,.jas-social--onblue a:focus-visible{color:var(--jas-accent);background:#FFFFFF;border-color:#FFFFFF}@media (prefers-reduced-motion:reduce){.jas-social a{transition:none}}
/* ---- jas-learn ---- */

/* Filter bar (2026-08-11): pill row + topic select, matching the Conditions and
   Locations hubs. .jchub-tabs/.jchub-tab styling comes from jas_condhub.php. */
.jchub-fcell{display:flex;flex-direction:column;}
.jchub-select{width:280px;max-width:100%;box-sizing:border-box;border:1px solid var(--jas-line-strong);
  padding:11px 14px;font:400 var(--jas-fs-base)/1.2 Inter,sans-serif;color:var(--jas-ink);background:#fff;
  min-height:44px;border-radius:0;}
.jchub-select:focus{outline:none;border-color:var(--jas-ink);}
.jas-lrn .jchub-tab{display:inline-flex;align-items:center;gap:7px;min-height:44px;}
.jas-lrn .jas-lrn-n{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;color:var(--jas-slate-400);background:#eef2f6;
  padding:3px 6px;border-radius:2px;}
.jas-lrn .jchub-tab.active .jas-lrn-n{color:var(--jas-accent);background:#E8F0FC;}
.jas-lrn-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;padding-top:22px}
@media(max-width:1024px){.jas-lrn-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* One column below 640, and a wider crop: a 4:5 portrait tile at full phone
   width is ~440px tall, which puts barely one article on screen. */
@media(max-width:640px){.jas-lrn-grid{grid-template-columns:1fr;gap:14px}}

/* 16:10 rather than the 4:5 portrait of the mockup: at three across, a portrait
   tile ran 477px tall, which pushed the grid to roughly one row per screen and
   left dead space between the photo and the title. This halves the height. */
.jas-lrn-tile{position:relative;display:flex;align-items:flex-end;aspect-ratio:16/10;
  overflow:hidden;background:var(--jas-footer);text-decoration:none;isolation:isolate}
@media(max-width:640px){.jas-lrn-tile{aspect-ratio:3/2}}
.jas-lrn-media{position:absolute;inset:0;z-index:0;display:block}
/* height:100% is !important because theme/Elementor img rules reset height:auto,
   which stopped object-fit:cover filling the tile and left a dark band. */
/* Natural colour, held slightly back so the white title stays legible over the
   photo; hover lifts it brighter. The blue duotone wash this replaced is kept
   verbatim in jas_learn_DUOTONE_BACKUP.php.disabled if we want it again. */
.jas-lrn-img{width:100% !important;height:100% !important;object-fit:cover;display:block;
  filter:brightness(.82) saturate(.96);transition:filter .3s ease}
.jas-lrn-scrim{position:absolute;inset:0;z-index:1;display:block;
  background:linear-gradient(to top,rgba(6,14,26,.93) 0%,rgba(6,14,26,.72) 34%,rgba(6,14,26,.20) 70%,rgba(6,14,26,.05) 100%)}

.jas-lrn-body{position:relative;z-index:2;display:flex;flex-direction:column;gap:9px;
  width:100%;padding:18px}
.jas-lrn-chip{align-self:flex-start;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.34);
  color:#fff;font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.09em;text-transform:uppercase;padding:5px 8px}
.jas-lrn-t{display:block;color:#fff;font:700 var(--jas-fs-md)/1.28 Inter,sans-serif;text-wrap:balance}
@media(max-width:640px){.jas-lrn-t{font-size:var(--jas-fs-base)}}
.jas-lrn-d{display:block;color:rgba(255,255,255,.72);font:400 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.03em}

/* designed empty state for the 12 posts whose image file is gone */
.jas-lrn-fb{position:absolute;inset:0;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--jas-grad-c),var(--jas-footer))}
.jas-lrn-fb span{font:700 var(--jas-fs-eyebrow)/1 Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(255,255,255,.42)}

.jas-lrn-tile:hover .jas-lrn-img{filter:brightness(1.06) saturate(1.02)}
.jas-lrn-tile:focus-visible{outline:3px solid var(--jas-accent);outline-offset:3px}
/* Touch devices never get the hover lift, so they rest a little brighter — but
   not so bright that the scrim stops carrying the white title. */
@media(hover:none){
  .jas-lrn-img{filter:brightness(.88) saturate(1)}
}
@media(prefers-reduced-motion:reduce){
  .jas-lrn-img{transition:none}
}

/* ---- filter bar: ONE row whose height does not change as the vocabulary grows ----
   The old wrapped chip row was 189px on desktop and 1115px at 375px, i.e. more than a
   whole phone screen before the first article. Everything now lives behind one button,
   with the active choices carried outside as removable tags so state is never hidden. */
.jas-lrn-bar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding-bottom:2px}
.jas-lrn-pop{position:relative}
.jas-lrn-fbtn{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;cursor:pointer;
  background:var(--jas-accent);border:1px solid var(--jas-accent);color:#fff;
  font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase}
.jas-lrn-fbtn::after{content:"\25BE";font-size:var(--jas-fs-micro);line-height:1}
.jas-lrn-fbtn:hover{background:var(--jas-accent-deep);border-color:var(--jas-accent-deep)}
.jas-lrn-fbtn:focus-visible{outline:3px solid var(--jas-accent);outline-offset:2px}
.jas-lrn-fcount{display:inline-block;min-width:18px;text-align:center;padding:3px 6px;border-radius:9px;
  background:rgba(255,255,255,.28);font:700 var(--jas-fs-micro)/1 Inter,sans-serif}

.jas-lrn-panel{position:absolute;z-index:30;left:0;top:calc(100% + 8px);
  width:min(680px,calc(100vw - 40px));background:#fff;border:1px solid #cfd6de;padding:18px;
  box-shadow:0 16px 40px rgba(8,16,28,.16)}
.jas-lrn-panel[hidden]{display:none}
.jas-lrn-fgroup+.jas-lrn-fgroup{margin-top:15px;padding-top:15px;border-top:1px solid #eeeeee}
.jas-lrn-flab{display:block;margin-bottom:9px;
  font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.11em;text-transform:uppercase;color:#6b7784}
.jas-lrn-chips{display:flex;flex-wrap:wrap;gap:8px}
.jas-lrn-chips .jchub-tab{display:inline-flex;align-items:center;gap:7px}
.jas-lrn-pfoot{display:flex;justify-content:space-between;align-items:center;gap:10px;
  margin-top:15px;padding-top:14px;border-top:1px solid #eeeeee}
.jas-lrn-clear,.jas-lrn-done{min-height:44px;padding:0 16px;cursor:pointer;
  font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase}
.jas-lrn-clear{background:none;border:0;color:#5f5f5f}
.jas-lrn-clear:hover{color:var(--jas-accent)}
.jas-lrn-done{background:var(--jas-accent);border:1px solid var(--jas-accent);color:#fff}
.jas-lrn-done:hover{background:var(--jas-accent-deep);border-color:var(--jas-accent-deep)}
.jas-lrn-clear:focus-visible,.jas-lrn-done:focus-visible{outline:3px solid var(--jas-accent);outline-offset:2px}

.jas-lrn-tags{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.jas-lrn-tag{display:inline-flex;align-items:center;gap:3px;min-height:36px;padding:0 4px 0 11px;
  background:#eaf1fb;border:1px solid var(--jas-accent);color:var(--jas-accent-deep);
  font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase}
.jas-lrn-tag button{appearance:none;background:none;border:0;cursor:pointer;color:inherit;
  font-size:var(--jas-fs-md);line-height:1;min-width:30px;min-height:30px}
.jas-lrn-tag button:hover{color:var(--jas-accent)}
.jas-lrn-tag button:focus-visible{outline:2px solid var(--jas-accent);outline-offset:1px}

.jas-lrn .jchub-search{max-width:250px}
.jas-lrn .jchub-rc{margin-left:auto;white-space:nowrap}

/* Below 640 the panel becomes a bottom sheet. position:fixed with left/right pinned is
   what guarantees it can never push the page sideways, which an absolutely positioned
   680px panel inside a flex row certainly would. */
@media(max-width:640px){
  .jas-lrn .jchub-search{max-width:none;flex:1 1 100%;order:3}
  /* ride alongside the Filters button instead of taking a row of its own */
  .jas-lrn .jchub-rc{order:1;margin-left:auto}
  .jas-lrn-tags{order:2}
  .jas-lrn-panel{position:fixed;left:12px;right:12px;bottom:12px;top:auto;width:auto;
    max-height:74vh;overflow-y:auto;box-shadow:0 -10px 44px rgba(8,16,28,.3)}
}

.jas-lrn-morewrap{display:flex;justify-content:center;padding-top:22px}
.jas-lrn-more{min-height:48px;padding:0 26px;background:#fff;color:var(--jas-accent);cursor:pointer;
  border:1px solid var(--jas-accent);font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.6px;text-transform:uppercase}
.jas-lrn-more:hover{background:var(--jas-accent);color:#fff}
.jas-lrn-more:focus-visible{outline:3px solid var(--jas-accent);outline-offset:3px}
.jas-lrn-n{display:inline-block;min-width:18px;text-align:center;padding:4px 6px;border-radius:9px;
  background:var(--jas-tint-cool);color:#5f5f5f;font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.04em}
.jas-lrn-chips .jchub-tab[aria-pressed="true"] .jas-lrn-n{color:#fff;background:rgba(255,255,255,.28)}

/* ---- jas-a11y ---- */

/* ---- A-01 : link blue is too dark to sit on the navy ground ---- */
.jasf-quiet{color:#6BA5F5 !important;}
.jasf-quiet:hover{color:#9CC3FA !important;}

/* ---- A-02 : entry-card numerals ---- */
.jasen-n{color:var(--jas-slate-400) !important;}

/* ---- A-03 : the skip link was the lowest ratio on the page ---- */
.jas-skip{color:#FFFFFF !important;}
.jas-skip:focus,.jas-skip:focus-visible{color:#FFFFFF !important;outline:3px solid #FFFFFF !important;outline-offset:2px !important;}

/* ---- A-03b : eyebrow on the saturated blue band ---- */
/* 2026-08-25: was `h6.elementor-heading-title`. The eyebrows became <p> when the
   homepage's 22 decorative h6 headings were demoted (they were never headings), and
   this rule stopped matching, dropping the eyebrow straight back to 4.17:1. Match the
   heading WIDGET rather than the tag, so it survives the next tag change too. */
[data-jas-onblue] .elementor-heading-title{color:#FFFFFF !important;}

/* ---- A-04 : 44px touch targets ---- */
.jasd-btn{min-height:44px !important;display:flex !important;align-items:center !important;justify-content:center !important;}
.jasqp-c{min-height:44px !important;}
.xpro-elementor-nav-link{min-height:44px !important;}
.jas-skip{min-height:44px !important;display:inline-flex !important;align-items:center !important;}
.jasg-go{display:inline-flex !important;align-items:center !important;min-height:44px !important;}
/* hub + listing surfaces: measured on the studies hub, which the homepage
   sweep never covered (27 row CTAs at 41px). */
.jas-btn,.jas-a-qualify,.jas-cta,.jas-tap{min-height:44px !important;display:inline-flex !important;align-items:center !important;}
/* Filter chips render 37px across every hub. Raised site-wide rather than only
   where new markup appears, so the standard itself is accessible. */
.jchub-tab,.jas-fchip,.jas-vt button{min-height:44px !important;display:inline-flex !important;align-items:center !important;}
/* Standalone card CTAs. .jchub-view is the -> link on every condition and
   location card (43 of them on Conditions alone) and rendered at 14px.
   Heading links are deliberately excluded: they are text, not controls. */
.jchub-view,.jas-notsure a,.elementor-button{min-height:44px !important;display:inline-flex !important;align-items:center !important;}
.jas-btn.jas-a-qualify{justify-content:center !important;}
button.jas-ftoggle{min-height:44px !important;}

/* ---- study template: the status line sits on the dark hero, so the neutral
       greys used elsewhere invert. Measured 2.84:1 before, 7.8:1 after. ---- */
.jasx-sline.jas-st[data-st='closed'],
.jasx-sline.jas-st[data-st='unknown'],
.jasx-sline.jas-st[data-st='hold']{color:#A8B6C4 !important;}
.jasx-sline.jas-st[data-st='closed'] > span:first-child,
.jasx-sline.jas-st[data-st='unknown'] > span:first-child,
.jasx-sline.jas-st[data-st='hold'] > span:first-child{background:#A8B6C4 !important;}
.jasx-sline.jas-st[data-st='soon']{color:#E0A046 !important;}
.jasx-sline.jas-st[data-st='soon'] > span:first-child{background:#E0A046 !important;}

/* ---- study template: pre-existing failures the homepage sweep never saw ----
   .jasx-reg  var(--jas-muted-soft) on white  2.81:1 -> 5.4:1
   .jasx-fnote  var(--jas-slate-300)         3.26:1 -> 5.4:1
   .jasx-loccard-k  var(--jas-slate-300)     3.12:1 -> 5.4:1
   .qk.g / .jasx-ocard-s  green rgb(22,163,74)  3.30:1 -> 5.3:1 */
/* The same two values recur across modules: var(--jas-muted-soft) grey (2.81:1 on white)
   and rgb(22,163,74) green (3.30:1). Overridden here; the durable fix is to
   change them at source in the modules that define them. */
.jasx-reg,.jasx-fnote,.jasx-loccard-k,.wj-onpage-label,.jas-flabel,.jas-sloc,.jasx-toc .k,.jasx-rrcard-k,.jchub-flabel,.jchub-region{color:var(--jas-slate-400) !important;}
.jchub-count{color:var(--jas-recruiting-deep) !important;}
.jas-lstatus.jas-st[data-st='go']{color:var(--jas-recruiting-deep) !important;}
.jas-lstatus.jas-st[data-st='go'] > span:first-child{background:var(--jas-recruiting-deep) !important;}
.qk.g,.jasx-ocard-s{color:var(--jas-recruiting-deep) !important;}
.jasx-card-s.jas-st[data-st='go']{color:var(--jas-recruiting-deep) !important;}
.jasx-card-s.jas-st[data-st='go'] > span:first-child{background:var(--jas-recruiting-deep) !important;}
.jasx-scard-meta{color:var(--jas-slate-400) !important;}
.jasx-ocard-s.jas-st[data-st='go'] > span:first-child{background:var(--jas-recruiting-deep) !important;}
/* ---- smallest body-ish labels lifted off 11px ---- */
.jasqp-k,.jasg-lk{font-size:var(--jas-fs-label) !important;}

/* ---- white text on a band that lost its background ----
   Elementor's lazy-load rule
     .e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded){background-image:none!important}
   outranks jas_navy's plain .wj-dark selector, so dark bands from the third
   container down render transparent while their text stays white. On How It
   Works this made the entire closing CTA invisible: white on white. The hero
   escaped only because it sits above the nth-of-type(n+3) threshold.
   :not(#jasx) borrows ID-level specificity to win, the same trick jas_navy
   already uses for its Elementor selectors. */
.wj-dark:not(#jasx){background:linear-gradient(115deg,var(--jas-footer) 0%,var(--jas-grad-b) 55%,var(--jas-grad-c) 100%) !important;}

/* ---- standalone text CTAs that render as bare links ---- */
/* Two groups, deliberately. Forcing display:inline-flex on everything broke
   block-level controls: the study-page table of contents collapsed onto
   shared lines (What's involved / Locations ran together) and the primary
   CTA shrank to its text width so the arrow wrapped. Only genuinely inline
   links get a display change; anything already block or flex just gets height. */
.wj-tlink,.wj-cta-alt,.wj-onpage-in a,.wj-links a,.jasx-golink{
  min-height:44px !important;display:inline-flex !important;align-items:center !important;}
/* Removed on review: of the five selectors here, .jasx-cta-p (74px),
   .jasx-cta-s (74px) and .jasx-toc a (58px) already cleared 44 on their own,
   so the rule was three dead declarations plus two live ones. Buttons and
   CTAs now keep whatever height their own component CSS gives them. */
/* The .jasx-cta-s tracking exception (.4px) was removed 2026-08-18. It existed
   because the longest secondary label measured 248px inside 248px of available
   width. The rail pair is now both --jas-fs-btn-sm with 12px side padding, so
   there is 256px of text area, the canonical .07em button tracking fits with
   room to spare, and the two rail buttons share one size AND one tracking. */

/* ---- visible keyboard focus ----
   Was here at 3px and in jas_responsive.php at 2px, both !important, so
   summary and [tabindex] took 2px and everything else 3px. This one also set
   border-radius:2px on a site whose --jas-radius is 0. Both removed
   2026-08-21; one tokenised ring, and the on-dark inversion this file had
   right, now live in jas_actions.php at wp_head 150. */
/* 10px breathing room between the closing CTA band and the footer, so the two
   dark blocks read as separate sections (user 2026-08-12). One rule per page
   family's closing band; mid-page CTAs are deliberately not touched. */
.jasph-close:not(#jasx){margin-bottom:10px !important;}
.jasx-contactband{margin-bottom:10px;}
.wj-band.wj-dark.wj-cta{margin-bottom:10px;}
.elementor-element-jas000fa{margin-bottom:10px !important;}

/* ---- jas-closecta ---- */

.jasph-hl{font-style:italic;color:var(--jas-sky) !important;}
.jasph-cta{display:flex;flex-wrap:wrap;gap:14px;margin:26px 0 18px;}
.jasph-btn{display:inline-flex;align-items:center;min-height:44px;background:var(--jas-accent);color:#FFFFFF !important;font:700 var(--jas-fs-btn)/1 var(--jas-font,Inter,sans-serif);letter-spacing:1px;text-transform:uppercase;text-decoration:none;padding:15px 26px;white-space:nowrap;}
.jasph-btn:hover{background:var(--jas-accent-deep);color:#FFFFFF !important;}
.jasph-btn-ghost{background:transparent;border:1px solid rgba(255,255,255,.55);}
.jasph-btn-ghost:hover{background:rgba(255,255,255,.12);}
.jasph-note{display:flex;align-items:flex-start;gap:9px;font-size:var(--jas-fs-sm);line-height:1.5;color:var(--jas-sky) !important;margin:0;max-width:560px;}
.jasph-note .jasph-ic{flex:0 0 18px;margin-top:1px;}
.jasph-close:not(#jasx){background:linear-gradient(115deg,var(--jas-footer) 0%,var(--jas-grad-b) 55%,var(--jas-grad-c) 100%) !important;--jas-bleed:calc(100vw - var(--jas-sbw,0px));margin-left:calc(50% - var(--jas-bleed) / 2);margin-top:56px;width:var(--jas-bleed);padding:0;position:relative;overflow:hidden;}
.jasph-close:not(#jasx)::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(rgba(104,152,208,.09) 1px,transparent 1px);background-size:26px 26px;}
.jasph-close-in{max-width:var(--jas-container);margin:0 auto;padding:var(--jas-band-pad-utility) var(--jas-gutter);box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:36px;position:relative;z-index:2;}
.jasph-eyebrow{font:700 var(--jas-fs-label)/1.3 var(--jas-font,Inter,sans-serif);letter-spacing:.1em;text-transform:uppercase;color:var(--jas-sky) !important;margin:0 0 12px;}
.jasph-close h2{margin:0 0 8px;font-size:var(--jas-fs-h2);line-height:1.2;color:#fff;font-weight:700;}
.jasph-close-sub{color:var(--jas-on-dark-muted) !important;margin:0;font-size:var(--jas-fs-base);}
.jasph-close-act{display:flex;flex-direction:column;gap:12px;align-items:flex-start;max-width:420px;}
.jasph-close-alt{color:var(--jas-sky) !important;font-size:var(--jas-fs-base);text-decoration:none;line-height:1.55;}
.jasph-close-alt:hover{color:#FFFFFF !important;text-decoration:underline;}
/* On a landing page the band is already a full-width section, so it does not
   need the 100vw escape the hub pages use to break out of a boxed Elementor
   container. Keeping it there would overflow by the scrollbar width. */
body.jasx-land .jasph-close:not(#jasx){margin-left:0 !important;margin-right:0 !important;margin-top:0;width:auto !important;}
/* Moved from jas_phero.php with the rest of the component. The original also
   restated font-size:var(--jas-fs-btn) here, which is the same token the rule
   outside the query already sets, so it is dropped rather than carried over. */
@media (max-width:1024px){
  .jasph-close-in{flex-direction:column;align-items:flex-start;gap:22px;padding:48px 20px;}
  .jasph-close-act{max-width:none;}
  .jasph-btn{padding:14px 22px;min-height:44px;}
}

/* ---- jas-heroh ---- */

@media (min-width:1025px){
  /* hub pages: flex column container with a single .e-con-inner child */
  .elementor-element-jas00006:not(#jasx){min-height:430px;}
  .elementor-element-jas00006:not(#jasx) > .e-con-inner{min-height:430px;display:flex;
    flex-direction:column;justify-content:center;
    /* Elementor's own 52px/50px vertical padding is redundant once the content
       is centred inside a fixed-height box, and it pushed longer copy past the
       floor (Current Studies rendered 451px). Trimmed so the min-height governs
       and every hub hero lands on exactly 430px. */
    padding-top:24px !important;padding-bottom:24px !important;}

  /* single study / condition / location / post templates.
     box-sizing matters: .jasx-hero carries 46px/44px padding and computes as
     content-box, so a bare min-height renders 90px taller than asked. */
  .jasx-hero{min-height:430px;box-sizing:border-box;display:flex;align-items:center;}
  .jasx-hero > .jasx-wrap{width:100%;}

  /* How It Works, brought down to the same height */
  .wj-hero{min-height:430px !important;}
  .wj-hero-in{min-height:430px !important;}
  .wj-hero-media{min-height:430px !important;}
  .wj-hero-copy{padding:36px 0 !important;}
}

/* ---- jas-studytype ---- */

/* section headings on one size, matching the rest of the site */
/* Band headings only. Editorial h2s inside a condition guide body (How to
   Prevent COPD, Myth #1, and 14 more) are the article's own structure, not
   section headings — they stay at 26 and are deliberately not selected here. */
.jasx-sh2,.jasx-contact-h2,.jasx-locband h2,.jasx-learnband h2,.jasx-faqband h2,
.jasx-condband h2{line-height:1.2 !important;}

/* body prose: 16.5 -> 16 */
.jasx-sec p,.jasx-lede,.jasx-prose p{font-size:var(--jas-fs-base) !important;}

/* Hero photo, right side, fading into the navy — the same treatment as the How
   It Works hero and the hub pages, so every hero on the site reads as one
   family. Hidden below the breakpoint, where the hero stacks and a masked
   side image would just crop a face. */
.jasx-hero{position:relative;overflow:hidden;}
.jasx-hero::after{content:'';position:absolute;right:0;top:0;bottom:0;width:46%;z-index:0;
  pointer-events:none;background-image:var(--jasx-hero-img,none);background-size:cover;
  background-position:62% 28%;background-repeat:no-repeat;
  -webkit-mask-image:linear-gradient(to right,transparent 0,#000 190px);
  mask-image:linear-gradient(to right,transparent 0,#000 190px);}
.jasx-hero > .jasx-wrap{position:relative;z-index:2;}
/* Cap the copy rather than pad the wrap, the way the How It Works hero does:
   the headline was running to 834px into the mask fade, where the photo is
   already ~79% opaque behind white type. Capped at 640 it ends at ~664, clear
   of the photo edge at 683 entirely. */
/* Measured trade-off. With the photo starting at 54% and the mask reaching full
   opacity 190px later, a 48px headline either wraps to 3 lines (hero grows to
   462px, breaking the 430 rule) or runs to 834px where the photo is ~79%
   opaque behind white type. 40px with a 700px cap gives 2 lines, holds 430px
   exactly, and ends at 698px where the photo is still ~8% opaque — effectively
   navy. 40px is also the size the two homepage CTA bands already use. */
@media (min-width:1025px){
  .jasx-hero > .jasx-wrap > *{max-width:700px;}
}
/* Mobile: the hero photo becomes a full-width strip at the foot of the hero,
   fading up into the navy — the same stacked treatment How It Works uses.
   (Previously hidden entirely below 1025px.) Every post type has a featured
   image (default-featured-image plugin guarantees it), so the strip is never empty. */
@media (max-width:1024px){
  .jasx-hero{padding-bottom:170px;}
  .jasx-hero::after{left:0;right:0;top:auto;bottom:0;width:100%;height:170px;
    background-position:center 30%;}
}
/* Hero H1 below desktop: fluid ramp instead of 36px-then-26px steps.
   375px -> 25px, 640px -> ~30px, 900px -> ~35px, capped 36px at 1024,
   meeting the 40px desktop rule at 1025 without a cliff. */
@media (max-width:1024px){
  .jasx-h1{line-height:1.22 !important;}
}

/* Imagery on the three list surfaces that had none. Location cards use the
   site's own featured photo (all 13 sites have one); other-study cards and
   related-reading cards use the same condition image the homepage grid and the
   studies hub resolve, so a study looks the same wherever it appears.
   Full-bleed 16:9 at the top of the card, matching the homepage pattern. */
.jasx-loccard-media,.jasx-ocard-media,.jasx-rrcard-media,.jasx-scard-media{
  display:block;margin:-20px -22px 14px;aspect-ratio:16/9;overflow:hidden;background:var(--jas-tint-cool);}
.jasx-loccard-media img,.jasx-ocard-media img,.jasx-rrcard-media img,.jasx-scard-media img{
  width:100%;height:100%;object-fit:cover;display:block;}
.jasx-loccard-b,.jasx-rrcard-b{display:flex;flex-direction:column;gap:8px;}

/* panel sub-labels: 11.5 -> 12.5, matching .jasx-sub */
.qk{font-size:var(--jas-fs-label) !important;}

/* Rail card headings. All four cards ship identical markup and sentence-case
   copy, but CSS gave them four different looks: an 11.5px blue uppercase label,
   a 17px sentence-case title, an 11.5px GREY uppercase label, and a 14px
   sentence-case title. Two rules instead of four, on a rule that means something:
     uppercase blue  = a label introducing a data list (Conditions studied)
     sentence bold   = a card title (Interested in this study? / Prefer to talk
                       first? / Important)
   No copy changes — Prefer to talk first? is a question, so it reads as a title
   rather than a label once the uppercasing is removed. */
.jasx-icard.c .k{font-size:var(--jas-fs-label) !important;text-transform:uppercase !important;
  letter-spacing:.09em !important;color:var(--jas-accent) !important;}
.jasx-icard .k,
.jasx-icard.t .k,
.jasx-icard.i .k{font-size:var(--jas-fs-md) !important;text-transform:none !important;
  letter-spacing:normal !important;color:var(--jas-footer) !important;font-weight:700 !important;}

@media (max-width:1024px){
  /* .jasx-sec .jasx-sh2 carries a 21px mobile rule elsewhere, so the selector
     here has to match its specificity or the two scales persist on phones. */
  .jasx-sh2,.jasx-sec .jasx-sh2,.jasx-contact-h2,
}
/* involve/receive paired cards (user mockup 2026-08-12) */
.jasx-2col{border:1px solid var(--jas-line);background:#fff;margin:0 0 42px;}
.jasx-2col .jasx-pcard{margin:0;padding:22px 24px;}
@media (min-width:768px){.jasx-2col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
 .jasx-2col .jasx-pcard+.jasx-pcard{border-left:1px solid var(--jas-line);}}
@media (max-width:767px){.jasx-2col .jasx-pcard+.jasx-pcard{border-top:1px solid var(--jas-line);}}
.jasx-pcard .jasx-dash li:before{content:'✓';color:var(--jas-recruiting-deep);font-weight:700;}
.jasx-pcard .jasx-fnote{color:var(--jas-slate-400);}
/* mockup adoption 2026-08-12: tinted qualify col, notes as highlighted bands, boxed registry line, calmer card H2s */
.jasx-qcol:first-child{background:#F2F9F4;}
.jasx-qnote{background:#EAF2FC;border-left:3px solid var(--jas-accent);color:#27313B;padding:12px 16px;margin-top:14px;}
.jasx-reg{background:#F4F7FA;border:1px solid #E6ECF2;color:var(--jas-slate-400);padding:11px 16px;margin-top:18px;}
.jasx-reg a{font-weight:600;}
.jasx-pcard .jasx-fnote{background:#F4F7FA;border-left:3px solid #C3CFDA;padding:10px 14px;margin-top:16px;}
.jasx-2col .jasx-pcard .jasx-sh2{margin-bottom:16px;}
@media (max-width:767px){}
/* card lists: match the qualify panel rhythm, not the wide-column dash style */
.jasx-pcard .jasx-dash{margin:0;padding:0;}
.jasx-pcard .jasx-dash li{padding:0 0 12px 26px;border-bottom:none;font-size:var(--jas-fs-sm);line-height:1.5;}
.jasx-pcard .jasx-dash li:last-child{padding-bottom:0;margin-bottom:0;}
/* Common questions: heading left, accordion right (user 2026-08-12) */
@media (min-width:1025px){
 .jasx-faqband .jasx-wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);column-gap:56px;align-items:start;}
 .jasx-faqband .jasx-acc{max-width:none;}
}
/* Learn-more feature panel + reading rows + other-studies rows (approved mockup 2026-08-12) */
.jasx-lmpanel{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);border:1px solid var(--jas-line);background:#fff;}
.jasx-lmpanel.one{display:block;}
.jasx-lmfeat{position:relative;min-height:400px;display:flex;background:var(--jas-footer) center/cover no-repeat;}
.jasx-lmfeat::after{content:'';position:absolute;inset:0;background:linear-gradient(198deg,rgba(21,44,80,.12) 0%,rgba(26,33,41,.55) 55%,rgba(26,33,41,.92) 100%);}
.jasx-lmfeat-in{position:relative;z-index:1;align-self:flex-end;padding:30px 34px 32px;}
.jasx-lmfeat-in .jasx-k{color:var(--jas-sky);}
.jasx-lmfeat-in h3{color:#fff;font-size:var(--jas-fs-h2);letter-spacing:-.01em;margin:10px 0;}
.jasx-lmfeat-in p{color:rgba(255,255,255,.86);font-size:var(--jas-fs-sm);line-height:1.6;max-width:46ch;margin:0 0 18px;}
.jasx-lmfeat-in .jasx-golink{color:#fff;}
.jasx-lmread{padding:26px 32px 14px;}
.jasx-lmk{font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-slate-400);padding-bottom:14px;border-bottom:1px solid var(--jas-line);}
.jasx-lmrow{display:grid;grid-template-columns:104px minmax(0,1fr) auto;gap:18px;align-items:center;padding:17px 0;border-bottom:1px solid var(--jas-line);text-decoration:none;}
.jasx-lmread .jasx-lmrow:last-child,.jasx-lmlist .jasx-lmrow:last-child{border-bottom:0;}
.jasx-lmlist .jasx-lmrow:first-child{border-top:1px solid var(--jas-line);margin-top:14px;}
.jasx-lmrow-m{width:104px;aspect-ratio:16/10;overflow:hidden;background:var(--jas-tint-cool);display:block;}
.jasx-lmrow-m img{width:100%;height:100%;object-fit:cover;display:block;}
.jasx-lmrow-k{display:block;font:700 var(--jas-fs-micro)/1 Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--jas-accent);margin-bottom:6px;}
.jasx-lmrow-t{display:block;font-size:var(--jas-fs-base);line-height:1.35;font-weight:600;color:var(--jas-footer);transition:color .15s;}
.jasx-lmrow:hover .jasx-lmrow-t{color:var(--jas-accent);}
.jasx-osband{padding:56px 0 64px;}
.jasx-osrows{border-top:1px solid var(--jas-line);margin-top:6px;}
.jasx-osrow{display:grid;grid-template-columns:104px 150px minmax(0,1fr) 170px auto;gap:20px;align-items:center;padding:15px 0;border-bottom:1px solid var(--jas-line);text-decoration:none;}
.jasx-osrow-m{width:104px;aspect-ratio:3/2;overflow:hidden;background:var(--jas-tint-cool);}
.jasx-osrow-m img{width:100%;height:100%;object-fit:cover;display:block;}
.jasx-osrow-t{font-size:var(--jas-fs-base);line-height:1.4;font-weight:600;color:var(--jas-footer);transition:color .15s;}
.jasx-osrow:hover .jasx-osrow-t{color:var(--jas-accent);}
.jasx-osrow-c{font-size:var(--jas-fs-eyebrow);color:var(--jas-slate-400);}
.jasx-golink.q{color:var(--jas-slate-400);}
/* whole row is the link; the inner label doesn't need its own 44px tap box, and it skews the centerline */
.jasx-osrow .jasx-golink,.jasx-lmrow .jasx-golink{min-height:0 !important;display:inline !important;}
/* Participating research sites: rows, same grammar as Other studies (kills the 1-site dead space) */
.jasx-locrows{border-top:1px solid #DFE3E8;margin-top:6px;}
.jasx-locrow{display:grid;grid-template-columns:150px minmax(0,1fr) auto;gap:22px;align-items:center;padding:16px 0;border-bottom:1px solid #DFE3E8;text-decoration:none;}
.jasx-locrow-media{width:150px;aspect-ratio:16/10;overflow:hidden;background:var(--jas-tint-cool);}
.jasx-locrow-media img{width:100%;height:100%;object-fit:cover;display:block;}
.jasx-locrow-b{display:flex;flex-direction:column;gap:5px;}
.jasx-locrow-k{font:700 var(--jas-fs-micro)/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-slate-400);}
.jasx-locrow-t{font-size:var(--jas-fs-base);font-weight:700;color:var(--jas-footer);line-height:1.35;transition:color .15s;}
.jasx-locrow:hover .jasx-locrow-t{color:var(--jas-accent);}
.jasx-locrow-p{font-size:var(--jas-fs-eyebrow);color:var(--jas-slate-400);}
.jasx-locrow .jasx-golink{min-height:0 !important;display:inline !important;}
@media (max-width:1024px){.jasx-lmpanel{grid-template-columns:minmax(0,1fr);}.jasx-lmfeat{min-height:300px;}}
@media (max-width:860px){
 .jasx-osrow{grid-template-columns:88px minmax(0,1fr);gap:4px 16px;}
 .jasx-osrow-m{grid-row:1/5;width:88px;}
 .jasx-lmrow{grid-template-columns:88px minmax(0,1fr);}
 .jasx-lmrow .jasx-golink{display:none;}
 .jasx-locrow{grid-template-columns:96px minmax(0,1fr);gap:4px 16px;}
 .jasx-locrow-media{width:96px;grid-row:1/3;}
 .jasx-locrow .jasx-golink{grid-column:2;justify-self:start;}
}
/* uniform 10px: side padding on jasx-main (was 0), and the secondary CTA gets
   the same 10px after it that the primary already has (user 2026-08-12) */
.jasx-main{padding:44px 0px 10px;}
/* condition tabs on multi-condition studies (user 2026-08-12) */
.jasx-lmtabs{margin:0 0 18px;}
.jasx-lmfeats{display:flex;min-width:0;}
.jasx-lmfeats .jasx-lmfeat{flex:1 1 100%;min-width:0;}
.jasx-lmfeat.off{display:none !important;}
/* registry line lives in the rail now, under Conditions studied */
.jasx-reg-rail{background:none !important;border:none !important;padding:0 !important;margin:4px 0 0 !important;display:flex;flex-direction:column;gap:7px;}
.jasx-reg-rail a{font-weight:700;}
/* condition rail: running index + connectors (user 2026-08-12) */
.jasx-rail{position:sticky;top:88px;align-self:start;max-height:calc(100vh - 104px);overflow:auto;}
.jasx-ctoc{display:flex;flex-direction:column;gap:2px;max-height:52vh;overflow:auto;margin-top:4px;}
.jasx-ctoc a{display:block;padding:6px 10px;border-left:2px solid var(--jas-line);font-size:var(--jas-fs-eyebrow);line-height:1.45;color:var(--jas-slate-500);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.jasx-ctoc a:hover{color:var(--jas-accent);}
.jasx-ctoc a.on{border-left-color:var(--jas-accent,var(--jas-accent));color:var(--jas-accent,var(--jas-accent));font-weight:600;}
.jasx-ctoc a.l3{padding-left:22px;font-size:var(--jas-fs-label);color:var(--jas-muted,var(--jas-muted));}
.jasx-rail-list{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:9px;}
.jasx-rail-list a{font-size:var(--jas-fs-sm);line-height:1.45;color:var(--jas-footer);text-decoration:none;}
.jasx-rail-list a:hover{color:var(--jas-accent);}
@media (max-width:1024px){.jasx-ctoc-card{display:none;}}
/* condition studies band uses the homepage featured cards; same compact scale */
h3.jasf2-t,.jasf2-t{font-size:var(--jas-fs-md) !important;line-height:1.35 !important;}
.jasf2-btn{min-height:38px !important;padding:10px 14px !important;font-size:var(--jas-fs-btn-sm) !important;white-space:nowrap !important;}
.jasf2-details{font-size:var(--jas-fs-btn-sm) !important;min-height:44px !important;}
.jasf2-cond{font-size:var(--jas-fs-micro) !important;}
.jasf2-grid--cond{margin-top:18px;}
.jasf2-grid--cond .jasf2-card,.jasf2-grid--cond .jasf2-card *{box-sizing:border-box;}
/* ===== condition-guide editorial layer (2026-08-12, token-based) ===== */
/* section openers: rule + presence; clear image floats */
.jasx-cond .jasx-content h2{clear:both;margin-top:46px;padding-top:28px;border-top:1px solid var(--jas-line,var(--jas-line));}
.jasx-cond .jasx-content h2:first-of-type{margin-top:0;padding-top:0;border-top:0;}
/* lead paragraph after a section opener reads slightly larger */
.jasx-cond .jasx-content h2+p{font-size:var(--jas-fs-md) !important;line-height:1.66;color:var(--jas-slate-500,var(--jas-slate-500));}
.jasx-cond .jasx-content h3{margin-top:26px;}
/* guide lists: site check-list voice instead of browser discs */
.jasx-cond .jasx-content ul:not([class]){list-style:none;margin:0 0 20px;padding:0;}
.jasx-cond .jasx-content ul:not([class])>li{position:relative;padding:0 0 4px 24px;margin:0 0 7px;}
.jasx-cond .jasx-content ul:not([class])>li::before{content:'✓';position:absolute;left:0;top:0;color:var(--jas-recruiting-deep,var(--jas-recruiting-deep));font-weight:700;}
/* small legacy images: deliberate right-float figures with a hairline frame */
@media (min-width:861px){
 .jasx-cond .jasx-content img[width='300']{float:right;margin:6px 0 16px 24px;border:1px solid var(--jas-line,var(--jas-line));padding:4px;background:#fff;}
}
@media (max-width:860px){ .jasx-cond .jasx-content img[width='300']{display:block;margin:14px auto;} }
/* upgraded / swapped imagery: full-column 16:9 */
.jasx-cond .jasx-content img.jasx-gimg-wide{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;margin:18px 0 22px;float:none;border:0;padding:0;}
/* resource links */
.jasx-morelink{margin:14px 0 6px;}
/* ===== condition-page decision layer (2026-08-12) ===== */
.jasx-glance{background:var(--jas-soft,var(--jas-soft));border-bottom:1px solid var(--jas-line,var(--jas-line));}
.jasx-glance-grid{display:flex;flex-wrap:wrap;gap:0;padding:0;}
.jasx-glance-c{flex:1 1 160px;padding:14px 22px;border-left:1px solid var(--jas-line,var(--jas-line));}
.jasx-glance-c:first-child{border-left:0;padding-left:0;}
.jasx-glance-c .k{display:block;font:700 var(--jas-fs-micro)/1.4 Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--jas-slate-400,var(--jas-slate-400));margin-bottom:3px;}
.jasx-glance-c b{font-size:var(--jas-fs-base);color:var(--jas-ink,var(--jas-ink));}
.jasx-inlinecta{background:var(--jas-accent-tint,#EAF2FC);border-left:3px solid var(--jas-accent,var(--jas-accent));padding:12px 16px;margin:18px 0 22px;}
.jasx-inlinecta a{color:var(--jas-accent,var(--jas-accent));font-weight:600;text-decoration:none;}
.jasx-nextsteps{border:1px solid var(--jas-line,var(--jas-line));background:#fff;padding:24px 26px;margin:40px 0 8px;clear:both;}
.jasx-nextsteps ol{margin:12px 0 0 18px;padding:0;display:flex;flex-direction:column;gap:10px;}
.jasx-nextsteps li{font-size:var(--jas-fs-base);line-height:1.55;}
.jasx-nextsteps a{color:var(--jas-accent,var(--jas-accent));font-weight:600;text-decoration:none;}
.jasx-ctoc-m{display:none;}
@media (max-width:1024px){
 .jasx-ctoc-m{display:block;margin:0 0 22px;border:1px solid var(--jas-line,var(--jas-line));background:#fff;}
 .jasx-ctoc-m summary{cursor:pointer;padding:13px 16px;font:700 var(--jas-fs-label)/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--jas-slate-500,var(--jas-slate-500));}
 .jasx-ctoc-m .jasx-ctoc{max-height:none;padding:4px 12px 14px;}
}
.jasx-provrow{margin:0 0 18px;}
#jasx-prog{position:fixed;top:0;left:0;height:3px;width:0;background:var(--jas-accent,var(--jas-accent));z-index:99999;transition:width .1s linear;}

/* ---- jas-chips ---- */

/* Non-CTA controls: neutral family. Blue is reserved for actions; navy = selected state. */
.jchub-tab,.jas-fchip,.jas-vt button,.jasx-chip{
  background:transparent !important;color:var(--jas-slate-400) !important;
  border:1px solid #D5DBE1 !important;border-radius:0 !important;
  font:400 var(--jas-fs-micro)/1 Inter,sans-serif !important;letter-spacing:.04em !important;
  text-transform:uppercase !important;padding:8px 12px !important;
  min-height:32px !important;display:inline-flex !important;align-items:center !important;
  gap:7px;text-decoration:none !important;cursor:pointer;transition:background .12s,border-color .12s,color .12s;}
.jchub-tab:hover,.jas-fchip:hover,.jas-vt button:hover,.jasx-chip:hover{
  background:#F4F6F8 !important;border-color:#AEB9C4 !important;color:var(--jas-footer) !important;}
.jchub-tab.active,.jas-fchip.active,.jas-vt button.active{
  background:#1A3762 !important;border-color:#1A3762 !important;color:#FFFFFF !important;}
.jchub-tab:focus-visible,.jas-fchip:focus-visible,.jas-vt button:focus-visible,.jasx-chip:focus-visible{
  outline:2px solid var(--jas-accent) !important;outline-offset:1px;}
.jchub-tabs{border-bottom:0 !important;gap:8px;}
/* count badges: plain numerals, no pill box */
.jas-lrn-n,.jasf2-n{background:none !important;padding:0 !important;border-radius:0 !important;
  min-width:0 !important;color:#98A2AC !important;font:600 var(--jas-fs-micro)/1 Inter,sans-serif !important;}
.jchub-tab.active .jas-lrn-n,.jchub-tab.active .jasf2-n,
.jchub-tab[aria-pressed='true'] .jas-lrn-n{color:rgba(255,255,255,.75) !important;background:none !important;}
/* Topic select + article search: same neutral hairline; blue appears on focus only */
.jchub-select,.jchub-search{
  height:40px !important;min-height:40px !important;border:1px solid #D5DBE1 !important;border-radius:0 !important;
  background:#fff !important;color:var(--jas-footer) !important;font:400 var(--jas-fs-sm)/1.4 Inter,sans-serif !important;
  padding:8px 12px !important;box-shadow:none !important;}
.jchub-select:focus,.jchub-search:focus{
  border-color:var(--jas-accent) !important;outline:none !important;
  box-shadow:0 0 0 3px rgba(28,105,212,.12) !important;}
.jchub-search::placeholder{color:#98A2AC;}
/* TOUCH (2026-08-19): the thin 32px profile above is a mouse affordance. On a
   finger it misses the 44px target the rest of the site holds to, and 11px
   uppercase is hard to read at arm's length, so the same chip grows. Kept in
   this file so chips still have exactly one owner. */
@media (max-width:900px),(pointer:coarse){
  .jchub-tab,.jas-fchip,.jas-vt button,.jasx-chip,.jash-chip{
    min-height:44px !important;padding:12px 14px !important;
    font-size:var(--jas-fs-label) !important;
    display:inline-flex !important;align-items:center !important;}
  .jash-pg{min-height:44px !important;display:inline-flex !important;align-items:center !important;padding:10px 14px !important;}
  .jchub-select,.jchub-search{height:44px !important;min-height:44px !important;}
}
.jchub-flabel{font:700 var(--jas-fs-micro)/1 Inter,sans-serif !important;letter-spacing:.07em !important;
  text-transform:uppercase !important;color:var(--jas-slate-400) !important;}

/* ---- jas-live ---- */

@media (prefers-reduced-motion:no-preference){
  .jasf2-pill[data-st='go'] i,.jas-st[data-st='go'] .jasx-dot,.jasx-sdot{position:relative;}
  .jasf2-pill[data-st='go'] i::after,.jas-st[data-st='go'] .jasx-dot::after,.jasx-sdot::after{
    content:'';position:absolute;inset:0;border-radius:var(--jas-radius-round,50%);
    background:inherit;animation:jasLivePing 3s cubic-bezier(0,0,.2,1) infinite;}
}
@keyframes jasLivePing{0%{transform:scale(1);opacity:.45}70%,100%{transform:scale(2.4);opacity:0}}

/* ---- jas-readnav-css ---- */
.jasrp{position:fixed;top:0;left:0;width:100%;height:3px;z-index:991;pointer-events:none;}.jasrp>i{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;background:var(--jas-accent);transition:transform .1s linear;will-change:transform;}body.jas-t .jasn-ontoc .jasn-toclinks a.on{color:var(--jas-accent);font-weight:600;}@media(prefers-reduced-motion:reduce){.jasrp>i{transition:none;}}
/* ---- jas-sitemap-css ---- */

.jas-sitemap{width:100%;max-width:680px;margin-inline:auto;}
.jas-sitemap svg{display:block;width:100%;height:auto;}
.jas-sm-land{fill:none;stroke:var(--jas-steel,#6898D0);stroke-opacity:.5;stroke-width:3.8;stroke-linecap:round;}
.jas-sm-core{fill:var(--jas-sky,#8FB8F0);stroke:rgba(255,255,255,.75);stroke-width:1;}
.jas-sm-ring{fill:none;stroke:var(--jas-sky,#8FB8F0);stroke-width:1.8;opacity:0;transform-box:fill-box;transform-origin:center;}
@media (prefers-reduced-motion:no-preference){
  .jas-sm-ring{animation:jasSmPing 3.2s cubic-bezier(0,0,.2,1) infinite;}
}
@keyframes jasSmPing{0%{transform:scale(.55);opacity:.65}70%,100%{transform:scale(2.6);opacity:0}}
/* --- province cards mode --- */
.jas-sitemap-prov{max-width:none;display:flex;flex-direction:column;gap:18px;}
.jas-smp-total{display:flex;align-items:baseline;gap:10px;}
.jas-smp-total-n{font-weight:700;font-size:var(--jas-fs-h2);line-height:1;font-family:var(--jas-font,Inter,sans-serif);color:var(--jas-on-dark,#fff);}
.jas-smp-total-l{font:300 var(--jas-fs-base)/1.3 var(--jas-font,Inter,sans-serif);color:var(--jas-on-dark-muted,#AAB3BD);}
.jas-smp-row{display:flex;gap:14px;align-items:stretch;}
.jas-smp-card{flex:1 1 0;min-width:0;border:1px solid rgba(104,152,208,.22);background:rgba(104,152,208,.08);padding:18px 16px 14px;display:flex;flex-direction:column;gap:14px;}
.jas-smp-card svg{display:block;width:100%;height:190px;flex:0 0 auto;}
.jas-smp-card .jas-sm-land{stroke-width:4.6;}
.jas-smp-card .jas-sm-core{r:5.5;stroke-width:1.2;}
.jas-smp-card .jas-sm-ring{r:7.5;stroke-width:2;}
.jas-smp-meta{display:flex;justify-content:space-between;align-items:baseline;gap:8px;}
.jas-smp-prov{font:700 var(--jas-fs-sm)/1.2 var(--jas-font,Inter,sans-serif);color:var(--jas-on-dark,#fff);}
.jas-smp-n{font:700 var(--jas-fs-micro)/1 var(--jas-font,Inter,sans-serif);letter-spacing:.06em;text-transform:uppercase;color:var(--jas-sky,#8FB8F0);white-space:nowrap;}
@media (max-width:1024px){
  .jas-smp-row{flex-direction:column;gap:12px;}
  .jas-smp-card svg{height:150px;}
  
}
/* one row: text left (~32%), three province cards right (~68%)
   (per Wasif 2026-08-12; id-level overrides per house cascade rules) */
@media (min-width:1025px){
  .elementor-element.elementor-element-jas000ea{flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;gap:44px!important;}
  .elementor-element.elementor-element-jase30d4{--width:auto!important;max-width:none!important;width:auto!important;flex:1 1 0%!important;min-width:0!important;order:2;}
  .elementor-element.elementor-element-jas000e8{--width:30%!important;max-width:30%!important;width:30%!important;flex:0 0 auto!important;order:1;}
  .jas-smp-card svg{height:210px;}
}

/* ---- jas-actions ---- */
.jas-qcta-b.jas-qcta-b,.jasf2-btn.jasf2-btn,.jasph-btn.jasph-btn,.jasx-hbtn.jasx-hbtn,.jasx-hbtn-o.jasx-hbtn-o,.wj-btn.wj-btn,.jas-btn.jas-btn,.jas-c-btn.jas-c-btn,.jas-mnav-btn.jas-mnav-btn,.elementor-button.elementor-button-link.elementor-button{font-weight:var(--jas-w-ui);letter-spacing:var(--jas-cta-track);text-transform:uppercase;gap:var(--jas-cta-gap);align-items:center;}.jasx-golink.jasx-golink,.jchub-view.jchub-view,.jasf2-details.jasf2-details,.jasx-quiet.jasx-quiet,.jash-pg.jash-pg,.jas-cta.jas-cta,.jasf-quiet.jasf-quiet{font-size:var(--jas-fs-label);font-weight:var(--jas-w-ui);letter-spacing:var(--jas-cta-track);text-transform:uppercase;gap:var(--jas-cta-gap);}.jasx-ccard-go.jasx-ccard-go,.wj-tlink.wj-tlink,.jash-topic.jash-topic,.jasg-go.jasg-go,.jchub-guide.jchub-guide{font-size:var(--jas-fs-sm);font-weight:400;letter-spacing:normal;text-transform:none;gap:6px;}.jasx-chip.jasx-chip,.jchub-tab.jchub-tab,.jas-fchip.jas-fchip,.jash-chip.jash-chip,.jas-vt.jas-vt button{letter-spacing:var(--jas-chip-track);}.jash-chip.jash-chip{font-size:var(--jas-fs-micro);font-weight:400;text-transform:uppercase;}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:var(--jas-focus-w) solid var(--jas-focus-color) !important;outline-offset:var(--jas-focus-offset) !important;border-radius:var(--jas-radius) !important;}[data-jas-onblue] a:focus-visible,[data-jas-onblue] button:focus-visible,.jasf-card a:focus-visible,.jasx-hero a:focus-visible,.jasph-close a:focus-visible{outline-color:var(--jas-focus-color-on-dark) !important;}
/* ---- jas-header ---- */

/* Pre-JS spacer heights. These are FALLBACKS ONLY - the real value is written by
   the inline corrector below, which runs immediately after the header markup and
   therefore before anything underneath is laid out. They still need to be close,
   because they are what a no-JS visitor gets, and because they are what the very
   first layout pass uses. Measured in Chrome 2026-08-25: 157px at 1440, 180px at
   768, 190px at 900 (the utility topbar wraps between 768 and 1024, which is why
   the tablet band is TALLER than desktop and why one value for everything below
   1025px was wrong), 93px at 390. The old 128/64 pair was out by 29px on desktop
   and by up to 126px at tablet width, and that gap was the largest layout shift
   on the site: every page began with its content under the header and then jumped. */
:root{--jas-hdr-h:156px;}
@media (min-width:768px) and (max-width:1023px){:root{--jas-hdr-h:163px;}}
@media (max-width:767px){:root{--jas-hdr-h:87px;}}
/* Re-measured 2026-08-25 evening after the Xpro retirement: the [jas_topbar] strip
   is 1px shorter than the old phone/email line at desktop and 10px shorter in the
   768-1023 band. Uniform on every page type. */
/* Re-measured 2026-08-25 after the logo baseline-gap fix in jas_nav.php: the header
   is now the SAME height on every page - 157 at >=1024, 173 in the 768-1023 band
   (the topbar wraps there), 87 below 768. Earlier values 190/93 included a 6-7px
   inline-image descender gap that only appeared on pages where Elementor's
   image-widget stylesheet did not load. */
body:not(.elementor-editor-active){padding-top:var(--jas-hdr-h)!important;}
body:not(.elementor-editor-active) .elementor.elementor-35884{
  position:fixed;top:0;left:0;right:0;z-index:990;background:var(--jas-bg,#fff);
  transform:translateY(0);
  transition:transform .32s cubic-bezier(.22,1,.36,1),background-color .3s ease;
}
body.admin-bar:not(.elementor-editor-active) .elementor.elementor-35884{top:32px;}
body:not(.elementor-editor-active) .elementor.elementor-35884.jas-hdr-scrolled{
  background:rgba(255,255,255,.92);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--jas-line,var(--jas-line));
}
.elementor-35884 .elementor-element-jasaae6a{max-height:60px;overflow:hidden;transition:max-height .3s ease,opacity .3s ease;}
.elementor-35884.jas-hdr-scrolled .elementor-element-jasaae6a{max-height:0;opacity:0;}
@media (prefers-reduced-motion:reduce){
  .elementor-35884,.elementor-35884 .elementor-element-jasaae6a{transition:none!important;}
}
/* --- fixed-header offsets (2026-08-13, per Wasif's report) ---
   Sticky rails/TOCs were tuned for the old in-flow header; with the bar
   fixed they must clear it, and same-page anchor jumps need scroll padding.
   All offsets track the measured --jas-hdr-h, so topbar expanded/collapsed
   states both clear. */
html{scroll-padding-top:calc(var(--jas-hdr-h,64px) + 20px);}
.jasn-toc,.jasn-rail,.jasx-toc,.jasx-srail,.jasx-rail{top:calc(var(--jas-hdr-h,64px) + 20px)!important;}
.jas-filters{top:calc(var(--jas-hdr-h,64px) + 14px)!important;}
.wj-steps-media{top:calc(var(--jas-hdr-h,64px) + 24px)!important;}
/* legacy sticky-header rule in jas_build (jas_head_css3 @102) is superseded
   by the fixed wrapper; its box-shadow also violated the flat contract */
.jas-chrome-top{position:static!important;box-shadow:none!important;}

/* ---- jas-howit2 ---- */

/* chip appearance, all widths */
.jashw .jashw-n{
  box-sizing:border-box;width:34px;height:34px;margin:0!important;
  display:flex!important;align-items:center;justify-content:center;
  position:absolute;z-index:1;
  background:var(--jas-navy,var(--jas-navy));color:var(--jas-sky,var(--jas-sky));
  border:1px solid rgba(104,152,208,.35);
  font:700 var(--jas-fs-label)/1 var(--jas-font,Inter,sans-serif) !important;letter-spacing:.04em;
}
@media (hover:hover){
  .jashw .jashw-n{transition:background-color .2s ease,color .2s ease;}
  .jashw-cell:hover .jashw-n{background:var(--jas-accent,var(--jas-accent));color:#fff;border-color:transparent;}
}
@media (prefers-reduced-motion:reduce){.jashw .jashw-n{transition:none!important;}}
/* the Decide step is the decision moment: it carries the action colour
   (the contract's one blue for actions/active states) */
.jashw-cell:last-child .jashw-n{background:var(--jas-accent,#1C69D4);color:#fff;border-color:transparent;}
@media (hover:hover){
  .jashw-cell:last-child:hover .jashw-n{background:var(--jas-accent-deep,#0653B6);color:#fff;}
}
/* desktop: chips on the horizontal rail */
@media (min-width:901px){
  .jashw-cell::before{display:none!important;}
  .jashw-cell{padding-top:64px!important;}
  .jashw .jashw-n{top:-17px;left:0;}
  .jashw-cell:not(:first-child) .jashw-n{left:-17px;}
}
/* mobile: vertical rail down the left */
@media (max-width:900px){
  .jashw-grid{position:relative;}
  .jashw-grid::after{content:'';position:absolute;left:16.5px;top:10px;bottom:26px;width:1px;background:var(--jas-slate-700);}
  .jashw-cell{border-top:0!important;padding:0 0 28px 54px!important;position:relative;}
  .jashw-cell:last-child{padding-bottom:6px!important;}
  .jashw .jashw-n{top:-2px;left:0;}
}
/* note pill: square navy icon per contract (50% radius = dots/avatars only) */
.jashw-ic{border-radius:0!important;background:var(--jas-navy,var(--jas-navy))!important;}

/* ---- jas-nav ---- */

/* --- header height parity, ALL widths (2026-08-25, Wasif: "header measure should be
   the same throughout the website") ---------------------------------------------
   The header measured 157px on the homepage and 164px on every hub/detail page.
   Cause: Elementor's image-widget stylesheet enqueues ONLY on pages whose own
   content contains image widgets (the same conditional-CSS mechanism behind the
   11 Aug logo-centering bug). On the homepage it loads and sets the logo's anchor
   and img to inline-block; everywhere else the img stays display:inline on the
   text BASELINE, and the wrapper gains ~7px of descender space below it.
   Making both block removes the line box entirely, so the header no longer
   depends on whether an unrelated stylesheet happened to load. */
.elementor-35884 .elementor-element-jasaae61 a{display:block!important;line-height:0!important;}
.elementor-35884 .elementor-element-jasaae61 img{display:block!important;}
@media (min-width:1025px){
/* --- 1. anchor the row ------------------------------------------------- */
.elementor-35884 .elementor-element.elementor-element-jasaae64{width:auto!important;flex:0 0 auto!important;}
/* The middle column grows to fill exactly the space between the logo and the button,
   and centres its widget on the cross axis (it is a COLUMN flex container, so
   align-items is the horizontal axis here). Because columns 1 and 3 are now
   shrink-to-content, that centre IS the midpoint between the logo's right edge and the
   button's left edge - which is what "centred between the logo and the CTA" means, and
   it stays symmetric on its own as labels change. Gaps are NOT set here: any margin on
   the wrapper would offset the centring by that amount. */
.elementor-35884 .elementor-element.elementor-element-jasaae65{width:auto!important;flex:1 1 auto!important;min-width:0!important;align-items:center!important;}
.elementor-35884 .elementor-element.elementor-element-jasaae66{width:auto!important;flex:0 0 auto!important;}
/* 2026-08-25, Xpro retirement: the link typography, riser and state rules that lived
   here moved to jas_menu.php (same values, .jasnav-* classes, no !important needed -
   Elementor emits no per-widget CSS for a shortcode widget). This file keeps what is
   markup-independent: the row anchoring above, the logo parity, the CTA token below,
   and the aria-current section-state filters that light the new markup. */
/* --- the primary returns to the act token ------------------------------ */
.elementor-35884 .elementor-element-jasaae63 .elementor-button{
  font-size:var(--jas-fs-btn)!important;letter-spacing:var(--jas-cta-track)!important;
  padding:var(--jas-cta-pad)!important;min-height:var(--jas-cta-h)!important;
}
}

/* ---- jas-menu ---- */

.jasnav-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.jasnav-list{list-style:none;margin:0;padding:0;}
.jasnav-list li{margin:0;padding:0;list-style:none;}
.jasnav-list li::marker{content:none;}
.jasnav-list a{text-decoration:none;}

/* ---- desktop row (>=1025) ---- */
@media (min-width:1025px){
.jasnav-toggle,.jasnav-scrim,.jasnav-ptop,.jasnav-msearch,.jasnav-cta{display:none!important;}
.jasnav-panel{position:static;}
.jasnav-list{display:flex;flex-wrap:nowrap;gap:30px;}
.jasnav-list>li>a{
  font:500 var(--jas-fs-sm)/1 var(--jas-font);letter-spacing:0;
  color:var(--jas-slate-700);display:flex;align-items:center;
  min-height:var(--jas-cta-h);position:relative;transition:color .2s ease;white-space:nowrap;
}
.jasnav-list>li>a::after{
  content:"";position:absolute;left:0;right:0;bottom:10px;height:2px;
  background:var(--jas-navy);pointer-events:none;
  transform:scaleX(0);transform-origin:left center;
  transition:transform .24s cubic-bezier(.3,.7,.2,1);
}
.jasnav-list>li:hover>a,
.jasnav-list>li>a:focus-visible,
.jasnav-list>li.jas-nav-on>a,
.jasnav-list>li.current-menu-item>a{color:var(--jas-navy);}
.jasnav-list>li:hover>a::after,
.jasnav-list>li>a:focus-visible::after,
.jasnav-list>li>a[aria-current]::after{transform:scaleX(1);}
.jasnav-list>li>a[aria-current]{font-weight:600;}
}

/* ---- drawer (<=1024) ---- */
@media (max-width:1024px){
.jasnav{display:flex;justify-content:flex-end;}
.jasnav .jasnav-toggle{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;background:none;border:0;padding:0;color:var(--jas-navy);cursor:pointer;}
.jasnav-scrim{position:fixed;inset:0;background:rgba(16,22,29,.52);z-index:99998;opacity:0;pointer-events:none;transition:opacity .26s ease;}
.jasnav-panel{
  position:fixed;top:0;right:0;bottom:0;width:min(330px,88vw);z-index:99999;
  background:var(--jas-bg,#fff);display:flex;flex-direction:column;
  padding:14px 22px 26px;overflow-y:auto;-webkit-overflow-scrolling:touch;
  transform:translateX(102%);transition:transform .28s cubic-bezier(.22,1,.36,1);
  box-shadow:-18px 0 40px rgba(16,22,29,.18);
}
html.jasnav-open .jasnav-panel{transform:none;}
html.jasnav-open .jasnav-scrim{opacity:1;pointer-events:auto;}
html.jasnav-open{overflow:hidden;}
.jasnav-ptop{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;}
.jasnav-plabel{font:700 var(--jas-fs-micro)/1 var(--jas-font);letter-spacing:.12em;text-transform:uppercase;color:var(--jas-muted);}
.jasnav .jasnav-close{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:-12px;background:none;border:0;color:var(--jas-ink);cursor:pointer;}
.jasnav-msearch{display:flex;gap:8px;margin:0 0 14px;}
.jasnav-msearch input{flex:1 1 auto;min-width:0;border:1px solid var(--jas-input-line);background:#fff;color:var(--jas-ink);padding:11px 12px;font:300 var(--jas-fs-sm)/1.2 var(--jas-font);}
.jasnav-msearch input:focus{outline:none;border-color:var(--jas-ink);}
.jasnav .jasnav-msearch button{flex:0 0 auto;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--jas-accent);color:#fff;border:0;cursor:pointer;}
.jasnav .jasnav-msearch button:hover{background:var(--jas-accent-deep);}
.jasnav-list{display:block;}
.jasnav-list>li{border-bottom:1px solid var(--jas-line);}
.jasnav-list>li>a{display:flex;align-items:center;min-height:44px;padding:13px 0;font:400 var(--jas-fs-base)/1.3 var(--jas-font);color:var(--jas-ink);}
.jasnav-list>li>a[aria-current]{color:var(--jas-navy);font-weight:600;box-shadow:inset 3px 0 0 var(--jas-navy);padding-left:12px;}
.jasnav-cta{display:block;margin-top:20px;background:var(--jas-accent);color:#fff!important;font:700 var(--jas-fs-btn)/1 var(--jas-font);letter-spacing:var(--jas-cta-track);text-transform:uppercase;text-align:center;text-decoration:none;padding:16px 18px;}
.jasnav-cta:hover{background:var(--jas-accent-deep);}
}

/* ---- desktop search square ---- */
.jashs{position:relative;display:flex;align-items:center;}
/* Specificity note: the Elementor kit paints EVERY button (.elementor-kit-35865 button
   = 0,1,1) brand blue, which silently beat our single-class rules - the reason the
   square stayed blue whatever jas-menu declared. Every button rule below is therefore
   two classes deep (0,2,0). */
/* 2026-08-25, Wasif's final mock (via his DevTools experiment): a SOFT GREY tile with
   the accent-blue glyph - quiet ground, active icon - beside the solid GET MATCHED.
   Ground is the cool panel tint the hub filters already use; hover warms to the
   accent tint with the deep accent glyph. (First reading of the mock shipped a solid
   accent square; corrected same evening.) */
.jashs .jashs-btn{width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--jas-tint-cool);border:0;color:var(--jas-accent);cursor:pointer;transition:background-color .2s ease,color .2s ease;}
.jashs .jashs-btn:hover,.jashs .jashs-btn[aria-expanded="true"]{background:var(--jas-accent-tint);color:var(--jas-accent-deep);}
.jashs-form{position:absolute;top:calc(100% + 12px);right:0;z-index:99997;display:flex;gap:8px;width:340px;max-width:80vw;background:#fff;border:1px solid var(--jas-line);box-shadow:0 14px 34px rgba(24,48,96,.16);padding:10px;}
.jashs-form[hidden]{display:none;}
.jashs-form input{flex:1 1 auto;min-width:0;border:1px solid var(--jas-input-line);background:#fff;color:var(--jas-ink);padding:10px 12px;font:300 var(--jas-fs-sm)/1.2 var(--jas-font);}
.jashs-form input:focus{outline:none;border-color:var(--jas-ink);}
.jashs-form .jashs-go{flex:0 0 auto;background:var(--jas-accent);color:#fff;border:0;padding:0 16px;font:700 var(--jas-fs-btn-sm)/1 var(--jas-font);letter-spacing:var(--jas-cta-track);text-transform:uppercase;cursor:pointer;}
.jashs-form .jashs-go:hover{background:var(--jas-accent-deep);}
@media (max-width:1024px){.jashs{display:none;}}

/* ---- topbar ---- */
.elementor-35884 .elementor-element-jasaae67{width:100%;}
.jastop{display:flex;align-items:center;justify-content:space-between;gap:16px;font:400 var(--jas-fs-label)/1.4 var(--jas-font);letter-spacing:.03em;color:var(--jas-on-dark-muted);}
.jastop-live{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.jastop-live b{color:#fff;font-weight:600;}
.jastop-dot{display:inline-block;width:6px;height:6px;border-radius:var(--jas-radius-round);background:var(--jas-recruiting-bright);box-shadow:0 0 0 3px rgba(74,222,128,.16);margin-right:8px;vertical-align:1px;}
.jastop-sep{color:var(--jas-slate-400);margin:0 8px;}
.jastop .jastop-link{color:#C6D6EE;text-decoration:none;white-space:nowrap;}
.jastop .jastop-link:hover{color:#fff;}

/* Focus visibility (WCAG 2.4.7): explicit rings on every control this module owns,
   using the site's focus tokens; white ring on the dark strip. Without these the
   controls fell back to the UA default, which the kit's styling can make faint. */
.jasnav a:focus-visible,.jasnav button:focus-visible,.jasnav input:focus-visible,
.jashs button:focus-visible,.jashs input:focus-visible{outline:var(--jas-focus-w) solid var(--jas-focus-color);outline-offset:var(--jas-focus-offset);}
.jastop a:focus-visible{outline:var(--jas-focus-w) solid var(--jas-focus-color-on-dark);outline-offset:var(--jas-focus-offset);}

@media (prefers-reduced-motion:reduce){
.jasnav-panel,.jasnav-scrim,.jasnav-list>li>a,.jasnav-list>li>a::after,.jashs-btn{transition:none!important;}
}
