.elementor-kit-898{--e-global-color-primary:#283840;--e-global-color-secondary:#0048F8;--e-global-color-text:#283840;--e-global-color-accent:#4A7EFF;--e-global-color-36f0516:#0134B0;--e-global-color-c696dce:#F3F3F4;--e-global-color-14ef391:#E8E8E9;--e-global-color-d6cea4e:#FFFFFF;--e-global-color-86b4fcd:#02010100;background-color:var( --e-global-color-c696dce );color:var( --e-global-color-text );font-family:"ibm-plex-sans", Sans-serif;font-size:15px;font-weight:400;font-style:normal;text-transform:none;text-decoration:none;line-height:1.3em;letter-spacing:0.2px;word-spacing:0px;}.elementor-kit-898 button,.elementor-kit-898 input[type="button"],.elementor-kit-898 input[type="submit"],.elementor-kit-898 .elementor-button{background-color:var( --e-global-color-secondary );font-family:"space-grotesk-variable", Sans-serif;font-size:18px;font-weight:400;text-transform:uppercase;line-height:1.2em;letter-spacing:1px;color:#FFFFFF;border-style:none;border-radius:0px 0px 0px 0px;padding:15px 40px 15px 40px;}.elementor-kit-898 button:hover,.elementor-kit-898 button:focus,.elementor-kit-898 input[type="button"]:hover,.elementor-kit-898 input[type="button"]:focus,.elementor-kit-898 input[type="submit"]:hover,.elementor-kit-898 input[type="submit"]:focus,.elementor-kit-898 .elementor-button:hover,.elementor-kit-898 .elementor-button:focus{background-color:#002078;color:var( --e-global-color-c696dce );border-radius:0px 0px 0px 0px;}.elementor-kit-898 e-page-transition{background-color:#FFBC7D;}.site-header{background-color:var( --e-global-color-d6cea4e );padding-inline-end:8%;padding-inline-start:8%;}.site-footer{background-color:var( --e-global-color-accent );}.elementor-kit-898 p{margin-block-end:10px;}.elementor-kit-898 a{color:var( --e-global-color-primary );}.elementor-kit-898 a:hover{color:var( --e-global-color-secondary );}.elementor-kit-898 h1{color:var( --e-global-color-primary );font-family:"space-grotesk-variable", Sans-serif;font-size:44px;font-weight:400;text-transform:none;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h2{color:var( --e-global-color-primary );font-family:"space-grotesk-variable", Sans-serif;font-size:28px;font-weight:400;text-transform:none;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h3{color:var( --e-global-color-primary );font-family:"space-grotesk-variable", Sans-serif;font-size:24px;font-weight:400;text-transform:none;line-height:1.3em;letter-spacing:-0.3px;}.elementor-kit-898 h4{color:var( --e-global-color-primary );font-family:"space-grotesk-variable", Sans-serif;font-size:20px;font-weight:400;font-style:normal;text-transform:none;text-decoration:none;line-height:1.3em;letter-spacing:-0.2px;}.elementor-kit-898 h5{color:var( --e-global-color-primary );font-family:"ibm-plex-sans", Sans-serif;font-size:18px;font-weight:400;text-transform:none;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h6{color:var( --e-global-color-secondary );font-family:"space-grotesk-variable", Sans-serif;font-size:12px;font-weight:500;text-transform:uppercase;line-height:1em;letter-spacing:2px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding .site-logo img{width:54px;max-width:54px;}.site-header .site-navigation ul.menu > li > a{color:var( --e-global-color-primary );}.site-header .site-navigation ul.menu > li.menu-item-has-children::after{color:var( --e-global-color-primary );}.site-header .site-navigation-toggle .site-navigation-toggle-icon{color:var( --e-global-color-accent );}.site-header .site-navigation .menu li{font-family:var( --e-global-typography-accent-font-family ), Sans-serif;font-size:var( --e-global-typography-accent-font-size );font-weight:var( --e-global-typography-accent-font-weight );font-style:var( --e-global-typography-accent-font-style );text-transform:var( --e-global-typography-accent-text-transform );text-decoration:var( --e-global-typography-accent-text-decoration );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.site-footer .copyright p{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-style:var( --e-global-typography-text-font-style );text-transform:var( --e-global-typography-text-text-transform );text-decoration:var( --e-global-typography-text-text-decoration );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}@media(min-width:2400px){.elementor-kit-898 h1{font-size:52px;}.elementor-kit-898 h2{font-size:34px;}.site-header .site-navigation .menu li{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.site-footer .copyright p{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}}@media(max-width:1366px){.elementor-kit-898{font-size:15px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 p{margin-block-end:10px;}.elementor-kit-898 h1{font-size:38px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h2{font-size:28px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h3{font-size:22px;}.elementor-kit-898 h4{font-size:19px;line-height:1.3em;letter-spacing:-0.2px;}.elementor-kit-898 h5{font-size:18px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h6{font-size:12px;letter-spacing:2px;}.site-header .site-navigation .menu li{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.site-footer .copyright p{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}}@media(max-width:1200px){.elementor-kit-898{font-size:15px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 p{margin-block-end:8px;}.elementor-kit-898 h1{font-size:38px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h2{font-size:26px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h3{font-size:24px;}.elementor-kit-898 h4{font-size:19px;line-height:1.3em;letter-spacing:-0.2px;}.elementor-kit-898 h5{font-size:18px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h6{font-size:12px;line-height:1em;letter-spacing:2px;}}@media(max-width:1024px){.elementor-kit-898{font-size:15px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h1{font-size:36px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h2{font-size:26px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h3{font-size:22px;}.elementor-kit-898 h4{font-size:19px;}.elementor-kit-898 h5{font-size:17px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h6{font-size:12px;line-height:1em;letter-spacing:2px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}.site-header{padding-inline-end:5%;padding-inline-start:5%;}.site-header .site-navigation .menu li{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.site-footer .copyright p{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}}@media(max-width:880px){.elementor-kit-898{font-size:15px;line-height:1.4em;letter-spacing:0.2px;}.elementor-kit-898 p{margin-block-end:8px;}.elementor-kit-898 h1{font-size:32px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h2{font-size:24px;line-height:1.3em;}.elementor-kit-898 h3{font-size:21px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h4{font-size:18px;}.elementor-kit-898 h5{font-size:17px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h6{font-size:12px;letter-spacing:2px;}}@media(max-width:767px){.elementor-kit-898{font-size:15px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 p{margin-block-end:8px;}.elementor-kit-898 h1{font-size:32px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h2{font-size:22px;line-height:1.4em;letter-spacing:0px;}.elementor-kit-898 h3{font-size:21px;line-height:1.3em;letter-spacing:-0.5px;}.elementor-kit-898 h4{font-size:18px;}.elementor-kit-898 h5{font-size:17px;line-height:1.3em;letter-spacing:0.2px;}.elementor-kit-898 h6{font-size:12px;line-height:1em;letter-spacing:2px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}.site-header .site-navigation .menu li{font-size:var( --e-global-typography-accent-font-size );line-height:var( --e-global-typography-accent-line-height );letter-spacing:var( --e-global-typography-accent-letter-spacing );}.site-footer .copyright p{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}}/* Start custom CSS *//* =========================================================
   PHOVIR HEADER — nav collapses to hamburger on sticky
   Class-based: serves both header templates.
   No JavaScript. Sticky goes on .phv-bar.
   Lives in Elementor → Site Settings → Custom CSS so it
   loads on every page regardless of which header renders.

   Required CSS classes (Advanced → CSS Classes):
     .phv-header  outer container
     .phv-row     header row
     .phv-logo    logo container
     .phv-bar     sticky nav+button container
     .phv-nav     Nav Menu widget
     .phv-btn     Button widget
   ========================================================= */

/* ----- 0. colours ----- */
.phv-header {
    --phv-burger-bg:   #283840;
    --phv-burger-fg:   #ffffff;
    --phv-panel-bg:    #283840;
    --phv-panel-fg:    #ffffff;
    --phv-panel-hover: #0048F8;
}


/* ----- 1. height lock: burger and button identical ----- */
.phv-nav .elementor-menu-toggle,
.phv-btn .elementor-button {
    height: 54px !important;
    min-height: 54px !important;
    max-height: 54px !important;
    box-sizing: border-box !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
}

/* button widget's 10px bottom margin throws centring out by 5px */
.phv-btn {
    margin: 0 !important;
}


/* ----- 2. hamburger appearance ----- */
.phv-nav .elementor-menu-toggle {
    background: var(--phv-burger-bg) !important;
    color: var(--phv-burger-fg) !important;
    width: 64px !important;
    min-width: 64px !important;
    flex: 0 0 auto !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    align-self: center !important;
    margin-left: auto;
    transition: opacity .3s ease, transform .3s ease;
}

.phv-nav .elementor-menu-toggle svg,
.phv-nav .elementor-menu-toggle i {
    fill: var(--phv-burger-fg) !important;
    color: var(--phv-burger-fg) !important;
    font-size: 24px;
}


/* ----- 3. dropdown panel, child pages, arrow, square corners -----
   NB the desktop fly-out sub-menus also carry .elementor-nav-menu--dropdown,
   so these rules style both the hamburger panel and the hover submenus.
   !important is required: Elementor sets .elementor-nav-menu--dropdown
   to #fff, which otherwise leaves sub-items white-on-white. */
.phv-nav .elementor-nav-menu--dropdown,
.phv-nav .elementor-nav-menu--dropdown ul,
.phv-nav .elementor-nav-menu--dropdown li {
    background-color: var(--phv-panel-bg) !important;
}

/* square corners — Elementor puts a 6px radius on the panel,
   the sub-menu ul AND the sub-item link */
.phv-nav .elementor-nav-menu--dropdown,
.phv-nav .elementor-nav-menu--dropdown ul,
.phv-nav .elementor-nav-menu--dropdown li,
.phv-nav .elementor-nav-menu--dropdown a,
.phv-nav ul.sub-menu.elementor-nav-menu--dropdown {
    border-radius: 0 !important;
}

.phv-nav .elementor-nav-menu--dropdown a,
.phv-nav .elementor-nav-menu--dropdown a.elementor-sub-item {
    color: var(--phv-panel-fg) !important;
    background-color: transparent !important;
}

/* child pages: same left padding as parents (the 8px transparent
   left border Elementor adds would otherwise push the text right) */
.phv-nav .elementor-nav-menu--dropdown a.elementor-sub-item {
    border-left: 0 !important;
    font-size: 12px !important;
    opacity: .85;
}

/* chevron SVG has a hardcoded black fill — make it follow the text colour */
.phv-nav .elementor-nav-menu .sub-arrow svg,
.phv-nav .elementor-nav-menu .sub-arrow svg path,
.phv-nav .elementor-nav-menu--dropdown .sub-arrow svg,
.phv-nav .elementor-nav-menu--dropdown .sub-arrow svg path {
    fill: currentColor !important;
}

.phv-nav .elementor-nav-menu--dropdown .sub-arrow {
    color: var(--phv-panel-fg) !important;
}

.phv-nav .elementor-nav-menu--dropdown a:hover,
.phv-nav .elementor-nav-menu--dropdown a.elementor-item-active,
.phv-nav .elementor-nav-menu--dropdown a.elementor-sub-item:hover,
.phv-nav .elementor-nav-menu--dropdown a.elementor-sub-item.elementor-item-active {
    background-color: var(--phv-panel-hover) !important;
    color: var(--phv-panel-fg) !important;
    opacity: 1;
}


/* ----- 4. background overlay behind the open dropdown ----- */
body::after {
    content: '';
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 28, .6);
    opacity: 0;
    visibility: hidden;
    transition: opacity .35s ease, visibility .35s ease;
    z-index: 9998;
    pointer-events: none;
}

body:has(.elementor-menu-toggle.elementor-active)::after {
    opacity: 1;
    visibility: visible;
}

body:has(.elementor-menu-toggle.elementor-active) .phv-bar {
    z-index: 10000 !important;
}


/* ----- 5. ≤1200px: dropdown overlays instead of pushing the page ----- */
@media (max-width: 1200px) {

    .phv-bar {
        position: relative;
    }

    .phv-nav {
        position: static !important;
    }

    .phv-nav nav.elementor-nav-menu--dropdown {
        position: absolute !important;
        top: 100% !important;
        right: 15px !important;
        left: auto !important;
        width: 260px !important;
        max-width: calc(100vw - 30px) !important;
        z-index: 9999 !important;
        margin: 6px 0 0 0 !important;
    }
}


/* ----- 6. ≤767px: single-row header ----- */
@media (max-width: 767px) {

    .phv-nav .elementor-menu-toggle,
    .phv-btn .elementor-button {
        height: 44px !important;
        min-height: 44px !important;
        max-height: 44px !important;
    }

    .phv-row {
        flex-wrap: nowrap !important;
        align-items: center !important;
        gap: 10px !important;
        padding: 0 15px !important;
    }

    .phv-logo {
        width: auto !important;
        flex: 0 0 auto !important;
    }

    .phv-logo img {
        width: 100px !important;
        max-width: 100px !important;
    }

    .phv-bar {
        width: auto !important;
        flex: 1 1 auto !important;
        flex-wrap: nowrap !important;
        justify-content: flex-end !important;
        gap: 8px !important;
    }

    .phv-nav,
    .phv-btn {
        width: auto !important;
        flex: 0 0 auto !important;
    }

    .phv-btn .elementor-button {
        padding-left: 14px !important;
        padding-right: 14px !important;
        font-size: 11px !important;
        white-space: nowrap;
    }

    .phv-nav .elementor-menu-toggle {
        width: 48px !important;
        min-width: 48px !important;
    }

    .phv-nav .elementor-menu-toggle svg,
    .phv-nav .elementor-menu-toggle i {
        font-size: 20px;
    }

    /* Elementor writes left/width inline on sticky — !important required.
       padding-right must be calc(1% + 15px): the outer container uses a
       PERCENTAGE padding (1%), so a flat 15px causes a 3.75px jump. */
    .phv-bar.elementor-sticky--active {
        left: 0 !important;
        right: 0 !important;
        width: 100% !important;
        max-width: 100% !important;
        box-sizing: border-box !important;
        padding-right: calc(1% + 15px) !important;
        justify-content: flex-end !important;
        align-items: center !important;
    }
}


/* ----- 7. ≥1201px: swipe from full menu to hamburger ----- */
@media (min-width: 1201px) {

    .phv-nav {
        position: relative;
    }

    /* overflow must stay VISIBLE at rest or the hover fly-out submenus,
       which hang below the 54px bar, get clipped */
    .phv-nav .elementor-nav-menu--main {
        height: 54px;
        overflow: visible;
        opacity: 1;
        transform: translateX(0);
        max-width: 1200px;
        transition: opacity .35s ease, transform .35s ease, max-width .45s ease;
    }

    .phv-nav .elementor-nav-menu--main ul.elementor-nav-menu {
        flex-wrap: nowrap !important;
        height: 54px;
    }

    /* hover fly-out: same width as its parent item, text aligned.
       SmartMenus writes width:auto / min-width:10em inline, and the
       sub-items carry an invisible 8px left border — both overridden. */
    .phv-nav .elementor-nav-menu--main li.menu-item-has-children {
        position: relative !important;
    }

    .phv-nav .elementor-nav-menu--main ul.sub-menu {
        left: 0 !important;
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
        box-sizing: border-box !important;
    }

    .phv-nav .elementor-nav-menu--main ul.sub-menu a.elementor-sub-item {
        border-left: 0 !important;
        padding-left: 26px !important;
        padding-right: 20px !important;
        white-space: normal !important;
    }

    .phv-nav .elementor-menu-toggle {
        display: none !important;
        opacity: 0;
        transform: scale(.8);
    }

    .phv-bar.elementor-sticky--active {
        align-items: center;
    }

    /* clipping is only needed while the menu is collapsing */
    .phv-bar.elementor-sticky--active .phv-nav .elementor-nav-menu--main {
        position: absolute;
        right: 0;
        top: 0;
        height: 54px;
        overflow: hidden;
        opacity: 0;
        transform: translateX(30px);
        max-width: 0;
        pointer-events: none;
    }

    .phv-bar.elementor-sticky--active .phv-nav .elementor-menu-toggle {
        display: inline-flex !important;
        opacity: 1;
        transform: scale(1);
    }

    .phv-nav nav.elementor-nav-menu--dropdown {
        display: none;
    }

    /* !important needed — Elementor's "Full Width" dropdown writes width/left inline */
    .phv-nav .elementor-menu-toggle.elementor-active + nav.elementor-nav-menu--dropdown {
        display: block !important;
        position: absolute;
        top: 100%;
        right: 0 !important;
        left: auto !important;
        width: 320px !important;
        max-width: calc(100vw - 30px) !important;
        z-index: 9999;
    }
}

/* ----- 8. form submit button icon — keep the custom arrow SVG outlined,
   not filled. Elementor auto-fills any custom-uploaded button-icon SVG
   with the button's Text Color global (secondary blue). This icon's
   source SVG is an open path (fill="none", stroke only) meant to read
   as a thin arrow — the forced fill closes the open path into a solid
   triangle. Applies site-wide to every form's submit button. ----- */
.elementor-button[type="submit"] svg,
.elementor-button[type="submit"] svg * {
    fill: none !important;
}

/* ----- 9. team/board cards — whole card clickable, opens the same
   popup as the "Learn more" button. Elementor's native container Link
   (html_tag:a) can't be used here since each card already nests its
   own button/link widget, and Elementor's own control warns against
   nesting links inside a linked container. Cursor here; click
   delegation lives in the "Team/Board card — whole card clickable"
   Custom Code snippet (elementor_body_end) — it forwards clicks
   anywhere on the card to the card's own popup-action link, except
   clicks already on a link/button, which behave normally. ----- */
.phv-team-card {
    cursor: pointer;
}

/* ----- 10. news cards (Loop Grid template, post 3219) — whole card
   clickable, same reasoning as .phv-team-card in section 9: nested
   "Learn more" link rules out Elementor's native container Link.
   Click delegation lives in the same Custom Code snippet as the
   team/board cards, forwarding to the card's a.elementor-button
   specifically (not the post-info date link, which points to the
   date archive, not the post). ----- */
.phv-news-card {
    cursor: pointer;
}

/* ----- 11. homepage Application preview cards (Realtime biomarkers,
   Personal safety, Defence & security) — whole card clickable, same
   reasoning/mechanism as .phv-team-card (section 9) and .phv-news-card
   (section 10). One link per card (a.elementor-button); click
   delegation lives in the same Custom Code snippet. ----- */
.phv-app-card {
    cursor: pointer;
}
/* ----- 12. body text readability on large screens (2026-09-29).
   Body text was a fixed 15px / 1.3 line-height while headings and
   containers scale up, so on 1920–2560px screens paragraphs ran to
   150–250 characters per line. Now: text blocks and news post content
   scale 16px (≤1366px wide) → 18px (≥2560px), line-height 1.5 at all sizes,
   and lines are capped at 67.5em (≈150 characters, per client request;
   WCAG 1.4.8 AAA suggests ≤80). max(1em, …) keeps any block deliberately set larger (the 22px
   lead paragraphs). Elementor 4 has no .elementor-widget-container,
   so these target the text elements directly. ----- */
body.elementor-kit-898 :is(.elementor-widget-text-editor, .elementor-widget-theme-post-content) :is(p, li, blockquote) {
    font-size: max(1em, clamp(16px, calc(13.7px + 0.1675vw), 18px));
    line-height: 1.5;
    max-width: 67.5em;
}
body.elementor-kit-898 :is(.elementor-widget-text-editor, .elementor-widget-theme-post-content) :is(h2, h3, h4, h5, h6, ul, ol) {
    max-width: 67.5em;
}
/* H2 headings (usually sitting above a capped paragraph) get the SAME
   pixel width as body paragraphs: 67.5 × the body text size, so heading
   and copy share one right-hand edge. All 75 H2 heading widgets are
   left-aligned, so no centring to preserve. H3s added too (all 18
   left-aligned). */
body.elementor-kit-898 .elementor-widget-heading h2.elementor-heading-title,
body.elementor-kit-898 .elementor-widget-heading h3.elementor-heading-title {
    max-width: calc(67.5 * clamp(16px, calc(13.7px + 0.1675vw), 18px));
}
/* section eyebrow labels ("The Big Idea" etc.) were 12px */
body.elementor-kit-898 h6.elementor-heading-title {
    font-size: 13px;
}/* End custom CSS */