/* =========================================================
CTMS GLOBAL VARIABLES
========================================================= */
:root {
/* Testing value. Later this can be: var(--e-global-color-primary, #00ADEE); */
--site-primary-override: #00ADEE;
--site-font-family: "DM Sans", sans-serif;
--site-heading: #14284B;
--site-text: #1C3144;
--site-muted: #65758B;
--site-card-bg: #F3FAFD;
--site-card-border: #E3EEF3;
/* Form colours */
--form-bg: #F3F3F3;
--form-text: #374151;
--form-heading: #123B7A;
--form-border: #E2E8F0;
--form-placeholder: #A3AAB5;
/* Form field colours */
--form-field-bg: #FFFFFF;
--form-field-border: #D1D5DB;
--form-field-focus-border: #9CA3AF;
}
/* =========================================================
GLOBAL FONT
Defined once and applied to CTMS listing, study detail and form.
========================================================= */
.rt-embed.rt-container,
.rt-embed.rt-container *,
.rt-embed.rt-container *::before,
.rt-embed.rt-container *::after,
.study-page,
.study-page *,
.study-page *::before,
.study-page *::after,
.osBox.osBox-100.osDetail.osContent,
.osBox.osBox-100.osDetail.osContent *,
.osBox.osBox-100.osDetail.osContent *::before,
.osBox.osBox-100.osDetail.osContent *::after {
font-family: var(--site-font-family) !important;
}
/* =========================================================
MAIN CONTAINER
========================================================= */
.rt-embed.rt-container {
width: 100% !important;
max-width: 100% !important;
margin: 0 auto !important;
padding: 0 !important;
box-sizing: border-box !important;
color: var(--site-text) !important;
}
/* =========================================================
LINK COLOUR
========================================================= */
.osTitle .rt-home-button {
color: var(--site-primary-override);
}
/* =========================================================
SEARCH BAR
========================================================= */
.ctms-study-search {
display: flex !important;
align-items: center !important;
width: 100% !important;
gap: clamp(8px, 0.55vw, 12px) !important;
margin: 0 0 clamp(20px, 1.56vw, 30px) !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* =========================================================
SEARCH INPUT WRAPPER
========================================================= */
.ctms-search-input-wrapper {
position: relative !important;
flex: 1 1 auto !important;
width: auto !important;
min-width: 0 !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* =========================================================
SEARCH ICON
========================================================= */
.ctms-search-input-wrapper::before {
content: "" !important;
position: absolute !important;
top: 50% !important;
left: clamp(14px, 0.9vw, 18px) !important;
width: 15px !important;
height: 15px !important;
transform: translateY(-50%) !important;
background: #8B99A8 !important;
-webkit-mask:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='7' cy='7' r='4.5' fill='none' stroke='black' stroke-width='1.2'/%3E%3Cpath d='M10.5 10.5L14 14' fill='none' stroke='black' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E")
center / contain no-repeat !important;
mask:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='7' cy='7' r='4.5' fill='none' stroke='black' stroke-width='1.2'/%3E%3Cpath d='M10.5 10.5L14 14' fill='none' stroke='black' stroke-width='1.2' stroke-linecap='round'/%3E%3C/svg%3E")
center / contain no-repeat !important;
pointer-events: none !important;
z-index: 5 !important;
}
/* =========================================================
SEARCH INPUT
========================================================= */
.rt-embed.rt-container
.ctms-study-search
input.ctms-study-search-input {
display: block !important;
width: 100% !important;
height: clamp(42px, 2.65vw, 52px) !important;
min-height: clamp(42px, 2.65vw, 52px) !important;
margin: 0 !important;
padding:
0 clamp(40px, 2.8vw, 50px)
0 clamp(38px, 2.6vw, 48px) !important;
box-sizing: border-box !important;
background: #FFFFFF !important;
border: 1px solid #E1E7EC !important;
border-radius: 999px !important;
color: var(--site-text) !important;
font-family: var(--site-font-family) !important;
font-size: clamp(11px, 0.68vw, 14px) !important;
font-weight: 400 !important;
line-height: 1 !important;
outline: none !important;
box-shadow: none !important;
appearance: none !important;
-webkit-appearance: none !important;
}
.rt-embed.rt-container
.ctms-study-search
input.ctms-study-search-input::placeholder {
color: #98A5B3 !important;
opacity: 1 !important;
}
.rt-embed.rt-container
.ctms-study-search
input.ctms-study-search-input:focus {
border-color: var(--site-primary-override) !important;
outline: none !important;
box-shadow:
0 0 0 2px
color-mix(
in srgb,
var(--site-primary-override) 12%,
transparent
) !important;
}
/* Hide browser's native search X */
.rt-embed.rt-container
.ctms-study-search
input.ctms-study-search-input::-webkit-search-cancel-button {
-webkit-appearance: none !important;
appearance: none !important;
}
/* =========================================================
CLEAR BUTTON
========================================================= */
.ctms-search-clear {
position: absolute !important;
top: 50% !important;
right: 14px !important;
display: none !important;
align-items: center !important;
justify-content: center !important;
width: 24px !important;
height: 24px !important;
padding: 0 !important;
margin: 0 !important;
transform: translateY(-50%) !important;
border: 0 !important;
border-radius: 50% !important;
background: transparent !important;
color: #7A8795 !important;
font-family: Arial, sans-serif !important;
font-size: 19px !important;
font-weight: 400 !important;
line-height: 1 !important;
cursor: pointer !important;
z-index: 10 !important;
box-shadow: none !important;
appearance: none !important;
-webkit-appearance: none !important;
}
.ctms-search-clear:hover {
background: #F0F3F5 !important;
color: var(--site-text) !important;
}
/* =========================================================
SEARCH BUTTON
========================================================= */
.rt-embed.rt-container
.ctms-study-search
button.ctms-study-search-button {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
flex: 0 0 clamp(140px, 10.2vw, 196px) !important;
width: clamp(140px, 10.2vw, 196px) !important;
height: clamp(42px, 2.65vw, 52px) !important;
min-height: clamp(42px, 2.65vw, 52px) !important;
margin: 0 !important;
padding: 0 20px !important;
box-sizing: border-box !important;
border: 1px solid var(--site-primary-override) !important;
border-radius: 999px !important;
background-color: var(--site-primary-override) !important;
background: var(--site-primary-override) !important;
color: #FFFFFF !important;
font-family: var(--site-font-family) !important;
font-size: clamp(12px, 0.68vw, 14px) !important;
font-weight: 500 !important;
line-height: 1 !important;
text-align: center !important;
white-space: nowrap !important;
cursor: pointer !important;
opacity: 1 !important;
visibility: visible !important;
outline: none !important;
box-shadow: none !important;
appearance: none !important;
-webkit-appearance: none !important;
transition:
opacity 0.2s ease,
transform 0.2s ease !important;
}
.rt-embed.rt-container
.ctms-study-search
button.ctms-study-search-button:hover {
background-color: var(--site-primary-override) !important;
background: var(--site-primary-override) !important;
border-color: var(--site-primary-override) !important;
color: #FFFFFF !important;
opacity: 0.88 !important;
}
/* =========================================================
MAIN HEADER
========================================================= */
.rt-embed .osHeader .osTitle {
margin:
0 0 clamp(18px, 1.25vw, 24px) !important;
padding: 0 !important;
color: var(--site-heading) !important;
font-size:
clamp(
22px,
calc(18.85px + 0.817vw),
34px
) !important;
font-style: normal !important;
font-weight: 600 !important;
line-height: 1.2 !important;
letter-spacing: -0.02em !important;
}
/* =========================================================
STUDY AREA HEADING
========================================================= */
.rt-embed h2.osArea {
margin:
0 0 clamp(12px, 0.83vw, 16px) !important;
padding: 0 !important;
color: var(--site-heading) !important;
font-size:
clamp(
22px,
calc(18.85px + 0.817vw),
34px
) !important;
font-style: normal !important;
font-weight: 600 !important;
line-height: 1.2 !important;
letter-spacing: -0.02em !important;
}
/* =========================================================
KEYWORD PILLS
========================================================= */
.rt-embed .rt-keyword-container {
display: inline-block !important;
width: auto !important;
max-width: 100% !important;
float: none !important;
margin:
0 6px 8px 0 !important;
padding: 0 !important;
vertical-align: middle !important;
box-sizing: border-box !important;
}
.rt-embed .rt-keyword-container p.osStudyItem,
.rt-embed .rt-keyword-container p.keyword-indiv-elem {
display: inline-block !important;
width: auto !important;
margin: 0 !important;
padding: 0 !important;
line-height: 1 !important;
}
.rt-embed .rt-keyword {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
min-height:
clamp(28px, 1.46vw, 32px) !important;
padding:
5px clamp(12px, 0.68vw, 14px) !important;
box-sizing: border-box !important;
border:
1px solid
color-mix(
in srgb,
var(--site-primary-override) 40%,
white
) !important;
border-radius: 999px !important;
background:
color-mix(
in srgb,
var(--site-primary-override) 8%,
white
) !important;
color: var(--site-text) !important;
font-family: var(--site-font-family) !important;
font-size:
clamp(
9px,
calc(8px + 0.16vw),
12px
) !important;
font-weight: 400 !important;
line-height: 1.2 !important;
white-space: nowrap !important;
text-decoration: none !important;
cursor: pointer !important;
}
.rt-embed .rt-keyword:hover {
background: var(--site-primary-override) !important;
border-color: var(--site-primary-override) !important;
color: #FFFFFF !important;
}
/* =========================================================
STUDY CARD
========================================================= */
.rt-embed .osListing {
position: relative !important;
display: block !important;
width: 100% !important;
height: auto !important;
min-height: 84px !important;
margin:
0 0 clamp(8px, 0.63vw, 12px) !important;
padding:
clamp(14px, 0.83vw, 16px)
clamp(120px, 9vw, 150px)
clamp(14px, 0.83vw, 16px)
clamp(16px, 1.25vw, 24px) !important;
box-sizing: border-box !important;
overflow: hidden !important;
background: var(--site-card-bg) !important;
border:
1px solid var(--site-card-border) !important;
border-radius:
clamp(9px, 0.63vw, 12px) !important;
}
/* =========================================================
HIDE CTMS THUMBNAIL
========================================================= */
.rt-embed .osListing .osThumb {
display: none !important;
}
/* =========================================================
STUDY DETAILS
========================================================= */
.rt-embed .osListing .osDetail {
width: 100% !important;
float: none !important;
margin: 0 !important;
padding: 0 !important;
box-sizing: border-box !important;
}
/* =========================================================
STUDY TITLE
========================================================= */
.rt-embed .osListing .osDetail > h2 {
margin:
0 0 4px !important;
padding: 0 !important;
color: var(--site-text) !important;
font-family: var(--site-font-family) !important;
font-size:
clamp(
16px,
calc(15px + 0.18vw),
18.407px
) !important;
font-style: normal !important;
font-weight: 600 !important;
line-height:
clamp(
24px,
calc(22px + 0.4vw),
27.61px
) !important;
letter-spacing: -0.46px !important;
}
/* =========================================================
DESCRIPTION
========================================================= */
.rt-embed .osListing .osDetail p {
margin: 0 !important;
padding: 0 !important;
color: var(--site-text) !important;
font-family: var(--site-font-family) !important;
font-size:
clamp(
11px,
calc(10px + 0.16vw),
13px
) !important;
font-weight: 400 !important;
line-height: 1.4 !important;
}
/* Override CTMS inline Verdana */
.rt-embed .osListing .osDetail p[style] {
font-family: var(--site-font-family) !important;
font-size:
clamp(
11px,
calc(10px + 0.16vw),
13px
) !important;
line-height: 1.4 !important;
}
.rt-embed .osListing .osDetail p > div {
margin: 0 !important;
padding: 0 !important;
font-family: var(--site-font-family) !important;
color: var(--site-text) !important;
font-size: inherit !important;
line-height: inherit !important;
}
.rt-embed .osListing .osDetail p > div p {
margin: 0 !important;
padding: 0 !important;
font-family: var(--site-font-family) !important;
color: inherit !important;
font-size: inherit !important;
line-height: inherit !important;
}
/* =========================================================
CTA CONTAINER
========================================================= */
.rt-embed .osListing .rt-study-area-buttons {
position: absolute !important;
top: 50% !important;
right: clamp(12px, 0.83vw, 16px) !important;
display: flex !important;
align-items: center !important;
width: auto !important;
height: auto !important;
margin: 0 !important;
padding: 0 !important;
transform: translateY(-50%) !important;
z-index: 10 !important;
}
/* =========================================================
CTA ARROW
========================================================= */
.rt-embed .osListing
.rt-study-area-buttons::after {
content: "" !important;
position: absolute !important;
top: 50% !important;
right: 13px !important;
width: 14px !important;
height: 14px !important;
transform: translateY(-50%) !important;
background: var(--site-primary-override) !important;
-webkit-mask:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")
center / contain no-repeat !important;
mask:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h10M9 4l4 4-4 4' fill='none' stroke='black' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")
center / contain no-repeat !important;
pointer-events: none !important;
}
/* =========================================================
CTA BUTTON
========================================================= */
.rt-embed .osListing
input.osButton.osButton-inline {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
width: auto !important;
min-width:
clamp(
118px,
7.7vw,
148px
) !important;
height:
clamp(
36px,
2.3vw,
44px
) !important;
min-height:
clamp(
36px,
2.3vw,
44px
) !important;
margin: 0 !important;
padding:
0 36px 0 16px !important;
box-sizing: border-box !important;
border:
0.92px solid
var(--site-primary-override) !important;
border-radius: 999px !important;
background: #FFFFFF !important;
color: var(--site-primary-override) !important;
font-family: var(--site-font-family) !important;
font-size:
clamp(
12px,
0.625vw,
13px
) !important;
font-weight: 400 !important;
line-height: 1 !important;
cursor: pointer !important;
text-shadow: none !important;
outline: none !important;
box-shadow: none !important;
appearance: none !important;
-webkit-appearance: none !important;
}
.rt-embed .osListing
input.osButton.osButton-inline:hover {
background:
var(--site-primary-override) !important;
border-color:
var(--site-primary-override) !important;
color: #FFFFFF !important;
}
.rt-embed .osListing
.rt-study-area-buttons:hover::after {
background: #FFFFFF !important;
}
/* Remove CTMS inline margin */
.rt-embed .osListing
.rt-study-area-buttons input {
margin-right: 0 !important;
}
/* =========================================================
NO RESULTS
========================================================= */
.ctms-no-results {
display: none !important;
width: 100% !important;
margin:
0 0 16px !important;
padding:
24px 20px !important;
box-sizing: border-box !important;
background:
var(--site-card-bg) !important;
border:
1px solid var(--site-card-border) !important;
border-radius:
12px !important;
color:
var(--site-muted) !important;
font-family:
var(--site-font-family) !important;
font-size:
14px !important;
line-height:
1.5 !important;
text-align:
center !important;
}
.ctms-no-results.ctms-show {
display: block !important;
}
/* =========================================================
PAGINATION
========================================================= */
.ctms-pagination {
display: flex !important;
align-items: center !important;
justify-content: center !important;
flex-wrap: wrap !important;
gap: 6px !important;
width: 100% !important;
margin:
clamp(20px, 1.56vw, 30px)
0 0 !important;
padding: 0 !important;
}
.ctms-pagination button {
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
width:
clamp(30px, 2vw, 38px) !important;
height:
clamp(30px, 2vw, 38px) !important;
min-width:
clamp(30px, 2vw, 38px) !important;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
border:
1px solid var(--site-card-border) !important;
border-radius: 999px !important;
background: #FFFFFF !important;
color: var(--site-text) !important;
font-family:
var(--site-font-family) !important;
font-size:
clamp(
10px,
0.625vw,
13px
) !important;
font-weight: 500 !important;
line-height: 1 !important;
cursor: pointer !important;
opacity: 1 !important;
visibility: visible !important;
box-shadow: none !important;
}
.ctms-pagination button:hover {
border-color:
var(--site-primary-override) !important;
color:
var(--site-primary-override) !important;
}
.ctms-pagination
button.ctms-page-active {
background:
var(--site-primary-override) !important;
border-color:
var(--site-primary-override) !important;
color:
#FFFFFF !important;
}
.ctms-pagination
button.ctms-page-arrow {
font-size: 16px !important;
}
.ctms-pagination
button:disabled {
opacity: 0.35 !important;
cursor: default !important;
}
/* =========================================================
MOBILE
========================================================= */
@media (max-width: 767px) {
.ctms-study-search {
gap: 8px !important;
}
.ctms-study-search-button {
flex: 0 0 105px !important;
width: 105px !important;
}
.ctms-study-search-input {
height: 42px !important;
min-height: 42px !important;
}
.rt-embed .osHeader .osTitle,
.rt-embed h2.osArea {
font-size:
clamp(
22px,
5.8vw,
30px
) !important;
}
.rt-embed .rt-keyword-container {
margin:
0 5px 7px 0 !important;
}
.rt-embed .osListing {
min-height: 88px !important;
padding:
12px
104px
12px
12px !important;
}
.rt-embed .osListing
.osDetail > h2 {
font-size: 15px !important;
line-height: 1.35 !important;
}
.rt-embed .osListing
.osDetail p {
font-size: 11px !important;
}
.rt-embed .osListing
.rt-study-area-buttons {
right: 9px !important;
}
.rt-embed .osListing
input.osButton.osButton-inline {
min-width: 94px !important;
height: 34px !important;
min-height: 34px !important;
padding:
0 30px 0 10px !important;
font-size: 11px !important;
}
.rt-embed .osListing
.rt-study-area-buttons::after {
right: 10px !important;
width: 13px !important;
height: 13px !important;
}
}
/* =========================================================
SMALL MOBILE
========================================================= */
@media (max-width: 480px) {
.ctms-study-search-button {
flex:
0 0 90px !important;
width:
90px !important;
padding:
0 10px !important;
}
.ctms-study-search-input {
padding-left: 38px !important;
padding-right: 38px !important;
}
.rt-embed .osListing {
min-height: 86px !important;
padding:
12px
96px
12px
12px !important;
}
.rt-embed .osListing
input.osButton.osButton-inline {
min-width: 88px !important;
height: 33px !important;
min-height: 33px !important;
padding:
0 28px 0 9px !important;
font-size: 10px !important;
}
}
/* =========================================================
STUDY DETAIL — RESEARCH STUDIES TITLE
========================================================= */
/* =========================================================
RESEARCH STUDIES TITLE
18px → 24px using clamp
========================================================= */
.osTitle,
.osTitle *,
.osTitle *::before,
.osTitle *::after {
font-family: var(--site-font-family) !important;
}
.osTitle {
font-size:
clamp(
18px,
calc(16.54px + 0.388vw),
24px
) !important;
font-weight:
600 !important;
line-height:
1.2 !important;
}
/* =========================================================
CTMS
========================================================= */
.study-page {
--site-primary:
var(--site-primary-override) !important;
}
/* =========================================================
SECTION TITLES
=========================================================
Study Overview
WHO CAN PARTICIPATE
JOURNEY
BENEFITS
FAQ
Existing CTMS content is NOT changed.
Only styling is applied.
========================================================= */
.study-page .section-label {
color:
var(--site-primary-override) !important;
}
/* =========================================================
PILLS
========================================================= */
.study-page .study-tag {
color:
var(--site-primary-override) !important;
border-color:
var(--site-primary-override) !important;
background:
var(--form-bg) !important;
}
/* =========================================================
PARTICIPATION BULLETS
========================================================= */
.study-page
.participation-list li::before {
background:
var(--site-primary-override) !important;
}
/* =========================================================
JOURNEY / FLOW
========================================================= */
/* Number colour only.
Circle background remains unchanged. */
.study-page .journey-number {
color:
var(--site-primary-override) !important;
}
/* Flow title */
.study-page .journey-title {
color:
var(--site-primary-override) !important;
}
/* Dashed connecting line */
.study-page .journey-line {
border-top-color:
var(--site-primary-override) !important;
}
/* =========================================================
BENEFITS
========================================================= */
.study-page .benefit-title {
color:
var(--site-primary-override) !important;
}
/* Benefit underline, if present */
.study-page .benefit-title::after {
background:
var(--site-primary-override) !important;
}
/* =========================================================
APPLICATION FORM
========================================================= */
/* =========================================================
FORM VARIABLES + CONTAINER
========================================================= */
.osBox.osBox-100.osDetail.osContent {
/* Form width */
width:
100% !important;
max-width:
100% !important;
margin:
0 auto !important;
/* Responsive padding */
padding:
clamp(
24px,
calc(16px + 0.83vw),
32px
)
clamp(
16px,
calc(12px + 0.42vw),
20px
) !important;
/* Requested form background */
background:
var(--form-bg) !important;
border:
1px solid var(--form-border) !important;
border-radius:
clamp(
18px,
1.15vw,
22px
) !important;
box-sizing:
border-box !important;
color:
var(--form-text) !important;
}
/* =========================================================
FORM BOX SIZING
========================================================= */
.osBox.osBox-100.osDetail.osContent *,
.osBox.osBox-100.osDetail.osContent *::before,
.osBox.osBox-100.osDetail.osContent *::after {
box-sizing:
border-box;
}
/* =========================================================
FORM HEADING
=========================================================
Existing CTMS heading/content remains unchanged.
Only styling is applied.
========================================================= */
.osBox.osBox-100.osDetail.osContent
> h1 {
margin:
0 0 clamp(
16px,
1.25vw,
24px
) !important;
padding:
0 !important;
color:
var(--form-heading) !important;
font-size:
clamp(
28px,
2.5vw,
42px
) !important;
font-weight:
600 !important;
line-height:
1.2 !important;
text-align:
center !important;
}
/* =========================================================
FORM PARAGRAPH
========================================================= */
.osBox.osBox-100.osDetail.osContent
p {
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
font-weight:
400 !important;
line-height:
1.5 !important;
color:
var(--form-text) !important;
}
/* =========================================================
FIELD WRAPPERS
========================================================= */
.osBox.osBox-100.osDetail.osContent
> div[style*="margin: 3px"] {
margin:
0 0 18px !important;
padding:
0 !important;
border:
0 !important;
}
/* =========================================================
FORM LABELS
========================================================= */
.osBox.osBox-100.osDetail.osContent
.osFormLabel.singlePageBlockElem {
margin:
0 0 7px !important;
padding:
0 !important;
color:
var(--form-text) !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
font-weight:
400 !important;
line-height:
1.3 !important;
}
/* =========================================================
FORM VALUE
========================================================= */
.osBox.osBox-100.osDetail.osContent
.osFormValue.singlePageBlockElem {
width:
100% !important;
margin:
0 !important;
padding:
0 !important;
}
/* =========================================================
TEXT INPUTS
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="text"],
.osBox.osBox-100.osDetail.osContent
input[type="email"],
.osBox.osBox-100.osDetail.osContent
input[type="tel"],
.osBox.osBox-100.osDetail.osContent
input[type="number"] {
width:
100% !important;
height:
clamp(
50px,
calc(46px + 0.42vw),
54px
) !important;
margin:
0 !important;
padding:
14px 16px !important;
color:
var(--form-text) !important;
background:
var(--form-field-bg) !important;
border:
1px solid var(--form-border) !important;
border-radius:
8px !important;
outline:
none !important;
font-size:
clamp(
14px,
calc(12px + 0.21vw),
16px
) !important;
font-weight:
400 !important;
line-height:
1.5 !important;
}
/* =========================================================
PLACEHOLDER
========================================================= */
.osBox.osBox-100.osDetail.osContent
input::placeholder {
color:
var(--form-placeholder) !important;
opacity:
1 !important;
}
/* =========================================================
FORM FIELDS — STANDARD COLOUR
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="text"],
.osBox.osBox-100.osDetail.osContent
input[type="email"],
.osBox.osBox-100.osDetail.osContent
input[type="tel"],
.osBox.osBox-100.osDetail.osContent
input[type="number"],
.osBox.osBox-100.osDetail.osContent
select,
.osBox.osBox-100.osDetail.osContent
textarea {
border:
1px solid var(--form-field-border) !important;
background:
var(--form-field-bg) !important;
outline:
none !important;
}
/* =========================================================
FORM FIELDS — FOCUS
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="text"]:focus,
.osBox.osBox-100.osDetail.osContent
input[type="email"]:focus,
.osBox.osBox-100.osDetail.osContent
input[type="tel"]:focus,
.osBox.osBox-100.osDetail.osContent
input[type="number"]:focus,
.osBox.osBox-100.osDetail.osContent
select:focus,
.osBox.osBox-100.osDetail.osContent
textarea:focus {
border-color:
var(--form-field-focus-border) !important;
outline:
none !important;
box-shadow:
none !important;
}
/* =========================================================
FORM FIELDS — ERROR / INVALID
========================================================= */
.osBox.osBox-100.osDetail.osContent
input:invalid,
.osBox.osBox-100.osDetail.osContent
input.error,
.osBox.osBox-100.osDetail.osContent
input.invalid,
.osBox.osBox-100.osDetail.osContent
select.error,
.osBox.osBox-100.osDetail.osContent
select.invalid,
.osBox.osBox-100.osDetail.osContent
textarea.error,
.osBox.osBox-100.osDetail.osContent
textarea.invalid {
border-color:
var(--form-field-border) !important;
box-shadow:
none !important;
outline:
none !important;
}
/* =========================================================
FIRST NAME / LAST NAME
========================================================= */
.osBox.osBox-100.osDetail.osContent
> div:has(input[name="FirstName"]) {
display:
inline-block !important;
width: 100%;
margin-right:
8px !important;
vertical-align:
top !important;
}
.osBox.osBox-100.osDetail.osContent
> div:has(input[name="LastName"]) {
display:
inline-block !important;
width: 100%;
vertical-align:
top !important;
}
/* =========================================================
SELECT
========================================================= */
.osBox.osBox-100.osDetail.osContent
select {
width:
100% !important;
height:
clamp(
50px,
calc(46px + 0.42vw),
54px
) !important;
margin:
0 !important;
padding:
12px 16px !important;
color:
var(--form-text) !important;
background:
var(--form-field-bg) !important;
border:
1px solid var(--form-border) !important;
border-radius:
8px !important;
font-size:
clamp(
14px,
calc(12px + 0.21vw),
16px
) !important;
font-weight:
400 !important;
}
/* =========================================================
DATE OF BIRTH
========================================================= */
.osBox.osBox-100.osDetail.osContent
select[data-field="dob_day"] {
width: 100%;
margin-bottom: 10px !important;
}
.osBox.osBox-100.osDetail.osContent
select[data-field="dob_day"] + select {
width:100%;
margin-bottom: 10px !important;
}
.osBox.osBox-100.osDetail.osContent
select[data-field="dob_day"] + select + select {
width: 100%;
margin-bottom: 10px !important;
}
/* =========================================================
RADIO
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="radio"] {
width:
16px !important;
height:
16px !important;
margin:
0 7px 0 0 !important;
accent-color:
var(--site-primary-override) !important;
vertical-align:
middle !important;
}
/* =========================================================
RADIO LABEL
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="radio"] + label {
color:
var(--form-text) !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
}
/* =========================================================
CHECKBOX
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="checkbox"] {
width:
16px !important;
height:
16px !important;
margin:
0 8px 0 0 !important;
accent-color:
var(--site-primary-override) !important;
vertical-align:
middle !important;
}
/* =========================================================
CHECKBOX LABEL
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[type="checkbox"] + label {
color:
var(--form-text) !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
}
/* =========================================================
SEARCH INPUT
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[data-field^="search_"] {
width:
100% !important;
height:
44px !important;
margin:
0 0 10px !important;
padding:
10px 14px !important;
color:
var(--form-text) !important;
background:
var(--form-field-bg) !important;
border:
1px solid var(--form-border) !important;
border-radius:
8px !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
15px
) !important;
}
/* =========================================================
CHECKBOX LIST
========================================================= */
.osBox.osBox-100.osDetail.osContent
.osFormValue > div[style*="height: 256px"] {
width:
100% !important;
height:
256px !important;
padding:
0 !important;
}
/* =========================================================
CHECKBOX LIST ROWS
========================================================= */
.osBox.osBox-100.osDetail.osContent
.osFormValue > div[style*="height: 256px"] p {
margin:
0 0 12px !important;
padding:
0 !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
line-height:
1.5 !important;
}
/* =========================================================
CHECKBOX LIST TEXT
========================================================= */
.osBox.osBox-100.osDetail.osContent
.osFormValue > div[style*="height: 256px"] label {
color:
var(--form-text) !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
font-weight:
400 !important;
line-height:
1.5 !important;
}
/* =========================================================
CONTACT TIME CHECKBOX
========================================================= */
.osBox.osBox-100.osDetail.osContent
input[name="_ContactTime[]"] {
margin-right:
8px !important;
accent-color:
var(--site-primary-override) !important;
}
/* =========================================================
CONFIDENTIAL MESSAGE
========================================================= */
.osBox.osBox-100.osDetail.osContent
.webint-notice-confidential {
margin:
20px 0 !important;
padding:
0 !important;
color:
#505665 !important;
font-size:
clamp(
13px,
calc(11px + 0.26vw),
16px
) !important;
line-height:
1.5 !important;
}
/* =========================================================
SUBMIT BUTTON
=========================================================
DESIGN ONLY.
The existing value="Submit Application"
remains untouched.
========================================================= */
.osBox.osBox-100.osDetail.osContent
.rt-application-button-container {
width:
100% !important;
margin:
28px 0 0 !important;
padding:
0 !important;
text-align:
center !important;
}
.osBox.osBox-100.osDetail.osContent
input.osButton {
width:
50% !important;
height: clamp( 32px, 8vw + 10px, 70px ) !important;
min-height:
0 !important;
margin:
0 !important;
padding:
0 30px !important;
background:
var(--site-primary-override) !important;
color:
#FFFFFF !important;
border:
none !important;
border-radius:
999px !important;
/* 12px minimum → 18px maximum */
font-size:
clamp(
12px,
1.55vw,
18px
) !important;
font-weight:
400 !important;
line-height:
1 !important;
text-align:
center !important;
box-shadow:
none !important;
cursor:
pointer !important;
}
/* =========================================================
SUBMIT BUTTON HOVER
========================================================= */
.osBox.osBox-100.osDetail.osContent
input.osButton:hover {
background:
var(--site-primary-override) !important;
color:
#FFFFFF !important;
border:
none !important;
box-shadow:
none !important;
}
/* =========================================================
MOBILE
========================================================= */
@media (max-width: 767px) {
.osBox.osBox-100.osDetail.osContent {
padding:
24px 16px !important;
border-radius:
18px !important;
}
/* First / Last name become full width */
.osBox.osBox-100.osDetail.osContent
> div:has(input[name="FirstName"]),
.osBox.osBox-100.osDetail.osContent
> div:has(input[name="LastName"]) {
display:
block !important;
width:
100% !important;
margin-left:
0 !important;
margin-right:
0 !important;
}
/* Inputs */
.osBox.osBox-100.osDetail.osContent
input[type="text"],
.osBox.osBox-100.osDetail.osContent
input[type="email"],
.osBox.osBox-100.osDetail.osContent
input[type="tel"],
.osBox.osBox-100.osDetail.osContent
input[type="number"],
.osBox.osBox-100.osDetail.osContent
select {
height:
52px !important;
}
/* Submit button */
.osBox.osBox-100.osDetail.osContent
input.osButton {
width:
100% !important;
height:
64px !important;
min-height:
0 !important;
padding:
0 24px !important;
border-radius:
999px !important;
font-size:
clamp(
12px,
5vw,
18px
) !important;
}
}
/* =========================================================
375px - 400px
========================================================= */
@media (min-width: 375px) and (max-width: 400px) {
.osBox.osBox-100.osDetail.osContent {
padding:
22px 14px !important;
}
}
/* =========================================================
PRIMARY-COLOUR DEPENDENT FORM BACKGROUND
If primary colour is #FB3231, form background becomes #F3F3F3.
Otherwise the default --form-bg value is used.
========================================================= */
:root.ctms-primary-red {
--form-bg: #F3F3F3;
}
(function () {
/* =====================================================
PRIMARY-COLOUR DEPENDENT FORM BACKGROUND
=====================================================
Testing primary colour is #00ADEE.
If the primary colour becomes #FB3231, the form
background is changed to #F3F3F3 automatically.
*/
function updatePrimaryDependentStyles() {
const primary =
getComputedStyle(document.documentElement)
.getPropertyValue('--site-primary-override')
.trim();
const probe = document.createElement('span');
probe.style.color = primary;
probe.style.display = 'none';
document.body.appendChild(probe);
const resolvedPrimary =
getComputedStyle(probe).color;
probe.remove();
const isRedPrimary =
resolvedPrimary === 'rgb(251, 50, 49)';
document.documentElement.classList.toggle(
'ctms-primary-red',
isRedPrimary
);
}
/* =====================================================
SETTINGS
===================================================== */
const ITEMS_PER_PAGE = 8;
/* =====================================================
INITIALISE
===================================================== */
updatePrimaryDependentStyles();
function initialiseCTMSStudyList() {
const container =
document.querySelector(
'.rt-embed.rt-container'
);
if (!container) {
return false;
}
const listings =
container.querySelectorAll(
'.osListing'
);
if (!listings.length) {
return false;
}
/*
* Prevent duplicate initialisation.
*/
if (
container.dataset.ctmsEnhanced === 'true'
) {
return true;
}
container.dataset.ctmsEnhanced =
'true';
/* =================================================
SEARCH BAR
================================================= */
const searchWrapper =
document.createElement(
'div'
);
searchWrapper.className =
'ctms-study-search';
const inputWrapper =
document.createElement(
'div'
);
inputWrapper.className =
'ctms-search-input-wrapper';
/* Search input */
const searchInput =
document.createElement(
'input'
);
searchInput.type =
'search';
searchInput.className =
'ctms-study-search-input';
searchInput.placeholder =
'Search study...';
searchInput.setAttribute(
'aria-label',
'Search study title'
);
/* Clear button */
const clearButton =
document.createElement(
'button'
);
clearButton.type =
'button';
clearButton.className =
'ctms-search-clear';
clearButton.innerHTML =
'×';
clearButton.setAttribute(
'aria-label',
'Clear search'
);
inputWrapper.appendChild(
searchInput
);
inputWrapper.appendChild(
clearButton
);
/* Search button */
const searchButton =
document.createElement(
'button'
);
searchButton.type =
'button';
searchButton.className =
'ctms-study-search-button';
searchButton.textContent =
'Search';
searchWrapper.appendChild(
inputWrapper
);
searchWrapper.appendChild(
searchButton
);
/* =================================================
INSERT SEARCH BAR
================================================= */
const header =
container.querySelector(
'.osHeader'
);
if (header) {
header.parentNode.insertBefore(
searchWrapper,
header
);
} else {
container.prepend(
searchWrapper
);
}
/* =================================================
NO RESULTS
================================================= */
const noResults =
document.createElement(
'div'
);
noResults.className =
'ctms-no-results';
noResults.textContent =
'No studies found matching your search.';
/* =================================================
PAGINATION
================================================= */
const pagination =
document.createElement(
'div'
);
pagination.className =
'ctms-pagination';
const listingParent =
listings[0].parentNode;
listingParent.appendChild(
noResults
);
listingParent.appendChild(
pagination
);
/* =================================================
STATE
================================================= */
let currentPage = 1;
let currentSearch = '';
/* =================================================
STUDY TITLE
================================================= */
function getStudyTitle(
listing
) {
const title =
listing.querySelector(
'.osDetail > h2'
);
if (!title) {
return '';
}
return title.textContent
.replace(
/\s+/g,
' '
)
.trim()
.toLowerCase();
}
/* =================================================
FILTER STUDIES
================================================= */
function getFilteredListings() {
return Array
.from(listings)
.filter(
function (listing) {
const title =
getStudyTitle(
listing
);
/*
* No search =
* show every study.
*/
if (
currentSearch === ''
) {
return true;
}
/*
* Search ONLY
* study title.
*/
return title.indexOf(
currentSearch
) !== -1;
}
);
}
/* =================================================
CLEAR SEARCH ICON
================================================= */
function updateClearButton() {
if (
searchInput.value.trim() !== ''
) {
clearButton.style.setProperty(
'display',
'inline-flex',
'important'
);
} else {
clearButton.style.setProperty(
'display',
'none',
'important'
);
}
}
/* =================================================
PAGINATION
================================================= */
function renderPagination(
totalPages
) {
pagination.innerHTML =
'';
if (
totalPages 1
) {
currentPage--;
renderStudies();
}
}
);
pagination.appendChild(
previousButton
);
/* Page numbers */
for (
let page = 1;
page <= totalPages;
page++
) {
const pageButton =
document.createElement(
'button'
);
pageButton.type =
'button';
pageButton.textContent =
page;
if (
page === currentPage
) {
pageButton.classList.add(
'ctms-page-active'
);
}
pageButton.addEventListener(
'click',
function () {
currentPage =
page;
renderStudies();
}
);
pagination.appendChild(
pageButton
);
}
/* Next */
const nextButton =
document.createElement(
'button'
);
nextButton.type =
'button';
nextButton.className =
'ctms-page-arrow';
nextButton.innerHTML =
'›';
nextButton.disabled =
currentPage === totalPages;
nextButton.addEventListener(
'click',
function () {
if (
currentPage totalPages
) {
currentPage =
totalPages;
}
/*
* Calculate current range.
*/
const startIndex =
(
currentPage - 1
) *
ITEMS_PER_PAGE;
const endIndex =
startIndex +
ITEMS_PER_PAGE;
/*
* Show only the
* current 8 studies.
*/
filteredListings
.slice(
startIndex,
endIndex
)
.forEach(
function (listing) {
listing.style.setProperty(
'display',
'block',
'important'
);
}
);
/*
* Update pagination.
*/
renderPagination(
totalPages
);
}
/* =================================================
PERFORM SEARCH
================================================= */
function performSearch() {
currentSearch =
searchInput.value
.trim()
.toLowerCase();
/*
* New search always
* starts from page 1.
*/
currentPage = 1;
renderStudies();
}
/* =================================================
SEARCH BUTTON CLICK
================================================= */
searchButton.addEventListener(
'click',
function () {
performSearch();
}
);
/* =================================================
ENTER KEY
================================================= */
searchInput.addEventListener(
'keydown',
function (event) {
if (
event.key === 'Enter'
) {
event.preventDefault();
performSearch();
}
}
);
/* =================================================
INPUT CHANGE
================================================= */
searchInput.addEventListener(
'input',
function () {
updateClearButton();
}
);
/* =================================================
CLEAR SEARCH
================================================= */
clearButton.addEventListener(
'click',
function () {
searchInput.value =
'';
currentSearch =
'';
currentPage =
1;
updateClearButton();
renderStudies();
/*
* Put focus back into
* the search field.
*/
searchInput.focus();
}
);
/* =================================================
INITIAL RENDER
================================================= */
updateClearButton();
renderStudies();
return true;
}
/* =====================================================
INITIAL ATTEMPT
===================================================== */
if (
initialiseCTMSStudyList()
) {
return;
}
/* =====================================================
CTMS DYNAMIC CONTENT
===================================================== */
const observer =
new MutationObserver(
function () {
if (
initialiseCTMSStudyList()
) {
observer.disconnect();
}
}
);
observer.observe(
document.body,
{
childList: true,
subtree: true
}
);
/* =====================================================
STOP OBSERVER AFTER 30 SECONDS
===================================================== */
setTimeout(
function () {
observer.disconnect();
},
30000
);
})();