.elementor-kit-10{--e-global-color-primary:#211E72;--e-global-color-secondary:#ED2939;--e-global-color-text:#353744;--e-global-color-accent:#C70936;--e-global-color-navy50:#F4F4FA;--e-global-color-navy100:#E8E8F5;--e-global-color-navy200:#CFD0EA;--e-global-color-navy300:#ABADD9;--e-global-color-navy400:#8184C2;--e-global-color-navy500:#5F62AA;--e-global-color-navy600:#45489A;--e-global-color-navy700:#333487;--e-global-color-navy800:#211E72;--e-global-color-navy900:#17145B;--e-global-color-navy950:#0E0B40;--e-global-color-red50:#FEF2F3;--e-global-color-red100:#FDE3E5;--e-global-color-red200:#FBC8CC;--e-global-color-red300:#F7A1A8;--e-global-color-red400:#F26672;--e-global-color-red500:#ED2939;--e-global-color-red600:#C70936;--e-global-color-red700:#A1042A;--e-global-color-red800:#7C051F;--e-global-color-red900:#590113;--e-global-color-red950:#390109;--e-global-color-neutral50:#F8F8FB;--e-global-color-neutral100:#F2F2F7;--e-global-color-neutral200:#E5E6EE;--e-global-color-neutral300:#D3D4DF;--e-global-color-neutral400:#A5A7B8;--e-global-color-neutral500:#808394;--e-global-color-neutral600:#636575;--e-global-color-neutral700:#4D4F5E;--e-global-color-neutral800:#353744;--e-global-color-neutral900:#22232E;--e-global-color-neutral950:#12131D;--e-global-color-white:#FFFFFF;--e-global-color-black:#000000;--e-global-color-success600:#12805C;--e-global-color-success50:#ECFDF3;--e-global-color-warning600:#B54708;--e-global-color-warning50:#FFFAEB;--e-global-color-error600:#B42318;--e-global-color-error50:#FEF3F2;--e-global-color-info600:#1E66C9;--e-global-color-info50:#EFF6FF;--e-global-typography-primary-font-family:"Figtree";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Figtree";--e-global-typography-secondary-font-weight:700;--e-global-typography-text-font-family:"Figtree";--e-global-typography-text-font-size:1.25vw;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.3em;--e-global-typography-text-letter-spacing:0em;--e-global-typography-accent-font-family:"Figtree";--e-global-typography-accent-font-size:1.25vw;--e-global-typography-accent-font-weight:600;--e-global-typography-accent-line-height:1.3em;--e-global-typography-accent-letter-spacing:0em;--e-global-typography-eyebrowxl-font-family:"Figtree";--e-global-typography-eyebrowxl-font-size:1.75vw;--e-global-typography-eyebrowxl-font-weight:500;--e-global-typography-eyebrowxl-text-transform:uppercase;--e-global-typography-eyebrowxl-line-height:1em;--e-global-typography-eyebrowxl-letter-spacing:0.2em;--e-global-typography-eyebrowl-font-family:"Figtree";--e-global-typography-eyebrowl-font-size:1.5vw;--e-global-typography-eyebrowl-font-weight:500;--e-global-typography-eyebrowl-text-transform:uppercase;--e-global-typography-eyebrowl-line-height:1em;--e-global-typography-eyebrowl-letter-spacing:0.2em;--e-global-typography-eyebrowm-font-family:"Figtree";--e-global-typography-eyebrowm-font-size:1.25vw;--e-global-typography-eyebrowm-font-weight:500;--e-global-typography-eyebrowm-text-transform:uppercase;--e-global-typography-eyebrowm-line-height:1em;--e-global-typography-eyebrowm-letter-spacing:0.2em;--e-global-typography-eyebrows-font-family:"Figtree";--e-global-typography-eyebrows-font-size:1vw;--e-global-typography-eyebrows-font-weight:500;--e-global-typography-eyebrows-text-transform:uppercase;--e-global-typography-eyebrows-line-height:1em;--e-global-typography-eyebrows-letter-spacing:0.2em;--e-global-typography-eyebrowxs-font-family:"Figtree";--e-global-typography-eyebrowxs-font-size:0.75vw;--e-global-typography-eyebrowxs-font-weight:500;--e-global-typography-eyebrowxs-text-transform:capitalize;--e-global-typography-eyebrowxs-line-height:1em;--e-global-typography-eyebrowxs-letter-spacing:0.2em;--e-global-typography-displaylmed-font-family:"Figtree";--e-global-typography-displaylmed-font-size:5vw;--e-global-typography-displaylmed-font-weight:500;--e-global-typography-displaylmed-line-height:1.1em;--e-global-typography-displaylmed-letter-spacing:-0.02em;--e-global-typography-displaylreg-font-family:"Figtree";--e-global-typography-displaylreg-font-size:5vw;--e-global-typography-displaylreg-font-weight:400;--e-global-typography-displaylreg-line-height:1.1em;--e-global-typography-displaylreg-letter-spacing:-0.02em;--e-global-typography-displaymmed-font-family:"Figtree";--e-global-typography-displaymmed-font-size:4.5vw;--e-global-typography-displaymmed-font-weight:500;--e-global-typography-displaymmed-line-height:1.1em;--e-global-typography-displaymmed-letter-spacing:-0.02em;--e-global-typography-displaymreg-font-family:"Figtree";--e-global-typography-displaymreg-font-size:4.5vw;--e-global-typography-displaymreg-font-weight:400;--e-global-typography-displaymreg-line-height:1.1em;--e-global-typography-displaymreg-letter-spacing:-0.02em;--e-global-typography-h1reg-font-family:"Figtree";--e-global-typography-h1reg-font-size:4vw;--e-global-typography-h1reg-font-weight:400;--e-global-typography-h1reg-line-height:1.1em;--e-global-typography-h1reg-letter-spacing:-0.02em;--e-global-typography-h1semi-font-family:"Figtree";--e-global-typography-h1semi-font-size:4vw;--e-global-typography-h1semi-font-weight:600;--e-global-typography-h1semi-line-height:1.1em;--e-global-typography-h1semi-letter-spacing:-0.02em;--e-global-typography-h2reg-font-family:"Figtree";--e-global-typography-h2reg-font-size:3.5vw;--e-global-typography-h2reg-font-weight:400;--e-global-typography-h2reg-line-height:1.1em;--e-global-typography-h2reg-letter-spacing:-0.02em;--e-global-typography-h2semi-font-family:"Figtree";--e-global-typography-h2semi-font-size:3.5vw;--e-global-typography-h2semi-font-weight:600;--e-global-typography-h2semi-line-height:1.1em;--e-global-typography-h2semi-letter-spacing:-0.02em;--e-global-typography-h3reg-font-family:"Figtree";--e-global-typography-h3reg-font-size:3.25vw;--e-global-typography-h3reg-font-weight:400;--e-global-typography-h3reg-line-height:1.1em;--e-global-typography-h3reg-letter-spacing:-0.02em;--e-global-typography-h3semi-font-family:"Figtree";--e-global-typography-h3semi-font-size:3.25vw;--e-global-typography-h3semi-font-weight:600;--e-global-typography-h3semi-line-height:1.1em;--e-global-typography-h3semi-letter-spacing:-0.02em;--e-global-typography-h4reg-font-family:"Figtree";--e-global-typography-h4reg-font-size:2.75vw;--e-global-typography-h4reg-font-weight:400;--e-global-typography-h4reg-line-height:1.1em;--e-global-typography-h4reg-letter-spacing:-0.02em;--e-global-typography-h4semi-font-family:"Figtree";--e-global-typography-h4semi-font-size:2.75vw;--e-global-typography-h4semi-font-weight:600;--e-global-typography-h4semi-line-height:1.1em;--e-global-typography-h4semi-letter-spacing:-0.02em;--e-global-typography-h5reg-font-family:"Figtree";--e-global-typography-h5reg-font-size:2.25vw;--e-global-typography-h5reg-font-weight:400;--e-global-typography-h5reg-line-height:1.1em;--e-global-typography-h5reg-letter-spacing:-0.02em;--e-global-typography-h5semi-font-family:"Figtree";--e-global-typography-h5semi-font-size:2.25vw;--e-global-typography-h5semi-font-weight:600;--e-global-typography-h5semi-line-height:1.1em;--e-global-typography-h5semi-letter-spacing:-0.02em;--e-global-typography-h6reg-font-family:"Figtree";--e-global-typography-h6reg-font-size:2vw;--e-global-typography-h6reg-font-weight:400;--e-global-typography-h6reg-line-height:1.1em;--e-global-typography-h6reg-letter-spacing:-0.02em;--e-global-typography-h6semi-font-family:"Figtree";--e-global-typography-h6semi-font-size:2vw;--e-global-typography-h6semi-font-weight:600;--e-global-typography-h6semi-line-height:1.1em;--e-global-typography-h6semi-letter-spacing:-0.02em;--e-global-typography-subl-font-family:"Figtree";--e-global-typography-subl-font-size:2.25vw;--e-global-typography-subl-font-weight:700;--e-global-typography-subl-line-height:1.2em;--e-global-typography-subl-letter-spacing:-0.02em;--e-global-typography-subm-font-family:"Figtree";--e-global-typography-subm-font-size:2vw;--e-global-typography-subm-font-weight:700;--e-global-typography-subm-line-height:1.2em;--e-global-typography-subm-letter-spacing:-0.02em;--e-global-typography-subs-font-family:"Figtree";--e-global-typography-subs-font-size:1.5vw;--e-global-typography-subs-font-weight:700;--e-global-typography-subs-line-height:1.1em;--e-global-typography-subs-letter-spacing:0em;--e-global-typography-subxs-font-family:"Figtree";--e-global-typography-subxs-font-size:1.25vw;--e-global-typography-subxs-font-weight:700;--e-global-typography-subxs-line-height:1.2em;--e-global-typography-subxs-letter-spacing:0em;--e-global-typography-bodyxlreg-font-family:"Figtree";--e-global-typography-bodyxlreg-font-size:1.5vw;--e-global-typography-bodyxlreg-font-weight:400;--e-global-typography-bodyxlreg-line-height:1.3em;--e-global-typography-bodyxlreg-letter-spacing:0em;--e-global-typography-bodyxlmed-font-family:"Figtree";--e-global-typography-bodyxlmed-font-size:1.5vw;--e-global-typography-bodyxlmed-font-weight:500;--e-global-typography-bodyxlmed-line-height:1.3em;--e-global-typography-bodyxlmed-letter-spacing:0em;--e-global-typography-bodylreg-font-family:"Figtree";--e-global-typography-bodylreg-font-size:1.4vw;--e-global-typography-bodylreg-font-weight:400;--e-global-typography-bodylreg-line-height:1.3em;--e-global-typography-bodylreg-letter-spacing:0em;--e-global-typography-bodylmed-font-family:"Figtree";--e-global-typography-bodylmed-font-size:1.4vw;--e-global-typography-bodylmed-font-weight:500;--e-global-typography-bodylmed-line-height:1.3em;--e-global-typography-bodylmed-letter-spacing:0em;--e-global-typography-bodylsemi-font-family:"Figtree";--e-global-typography-bodylsemi-font-size:1.4vw;--e-global-typography-bodylsemi-font-weight:600;--e-global-typography-bodylsemi-line-height:1.3em;--e-global-typography-bodylsemi-letter-spacing:0em;--e-global-typography-bodymreg-font-family:"Figtree";--e-global-typography-bodymreg-font-size:1.25vw;--e-global-typography-bodymreg-font-weight:400;--e-global-typography-bodymreg-line-height:1.3em;--e-global-typography-bodymreg-letter-spacing:0em;--e-global-typography-bodymmed-font-family:"Figtree";--e-global-typography-bodymmed-font-size:1.25vw;--e-global-typography-bodymmed-font-weight:500;--e-global-typography-bodymmed-line-height:1.3em;--e-global-typography-bodymmed-letter-spacing:0em;--e-global-typography-bodymsemi-font-family:"Figtree";--e-global-typography-bodymsemi-font-size:1.25vw;--e-global-typography-bodymsemi-font-weight:600;--e-global-typography-bodymsemi-line-height:1.1em;--e-global-typography-bodymsemi-letter-spacing:0em;--e-global-typography-bodysreg-font-family:"Figtree";--e-global-typography-bodysreg-font-size:1.1vw;--e-global-typography-bodysreg-font-weight:400;--e-global-typography-bodysreg-line-height:1.3em;--e-global-typography-bodysreg-letter-spacing:0em;--e-global-typography-bodysmed-font-family:"Figtree";--e-global-typography-bodysmed-font-size:1.1vw;--e-global-typography-bodysmed-font-weight:500;--e-global-typography-bodysmed-line-height:1.3em;--e-global-typography-bodysmed-letter-spacing:0em;--e-global-typography-bodyssemi-font-family:"Figtree";--e-global-typography-bodyssemi-font-size:1.1vw;--e-global-typography-bodyssemi-font-weight:600;--e-global-typography-bodyssemi-line-height:1.3em;--e-global-typography-bodyssemi-letter-spacing:0em;--e-global-typography-bodyxsreg-font-family:"Figtree";--e-global-typography-bodyxsreg-font-size:1vw;--e-global-typography-bodyxsreg-font-weight:400;--e-global-typography-bodyxsreg-line-height:1.3em;--e-global-typography-bodyxsreg-letter-spacing:0em;--e-global-typography-bodyxsmed-font-family:"Figtree";--e-global-typography-bodyxsmed-font-size:1vw;--e-global-typography-bodyxsmed-font-weight:500;--e-global-typography-bodyxsmed-line-height:1.3em;--e-global-typography-bodyxsmed-letter-spacing:0em;--e-global-typography-bodyxxsreg-font-family:"Figtree";--e-global-typography-bodyxxsreg-font-size:0.85vw;--e-global-typography-bodyxxsreg-font-weight:400;--e-global-typography-bodyxxsreg-line-height:1.3em;--e-global-typography-bodyxxsreg-letter-spacing:0em;--e-global-typography-bodyxxsmed-font-family:"Figtree";--e-global-typography-bodyxxsmed-font-size:0.85vw;--e-global-typography-bodyxxsmed-font-weight:500;--e-global-typography-bodyxxsmed-line-height:1.3em;--e-global-typography-bodyxxsmed-letter-spacing:0em;--e-global-typography-bodyxxxsreg-font-family:"Figtree";--e-global-typography-bodyxxxsreg-font-size:0.75vw;--e-global-typography-bodyxxxsreg-font-weight:400;--e-global-typography-bodyxxxsreg-line-height:1.3em;--e-global-typography-bodyxxxsreg-letter-spacing:0em;--e-global-typography-bodyxxxsmed-font-family:"Figtree";--e-global-typography-bodyxxxsmed-font-size:0.75vw;--e-global-typography-bodyxxxsmed-font-weight:500;--e-global-typography-bodyxxxsmed-line-height:1.3em;--e-global-typography-bodyxxxsmed-letter-spacing:0em;--e-global-typography-eyebrow20-font-family:"Figtree";--e-global-typography-eyebrow20-font-size:1.4vw;--e-global-typography-eyebrow20-font-weight:700;--e-global-typography-eyebrow20-line-height:1.1em;--e-global-typography-eyebrow20-letter-spacing:0em;--e-global-typography-cardtitle-font-family:"Figtree";--e-global-typography-cardtitle-font-size:2.25vw;--e-global-typography-cardtitle-font-weight:700;--e-global-typography-cardtitle-line-height:1.1em;--e-global-typography-cardtitle-letter-spacing:-0.02em;--e-global-typography-cardtitles-font-family:"Figtree";--e-global-typography-cardtitles-font-size:1.65vw;--e-global-typography-cardtitles-font-weight:700;--e-global-typography-cardtitles-line-height:1.1em;--e-global-typography-cardtitles-letter-spacing:-0.02em;--e-global-typography-quote-font-family:"Figtree";--e-global-typography-quote-font-size:2.25vw;--e-global-typography-quote-font-weight:600;--e-global-typography-quote-line-height:1.1em;--e-global-typography-quote-letter-spacing:-0.02em;--e-global-typography-caption-font-family:"Figtree";--e-global-typography-caption-font-size:1.65vw;--e-global-typography-caption-font-weight:400;--e-global-typography-caption-line-height:1.1em;--e-global-typography-caption-letter-spacing:-0.02em;--e-global-typography-stat-font-family:"Figtree";--e-global-typography-stat-font-size:5vw;--e-global-typography-stat-font-weight:600;--e-global-typography-stat-line-height:1.1em;--e-global-typography-stat-letter-spacing:-0.02em;--e-global-typography-tagxs-font-family:"Figtree";--e-global-typography-tagxs-font-size:1vw;--e-global-typography-tagxs-font-weight:700;--e-global-typography-tagxs-line-height:1.1em;--e-global-typography-tagxs-letter-spacing:-0.02em;--e-global-typography-displaymsemi-font-family:"Figtree";--e-global-typography-displaymsemi-font-size:4.5vw;--e-global-typography-displaymsemi-font-weight:600;--e-global-typography-displaymsemi-line-height:1.1em;--e-global-typography-displaymsemi-letter-spacing:-0.02em;--e-global-typography-btnl-font-family:"Figtree";--e-global-typography-btnl-font-size:1.25vw;--e-global-typography-btnl-font-weight:600;--e-global-typography-btnl-line-height:1.2em;--e-global-typography-btnl-letter-spacing:0em;color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-10 button,.elementor-kit-10 input[type="button"],.elementor-kit-10 input[type="submit"],.elementor-kit-10 .elementor-button{background-color:var( --e-global-color-red500 );font-family:var( --e-global-typography-btnl-font-family ), Sans-serif;font-size:var( --e-global-typography-btnl-font-size );font-weight:var( --e-global-typography-btnl-font-weight );line-height:var( --e-global-typography-btnl-line-height );letter-spacing:var( --e-global-typography-btnl-letter-spacing );color:var( --e-global-color-white );box-shadow:3px 5px 0px 0px #FC9690;border-style:none;border-radius:50vw 50vw 50vw 50vw;padding:1.2vw 1.7vw 1.2vw 1.7vw;}.elementor-kit-10 button:hover,.elementor-kit-10 button:focus,.elementor-kit-10 input[type="button"]:hover,.elementor-kit-10 input[type="button"]:focus,.elementor-kit-10 input[type="submit"]:hover,.elementor-kit-10 input[type="submit"]:focus,.elementor-kit-10 .elementor-button:hover,.elementor-kit-10 .elementor-button:focus{background-color:var( --e-global-color-red500 );color:var( --e-global-color-white );}.elementor-kit-10 e-page-transition{background-color:#FFBC7D;}.elementor-kit-10 h1{color:var( --e-global-color-primary );font-family:var( --e-global-typography-h1semi-font-family ), Sans-serif;font-size:var( --e-global-typography-h1semi-font-size );font-weight:var( --e-global-typography-h1semi-font-weight );line-height:var( --e-global-typography-h1semi-line-height );letter-spacing:var( --e-global-typography-h1semi-letter-spacing );}.elementor-kit-10 h2{color:var( --e-global-color-primary );font-family:var( --e-global-typography-h2semi-font-family ), Sans-serif;font-size:var( --e-global-typography-h2semi-font-size );font-weight:var( --e-global-typography-h2semi-font-weight );line-height:var( --e-global-typography-h2semi-line-height );letter-spacing:var( --e-global-typography-h2semi-letter-spacing );}.elementor-kit-10 h3{color:var( --e-global-color-primary );font-family:var( --e-global-typography-h3semi-font-family ), Sans-serif;font-size:var( --e-global-typography-h3semi-font-size );font-weight:var( --e-global-typography-h3semi-font-weight );line-height:var( --e-global-typography-h3semi-line-height );letter-spacing:var( --e-global-typography-h3semi-letter-spacing );}.elementor-kit-10 h4{color:var( --e-global-color-primary );font-family:var( --e-global-typography-h4semi-font-family ), Sans-serif;font-size:var( --e-global-typography-h4semi-font-size );font-weight:var( --e-global-typography-h4semi-font-weight );line-height:var( --e-global-typography-h4semi-line-height );letter-spacing:var( --e-global-typography-h4semi-letter-spacing );}.elementor-kit-10 h5{color:var( --e-global-color-primary );font-family:var( --e-global-typography-h5semi-font-family ), Sans-serif;font-size:var( --e-global-typography-h5semi-font-size );font-weight:var( --e-global-typography-h5semi-font-weight );line-height:var( --e-global-typography-h5semi-line-height );letter-spacing:var( --e-global-typography-h5semi-letter-spacing );}.elementor-kit-10 h6{color:var( --e-global-color-primary );font-family:var( --e-global-typography-h6semi-font-family ), Sans-serif;font-size:var( --e-global-typography-h6semi-font-size );font-weight:var( --e-global-typography-h6semi-font-weight );line-height:var( --e-global-typography-h6semi-line-height );letter-spacing:var( --e-global-typography-h6semi-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;--container-default-padding-top:0vw;--container-default-padding-right:0vw;--container-default-padding-bottom:0vw;--container-default-padding-left:0vw;}.elementor-widget:not(:last-child){--kit-widget-spacing:0vw;}.elementor-element{--widgets-spacing:0vw 0vw;--widgets-spacing-row:0vw;--widgets-spacing-column:0vw;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-kit-10{--e-global-typography-text-font-size:2.25vw;--e-global-typography-accent-font-size:2.25vw;--e-global-typography-eyebrowxl-font-size:2.5vw;--e-global-typography-eyebrowl-font-size:2.25vw;--e-global-typography-eyebrowm-font-size:2vw;--e-global-typography-eyebrows-font-size:1.75vw;--e-global-typography-eyebrowxs-font-size:1.5vw;--e-global-typography-displaylmed-font-size:5.75vw;--e-global-typography-displaylreg-font-size:5.75vw;--e-global-typography-displaymmed-font-size:5.75vw;--e-global-typography-displaymreg-font-size:5.75vw;--e-global-typography-h1reg-font-size:5.25vw;--e-global-typography-h1semi-font-size:5.25vw;--e-global-typography-h2reg-font-size:4.5vw;--e-global-typography-h2semi-font-size:4.5vw;--e-global-typography-h3reg-font-size:4vw;--e-global-typography-h3semi-font-size:4vw;--e-global-typography-h4reg-font-size:3.5vw;--e-global-typography-h4semi-font-size:3.5vw;--e-global-typography-h5reg-font-size:3.25vw;--e-global-typography-h5semi-font-size:3.25vw;--e-global-typography-h6reg-font-size:2.75vw;--e-global-typography-h6semi-font-size:2.75vw;--e-global-typography-subl-font-size:3.5vw;--e-global-typography-subm-font-size:2.75vw;--e-global-typography-subs-font-size:2.5vw;--e-global-typography-subxs-font-size:2.25vw;--e-global-typography-bodyxlreg-font-size:2.5vw;--e-global-typography-bodyxlmed-font-size:2.5vw;--e-global-typography-bodylreg-font-size:2.5vw;--e-global-typography-bodylmed-font-size:2.5vw;--e-global-typography-bodylsemi-font-size:2.5vw;--e-global-typography-bodymreg-font-size:2.25vw;--e-global-typography-bodymmed-font-size:2.25vw;--e-global-typography-bodymsemi-font-size:2.25vw;--e-global-typography-bodysreg-font-size:2.1vw;--e-global-typography-bodysmed-font-size:2.1vw;--e-global-typography-bodyssemi-font-size:2.1vw;--e-global-typography-bodyxsreg-font-size:1.4vw;--e-global-typography-bodyxsmed-font-size:2vw;--e-global-typography-bodyxxsreg-font-size:1.3vw;--e-global-typography-bodyxxsmed-font-size:1.75vw;--e-global-typography-bodyxxxsreg-font-size:1.5vw;--e-global-typography-bodyxxxsmed-font-size:1.5vw;--e-global-typography-eyebrow20-font-size:2.25vw;--e-global-typography-cardtitle-font-size:3.5vw;--e-global-typography-cardtitles-font-size:2.75vw;--e-global-typography-quote-font-size:3.25vw;--e-global-typography-caption-font-size:2.5vw;--e-global-typography-stat-font-size:5.75vw;--e-global-typography-tagxs-font-size:1.75vw;--e-global-typography-displaymsemi-font-size:5.75vw;--e-global-typography-btnl-font-size:2.25vw;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 );}.elementor-kit-10 h1{font-size:var( --e-global-typography-h1semi-font-size );line-height:var( --e-global-typography-h1semi-line-height );letter-spacing:var( --e-global-typography-h1semi-letter-spacing );}.elementor-kit-10 h2{font-size:var( --e-global-typography-h2semi-font-size );line-height:var( --e-global-typography-h2semi-line-height );letter-spacing:var( --e-global-typography-h2semi-letter-spacing );}.elementor-kit-10 h3{font-size:var( --e-global-typography-h3semi-font-size );line-height:var( --e-global-typography-h3semi-line-height );letter-spacing:var( --e-global-typography-h3semi-letter-spacing );}.elementor-kit-10 h4{font-size:var( --e-global-typography-h4semi-font-size );line-height:var( --e-global-typography-h4semi-line-height );letter-spacing:var( --e-global-typography-h4semi-letter-spacing );}.elementor-kit-10 h5{font-size:var( --e-global-typography-h5semi-font-size );line-height:var( --e-global-typography-h5semi-line-height );letter-spacing:var( --e-global-typography-h5semi-letter-spacing );}.elementor-kit-10 h6{font-size:var( --e-global-typography-h6semi-font-size );line-height:var( --e-global-typography-h6semi-line-height );letter-spacing:var( --e-global-typography-h6semi-letter-spacing );}.elementor-kit-10 button,.elementor-kit-10 input[type="button"],.elementor-kit-10 input[type="submit"],.elementor-kit-10 .elementor-button{font-size:var( --e-global-typography-btnl-font-size );line-height:var( --e-global-typography-btnl-line-height );letter-spacing:var( --e-global-typography-btnl-letter-spacing );padding:2vw 3vw 2vw 3vw;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;}}@media(max-width:767px){.elementor-kit-10{--e-global-typography-text-font-size:4vw;--e-global-typography-accent-font-size:4vw;--e-global-typography-eyebrowxl-font-size:4.5vw;--e-global-typography-eyebrowl-font-size:4vw;--e-global-typography-eyebrowm-font-size:3.5vw;--e-global-typography-eyebrows-font-size:3vw;--e-global-typography-eyebrowxs-font-size:2.5vw;--e-global-typography-displaylmed-font-size:10vw;--e-global-typography-displaylreg-font-size:10vw;--e-global-typography-displaymmed-font-size:10vw;--e-global-typography-displaymreg-font-size:10vw;--e-global-typography-h1reg-font-size:9vw;--e-global-typography-h1semi-font-size:8.14vw;--e-global-typography-h2reg-font-size:8vw;--e-global-typography-h2semi-font-size:8vw;--e-global-typography-h3reg-font-size:7vw;--e-global-typography-h3semi-font-size:7vw;--e-global-typography-h4reg-font-size:6vw;--e-global-typography-h4semi-font-size:8.14vw;--e-global-typography-h5reg-font-size:5.5vw;--e-global-typography-h5semi-font-size:7.12vw;--e-global-typography-h6reg-font-size:5vw;--e-global-typography-h6semi-font-size:5.09vw;--e-global-typography-subl-font-size:6vw;--e-global-typography-subm-font-size:5vw;--e-global-typography-subs-font-size:4.58vw;--e-global-typography-subxs-font-size:4vw;--e-global-typography-bodyxlreg-font-size:4.5vw;--e-global-typography-bodyxlmed-font-size:4.5vw;--e-global-typography-bodylreg-font-size:4.07vw;--e-global-typography-bodylmed-font-size:4.5vw;--e-global-typography-bodylsemi-font-size:4.5vw;--e-global-typography-bodymreg-font-size:4vw;--e-global-typography-bodymmed-font-size:4vw;--e-global-typography-bodymsemi-font-size:4.07vw;--e-global-typography-bodysreg-font-size:3.82vw;--e-global-typography-bodysmed-font-size:3.75vw;--e-global-typography-bodyssemi-font-size:3.75vw;--e-global-typography-bodyxsreg-font-size:3.56vw;--e-global-typography-bodyxsmed-font-size:3.5vw;--e-global-typography-bodyxxsreg-font-size:3vw;--e-global-typography-bodyxxsmed-font-size:3vw;--e-global-typography-bodyxxxsreg-font-size:2.75vw;--e-global-typography-bodyxxxsmed-font-size:2.75vw;--e-global-typography-eyebrow20-font-size:4.58vw;--e-global-typography-cardtitle-font-size:5.6vw;--e-global-typography-cardtitles-font-size:5.09vw;--e-global-typography-quote-font-size:5.6vw;--e-global-typography-caption-font-size:4.07vw;--e-global-typography-stat-font-size:10.18vw;--e-global-typography-tagxs-font-size:3.56vw;--e-global-typography-displaymsemi-font-size:12.21vw;--e-global-typography-btnl-font-size:4.07vw;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 );}.elementor-kit-10 h1{font-size:var( --e-global-typography-h1semi-font-size );line-height:var( --e-global-typography-h1semi-line-height );letter-spacing:var( --e-global-typography-h1semi-letter-spacing );}.elementor-kit-10 h2{font-size:var( --e-global-typography-h2semi-font-size );line-height:var( --e-global-typography-h2semi-line-height );letter-spacing:var( --e-global-typography-h2semi-letter-spacing );}.elementor-kit-10 h3{font-size:var( --e-global-typography-h3semi-font-size );line-height:var( --e-global-typography-h3semi-line-height );letter-spacing:var( --e-global-typography-h3semi-letter-spacing );}.elementor-kit-10 h4{font-size:var( --e-global-typography-h4semi-font-size );line-height:var( --e-global-typography-h4semi-line-height );letter-spacing:var( --e-global-typography-h4semi-letter-spacing );}.elementor-kit-10 h5{font-size:var( --e-global-typography-h5semi-font-size );line-height:var( --e-global-typography-h5semi-line-height );letter-spacing:var( --e-global-typography-h5semi-letter-spacing );}.elementor-kit-10 h6{font-size:var( --e-global-typography-h6semi-font-size );line-height:var( --e-global-typography-h6semi-line-height );letter-spacing:var( --e-global-typography-h6semi-letter-spacing );}.elementor-kit-10 button,.elementor-kit-10 input[type="button"],.elementor-kit-10 input[type="submit"],.elementor-kit-10 .elementor-button{font-size:var( --e-global-typography-btnl-font-size );line-height:var( --e-global-typography-btnl-line-height );letter-spacing:var( --e-global-typography-btnl-letter-spacing );padding:4vw 5vw 4vw 5vw;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;}}/* Start custom CSS *//* ==========================================================================
   GLOBAL - BUTTONS
   Built from Figma component "Button" (node 3016:1332).
   Default (no class)      = Accent: red fill, solid #FC9690 shadow
   s107-btn-outline        = Secondary: navy outline + navy text
   s107-btn-outline-light  = Secondary / Light: white outline + white text
   s107-btn-navy           = Primary: navy gradient fill, solid #837FE2 shadow
   Sizes: default = Large (56), s107-btn-md = Medium (48), s107-btn-sm = Small (40)

   Outline types: the main outline is an inset ring (inside the button, like
   Figma). The "shadow" is a second outline ring offset behind the button and
   masked out wherever it falls inside the button - Figma's shadow is not
   shown behind transparent areas, so only the slivers outside are visible.
   The mask needs the pill height, so each size has a fixed vw height.
   Press effect (Figma): hover/active slides the button into its shadow and
   collapses the shadow, 150ms ease-out. Secondary types fill on hover (see "Hover fill per type").
   ========================================================================== */
body :is(.elementor-widget-button, .elementor-widget-loop-grid) {
  --s107-btn-h: 3.9vw;
  --s107-btn-px: 1.7vw;
  --s107-btn-sx: 3px;
  --s107-btn-sy: 5px;
  --s107-btn-bw: 0.1vw;
}
body :is(.elementor-widget-button, .e-loop__load-more) .elementor-button,
body :is(.elementor-widget-button, .e-loop__load-more) .elementor-button:is(:hover, :focus, :active, :visited) {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: var(--s107-btn-h);
  padding: 0 var(--s107-btn-px);
  position: relative;
  z-index: 0;
  border: 0;
  border-radius: 50vw;
  line-height: 1.2;
  transition: transform 150ms ease-out, box-shadow 150ms ease-out, background-color 150ms ease-out, color 150ms ease-out;
  background: var(--s107-btn-bg, var(--e-global-color-red500));
  color: var(--s107-btn-color, var(--e-global-color-white));
  box-shadow: var(--s107-btn-inset, 0 0 0 0 transparent), var(--s107-btn-outer, var(--s107-btn-sx) var(--s107-btn-sy) 0 var(--s107-btn-shadow, #FC9690));
}

/* Types */
body .s107-btn-outline {
  --s107-btn-bg: transparent;
  --s107-btn-color: var(--e-global-color-navy800);
  --s107-btn-inset: inset 0 0 0 var(--s107-btn-bw) var(--e-global-color-navy800);
  --s107-btn-outer: 0 0 0 0 transparent;
  --s107-btn-shadow: rgba(33, 30, 114, 0.6);
}
body .s107-btn-outline-light {
  --s107-btn-bg: transparent;
  --s107-btn-color: var(--e-global-color-white);
  --s107-btn-inset: inset 0 0 0 var(--s107-btn-bw) var(--e-global-color-white);
  --s107-btn-outer: 0 0 0 0 transparent;
  --s107-btn-shadow: rgba(255, 255, 255, 0.6);
}
body .s107-btn-navy {
  --s107-btn-bg: linear-gradient(126deg, var(--e-global-color-navy800) 39%, var(--e-global-color-navy700) 100%);
  --s107-btn-color: var(--e-global-color-white);
  --s107-btn-shadow: #837FE2;
}

/* Outline types: offset ring behind, masked out inside the button pill */
body :is(.s107-btn-outline, .s107-btn-outline-light) .elementor-button::before {
  --s107-dot: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1 1'%3E%3Ccircle cx='.5' cy='.5' r='.5'/%3E%3C/svg%3E");
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  border-radius: 50vw;
  box-shadow: inset 0 0 0 var(--s107-btn-bw) var(--s107-btn-shadow);
  transform: translate(var(--s107-btn-sx), var(--s107-btn-sy));
  transition: transform 150ms ease-out;
  -webkit-mask:
    linear-gradient(#000 0 0) 0 0 / 100% 100% no-repeat,
    var(--s107-dot) calc(var(--s107-btn-sx) * -1) calc(var(--s107-btn-sy) * -1) / auto 100% no-repeat,
    var(--s107-dot) right var(--s107-btn-sx) top calc(var(--s107-btn-sy) * -1) / auto 100% no-repeat,
    linear-gradient(#000 0 0) calc(var(--s107-btn-h) / 2 - var(--s107-btn-sx)) calc(var(--s107-btn-sy) * -1) / calc(100% - var(--s107-btn-h)) 100% no-repeat;
  -webkit-mask-composite: source-out, source-over, source-over;
  mask:
    linear-gradient(#000 0 0) 0 0 / 100% 100% no-repeat,
    var(--s107-dot) calc(var(--s107-btn-sx) * -1) calc(var(--s107-btn-sy) * -1) / auto 100% no-repeat,
    var(--s107-dot) right var(--s107-btn-sx) top calc(var(--s107-btn-sy) * -1) / auto 100% no-repeat,
    linear-gradient(#000 0 0) calc(var(--s107-btn-h) / 2 - var(--s107-btn-sx)) calc(var(--s107-btn-sy) * -1) / calc(100% - var(--s107-btn-h)) 100% no-repeat;
  mask-composite: subtract, add, add;
}

/* Press effect (Figma Button: Hover = pressed). Mouse hover only, so taps on
   touch screens don't leave buttons stuck pressed; :active covers touch. */
@media (hover: hover) {
  body :is(.elementor-widget-button, .e-loop__load-more) .elementor-button:hover {
    transform: translate(var(--s107-btn-sx), var(--s107-btn-sy));
    box-shadow: var(--s107-btn-inset, 0 0 0 0 transparent), 0 0 0 0 transparent;
  }
  body :is(.s107-btn-outline, .s107-btn-outline-light) .elementor-button:hover::before { transform: translate(0, 0); }
}
body :is(.elementor-widget-button, .e-loop__load-more) .elementor-button:active {
  transform: translate(var(--s107-btn-sx), var(--s107-btn-sy));
  box-shadow: var(--s107-btn-inset, 0 0 0 0 transparent), 0 0 0 0 transparent;
}
body :is(.s107-btn-outline, .s107-btn-outline-light) .elementor-button:active::before { transform: translate(0, 0); }
@media (prefers-reduced-motion: reduce) {
  body :is(.elementor-widget-button, .e-loop__load-more) .elementor-button,
  body :is(.elementor-widget-button, .e-loop__load-more) .elementor-button::before { transition: none; }
}
/* Search widget "Search" button (header, search results, 404): same press effect
   as the red buttons. Its shadow drops to none on hover in Elementor (Search >
   Style > Button > Hover, with the 0.15s transition); the slide into the shadow is here. */
@media (hover: hover) { body .elementor-widget-search .e-search-submit:hover { transform: translate(2px, 4px); } }
body .elementor-widget-search .e-search-submit:active { transform: translate(2px, 4px); box-shadow: none; }
@media (prefers-reduced-motion: reduce) { body .elementor-widget-search .e-search .e-search-submit { transition: none; } }

/* Hover fill per type (Figma Button hover variants): Accent and Primary keep
   their fill; Secondary fills Navy 50; Secondary Light fills white with a navy
   label (white text would vanish on the white fill). */
body .s107-btn-outline .elementor-button:is(:hover, :active) { --s107-btn-bg: var(--e-global-color-navy50); }
body .s107-btn-outline-light .elementor-button:is(:hover, :active) { --s107-btn-bg: var(--e-global-color-white); --s107-btn-color: var(--e-global-color-navy800); }
@media (hover: none) {
  body .s107-btn-outline .elementor-button:hover:not(:active) { --s107-btn-bg: transparent; }
  body .s107-btn-outline-light .elementor-button:hover:not(:active) { --s107-btn-bg: transparent; --s107-btn-color: var(--e-global-color-white); }
}

/* Sizes */
body .s107-btn-md { --s107-btn-h: 3.35vw; --s107-btn-px: 1.1vw; --s107-btn-sx: 2px; --s107-btn-sy: 4px; }
body .s107-btn-md .elementor-button { font-size: 1.1vw; }
body .s107-btn-sm { --s107-btn-h: 2.8vw; --s107-btn-px: 1.1vw; --s107-btn-sx: 1px; --s107-btn-sy: 3px; }
body .s107-btn-sm .elementor-button { font-size: 1vw; }

@media (max-width: 1024px) {
  body :is(.elementor-widget-button, .elementor-widget-loop-grid) { --s107-btn-h: 6.75vw; --s107-btn-px: 3vw; --s107-btn-bw: 0.2vw; }
  body .s107-btn-md { --s107-btn-h: 6vw; --s107-btn-px: 2.25vw; }
  body .s107-btn-md .elementor-button { font-size: 2.1vw; }
  body .s107-btn-sm { --s107-btn-h: 5.25vw; --s107-btn-px: 2vw; }
  body .s107-btn-sm .elementor-button { font-size: 1.85vw; }
}
/* Mobile sizes from Figma mobile (393 wide): Large 56 / Medium 48 / Small 40 */
@media (max-width: 767px) {
  body :is(.elementor-widget-button, .elementor-widget-loop-grid) { --s107-btn-h: 14.25vw; --s107-btn-px: 6.11vw; --s107-btn-bw: 0.38vw; }
  body .s107-btn-md { --s107-btn-h: 12.21vw; --s107-btn-px: 4.07vw; }
  body .s107-btn-md .elementor-button { font-size: 4.07vw; }
  body .s107-btn-sm { --s107-btn-h: 10.18vw; --s107-btn-px: 4.07vw; }
  body .s107-btn-sm .elementor-button { font-size: 3.56vw; }
  /* s107-btn-m-md: Small on desktop/tablet, Medium on mobile (Beyond the classroom cards) */
  body .s107-btn-m-md { --s107-btn-h: 12.21vw; --s107-btn-px: 4.07vw; --s107-btn-sx: 2px; --s107-btn-sy: 4px; }
  body .s107-btn-m-md .elementor-button { font-size: 4.07vw; }
  /* s107-btn-mob-md: Medium on mobile only (page hero buttons, Figma mobile 3rd iteration) */
  body .s107-btn-mob-md { --s107-btn-h: 12.21vw; --s107-btn-px: 4.07vw; --s107-btn-sx: 2px; --s107-btn-sy: 4px; }
  body .s107-btn-mob-md .elementor-button { font-size: 4.07vw; }
}

/* ==========================================================================
   GLOBAL - FOOTER
   ========================================================================== */

/* Social icons: hard red shadow from Figma (no native control on Social Icons widget) */
.s107-social .elementor-social-icon {
  box-shadow: 3px 5px 0 #FC9690;
  transition: transform 150ms ease-out, box-shadow 150ms ease-out;
}
/* Same press effect as the buttons: slide into the shadow, shadow collapses */
@media (hover: hover) {
  .s107-social .elementor-social-icon:hover { transform: translate(3px, 5px); box-shadow: 0 0 0 0 transparent; }
}
.s107-social .elementor-social-icon:active { transform: translate(3px, 5px); box-shadow: 0 0 0 0 transparent; }
@media (prefers-reduced-motion: reduce) {
  .s107-social .elementor-social-icon { transition: none; }
}


/* Mobile (Figma Web / Footer, mobile): uses the same crop as Figma - a mobile-only
   background image cut from Figma's original photo (centred, zoomed in), shown
   100% wide from the top, so it ends at 123.2vw. The fade finishes exactly there.
   Previous note: the footer is much taller relative to its width, so the photo ends at
   ~35% of the footer height. Elementor does not output responsive gradient
   stops for background overlays, so the fade is re-set here to finish exactly
   where the photo ends (all sizes are vw, so the ratio holds across phones). */
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-footer-bg::before {
    background-image: linear-gradient(180deg, rgba(33, 30, 114, 0) 105vw, var(--e-global-color-navy800) 123.2vw);
  }
}

/* ==========================================================================
   HOMEPAGE - TABS (Learning journey + Stories)
   Tab bar pill background - Nested Tabs has no control for the bar itself.
   ========================================================================== */
.s107-tabs .e-n-tabs-heading {
  width: fit-content;
  max-width: 100%;
  margin-inline: auto;
  padding: 0.55vw;
  border-radius: 1.1vw;
}
.s107-tabs-navy .e-n-tabs-heading { background-color: var(--e-global-color-navy50); }
.s107-tabs-red .e-n-tabs-heading { background-color: var(--e-global-color-red50); }
/* Tab labels: Figma line height 110% (Nested Tabs forces its own) */
.s107-tabs .e-n-tab-title-text { line-height: 1.1; }

@media (max-width: 767px) {
  /* Figma mobile: full-width bar that scrolls sideways, 8px padding, radius 24 (Learning) / 16 (Stories) */
  .s107-tabs .e-n-tabs-heading { width: 100%; padding: 2.04vw; border-radius: 6.11vw; }
  .s107-tabs-red .e-n-tabs-heading { width: calc(100% - 6.1vw); border-radius: 4.07vw; }
}

/* ==========================================================================
   HOMEPAGE - CAMPUS
   Highlighted word in the section title (colour from Figma, not in palette).
   ========================================================================== */
.s107-text-green { color: #08A652; }


/* ==========================================================================
   HOMEPAGE - STORIES + ACCREDITATIONS (carousel side offsets)
   Nested Carousel 'Offset' control only accepts px; these rules keep the peek
   width responsive in vw. Selector is deliberately more specific than
   Elementor's per-widget rule (.elementor-225 .elementor-element.elementor-element-xxx).
   ========================================================================== */
.elementor .elementor-element.elementor-widget-n-carousel.s107-stories-carousel { --e-n-carousel-swiper-offset-size: 17vw; }
.elementor .elementor-element.elementor-widget-n-carousel.s107-logo-carousel { --e-n-carousel-swiper-offset-size: 4vw; }
@media (max-width: 1024px) {
  .elementor .elementor-element.elementor-widget-n-carousel.s107-stories-carousel { --e-n-carousel-swiper-offset-size: 8vw; }
}
@media (max-width: 767px) {
  .elementor .elementor-element.elementor-widget-n-carousel.s107-stories-carousel { --e-n-carousel-swiper-offset-size: 5vw; }
  .elementor .elementor-element.elementor-widget-n-carousel.s107-logo-carousel { --e-n-carousel-swiper-offset-size: 12vw; }
}

/* ==========================================================================
   GLOBAL - CAROUSEL GAPS (vw)
   Nested Carousel 'Gap between slides' only accepts px, so the gap is set to 0
   and created with vw padding on each slide (widget pulled out by the same
   amount with negative side margins in Elementor).
   ========================================================================== */
/* Carousel with vw gaps: widget is pulled out by negative side margins (set in
   Elementor) so it must also be widened by the same total; Elementor caps
   widget width at 100%, hence this rule. */
.elementor .elementor-element.elementor-widget.s107-carousel-gap-l:not(.s107-stories-carousel) { width: calc(100% + 1.7vw); max-width: none; }
@media (max-width: 767px) {
  .elementor .elementor-element.elementor-widget.s107-carousel-gap-l:not(.s107-stories-carousel) { width: calc(100% + 4vw); }
}
.s107-carousel-gap-l .swiper-slide { padding-inline: 0.85vw; }
.s107-carousel-gap-s .swiper-slide { padding-inline: 0.55vw; }
.s107-carousel-gap-xl .swiper-slide { padding-inline: 1.1vw; }
.elementor .elementor-element.elementor-widget.s107-carousel-gap-xl { width: calc(100% + 2.2vw); max-width: none; }
@media (max-width: 767px) {
  .s107-carousel-gap-l .swiper-slide { padding-inline: 2vw; }
  .s107-carousel-gap-s .swiper-slide { padding-inline: 1.5vw; }
  .s107-carousel-gap-xl .swiper-slide { padding-inline: 2vw; }
  .elementor .elementor-element.elementor-widget.s107-carousel-gap-xl { width: calc(100% + 4vw); }
}


/* ==========================================================================
   HOMEPAGE - NEWS (Loop Carousel)
   Desktop shows all 3 posts, so arrows are hidden there. Loop Carousel's
   Arrows switch has no per-device value, hence this rule. Tablet (2 per view)
   and mobile (1 per view) keep the arrows.
   ========================================================================== */
@media (min-width: 1025px) {
  .elementor .elementor-element.elementor-widget.s107-news-carousel .elementor-swiper-button { display: none; }
}


/* ==========================================================================
   HOMEPAGE - ACCREDITATIONS MARQUEE
   Carousel autoplays with 0 delay + 4000ms slide speed (set in Elementor).
   Linear easing makes it a continuous, endless scroll instead of stop-start.
   ========================================================================== */
.s107-logo-carousel .swiper-wrapper { transition-timing-function: linear !important; }


/* ==========================================================================
   HOMEPAGE - HERO
   Dark gradient overlay from Figma (hero frame 3158:6916, 3 stops). The
   Elementor overlay (Background Overlay on the hero card) only allows 2
   stops, so this adds Figma's middle stop. Remove this block to fall back
   to the 2-stop Elementor version.
   ========================================================================== */
body .elementor .elementor-element.s107-hero-card::before {
  background-image: linear-gradient(190deg, rgba(0, 0, 0, 0) 46%, rgba(0, 0, 0, 0.5) 68%, rgba(0, 0, 0, 0.8) 90%);
}


/* ==========================================================================
   GLOBAL - HEADER (default header + compact navy bar on scroll)
   The Header template has one bar, "Header - Main" (.s107-hdr-main): the default
   white header, not sticky - it scrolls away with the blue top bar. Once the page
   has scrolled ~450px past it, Custom Code "Header - compact bar on scroll" adds
   .s107-hdr-compact to the same bar: it becomes Figma's floating navy header
   (frame 3158:6955), fixed to the top and parked above the screen, and
   body.s107-hdr-show slides it down. Scrolling back to the top slides it up and
   returns it to the page. Rules below scoped to .s107-hdr-compact = navy mode.
   ========================================================================== */
body .elementor .elementor-element.s107-hdr-compact {
  position: fixed; top: 0; left: 0; right: 0; --width: 100%; width: 100%; max-width: none; z-index: 100;
  transform: translateY(-110%); visibility: hidden;
  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.5s;
}
body.s107-hdr-show .elementor .elementor-element.s107-hdr-compact {
  transform: translateY(0); visibility: visible;
  transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s;
}
/* While the bar switches between white and navy, nothing animates (set briefly by the Custom Code) */
body .elementor .s107-hdr-noanim, body .elementor .s107-hdr-noanim * { transition: none !important; }
@media (min-width: 783px) { body.admin-bar .elementor .elementor-element.s107-hdr-compact { top: var(--wp-admin--admin-bar--height, 0px); } }
/* Announcement in the top bar: one heading, the link typed inside it (<a>).
   Selector is longer than Elementor's own heading-link rule (colour: inherit). */
body .elementor-widget-heading.s107-announce .elementor-heading-title a { margin-left: 0.3vw; color: var(--e-global-color-red400); font-family: Figtree, sans-serif; font-weight: 400; font-size: 1vw; line-height: 1.3; text-decoration: underline; }
@media (max-width: 1024px) { body .elementor-widget-heading.s107-announce .elementor-heading-title a { margin-left: 0.5vw; font-size: 1.4vw; } }
@media (max-width: 767px) { body .elementor-widget-heading.s107-announce .elementor-heading-title a { margin-left: 1.02vw; font-size: 3.56vw; } }
/* Two logos sit in the same box: colour shows on the default header, white on the compact bar */
.s107-hdr-logo-white { pointer-events: none; }
.s107-hdr-logo-white img { opacity: 0; }
/* --- Compact bar: colours (all devices) --- */
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-bar { background-color: var(--e-global-color-navy950); }
body .elementor .s107-hdr-compact .s107-hdr-logo-colour img { opacity: 0; }
body .elementor .s107-hdr-compact .s107-hdr-logo-white { pointer-events: auto; }
body .elementor .s107-hdr-compact .s107-hdr-logo-white img { opacity: 1; }
body .elementor .s107-hdr-compact .s107-hdr-nav .elementor-nav-menu--main .elementor-item,
body .elementor .s107-hdr-compact .s107-hdr-nav .elementor-nav-menu--main .elementor-item:is(:hover, :focus) { color: var(--e-global-color-white); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-nav .elementor-menu-toggle { color: var(--e-global-color-white); background-color: transparent; }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-nav .elementor-menu-toggle svg { fill: var(--e-global-color-white); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-search .elementor-icon { color: var(--e-global-color-white); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-search .elementor-icon svg { fill: var(--e-global-color-white); }
body .elementor .s107-hdr-compact .s107-btn-outline {
  --s107-btn-color: var(--e-global-color-white);
  --s107-btn-inset: inset 0 0 0 var(--s107-btn-bw) var(--e-global-color-white);
  --s107-btn-shadow: rgba(255, 255, 255, 0.6);
}
body .elementor .s107-hdr-compact .s107-btn-outline .elementor-button:is(:hover, :active) { --s107-btn-bg: var(--e-global-color-white); --s107-btn-color: var(--e-global-color-navy800); }
body .elementor .s107-hdr-compact .elementor-widget-button { --s107-btn-sx: 1px; --s107-btn-sy: 3px; }

/* --- Compact mode: the default bar's own Elementor colours swapped for the navy bar --- */
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-bar { border-width: 0; --border-top-width: 0px; --border-right-width: 0px; --border-bottom-width: 0px; --border-left-width: 0px; }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-mega {
  --n-menu-title-color-normal: var(--e-global-color-white); --n-menu-title-color-hover: var(--e-global-color-white); --n-menu-title-color-active: var(--e-global-color-white);
  --n-menu-dropdown-indicator-color-normal: var(--e-global-color-white); --n-menu-dropdown-indicator-color-hover: var(--e-global-color-white); --n-menu-dropdown-indicator-color-active: var(--e-global-color-white);
  --n-menu-title-distance-from-content: 0.88vw;
}
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-mega > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title:hover:not(.e-current),
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-mega > .e-n-menu > .e-n-menu-wrapper > .e-n-menu-heading > .e-n-menu-item > .e-n-menu-title.e-current { background-color: rgba(255, 255, 255, 0.12); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-call.elementor-view-framed .elementor-icon { color: var(--e-global-color-white); border-color: var(--e-global-color-white); background-color: transparent; }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-call.elementor-view-framed .elementor-icon svg { fill: var(--e-global-color-white); }
@media (max-width: 1024px) {
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-mega { --n-menu-title-distance-from-content: 1.85vw; }
}
/* --- Compact bar: sizes, desktop (Figma: 70 tall, logo 117, Small buttons) --- */
@media (min-width: 1025px) {
  body .elementor .elementor-element.s107-hdr-compact { --padding-left: 4vw; --padding-right: 4vw; }
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-bar { --padding-top: 0.85vw; --padding-bottom: 0.85vw; --padding-left: 1.7vw; --padding-right: 1.7vw; --border-radius: 0 0 1.7vw 1.7vw; border-radius: 0 0 1.7vw 1.7vw; }
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-logo img { width: 8.1vw; }
  body .elementor .s107-hdr-compact .elementor-widget-button { --s107-btn-h: 2.8vw; --s107-btn-px: 1.1vw; }
  body .elementor .s107-hdr-compact .elementor-widget-button .elementor-button { font-size: 1vw; }
}
/* --- tablet --- */
@media (min-width: 768px) and (max-width: 1024px) {
  body .elementor .elementor-element.s107-hdr-compact { --padding-left: 4vw; --padding-right: 4vw; }
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-bar { --padding-top: 1.25vw; --padding-bottom: 1.25vw; --padding-left: 2.5vw; --padding-right: 2.5vw; --border-radius: 0 0 2.5vw 2.5vw; border-radius: 0 0 2.5vw 2.5vw; }
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-logo img { width: 15vw; }
  body .elementor .s107-hdr-compact .elementor-widget-button { --s107-btn-h: 5.25vw; --s107-btn-px: 2vw; }
  body .elementor .s107-hdr-compact .elementor-widget-button .elementor-button { font-size: 1.85vw; }
}
/* --- mobile --- */
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-hdr-compact { --padding-left: 2.5vw; --padding-right: 2.5vw; }
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-bar { --padding-top: 2vw; --padding-bottom: 2vw; --padding-left: 4vw; --padding-right: 4vw; --border-radius: 0 0 4vw 4vw; border-radius: 0 0 4vw 4vw; }
  body .elementor .s107-hdr-compact .elementor-element.s107-hdr-logo img { width: 30vw; }
  body .elementor .s107-hdr-compact .elementor-widget-button { --s107-btn-h: 10vw; --s107-btn-px: 4vw; }
  body .elementor .s107-hdr-compact .elementor-widget-button .elementor-button { font-size: 3.5vw; }
}
@media (prefers-reduced-motion: reduce) {
  body .elementor .elementor-element.s107-hdr-compact { transition: none; }
}

/* ==========================================================================
   GLOBAL - ENTRANCE ANIMATIONS (subtle Fade In Up)
   Elementor's Fade In Up slides an element up by 100% of its own height, which
   is far too much for cards and carousels. This keeps Elementor's animation
   (Motion Effects > Entrance Animation: Fade In Up) but limits the travel.
   ========================================================================== */
@keyframes s107FadeInUp { from { opacity: 0; transform: translate3d(0, var(--s107-anim-y, 3vw), 0); } to { opacity: 1; transform: none; } }
.elementor .elementor-element.animated.fadeInUp { animation-name: s107FadeInUp; }
@media (min-width: 768px) and (max-width: 1024px) { .elementor .elementor-element.animated.fadeInUp { --s107-anim-y: 5vw; } }
@media (max-width: 767px) { .elementor .elementor-element.animated.fadeInUp { --s107-anim-y: 8vw; } }

/* ==========================================================================
   HOMEPAGE - MOBILE (Figma "0.0 Home — Mobile", node 3636:7, 393 wide)
   1px in Figma = 0.2545vw. Spacing, sizes and type are set per element in
   Elementor (mobile values); this block only covers what Elementor can't do:
   - Swipe rows: Why S107 and Beyond the classroom cards sit in one row you
     swipe sideways (containers have no per-device overflow setting).
   - Peek carousels: Latest campaigns, Stories and News show one card plus a
     peek of the next, starting at the 12px page edge, no arrows (swipe).
     Card widths: campaigns/stories 300px, news 280px.
   ========================================================================== */
@media (max-width: 767px) {
  .elementor .elementor-element.e-con.s107-m-scroll {
    overflow-x: auto;
    overflow-y: hidden;
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
  }
  .elementor .elementor-element.e-con.s107-m-scroll::-webkit-scrollbar { display: none; }
  .elementor .elementor-element.e-con.s107-m-scroll > .e-con { flex-shrink: 0; scroll-snap-align: start; }

  body .elementor .elementor-element.elementor-widget.elementor-widget.s107-m-peek {
    --s107-peek-card: 76.34vw;
    --s107-peek-start: 0vw;
    width: 100%;
    max-width: 100%;
    margin-inline: 0;
  }
  body .elementor .elementor-element.elementor-widget.elementor-widget.s107-m-peek-280 { --s107-peek-card: 71.25vw; }
  body .elementor .elementor-element.elementor-widget.elementor-widget.s107-m-peek-inset { --s107-peek-start: 3.05vw; }
  body .elementor .elementor-element.elementor-widget.s107-m-peek .swiper.swiper {
    padding-inline-start: var(--s107-peek-start);
    padding-inline-end: calc(100% - var(--s107-peek-start) - var(--s107-peek-card) - 3.05vw);
  }
  body .elementor .elementor-element.elementor-widget.s107-m-peek .swiper-slide { padding-inline: 0 3.05vw; }
  body .elementor .elementor-element.elementor-widget.s107-m-peek .elementor-swiper-button { display: none; }
  /* Free swipe rows: the slider is switched off on phones by Custom Code
     "Mobile - carousels as swipe rows" (adds .s107-swiper-off), and the
     slides scroll sideways natively, snapping to each card. */
  body .elementor .elementor-element.elementor-widget.s107-swiper-off .swiper.swiper { padding-inline: 0; overflow: visible; }
  body .elementor .elementor-element.elementor-widget.s107-swiper-off .swiper-wrapper.swiper-wrapper {
    display: flex;
    transform: none !important;
    overflow-x: auto;
    overflow-y: hidden;
    padding-inline: var(--s107-peek-start) 0;
    scroll-padding-inline-start: var(--s107-peek-start);
    scroll-snap-type: x mandatory;
    overscroll-behavior-x: contain;
    scrollbar-width: none;
  }
  body .elementor .elementor-element.elementor-widget.s107-swiper-off .swiper-wrapper::-webkit-scrollbar { display: none; }
  body .elementor .elementor-element.elementor-widget.s107-swiper-off .swiper-slide {
    flex: 0 0 auto;
    width: calc(var(--s107-peek-card) + 3.05vw) !important;
    scroll-snap-align: start;
  }
  body .elementor .elementor-element.elementor-widget.s107-swiper-off .swiper-slide-duplicate { display: none; }
  /* News card title: 2 lines then ellipsis (Figma mobile) */
  .s107-m-clamp-2 .elementor-heading-title { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
}
/* ==========================================================================
   GLOBAL - HEADER (mobile, Figma "Header" 3636:8)
   Main bar 72px: logo | call button (Icon widget, mobile only) | "Menu" pill.
   The pill is the Button widget "Menu" (.s107-hdr-menubtn, phones only). It
   opens the Off-Canvas "Mobile menu" in the Footer template (see MOBILE MENU).
   ========================================================================== */
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button,
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button:hover,
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button:active {
    display: inline-flex;
    align-items: center;
    height: 12.21vw;
    padding: 0 4.58vw 0 4.07vw;
    border: 0;
    border-radius: 50vw;
    background: var(--e-global-color-navy800);
    color: var(--e-global-color-white);
    box-shadow: none;
    transform: none;
    font-family: "Figtree", sans-serif;
    font-weight: 600;
    font-size: 3.82vw;
    line-height: 1.3;
  }
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button::before,
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button::after { display: none; }
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button-content-wrapper { flex-direction: row; align-items: center; gap: 2.04vw; }
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button-icon { display: flex; }
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button-icon svg { width: 6.11vw; height: 6.11vw; fill: currentColor; }
  /* Compact navy bar (on scroll): white pill, navy label */
  body .elementor .s107-hdr-compact.s107-hdr-compact .elementor-element.s107-hdr-menubtn .elementor-button {
    background: var(--e-global-color-white);
    color: var(--e-global-color-navy800);
  }
  /* Call button: exact 48px circle (Icon widget adds line-height around the frame) */
  .s107-hdr-call .elementor-icon-wrapper { line-height: 0; }
  body .elementor .elementor-element.s107-hdr-call .elementor-icon { display: flex; align-items: center; justify-content: center; width: 12.21vw; height: 12.21vw; padding: 0; border-width: 0.38vw; }
}
/* ==========================================================================
   GLOBAL - MOBILE STICKY CTA BAR (Figma "Sticky CTA bar" 3638:1139)
   Container "Sticky CTA bar" in the Footer template: fixed to the bottom on
   mobile only (Elementor Position: Fixed). Figma 3rd iteration: Enquire (red)
   fills the row, Book a Tour (outline) fits its label.
   The footer card has extra bottom padding so the bar never covers it.
   ========================================================================== */
@media (max-width: 767px) {
  .elementor .elementor-element.s107-m-ctabar > .elementor-widget:first-child { flex: 1 1 auto; min-width: 0; }
  .elementor .elementor-element.s107-m-ctabar > .elementor-widget:first-child .elementor-button { width: 100%; justify-content: center; }
  .elementor .elementor-element.s107-m-ctabar > .elementor-widget:last-child { flex: 0 0 auto; }
}
/* Hidden at first: slides up from the bottom once the page is ~300px past the header
   (body.s107-hdr-show with the navy compact bar, or body.s107-cta-show now that the bar
   is switched off - both set by Custom Code "Header - compact bar on scroll") and slides
   back down near the top. */
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-m-ctabar {
    transform: translateY(110%); visibility: hidden;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.5s;
  }
  body:is(.s107-hdr-show, .s107-cta-show) .elementor .elementor-element.s107-m-ctabar {
    transform: translateY(0); visibility: visible;
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s;
  }
}
/* ==========================================================================
   GLOBAL - MEGA MENU (desktop + tablet, Figma "Mega menu overlays" 3617:37865)
   Elementor Menu widget "Mega menu" in the Header bar (white by default, navy
   when it becomes the compact bar on scroll). Each dropdown's panel is built
   directly inside the menu item (Header template > Mega menu > About /
   Learning / Admissions). Item pill, colours, sizes and the panel are set in
   Elementor; this block only covers what the widget can't style.
   ========================================================================== */
/* The dropdown arrow is a <button>: strip the site-wide button styling */
.s107-hdr-mega .e-n-menu-dropdown-icon,
.s107-hdr-mega .e-n-menu-dropdown-icon:is(:hover, :focus, :active) {
  background: transparent;
  box-shadow: none;
  border: 0;
  padding: 0;
  min-height: 0;
  transform: none;
}
/* Arrow sits 8px from the label (Figma); the widget adds its own 5px margin */
body .elementor .elementor-element.s107-hdr-mega .e-n-menu-title .e-n-menu-dropdown-icon { margin: 0; }
/* Keep the item pill on while its panel is open (Figma: open item = Navy 100 pill) */
body .elementor .elementor-element.s107-hdr-mega .e-n-menu-item:has(> .e-n-menu-title [aria-expanded="true"]) > .e-n-menu-title { background-color: var(--e-global-color-navy100); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-mega .e-n-menu-item:has(> .e-n-menu-title [aria-expanded="true"]) > .e-n-menu-title { background-color: rgba(255, 255, 255, 0.12); }
/* Current page in the menu (Figma header 'Active=...': same Navy 100 pill as hover).
   Class added by Custom Code 'Header - highlight current page in menu'. */
body .elementor .elementor-element.s107-hdr-mega .e-n-menu-title:has(a[aria-current="page"]:not([href="#"])) { background-color: var(--e-global-color-navy100); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-mega .e-n-menu-title:has(a[aria-current="page"]:not([href="#"])) { background-color: rgba(255, 255, 255, 0.12); }
/* Nav link + card link hover: 2px underline (Figma Web / Nav link, Web / Text link) */
.s107-mm-link .s107-mm-link-title .elementor-heading-title,
.s107-mm-cardlink .s107-mm-link-title .elementor-heading-title {
  text-decoration: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.25em;
  transition: text-decoration-color 150ms ease-out;
}
.s107-mm-link:is(:hover, :focus-visible) .s107-mm-link-title .elementor-heading-title,
.s107-mm-cardlink:is(:hover, :focus-visible) .s107-mm-link-title .elementor-heading-title { text-decoration-color: currentColor; }
/* Mega menu feature cards: the card link is stretched over the whole card, so the image and text are clickable too */
.s107-mm-feature { position: relative; }
.s107-mm-feature .s107-mm-cardlink { position: static; }
.s107-mm-feature .s107-mm-cardlink::after { content: ""; position: absolute; inset: 0; z-index: 1; }
/* Panel open/close: soft fade + small slide both ways. The widget normally
   hides closed panels with display:none (instant close), so all panels are
   kept rendered, stacked in the same spot, and faded with opacity instead. */
/* keep closed panels in the open position, so they don't jump while fading out */
body .elementor .elementor-element.s107-hdr-mega .e-n-menu:not([data-layout=dropdown]) .e-n-menu-content { pointer-events: none; top: 100%; padding-block-start: var(--n-menu-title-distance-from-content); }
body .elementor .elementor-element.s107-hdr-mega .e-n-menu-content > .e-con {
  display: flex !important;
  position: absolute;
  left: 0;
  right: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(-0.5vw);
  animation: none !important;
  transition: opacity 200ms ease-in, transform 200ms ease-in, visibility 0s linear 200ms;
}
body .elementor .elementor-element.s107-hdr-mega .e-n-menu-content > .e-con.e-active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: none;
  transition: opacity 280ms ease-out, transform 280ms ease-out, visibility 0s;
}
@media (prefers-reduced-motion: reduce) {
  body .elementor .elementor-element.s107-hdr-mega .e-n-menu-content > .e-con { transition: none; transform: none; }
}
/* Hover bridge: the space between the menu item and its open panel belongs to
   the dropdown wrapper, which is click-through so closed panels never block
   the page. While a panel is open the wrapper takes the mouse, so crossing
   that space no longer closes the panel. */
body .elementor .elementor-element.s107-hdr-mega .e-n-menu:not([data-layout=dropdown]) .e-n-menu-content.e-active { pointer-events: auto; }
/* Tablet: columns share the space and long link titles wrap */
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor .elementor-element.e-con.s107-mm-col { flex: 1 1 0; min-width: 0; }
  .s107-mm-col .elementor-heading-title { white-space: normal; }
}
/* Mega menu on the white bar (Figma): panel sits flush under the bar with a
   1px Neutral 200 divider at the top, inset to the panel's side padding. */
body .elementor .elementor-element-hdrmega .e-con.s107-mm-panel {
  border-top-width: 0;
  background-image: linear-gradient(var(--e-global-color-neutral200), var(--e-global-color-neutral200));
  background-repeat: no-repeat;
  background-origin: content-box;
  background-clip: border-box;
  background-size: 100% 1px;
  background-position: 0 calc(-1 * var(--padding-top));
}
/* Card link ("Book a Tour" + arrow): optically centre the arrow on the
   lowercase text rather than the full line box */
.s107-mm-cardlink > .elementor-widget-icon { transform: translateY(0.14vw); }
@media (min-width: 768px) and (max-width: 1024px) { .s107-mm-cardlink > .elementor-widget-icon { transform: translateY(0.2vw); } }
/* The menu's own full-width dropdown wrapper is white by default; make it transparent (white bar and navy
   compact bar) so the panel's rounded bottom corners show the page behind them. */
body .elementor .s107-hdr-mega .e-n-menu-content > .e-con { background-color: transparent; }
/* Mega menu on the navy compact bar: boxed panel that lines up with the inset
   bar (same side spacing), fully rounded, with a gap under the bar. The gap
   stays inside the menu's hover area, so the panel doesn't close crossing it. */
body .elementor .s107-hdr-compact .s107-hdr-mega .e-con.s107-mm-panel {
  margin: 0.35vw 4vw 0;
  /* compact padding, equal on all sides */
  --padding-top: 1.39vw; --padding-bottom: 1.39vw; --padding-left: 1.39vw; --padding-right: 1.39vw;
  padding: 1.39vw;
  width: auto;
  border-top-width: 0;
  border-radius: 2.22vw;
  --border-radius: 2.22vw;
}
@media (min-width: 768px) and (max-width: 1024px) {
  body .elementor .s107-hdr-compact .s107-hdr-mega .e-con.s107-mm-panel { margin: 0.4vw 4vw 0; --padding-top: 1.2vw; --padding-bottom: 1.2vw; --padding-left: 1.75vw; --padding-right: 1.75vw; padding: 1.2vw 1.75vw; border-radius: 3vw; --border-radius: 3vw; }
}
/* Header top bar on tablet: keep each item on one line (sizes set in Elementor) */
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor-element.elementor-element-hdrtop :is(.elementor-heading-title, .elementor-icon-list-text) { white-space: nowrap; }
}


/* ==========================================================================
   GLOBAL - BREADCRUMB (Elementor Breadcrumbs widget, Yoast data)
   Figma "Breadcrumb": Navy 500 links, Navy 300 slash, current page Navy 800
   semibold. The slash is wrapped in .s107-bc-sep by a filter in the child
   theme functions.php so it can be spaced on its own.
   ========================================================================== */
.s107-breadcrumb .breadcrumb_last { color: var(--e-global-color-navy800); font-weight: 600; }
.s107-breadcrumb .s107-bc-sep { margin: 0 0.69vw; color: var(--e-global-color-navy300); }
.s107-breadcrumb a { text-decoration: none; transition: color 0.2s ease; }
.s107-breadcrumb a:is(:hover, :focus-visible) { color: var(--e-global-color-navy800); text-decoration: none; }
@media (max-width: 1024px) { .s107-breadcrumb .s107-bc-sep { margin: 0 1vw; } }
@media (max-width: 767px) { .s107-breadcrumb .s107-bc-sep { margin: 0 2.04vw; } }

/* ==========================================================================
   GLOBAL - UTILITIES
   ========================================================================== */
.s107-nowrap .elementor-heading-title { white-space: nowrap; }
.s107-break .elementor-heading-title { overflow-wrap: anywhere; }
.elementor-widget-heading .elementor-heading-title a[href^="tel:"], .elementor-widget-heading .elementor-heading-title a[href^="mailto:"] { color: inherit; }

/* ==========================================================================
   CONTACT US - MAP (Figma 4.0 Contact Us, "03 · Contact details + map")
   The pin is placed at 50% / 50% in Elementor; this nudges it to the Figma spot
   (+6px across, -18px up from centre) and centres it on that point.
   */
.elementor .elementor-element.s107-map { position: relative; }
body .elementor .elementor-element.e-con.s107-map-pin { transform: translate(calc(-50% + 0.42vw), calc(-50% - 1.25vw)); }
@media (max-width: 767px) { body .elementor .elementor-element.e-con.s107-map-pin { transform: translate(calc(-50% + 1.53vw), calc(-50% - 4.58vw)); } }

/* Pin label and the map pill size to their content (no full-width stretch) */
body .elementor .elementor-element.e-con.s107-map-pin, body .elementor .s107-map .e-con:not(.s107-map-dot), body .elementor .s107-map .elementor-widget { width: max-content; max-width: none; }

/* ==========================================================================
   GLOBAL - ICON BADGES (Elementor Icon widget, Stacked + Square)
   The widget's icon padding has no tablet/mobile setting, so the badge sizes
   for those breakpoints are set here. Class = badge size in Figma (px).
   ========================================================================== */
.elementor-widget-icon[class*="s107-badge-"] .elementor-icon-wrapper { line-height: 0; }
@media (max-width: 1024px) {
  body .elementor .elementor-element.s107-badge-52 .elementor-icon { padding: 1vw; }
  body .elementor .elementor-element.s107-badge-48 .elementor-icon { padding: 1.1vw; }
  body .elementor .elementor-element.s107-badge-44 .elementor-icon { padding: 1.1vw; }
  body .elementor .elementor-element.s107-badge-56 .elementor-icon { padding: 1.3vw; }
}
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-badge-52 .elementor-icon { padding: 2.55vw; }
  body .elementor .elementor-element.s107-badge-48 .elementor-icon { padding: 3.05vw; }
  body .elementor .elementor-element.s107-badge-44 .elementor-icon { padding: 2.8vw; }
  body .elementor .elementor-element.s107-badge-56 .elementor-icon { padding: 3.57vw; }
}


/* ==========================================================================
   LEGAL PAGES (Figma F.1 Privacy Policy — T6 Legal & Utility, 3266:63123 /
   mobile 3698:63511). Theme Builder > Single > "Legal page", shown on pages
   whose Page Attributes > Template = "Legal / policy page". Page text comes
   from the WordPress editor: paragraphs, H2 section titles (these build the
   contents list) and bullet lists (shown as the Figma checklist).
   ========================================================================== */
/* Contents list: sticky on desktop + tablet, collapsible box on mobile. The
   highlighted item follows the scroll (.s107-active, set by Custom Code
   "Legal pages - contents list"). */
@media (min-width: 768px) {
  .elementor .elementor-element.s107-legal-toc { position: sticky; top: 7.5vw; align-self: flex-start; }
  body:not(.s107-hdr-show) .elementor .elementor-element.s107-legal-toc { top: 2.22vw; } /* navy bar back on 28 Oct 2026 */
  .elementor .elementor-element.s107-legal-toc { transition: top 300ms ease; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  .elementor .elementor-element.s107-legal-toc { top: 12vw; }
  body:not(.s107-hdr-show) .elementor .elementor-element.s107-legal-toc { top: 3vw; }
}
.s107-toc .elementor-toc__header { padding: 0 0 0.97vw; border-bottom: 0.07vw solid var(--e-global-color-navy300); margin-bottom: 0.83vw; }
.s107-toc .elementor-toc__header-title { font-family: Figtree, sans-serif; font-size: 1.11vw; font-weight: 700; line-height: 1.2; color: var(--e-global-color-navy500); }
.s107-toc.elementor-widget-table-of-contents .elementor-toc__toggle-button { display: none; }
.elementor-widget.s107-toc, .elementor-widget.s107-toc .elementor-toc__body { background: transparent; border: 0; padding: 0; border-radius: 0; box-shadow: none; }
.elementor-widget.s107-toc { --box-border-width: 0; --box-border-radius: 0; --box-background-color: transparent; --box-min-height: 0; }
.s107-toc .elementor-toc__list-item-text-wrapper { display: block; }
.elementor-widget.s107-toc { --box-padding: 0; --toc-body-max-height: none; }
.s107-toc .elementor-toc__list-wrapper { display: flex; flex-direction: column; gap: 0.14vw; margin: 0; padding: 0; list-style: none; }
.s107-toc .elementor-toc__list-item { margin: 0; }
.s107-toc .elementor-toc__list-item-text-wrapper::before, .s107-toc .elementor-toc__list-item-text-wrapper > i, .s107-toc .elementor-toc__list-item-text-wrapper > svg { display: none; }
.s107-toc a.elementor-toc__list-item-text { display: block; flex: 1 1 auto; padding: 0.49vw 0.83vw; border-radius: 0.56vw; font-family: Figtree, sans-serif; font-size: 1.04vw; font-weight: 600; line-height: 1.25; color: var(--e-global-color-navy700); text-decoration: none; }
.s107-toc a.elementor-toc__list-item-text.s107-active { background-color: var(--e-global-color-white); }
/* No hover / visited / focus styling: only the active item changes (white background) */
body .elementor-widget.s107-toc .elementor-toc__list-item-text, body .elementor-widget.s107-toc .elementor-toc__list-item-text:is(:hover, :focus, :visited, :active, .elementor-item-active) { color: var(--e-global-color-navy700); font-weight: 600; text-decoration: none; }
body .elementor-widget.s107-toc .elementor-toc__list-item-text:not(.s107-active):hover { background-color: transparent; }
@media (max-width: 1024px) {
  .s107-toc .elementor-toc__header { padding-bottom: 1.4vw; margin-bottom: 1.2vw; }
  .s107-toc .elementor-toc__header-title { font-size: 2vw; }
  .s107-toc .elementor-toc__list-wrapper { gap: 0.2vw; }
  .s107-toc a.elementor-toc__list-item-text { padding: 0.7vw 1.2vw; border-radius: 0.8vw; font-size: 1.9vw; }
}
@media (max-width: 767px) {
  .s107-toc .elementor-toc__header { padding: 0; margin: 0; border-bottom: 0; cursor: pointer; }
  .elementor-widget.s107-toc:not(.elementor-toc--collapsed) .elementor-toc__header { padding-bottom: 5.09vw; margin-bottom: 5.09vw; border-bottom: 0.26vw solid var(--e-global-color-navy300); }
  .s107-toc .elementor-toc__header-title { font-size: 3.82vw; }
  .s107-toc.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--expand,
  .s107-toc.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--collapse { display: flex; color: var(--e-global-color-navy800); }
  .s107-toc .elementor-toc__toggle-button:focus:not(:focus-visible) { outline: none; }
  .s107-toc .elementor-toc__toggle-button svg { width: 3.56vw; height: auto; fill: currentColor; }
  .s107-toc .elementor-toc__list-wrapper { gap: 0.51vw; }
  .s107-toc a.elementor-toc__list-item-text { padding: 2.04vw 3.05vw; border-radius: 3.05vw; font-size: 4.07vw; }
}

/* Page text */
.s107-legal-content > :first-child { margin-top: 0; }
.s107-legal-content p { margin: 0 0 1.11vw; font-size: 1.25vw; line-height: 1.4; color: var(--e-global-color-neutral700); }
.s107-legal-content > p:first-child { font-size: 1.53vw; line-height: 1.45; color: var(--e-global-color-navy800); }
.s107-legal-content h2 { margin: 2.78vw 0 1.11vw; font-size: 2.36vw; font-weight: 700; line-height: 1.15; letter-spacing: -0.02em; color: var(--e-global-color-navy800); scroll-margin-top: 8vw; }
.s107-legal-content h3 { margin: 1.67vw 0 0.83vw; font-size: 1.53vw; font-weight: 700; line-height: 1.2; color: var(--e-global-color-navy800); }
.s107-legal-content a { color: var(--e-global-color-navy800); text-decoration: underline; text-underline-offset: 0.2em; }
.s107-legal-content ul { margin: 0 0 1.11vw; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 0.69vw; }
.s107-legal-content ul li { position: relative; padding-left: 1.94vw; font-size: 1.25vw; line-height: 1.3; color: rgba(33, 30, 114, 0.8); }
.s107-legal-content ul li::before { content: ""; position: absolute; left: 0; top: 0.14vw; width: 1.39vw; height: 1.39vw; background: url("/wp-content/uploads/2026/10/icon-check-circle.svg") center / contain no-repeat; opacity: 0.8; }
.s107-legal-content ol { margin: 0 0 1.11vw; padding-left: 1.6vw; font-size: 1.25vw; line-height: 1.4; color: var(--e-global-color-neutral700); }
.s107-legal-content .elementor-menu-anchor, .s107-legal-content [id^="elementor-toc__heading-anchor"] { scroll-margin-top: 8vw; }
@media (max-width: 1024px) {
  .s107-legal-content p, .s107-legal-content ul li, .s107-legal-content ol { font-size: 2.1vw; }
  .s107-legal-content > p:first-child { font-size: 2.5vw; }
  .s107-legal-content h2 { font-size: 3.25vw; margin-top: 4vw; scroll-margin-top: 13vw; }
  .s107-legal-content ul li { padding-left: 3.2vw; }
  .s107-legal-content ul li::before { width: 2.2vw; height: 2.2vw; }
}
@media (max-width: 767px) {
  .s107-legal-content p { margin-bottom: 2.04vw; font-size: 4.07vw; }
  .s107-legal-content > p:first-child { font-size: 4.07vw; }
  .s107-legal-content h2 { margin: 10.18vw 0 2.04vw; font-size: 5.09vw; scroll-margin-top: 24vw; }
  .s107-legal-content h3 { margin: 4.07vw 0 2.04vw; font-size: 4.58vw; }
  .s107-legal-content ul { margin-bottom: 2.04vw; gap: 2.04vw; }
  .s107-legal-content p + ul, .s107-legal-content p + ol { margin-top: 2.04vw; }
  .s107-legal-content ul li { padding-left: 6.11vw; font-size: 4.07vw; }
  .s107-legal-content ul li::before { top: 0.61vw; width: 4.07vw; height: 4.07vw; }
  .s107-legal-content ol { font-size: 4.07vw; padding-left: 5vw; }
  .s107-legal-content .elementor-menu-anchor, .s107-legal-content [id^="elementor-toc__heading-anchor"] { scroll-margin-top: 24vw; }
}

/* Simple footer (Footer CTA = Simple / Hidden, default on legal pages):
   campus photo band above the footer card, no CTA card (Figma Footer Type=Simple). */
body .elementor-location-footer .elementor-element.e-con.s107-footer.s107-footer-bg:not(:has(.s107-footer-cta)) { --padding-top: 39.1vw; padding-top: 39.1vw; background-image: url("/wp-content/uploads/2026/10/st-andrews-sukhumvit-107-campus-football-pitch-sunset.webp"); background-size: 107vw auto; background-position: 0 -16.53vw; }
@media (max-width: 767px) {
  body .elementor-location-footer .elementor-element.e-con.s107-footer.s107-footer-bg:not(:has(.s107-footer-cta)) { --padding-top: 78.37vw; padding-top: 78.37vw; background-size: auto 92vw; background-position: center top; background-repeat: no-repeat; }
}

/* ==========================================================================
   THANK YOU PAGE (Figma S.1 Thank You, 3266:65441 / mobile 3698:67255)
   ========================================================================== */
.elementor .elementor-element.s107-watermark { pointer-events: none; }
@media (min-width: 768px) { .s107-nowrap-desktop .elementor-heading-title { white-space: nowrap; } }
@media (max-width: 767px) { body .elementor .elementor-element.s107-badge-64 .elementor-icon { padding: 2.04vw; } }

/* ==========================================================================
   GLOBAL - STAT UNIT (the small % after a stat number, e.g. 43%)
   Typed inside the number heading as <span class="s107-stat-unit">%</span>,
   so the number and unit need no extra container. Uses the "Quote" global font.
   ========================================================================== */
.s107-stat-unit {
  font-family: var(--e-global-typography-quote-font-family), sans-serif;
  font-size: var(--e-global-typography-quote-font-size);
  font-weight: var(--e-global-typography-quote-font-weight);
  line-height: var(--e-global-typography-quote-line-height);
  letter-spacing: var(--e-global-typography-quote-letter-spacing);
  margin-left: 0.3vw;
  line-height: 1; vertical-align: baseline; /* sits on the number's baseline, like Figma (was bottom-aligned, which dropped it below the digits; 30 Oct 2026) */
}

/* ==========================================================================
   GLOBAL - HEADER SEARCH (desktop + tablet)
   The search panel ("Header - Search panel") lives in the Header template,
   inside "Header - Main", right after the bar. It sits under the bar like a
   mega menu panel, so it scrolls and goes sticky with the header. Custom Code
   "Header - compact bar on scroll" opens/closes it by adding
   .s107-search-open to the bar (icon click, Esc, outside click, a mega menu
   opening, or the bar switching white/navy). While open, the icon shows an X.
   Live results use the loop item "Loop Item - Search Live Result Row".
   ========================================================================== */
body .elementor .elementor-element.s107-hdr-search-panel {
  position: absolute; top: 100%; left: 0; right: 0; width: auto; max-width: none;
  visibility: hidden; opacity: 0; transform: translateY(-0.56vw);
  transition: opacity 0.2s ease-out, transform 0.2s ease-out, visibility 0s linear 0.2s;
}
body .elementor .s107-search-open .elementor-element.s107-hdr-search-panel {
  visibility: visible; opacity: 1; transform: none;
  transition: opacity 0.25s ease-out, transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s;
}
/* opening: the search pill comes in first, then the Popular row */
body .elementor .elementor-element.s107-hdr-search-panel > .elementor-element { opacity: 0; transform: translateY(-0.42vw); transition: opacity 0.15s ease-out, transform 0.15s ease-out; }
body .elementor .s107-search-open .elementor-element.s107-hdr-search-panel > .elementor-element { opacity: 1; transform: none; transition: opacity 0.3s ease-out 0.05s, transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1) 0.05s; }
body .elementor .s107-search-open .elementor-element.s107-hdr-search-panel > .elementor-element:nth-child(n+2) { transition-delay: 0.12s; }
/* white bar: 1px Neutral 200 divider at the top, inset to the panel padding (same as the mega menu) */
body .elementor .elementor-element.s107-search-panel {
  background-image: linear-gradient(var(--e-global-color-neutral200), var(--e-global-color-neutral200));
  background-repeat: no-repeat; background-origin: content-box; background-clip: border-box;
  background-size: 100% 1px; background-position: 0 calc(-1 * var(--padding-top));
}
/* navy compact bar: boxed, rounded, small gap under the bar (same as the compact mega menu) */
body .elementor .s107-hdr-compact .elementor-element.s107-search-panel {
  margin: 0.35vw 4vw 0; background-image: none;
  --padding-top: 0.83vw; --padding-bottom: 0.83vw; --padding-left: 1.39vw; --padding-right: 1.39vw; padding: 0.83vw 1.39vw;
  border-radius: 2.22vw; --border-radius: 2.22vw;
}
@media (min-width: 768px) and (max-width: 1024px) {
  body .elementor .s107-hdr-compact .elementor-element.s107-search-panel { margin: 0.4vw 4vw 0; --padding-top: 1.2vw; --padding-bottom: 1.2vw; --padding-left: 1.75vw; --padding-right: 1.75vw; padding: 1.2vw 1.75vw; border-radius: 3vw; --border-radius: 3vw; }
}
/* Search field + live results. The grey pill is drawn by the form's ::before
   (height = Search button + padding), so the live results sit inside the
   panel under the pill instead of floating as a box on top of it; the panel
   grows to fit. The Popular links hide while results are showing. */
body .elementor .elementor-element-hdrsrch .e-search-form { position: relative; isolation: isolate; flex-wrap: wrap; padding: 0.56vw 0.56vw 0.56vw 1.67vw; }
body .elementor .elementor-element-hdrsrch .e-search-form::before { content: ""; position: absolute; z-index: -1; top: 0; left: 0; right: 0; height: calc(3.332vw + 1.12vw); border-radius: 50vw; background-color: var(--e-global-color-navy50); }
body .elementor .elementor-element-hdrsrch .e-search-results-container { position: static; flex: 0 0 auto; width: calc(100% + 1.67vw + 0.56vw); order: 10; margin: 0 -0.56vw 0 -1.67vw; }
/* space above the results only when there are results (the empty list added a gap above the Popular row) */
body .elementor .elementor-element-hdrsrch .e-search-results-container:has(.e-search-results-list > *) { margin-top: 1.39vw; }
/* Elementor hides the results with visibility only (they kept their height = blank gap): take them out of the layout,
   except while the search is being submitted (.s107-srch-go, Custom Code 'Header - compact bar on scroll') */
body .elementor .elementor-element-hdrsrch .e-search-results-container.hidden { display: none; }
body .elementor .elementor-element-hdrsrch.s107-srch-go .e-search-results-container.hidden { display: flex; visibility: visible; opacity: 1; }
body .elementor .elementor-element-hdrsrch .e-search-results { border: 0; box-shadow: none; }
@media (min-width: 768px) and (max-width: 1024px) {
  body .elementor .elementor-element-hdrsrch .e-search-form { padding: 1vw 1vw 1vw 2.5vw; }
  body .elementor .elementor-element-hdrsrch .e-search-form::before { height: calc(5.52vw + 2vw); }
  body .elementor .elementor-element-hdrsrch .e-search-results-container { width: calc(100% + 3.5vw); margin: 0 -1vw 0 -2.5vw; }
  body .elementor .elementor-element-hdrsrch .e-search-results-container:has(.e-search-results-list > *) { margin-top: 1.75vw; }
}
body .elementor .s107-hdr-search-panel:has(.e-search-results-container:is(:not(.hidden), .s107-srch-go *) .e-search-results-list > *) > :is(.elementor-element-hdrspl, .elementor-element-hdrsql) { display: none; }
/* ...and the grid's row gap for that hidden row goes too, so the panel ends right under the results */
body .elementor .elementor-element.s107-hdr-search-panel:has(.e-search-results-container:is(:not(.hidden), .s107-srch-go *) .e-search-results-list > *) { --row-gap: 0px; row-gap: 0; }
/* search icon turns into an X (Media: icon-close.svg) while the panel is open */
body .elementor .s107-hdr-search .elementor-icon { position: relative; }
/* no inline line-box under the icon, so it centres on the menu items and buttons */
body .elementor .s107-hdr-search .elementor-icon-wrapper { display: flex; }
body .elementor .s107-hdr-search .elementor-icon::after {
  content: ""; position: absolute; inset: 0; opacity: 0; background-color: currentColor; -webkit-mask-size: 1em 1em !important; mask-size: 1em 1em !important;
  -webkit-mask: url("/wp-content/uploads/2026/10/icon-close.svg") center / contain no-repeat;
          mask: url("/wp-content/uploads/2026/10/icon-close.svg") center / contain no-repeat;
}
/* icon morph: the magnifier turns and shrinks away while the X turns and grows in (and back on close) */
body .elementor .s107-hdr-search .elementor-icon svg { transition: opacity 0.2s ease-out, transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1); }
body .elementor .s107-hdr-search .elementor-icon::after { transform: rotate(-90deg) scale(0.4); transition: opacity 0.2s ease-out, transform 0.35s cubic-bezier(0.2, 0.8, 0.2, 1); }
body .elementor .s107-search-open .s107-hdr-search .elementor-icon svg { opacity: 0; transform: rotate(90deg) scale(0.4); }
body .elementor .s107-search-open .s107-hdr-search .elementor-icon::after { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  body .elementor :is(.s107-hdr-search .elementor-icon svg, .s107-hdr-search .elementor-icon::after, .elementor-element.s107-hdr-search-panel, .elementor-element.s107-hdr-search-panel > .elementor-element) { transform: none !important; }
}
/* hover/open background, same as the menu items (set in Elementor: icon view Stacked, hover colours, padding, radius) */
body .elementor .s107-search-open .elementor-element.s107-hdr-search .elementor-icon { background-color: var(--e-global-color-navy100); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-search .elementor-icon:hover,
body .elementor .s107-hdr-compact.s107-search-open .elementor-element.s107-hdr-search .elementor-icon { background-color: rgba(255, 255, 255, 0.12); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-search .elementor-icon:hover { color: var(--e-global-color-white); }
body .elementor .s107-hdr-compact .elementor-element.s107-hdr-search .elementor-icon:hover svg { fill: var(--e-global-color-white); }
/* tablet: same height as the menu items (Elementor's icon padding has no tablet value) */
@media (min-width: 768px) and (max-width: 1024px) { body .elementor .elementor-element.s107-hdr-search .elementor-icon { padding: 0.5vw; } }
/* quick links: small outline pills */
.s107-quick-links .elementor-icon-list-item > a,
.s107-quick-links .elementor-icon-list-item > .elementor-icon-list-text { padding: 0.42vw 0.9vw; border: 1.5px solid var(--e-global-color-navy200); border-radius: 50vw; transition: background-color 150ms ease-out; }
.s107-quick-links .elementor-icon-list-item > a:is(:hover, :focus-visible) { background-color: var(--e-global-color-navy50); }
.s107-quick-links .elementor-icon-list-icon { display: none; }
@media (max-width: 1024px) {
  .s107-quick-links .elementor-icon-list-item > a { padding: 0.7vw 1.5vw; }
}
/* one-line summary in live results */
.s107-clamp-1 .elementor-heading-title { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }

/* ==========================================================================
   GLOBAL - CLICKABLE CARD (.s107-card-link on the card, .s107-card-title on its title)
   The title is the card's only link; its ::after is stretched over the whole
   card, so clicking anywhere opens the post. The card's button is visual only
   (no link, hidden from screen readers) and shows its press effect when the
   card is hovered. Used by "Loop Item - News Card".
   ========================================================================== */
body .elementor .e-con.s107-card-link { position: relative; cursor: pointer; }
body .elementor .s107-card-link .elementor-widget.s107-card-title { position: static; }
/* Inner containers stay unpositioned so the stretched title link covers the whole card (e.g. news featured card: image + text column) */
body .elementor .e-con.s107-card-link .e-con:not(.s107-card-link) { position: static; }
body .elementor .s107-card-link .s107-card-title a::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
body .elementor .s107-card-link .s107-card-title a:focus-visible { outline: none; }
body .elementor .e-con.s107-card-link:has(.s107-card-title a:focus-visible) { outline: 2px solid var(--e-global-color-navy800); outline-offset: 3px; }
@media (hover: hover) {
  body .elementor .s107-card-link:hover .elementor-widget-button .elementor-button {
    transform: translate(var(--s107-btn-sx), var(--s107-btn-sy));
    box-shadow: var(--s107-btn-inset, 0 0 0 0 transparent), 0 0 0 0 transparent;
  }
  body .elementor .s107-card-link:hover :is(.s107-btn-outline, .s107-btn-outline-light) .elementor-button::before { transform: translate(0, 0); }
  body .elementor .s107-card-link:hover .s107-btn-outline .elementor-button { --s107-btn-bg: var(--e-global-color-navy50); }
}

/* ==========================================================================
   GLOBAL - PAGINATION (Loop Grid "Numbers + Previous/Next", Figma "Pagination")
   Round 48px buttons (40px on mobile): white with a Navy 300 ring, current page
   Navy 800. Previous/Next keep their text for screen readers; the chevrons are
   icon-chevron-left/right.svg from the Media Library.
   ========================================================================== */
body .elementor .elementor-pagination { display: flex; align-items: center; justify-content: center; gap: 0.56vw; }
body .elementor .elementor-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center; flex: none;
  width: 3.33vw; height: 3.33vw; margin: 0; border: 1.5px solid var(--e-global-color-navy300); border-radius: 50%;
  background-color: var(--e-global-color-white); color: var(--e-global-color-navy800);
  font-family: "Figtree", sans-serif; font-size: 1.25vw; font-weight: 700; line-height: 1.1; text-decoration: none;
  transition: background-color 150ms ease-out;
}
body .elementor .elementor-pagination a.page-numbers:is(:hover, :focus-visible) { background-color: var(--e-global-color-navy50); }
body .elementor .elementor-pagination .page-numbers.current { background-color: var(--e-global-color-navy800); border-color: var(--e-global-color-navy800); color: var(--e-global-color-white); }
body .elementor .elementor-pagination .page-numbers.dots { width: auto; border: 0; background: none; color: var(--e-global-color-navy500); }
body .elementor .elementor-pagination .page-numbers:is(.prev, .next) { font-size: 0; }
body .elementor .elementor-pagination .page-numbers.prev { margin-right: 1.53vw; }
body .elementor .elementor-pagination .page-numbers.next { margin-left: 1.53vw; }
body .elementor .elementor-pagination .page-numbers:is(.prev, .next)::before {
  content: ""; width: 1.39vw; height: 1.39vw; background-color: currentColor;
  -webkit-mask: url("/wp-content/uploads/2026/10/icon-chevron-left.svg") center / contain no-repeat;
          mask: url("/wp-content/uploads/2026/10/icon-chevron-left.svg") center / contain no-repeat;
}
body .elementor .elementor-pagination .page-numbers.next::before {
  -webkit-mask-image: url("/wp-content/uploads/2026/10/icon-chevron-right.svg"); mask-image: url("/wp-content/uploads/2026/10/icon-chevron-right.svg");
}
body .elementor .elementor-pagination span.page-numbers:is(.prev, .next) { opacity: 0.4; }
@media (max-width: 1024px) {
  body .elementor .elementor-pagination { gap: 0.8vw; }
  body .elementor .elementor-pagination .page-numbers { width: 4.7vw; height: 4.7vw; font-size: 1.75vw; }
  body .elementor .elementor-pagination .page-numbers:is(.prev, .next)::before { width: 2vw; height: 2vw; }
  body .elementor .elementor-pagination .page-numbers.prev { margin-right: 2.2vw; }
  body .elementor .elementor-pagination .page-numbers.next { margin-left: 2.2vw; }
}
@media (max-width: 767px) {
  body .elementor .elementor-pagination { gap: 2.04vw; padding: 0 3.05vw; }
  body .elementor .elementor-pagination .page-numbers { width: 10.18vw; height: 10.18vw; font-size: 4.58vw; }
  body .elementor .elementor-pagination .page-numbers:is(.prev, .next)::before { width: 5.09vw; height: 5.09vw; }
  body .elementor .elementor-pagination .page-numbers.prev { margin-right: auto; }
  body .elementor .elementor-pagination .page-numbers.next { margin-left: auto; }
}

/* ==========================================================================
   NEWS ARCHIVE (Theme Builder > Archive "News archive", Figma 5.0 News & Events)
   - Featured story: hidden on page 2 onwards (it is the latest post).
   - Category tags on all news cards use the white pill (set in Elementor).
   - Filter chips: PLACEHOLDER until the filter plugin is decided. First chip
     shows the active style. On mobile the chips scroll sideways.
   ========================================================================== */
body.paged .elementor .elementor-element.s107-news-featured { display: none; }
/* AJAX pagination scrolls back to the top of the grid; keep it clear of the sticky header */
body .elementor .elementor-widget-loop-grid { scroll-margin-top: 7.5vw; }
@media (max-width: 1024px) { body .elementor .elementor-widget-loop-grid { scroll-margin-top: 12vw; } }
@media (max-width: 767px) { body .elementor .elementor-widget-loop-grid { scroll-margin-top: 24vw; } }
body .elementor .s107-filter-chips .elementor-icon-list-items { flex-wrap: nowrap; }
body .elementor .s107-filter-chips .elementor-icon-list-item { margin: 0; padding: 0.56vw 1.11vw; border-radius: 0.83vw; white-space: nowrap; }
body .elementor .s107-filter-chips .elementor-icon-list-item:first-child { background-color: var(--e-global-color-navy800); }
body .elementor .s107-filter-chips .elementor-icon-list-item:first-child .elementor-icon-list-text { color: var(--e-global-color-white); }
body .elementor .s107-filter-chips .elementor-icon-list-icon { display: none; }
@media (max-width: 1024px) {
  body .elementor .s107-filter-chips .elementor-icon-list-item { padding: 0.8vw 1.6vw; border-radius: 1.2vw; }
}
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-filter-chips { overflow-x: auto; scrollbar-width: none; }
  body .elementor .elementor-element.s107-filter-chips::-webkit-scrollbar { display: none; }
  body .elementor .s107-filter-chips .elementor-icon-list-item { padding: 2.04vw 4.07vw; border-radius: 3.05vw; }
}

/* ==========================================================================
   SINGLE POST (Theme Builder > Single Post "Single post", Figma 5.1 News Article)
   Post text comes from the WordPress editor (Post Content widget with class
   .s107-post-content) and is styled here, so editors only write content:
   - First paragraph = lead (larger, navy).
   - Heading 2 / Heading 3, lists, links.
   - Blockquote: red rule, large navy text; quote marks are added
     automatically. Put the name in a <cite> line: <cite>Name · Role</cite>.
   - Images (with or without a caption) are full width with rounded corners.
   Share row = shortcode [s107_share]; read time = [s107_read_time] (child
   theme functions.php).
   ========================================================================== */
body .elementor .s107-post-content { font-family: "Figtree", sans-serif; font-size: 1.39vw; font-weight: 400; line-height: 1.4; color: var(--e-global-color-neutral700, #4D4F5E); }
body .elementor .s107-post-content :is(p, h2, h3, h4, ul, ol, blockquote, figure, .wp-caption, hr) { margin: 0; }
body .elementor .s107-post-content > .elementor-widget-container > * + *,
body .elementor .s107-post-content > :not(.elementor-widget-container) + * { margin-top: 1.94vw; }
body .elementor .s107-post-content > p:first-child { font-size: 1.81vw; letter-spacing: -0.02em; color: var(--e-global-color-navy800); }
body .elementor .s107-post-content :is(h2, h3, h4) { font-family: "Figtree", sans-serif; font-weight: 700; color: var(--e-global-color-navy800); }
body .elementor .s107-post-content h2 { font-size: 2.36vw; line-height: 1.15; letter-spacing: -0.02em; }
body .elementor .s107-post-content h3 { font-size: 1.67vw; line-height: 1.2; letter-spacing: -0.01em; }
body .elementor .s107-post-content h4 { font-size: 1.39vw; line-height: 1.3; }
body .elementor .s107-post-content * + :is(h2, blockquote, figure, .wp-caption, p:has(> img)) { margin-top: 3.61vw; }
body .elementor .s107-post-content * + h3 { margin-top: 2.78vw; }
body .elementor .s107-post-content h2 + * { margin-top: 1.25vw; }
body .elementor .s107-post-content :is(h3, h4) + * { margin-top: 1.11vw; }
body .elementor .s107-post-content a { color: var(--e-global-color-navy800); text-decoration: underline; text-underline-offset: 0.2em; }
body .elementor .s107-post-content strong { font-weight: 700; color: var(--e-global-color-navy800); }
body .elementor .s107-post-content :is(ul, ol) { padding-left: 1.67vw; }
body .elementor .s107-post-content li + li { margin-top: 0.56vw; }
body .elementor .s107-post-content li::marker { color: var(--e-global-color-red500); }
body .elementor .s107-post-content blockquote { border-left: 0.28vw solid var(--e-global-color-red500); padding: 1.67vw 0 0.56vw 1.94vw; font-size: 2.36vw; font-weight: 600; line-height: 1.15; letter-spacing: -0.02em; color: var(--e-global-color-navy800); }
body .elementor .s107-post-content blockquote p { margin: 0; }
body .elementor .s107-post-content blockquote { quotes: "“" "”"; }
/* Figma 5.1 'Pull quote': the opening mark is part of the text (no hanging into the 28px / 12px gap by the red line) */
body .elementor .s107-post-content blockquote p:first-of-type::before { content: open-quote; margin-left: 0; }
body .elementor .s107-post-content blockquote > p:not(:has(cite)):is(:last-child, :has(+ p > cite:only-child), :has(+ cite))::after { content: close-quote; }
body .elementor .s107-post-content blockquote > p:has(> cite:only-child) { margin-top: 0.83vw; }
body .elementor .s107-share .s107-share-copy { box-shadow: none; transform: none; }
body .elementor .s107-post-content blockquote cite { display: block; margin-top: 0.83vw; font-size: 1.11vw; font-style: normal; font-weight: 700; line-height: 1.2; letter-spacing: 0; color: var(--e-global-color-red700, #A1042A); }
body .elementor .s107-post-content img { display: block; width: 100%; max-width: 100%; height: auto; border-radius: 1.67vw; }
body .elementor .s107-post-content .wp-caption { width: auto !important; max-width: 100%; }
body .elementor .s107-post-content :is(.wp-caption-text, figcaption) { margin-top: 0.83vw; font-size: 1.04vw; line-height: 1.3; color: var(--e-global-color-navy500); }
body .elementor .s107-post-content hr { border: 0; border-top: 1px solid var(--e-global-color-navy100); }
/* Share row */
.s107-share { display: flex; flex-wrap: wrap; align-items: center; gap: 0.83vw; padding-top: 1.67vw; border-top: 1px solid var(--e-global-color-navy100); }
.s107-share-label { margin-right: 0; font-family: "Figtree", sans-serif; font-size: 1.11vw; font-weight: 700; line-height: 1.2; color: var(--e-global-color-navy800); }
.s107-share .s107-share-btn { display: inline-flex; align-items: center; justify-content: center; width: 3.06vw; height: 3.06vw; padding: 0; border: 0; border-radius: 50%; background-color: var(--e-global-color-navy50); color: var(--e-global-color-navy800); cursor: pointer; transition: background-color 150ms ease-out; }
.s107-share .s107-share-btn:is(:hover, :focus-visible) { background-color: var(--e-global-color-navy100); color: var(--e-global-color-navy800); }
.s107-share .s107-share-btn svg { width: 1.39vw; height: 1.39vw; }
.s107-share-status { font-family: "Figtree", sans-serif; font-size: 0.97vw; color: var(--e-global-color-navy500); }
/* Back link: arrow in a navy ring */
body .elementor .s107-back-link .elementor-icon-list-icon { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 1.67vw; height: 1.67vw; padding: 0 !important; margin-right: 0.56vw; border: 1.5px solid var(--e-global-color-navy800); border-radius: 50%; }
body .elementor .s107-back-link .elementor-icon-list-icon svg { width: 1.11vw; height: 1.11vw; margin: 0 !important; color: var(--e-global-color-navy800); fill: currentColor; } /* margin 0: Elementor icon spacing pushed the arrow off-centre in the ring */
body .elementor .s107-back-link .elementor-icon-list-text { padding-inline-start: 0; }
@media (max-width: 1024px) { body .elementor .s107-back-link .elementor-icon-list-icon { width: 2.6vw; height: 2.6vw; margin-right: 0.9vw; } body .elementor .s107-back-link .elementor-icon-list-icon svg { width: 1.75vw; height: 1.75vw; } }
@media (max-width: 767px) { body .elementor .s107-back-link .elementor-icon-list-icon { width: 6.11vw; height: 6.11vw; margin-right: 2.04vw; } body .elementor .s107-back-link .elementor-icon-list-icon svg { width: 4.07vw; height: 4.07vw; } }
body .elementor .s107-back-link a:is(:hover, :focus-visible) .elementor-icon-list-text { text-decoration: underline; text-underline-offset: 0.2em; }
/* Category tag on a white background: white pill with a thin Navy 200 ring */
body .elementor .elementor-element.s107-tag-outline,
body .elementor .elementor-element.s107-tag-outline > .elementor-widget-container { box-shadow: inset 0 0 0 1px var(--e-global-color-navy200); }
@media (max-width: 1024px) {
  body .elementor .s107-post-content { font-size: 2.1vw; }
  body .elementor .s107-post-content > p:first-child { font-size: 2.6vw; }
  body .elementor .s107-post-content > .elementor-widget-container > * + *, body .elementor .s107-post-content > :not(.elementor-widget-container) + * { margin-top: 2.6vw; }
  body .elementor .s107-post-content h2, body .elementor .s107-post-content blockquote { font-size: 3.3vw; }
  body .elementor .s107-post-content h3 { font-size: 2.6vw; }
  body .elementor .s107-post-content * + :is(h2, blockquote, figure, .wp-caption, p:has(> img)) { margin-top: 4.8vw; }
  body .elementor .s107-post-content blockquote cite { font-size: 1.75vw; }
  body .elementor .s107-post-content :is(.wp-caption-text, figcaption) { font-size: 1.6vw; }
  body .elementor .s107-post-content img { border-radius: 2.4vw; }
  .s107-share { gap: 1.2vw; padding-top: 2.4vw; }
  .s107-share-label { font-size: 1.75vw; }
  .s107-share .s107-share-btn { width: 4.4vw; height: 4.4vw; }
  .s107-share .s107-share-btn svg { width: 2vw; height: 2vw; }
  body .elementor .s107-back-link .elementor-icon-list-icon { width: 2.6vw; height: 2.6vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-post-content { font-size: 4.07vw; }
  body .elementor .s107-post-content > p:first-child { font-size: 4.07vw; }
  body .elementor .s107-post-content > .elementor-widget-container > * + *, body .elementor .s107-post-content > :not(.elementor-widget-container) + * { margin-top: 4.07vw; }
  body .elementor .s107-post-content h2 { font-size: 5.09vw; }
  body .elementor .s107-post-content h3 { font-size: 4.58vw; }
  body .elementor .s107-post-content h4 { font-size: 4.07vw; }
  body .elementor .s107-post-content * + :is(h2, blockquote) { margin-top: 7.12vw; }
  body .elementor .s107-post-content * + :is(figure, .wp-caption, p:has(> img)) { margin-top: 10.18vw; }
  body .elementor .s107-post-content * + h3 { margin-top: 6.11vw; }
  body .elementor .s107-post-content :is(h2, h3, h4) + * { margin-top: 3.05vw; }
  body .elementor .s107-post-content :is(ul, ol) { padding-left: 5.09vw; }
  body .elementor .s107-post-content li + li { margin-top: 2.04vw; }
  body .elementor .s107-post-content blockquote { border-left-width: 1.02vw; padding: 3.05vw 0 1.02vw 3.05vw; font-size: 5.6vw; }
  body .elementor .s107-post-content blockquote cite { margin-top: 2.04vw; font-size: 3.82vw; }
  body .elementor .s107-post-content img { border-radius: 6.11vw; }
  body .elementor .s107-post-content :is(.wp-caption-text, figcaption) { margin-top: 4.07vw; font-size: 3.82vw; }
  .s107-share { gap: 2.04vw; padding: 6.11vw 0 4.07vw; }
  .s107-share-label { font-size: 3.82vw; }
  .s107-share .s107-share-btn { width: 11.2vw; height: 11.2vw; }
  .s107-share .s107-share-btn svg { width: 5.09vw; height: 5.09vw; }
  .s107-share-status { font-size: 3.56vw; }
  body .elementor .s107-back-link .elementor-icon-list-icon { width: 6.11vw; height: 6.11vw; }
}

/* SINGLE POST - mobile share row: one line, plain icons (Figma 3698:66098) */
@media (max-width: 767px) {
  .s107-share { flex-wrap: nowrap; gap: 2.04vw; }
  .s107-share-label { flex: 0 0 auto; } /* icons follow the label (Figma: 8px gap), not pushed to the right */
  .s107-share .s107-share-btn { width: 9.16vw; height: 9.16vw; background: transparent; }
}
/* ==========================================================================
   SINGLE POST - MORE CONTENT (editor extras inside .s107-post-content)
   - Image aligned left/right in the editor: wraps text on desktop/tablet,
     full width on mobile.
   - YouTube/Vimeo embeds: full width, 16:9, rounded.
   - Tables: navy header row, light row lines; scroll sideways on mobile.
   - [gallery]: square tiles in the chosen number of columns.
   ========================================================================== */
body .elementor .s107-post-content::after { content: ""; display: block; clear: both; }
body .elementor .s107-post-content img:is(.alignleft, .alignright), body .elementor .s107-post-content .wp-caption:is(.alignleft, .alignright) { width: 45% !important; margin-top: 0.42vw; margin-bottom: 1.11vw; }
body .elementor .s107-post-content :is(img, .wp-caption).alignleft { float: left; margin-right: 2.22vw; }
body .elementor .s107-post-content :is(img, .wp-caption).alignright { float: right; margin-left: 2.22vw; }
body .elementor .s107-post-content .wp-caption:is(.alignleft, .alignright) img { width: 100% !important; }
body .elementor .s107-post-content :is(h2, h3, h4, blockquote, hr, table, .gallery) { clear: both; }
body .elementor .s107-post-content * + p:has(> img:is(.alignleft, .alignright)) { margin-top: 1.94vw; }
body .elementor .s107-post-content :is(h2, h3, h4) + p:has(> img:is(.alignleft, .alignright)) { margin-top: 1.25vw; }
body .elementor .s107-post-content :is(iframe, video, .wp-video) { display: block; width: 100% !important; max-width: 100%; height: auto; aspect-ratio: 16 / 9; border: 0; border-radius: 1.67vw; }
body .elementor .s107-post-content * + p:has(> iframe:only-child) { margin-top: 3.61vw; }
body .elementor .s107-post-content table { width: 100%; border: 0; border-collapse: separate; border-spacing: 0; font-size: 1.25vw; line-height: 1.35; }
body .elementor .s107-post-content * + table { margin-top: 2.22vw; }
body .elementor .s107-post-content table :is(th, td) { padding: 0.97vw 1.11vw; text-align: left; vertical-align: top; border: 0; border-bottom: 1px solid var(--e-global-color-navy100); background-color: transparent; }
body .elementor .s107-post-content table tbody > tr:is(:nth-child(odd), :hover) > :is(td, th) { background-color: transparent; }
body .elementor .s107-post-content :is(.wp-caption-text, figcaption, .gallery-caption) { font-style: normal; }
body .elementor .s107-post-content table tr th { font-weight: 700; color: var(--e-global-color-navy800); background-color: var(--e-global-color-navy50); border: 0; }
body .elementor .s107-post-content thead th:first-child { border-radius: 0.83vw 0 0 0.83vw; }
body .elementor .s107-post-content thead th:last-child { border-radius: 0 0.83vw 0.83vw 0; }
body .elementor .s107-post-content td:first-child { font-weight: 600; color: var(--e-global-color-navy800); }
body .elementor .s107-post-content hr { clear: both; }
body .elementor .s107-post-content * + hr, body .elementor .s107-post-content hr + * { margin-top: 3.61vw; }
body .elementor .s107-post-content .gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.11vw; }
body .elementor .s107-post-content * + .gallery { margin-top: 3.61vw; }
body .elementor .s107-post-content .gallery-columns-2 { grid-template-columns: repeat(2, 1fr); }
body .elementor .s107-post-content .gallery-columns-4 { grid-template-columns: repeat(4, 1fr); }
body .elementor .s107-post-content .gallery br { display: none; }
body .elementor .s107-post-content .gallery .gallery-item { width: auto !important; max-width: none; margin: 0 !important; float: none; }
body .elementor .s107-post-content .gallery .gallery-icon img { aspect-ratio: 1; object-fit: cover; border: 0 !important; border-radius: 1.11vw; }
body .elementor .s107-post-content .gallery .gallery-caption { margin-top: 0.56vw; font-size: 1.04vw; color: var(--e-global-color-navy500); }
@media (max-width: 1024px) {
  body .elementor .s107-post-content :is(iframe, video, .wp-video) { border-radius: 2.4vw; }
  body .elementor .s107-post-content table { font-size: 1.9vw; }
  body .elementor .s107-post-content table :is(th, td) { padding: 1.4vw 1.6vw; }
  body .elementor .s107-post-content .gallery { gap: 1.6vw; }
  body .elementor .s107-post-content .gallery .gallery-icon img { border-radius: 1.6vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-post-content * + p:has(> img:is(.alignleft, .alignright)) { margin-top: 4.07vw; }
  body .elementor .s107-post-content :is(h2, h3, h4) + p:has(> img:is(.alignleft, .alignright)) { margin-top: 3.05vw; }
  body .elementor .s107-post-content img:is(.alignleft, .alignright), body .elementor .s107-post-content .wp-caption:is(.alignleft, .alignright) { float: none; width: 100% !important; margin: 0 0 4.07vw; }
  body .elementor .s107-post-content :is(iframe, video, .wp-video) { border-radius: 4.07vw; }
  body .elementor .s107-post-content * + p:has(> iframe:only-child), body .elementor .s107-post-content * + .gallery, body .elementor .s107-post-content * + hr, body .elementor .s107-post-content hr + * { margin-top: 7.12vw; }
  body .elementor .s107-post-content * + table { margin-top: 5.09vw; }
  /* Full content width on phones (text wraps inside cells) */
  body .elementor .s107-post-content table { display: table; width: 100%; table-layout: auto; font-size: 3.56vw; white-space: normal; }
  /* Everything else in the article body also spans the full width */
  body .elementor .s107-post-content :is(figure, .wp-caption, .wp-video, .gallery, iframe, video, img, blockquote, pre) { width: 100% !important; max-width: 100%; margin-left: 0; margin-right: 0; }
  body .elementor .s107-post-content :is(img, .wp-caption).aligncenter { margin-left: 0; margin-right: 0; }
  body .elementor .s107-post-content table :is(th, td) { padding: 2.54vw 3.05vw; }
  body .elementor .s107-post-content thead th:first-child { border-radius: 2.04vw 0 0 2.04vw; }
  body .elementor .s107-post-content thead th:last-child { border-radius: 0 2.04vw 2.04vw 0; }
  body .elementor .s107-post-content .gallery { gap: 2.04vw; }
  body .elementor .s107-post-content .gallery .gallery-icon img { border-radius: 3.05vw; }
}
/* ==========================================================================
   STAFF CARDS (Loop Item - Staff Card; Figma "Web / Person card")
   Content = Our Staff posts (ACF). Portrait / placeholder markup comes from
   [s107_staff_portrait] (child theme functions.php). "Read more" opens the
   card's Off-Canvas profile panel; its link is stretched over the whole card
   (GLOBAL - CLICKABLE CARD).
   ========================================================================== */
.s107-portrait { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.83vw; width: 100%; aspect-ratio: 1; overflow: hidden; border-radius: 1.11vw; background-color: var(--e-global-color-navy50); }
.s107-portrait-img { position: absolute; inset: 0; width: 100% !important; height: 100% !important; max-width: none !important; object-fit: cover; }
.s107-portrait-initials { font-family: "Figtree", sans-serif; font-size: 5vw; font-weight: 600; line-height: 1; letter-spacing: -0.02em; color: var(--e-global-color-navy300); }
.s107-portrait-crest { width: 4.72vw; height: auto; opacity: 0.35; }
.s107-portrait-note { font-family: "Figtree", sans-serif; font-size: 0.97vw; line-height: 1.3; color: var(--e-global-color-navy500); }
body .e-loop-item.s107-name-tbc .s107-staff-name .elementor-heading-title { color: var(--e-global-color-navy500); }
/* Read more sits at the bottom of equal-height cards, at least 32px under the name */
body .elementor :is(.s107-staff-card, .s107-link-card) .s107-read-more { margin-top: auto !important; padding-top: 2.22vw; }
@media (max-width: 1024px) { body .elementor :is(.s107-staff-card, .s107-link-card) .s107-read-more { padding-top: 3vw; } }
@media (max-width: 767px) { body .elementor :is(.s107-staff-card, .s107-link-card) .s107-read-more { padding-top: 8.14vw; } }
body .elementor .s107-staff-card { justify-content: flex-start; }
.s107-read-more .elementor-heading-title a { display: inline-block; padding: 0.35vw 2.22vw 0.35vw 0; margin: -0.35vw 0; background: url("/wp-content/uploads/2026/10/icon-arrow-right-circle.svg?v=2") right center / 1.81vw no-repeat; text-decoration: none; text-underline-offset: 0.2em; text-decoration-thickness: 2px; }
:is(.s107-staff-card, .s107-link-card):hover .s107-read-more .elementor-heading-title a,
.s107-read-more .elementor-heading-title a:focus-visible { text-decoration-line: underline; }
/* Profile panel */
.s107-staff-panel .e-off-canvas__overlay { -webkit-backdrop-filter: blur(0.42vw); backdrop-filter: blur(0.42vw); }
@media (max-width: 767px) { .s107-staff-panel .e-off-canvas__overlay { -webkit-backdrop-filter: blur(1.53vw); backdrop-filter: blur(1.53vw); } }
.s107-staff-panel .e-off-canvas__content { max-height: 88vh; overflow-y: auto !important; overscroll-behavior: contain; border-radius: 2.22vw; box-shadow: none; }
.s107-staff-panel .s107-panel-portrait { position: sticky; top: 0; }
.s107-staff-panel .s107-panel-portrait .s107-portrait { aspect-ratio: 4 / 5; max-height: calc(88vh - 2.78vw); border-radius: 1.39vw; }
.s107-staff-panel .s107-panel-portrait .s107-portrait-img { object-position: center 20%; }
.s107-staff-panel .s107-panel-portrait .s107-portrait-initials { font-size: 6.67vw; }
.s107-staff-panel .s107-panel-close { position: absolute; top: 1.39vw; right: 1.39vw; z-index: 2; width: auto; }
@media (max-width: 1024px) { .s107-staff-panel .s107-panel-close { top: 2vw; right: 2vw; } }
@media (max-width: 767px) { .s107-staff-panel .s107-panel-close { position: sticky; top: 3.05vw; right: auto; justify-self: end; } .s107-staff-panel .s107-panel-portrait { position: static; } .s107-staff-panel .s107-panel-portrait .s107-portrait { aspect-ratio: 4 / 3; max-height: none; } }
.s107-staff-panel .s107-panel-close .elementor-icon { transition: background-color 150ms ease-out; }
.s107-staff-bio p:last-child { margin-bottom: 0; }
/* soft checklist inside the Responsibilities columns (Figma items at 80%) */
.s107-checks-soft .elementor-icon-list-item { opacity: 0.8; }
@media (max-width: 1024px) {
  .s107-portrait { gap: 1.2vw; border-radius: 1.5vw; }
  .s107-portrait-initials { font-size: 7vw; }
  .s107-portrait-crest { width: 6.5vw; }
  .s107-portrait-note { font-size: 1.5vw; }
  .s107-read-more .elementor-heading-title a { padding: 0.5vw 3.2vw 0.5vw 0; margin: -0.5vw 0; background-size: 2.6vw; }
  .s107-staff-panel .e-off-canvas__content { border-radius: 3vw; }
  .s107-staff-panel .s107-panel-portrait .s107-portrait { border-radius: 1.8vw; }
  .s107-staff-panel .s107-panel-portrait .s107-portrait-initials { font-size: 10vw; }
}
@media (max-width: 767px) {
  .s107-portrait { gap: 2.04vw; border-radius: 2.04vw; }
  .s107-portrait-initials { font-size: 10.18vw; }
  .s107-portrait-crest { width: 11.2vw; }
  .s107-portrait-note { font-size: 3.05vw; }
  .s107-read-more .elementor-heading-title a { padding: 1.27vw 8.14vw 1.27vw 0; margin: -1.27vw 0; background-size: 6.62vw; }
  .s107-staff-panel .e-off-canvas__content { max-height: 86vh; border-radius: 6.11vw; }
  /* mobile: only the bio scrolls (photo, title and name stay put) */
  .s107-staff-panel .e-off-canvas__content { overflow-y: hidden !important; }
  .s107-staff-panel .elementor-element-scpbody { display: flex !important; flex-direction: column; max-height: 86vh; }
  .s107-staff-panel .elementor-element-scpbody > .elementor-element { flex-shrink: 0; width: 100%; max-width: 100%; }
  .s107-staff-panel .elementor-element-scpbody > .s107-panel-close { align-self: flex-end; width: auto; }
  .s107-staff-panel .elementor-element-scpbody > .s107-staff-bio { flex: 1 1 auto; min-height: 20vh; overflow-y: auto; overscroll-behavior: contain; padding-right: 3.05vw; padding-bottom: 6.11vw; -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 10.18vw), transparent); mask-image: linear-gradient(to bottom, #000 calc(100% - 10.18vw), transparent); scrollbar-width: thin; scrollbar-color: var(--e-global-color-navy300) var(--e-global-color-navy50); }
  .s107-staff-panel .s107-staff-bio::-webkit-scrollbar { width: 1.02vw; }
  .s107-staff-panel .s107-staff-bio::-webkit-scrollbar-track { background: var(--e-global-color-navy50); border-radius: 50vw; }
  .s107-staff-panel .s107-staff-bio::-webkit-scrollbar-thumb { background: var(--e-global-color-navy300); border-radius: 50vw; }
  /* mobile: close button floats outside the pop-up, above its top-right corner */
  .s107-staff-panel .e-off-canvas__content { overflow: visible !important; max-height: 80vh; margin-top: 12.21vw; }
  .s107-staff-panel .elementor-element-scpbody { max-height: 80vh; }
  body .s107-staff-panel .elementor-element-scpbody > .s107-panel-close { position: absolute; top: auto; bottom: calc(100% + 2.04vw); right: 0; width: auto; }
  .s107-staff-panel .s107-panel-close .elementor-icon-wrapper { display: flex; line-height: 0; }
  body .s107-staff-panel .s107-panel-close .elementor-icon { background-color: var(--e-global-color-white); }
  .s107-staff-panel .s107-panel-portrait .s107-portrait { border-radius: 4.07vw; }
  .s107-staff-panel .s107-panel-portrait .s107-portrait-initials { font-size: 20vw; }
}
/* ==========================================================================
   GLOBAL - LIGHTBOX (Elementor's video / image lightbox, e.g. a button whose
   link is Dynamic > Lightbox). Same blurred navy backdrop and round close
   button as the staff profile pop-up; the video gets rounded corners.
   ========================================================================== */
body .elementor-lightbox { background-color: rgba(14, 11, 64, 0.45); -webkit-backdrop-filter: blur(0.42vw); backdrop-filter: blur(0.42vw); }
body .elementor-lightbox .elementor-video-container { width: min(69.44vw, calc((100vh - 8.33vw) * 16 / 9)); max-width: none; margin: 0 auto; }
body .elementor-lightbox .elementor-video-container .elementor-video-wrapper { width: 100% !important; height: auto !important; max-width: none; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 2.22vw; }
body .elementor-lightbox .elementor-video-wrapper iframe { width: 100%; height: 100%; }
body .elementor-lightbox .elementor-video-wrapper iframe { border-radius: inherit; }
body .elementor-lightbox .dialog-lightbox-close-button { top: 1.67vw; right: 1.67vw; display: flex; align-items: center; justify-content: center; width: 3.06vw; height: 3.06vw; padding: 0; border-radius: 50%; background-color: var(--e-global-color-navy50); font-size: 1.39vw; line-height: 1; transition: background-color 150ms ease-out; }
body .elementor-lightbox .dialog-lightbox-close-button svg { width: 1.39vw; height: 1.39vw; fill: var(--e-global-color-navy800); }
body .elementor-lightbox .dialog-lightbox-close-button:is(:hover, :focus-visible) { background-color: var(--e-global-color-navy100); }
body .elementor-lightbox .dialog-lightbox-close-button:is(:hover, :focus-visible) svg { fill: var(--e-global-color-navy800); }
@media (max-width: 1024px) {
  body .elementor-lightbox .elementor-video-container { width: 88vw; }
  body .elementor-lightbox .elementor-video-container .elementor-video-wrapper { border-radius: 3vw; }
  body .elementor-lightbox .dialog-lightbox-close-button { top: 2.4vw; right: 2.4vw; width: 4.4vw; height: 4.4vw; }
  body .elementor-lightbox .dialog-lightbox-close-button svg { width: 2vw; height: 2vw; }
}
@media (max-width: 767px) {
  body .elementor-lightbox { -webkit-backdrop-filter: blur(1.53vw); backdrop-filter: blur(1.53vw); }
  body .elementor-lightbox .elementor-video-container { width: 93.9vw; }
  body .elementor-lightbox .elementor-video-container .elementor-video-wrapper { border-radius: 4.07vw; }
  /* Close button sits just above the video's top-right corner, like the staff panel (video 93.9vw wide, 16:9, centred) */
  body .elementor-lightbox .dialog-lightbox-close-button { top: calc(50% - 38.63vw); right: 3.05vw; margin: 0 !important; width: 10.18vw; height: 10.18vw; background-color: var(--e-global-color-white); }
  body .elementor-lightbox .dialog-lightbox-close-button svg { width: 5.09vw; height: 5.09vw; }
}
/* ==== ACCREDITATIONS & AWARDS ==== */
/* Status pill with dot (Figma Web / Status, 'In progress') */
.s107-status .elementor-heading-title { display: inline-flex; align-items: center; gap: 0.56vw; padding: 0.42vw 0.97vw 0.42vw 0.83vw; border-radius: 50vw; }
.s107-status .elementor-heading-title::before { content: ""; width: 0.56vw; height: 0.56vw; border-radius: 50%; background: currentColor; flex: none; }
.s107-status-warn .elementor-heading-title { background: #FFF1D6; color: #8A5A00; }
/* Quote mark above a pull-quote */
.s107-quote-icon .elementor-heading-title::before { content: ""; display: block; width: 5vw; height: 5vw; margin-bottom: 0.83vw; background: url("/wp-content/uploads/2026/10/icon-quote.svg") center / contain no-repeat; }
/* Plain text link */
.s107-text-link .elementor-heading-title a { color: inherit; text-decoration: none; text-underline-offset: 0.2em; }
.s107-text-link .elementor-heading-title a:hover, .s107-text-link .elementor-heading-title a:focus-visible { text-decoration: underline; }
@media (max-width: 1024px) {
  .s107-status .elementor-heading-title { gap: 0.8vw; padding: 0.6vw 1.4vw 0.6vw 1.2vw; }
  .s107-status .elementor-heading-title::before { width: 0.8vw; height: 0.8vw; }
  .s107-quote-icon .elementor-heading-title::before { width: 7vw; height: 7vw; margin-bottom: 1.2vw; }
}
@media (max-width: 767px) {
  .s107-status .elementor-heading-title { gap: 2.04vw; padding: 1.53vw 3.56vw 1.53vw 3.05vw; }
  .s107-status .elementor-heading-title::before { width: 2.04vw; height: 2.04vw; }
  .s107-quote-icon .elementor-heading-title::before { width: 12.21vw; height: 12.21vw; margin-bottom: 2.04vw; }
}
/* ==== END ACCREDITATIONS & AWARDS ==== */

/* ==== FACILITIES & SERVICES ==== */
/* Glass caption pill with globe icon (virtual tour placeholder) */
.s107-glass-pill .elementor-heading-title { display: inline-flex; align-items: center; gap: 0.56vw; padding: 0.69vw 1.25vw 0.69vw 0.97vw; border-radius: 50vw; background: rgba(255,255,255,0.12); -webkit-backdrop-filter: blur(5px); backdrop-filter: blur(5px); white-space: nowrap; }
.s107-glass-pill .elementor-heading-title::before { content: ""; width: 1.39vw; height: 1.39vw; flex: none; background: currentColor; -webkit-mask: url("/wp-content/uploads/2026/10/icon-globe.svg") center / contain no-repeat; mask: url("/wp-content/uploads/2026/10/icon-globe.svg") center / contain no-repeat; }
/* Virtual tour placeholder: whole block is the link; play button grows on hover */
.s107-tour-placeholder .elementor-icon { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); }
.s107-tour-placeholder:hover .elementor-icon, .s107-tour-placeholder:focus-visible .elementor-icon { transform: scale(1.08); }
.s107-tour-placeholder .elementor-icon svg { transform: translateX(8%); }
/* Facilities tour play triangle (32x36, not square): keep its shape inside the square icon box */
.elementor-element-fstourplay .elementor-icon svg { width: auto; }
/* Elementor's icon padding has no tablet/mobile setting: circle 72px on phones (Figma desktop 112px) */
@media (max-width: 1024px) { body .elementor .elementor-element.elementor-element.elementor-element-fstourplay .elementor-icon { padding: 3.8vw; } }
@media (max-width: 767px) { body .elementor .elementor-element.elementor-element.elementor-element-fstourplay .elementor-icon { padding: 6.23vw; } }
/* Tab panel button sits at the bottom of the text column */
body .elementor .s107-self-end { align-self: end; }
@media (max-width: 1024px) {
  .s107-glass-pill .elementor-heading-title { gap: 0.8vw; padding: 1vw 1.8vw 1vw 1.4vw; }
  .s107-glass-pill .elementor-heading-title::before { width: 2vw; height: 2vw; }
}
@media (max-width: 767px) {
  .s107-glass-pill .elementor-heading-title { gap: 1.53vw; padding: 2.04vw 3.56vw 2.04vw 2.54vw; }
  .s107-glass-pill .elementor-heading-title::before { width: 4.07vw; height: 4.07vw; }
  body .elementor .s107-self-end { align-self: auto; }
}
/* Virtual tour popup (Custom Code 'Virtual tour - load on click'): same blurred navy backdrop
   and round close button as the video lightbox; tour box 16:9 on desktop, tall on phones. */
html.s107-modal-open { overflow: hidden; }
.s107-tour-modal { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; background-color: rgba(14, 11, 64, 0.45); -webkit-backdrop-filter: blur(0.42vw); backdrop-filter: blur(0.42vw); }
@keyframes s107ModalFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes s107ModalRise { from { opacity: 0; transform: translateY(2vw) scale(0.97); } to { opacity: 1; transform: none; } }
.s107-tour-modal { animation: s107ModalFade 250ms ease-out; }
/* Only the tour frame rises: animating its box would carry the close button along with it */
.s107-tour-modal .s107-tour-frame { animation: s107ModalRise 350ms cubic-bezier(0.2, 0.8, 0.2, 1); }
.s107-tour-modal.is-closing { animation: s107ModalFade 200ms ease-in reverse forwards; }
@media (prefers-reduced-motion: reduce) { .s107-tour-modal, .s107-tour-modal .s107-tour-frame { animation: none; } }
.s107-tour-modal-box { position: relative; width: min(88vw, calc((100vh - 8.33vw) * 16 / 9)); aspect-ratio: 16 / 9; }
.s107-tour-modal .s107-tour-frame { display: block; width: 100%; height: 100%; border: 0; border-radius: 2.22vw; background-color: #0E0B40; }
body .s107-tour-modal .s107-tour-modal-close { box-shadow: none; color: var(--e-global-color-navy800); position: fixed; top: 1.67vw; right: 1.67vw; z-index: 2; display: flex; align-items: center; justify-content: center; width: 3.06vw; height: 3.06vw; padding: 0; border: 0; border-radius: 50%; background-color: var(--e-global-color-navy50); cursor: pointer; transition: background-color 150ms ease-out; }
body .s107-tour-modal .s107-tour-modal-close svg { width: 1.39vw; height: 1.39vw; fill: none; stroke: var(--e-global-color-navy800); stroke-width: 2.4; stroke-linecap: round; }
/* !important: the theme's global button :hover/:focus colours would otherwise turn it red */
body .s107-tour-modal .s107-tour-modal-close:is(:hover, :focus, :focus-visible, :active) { background-color: var(--e-global-color-navy100) !important; border: 0 !important; outline: 0; box-shadow: none !important; }
body .s107-tour-modal .s107-tour-modal-close:focus-visible { outline: 2px solid var(--e-global-color-white); outline-offset: 2px; }
@media (max-width: 1024px) {
  .s107-tour-modal-box { width: 88vw; }
  .s107-tour-modal .s107-tour-frame { border-radius: 3vw; }
  body .s107-tour-modal .s107-tour-modal-close { top: 2.4vw; right: 2.4vw; width: 4.4vw; height: 4.4vw; }
  body .s107-tour-modal .s107-tour-modal-close svg { width: 2vw; height: 2vw; }
}
@media (max-width: 767px) {
  .s107-tour-modal { -webkit-backdrop-filter: blur(1.53vw); backdrop-filter: blur(1.53vw); }
  .s107-tour-modal-box { width: 93.9vw; height: calc(100dvh - 40vw); aspect-ratio: auto; }
  .s107-tour-modal .s107-tour-frame { border-radius: 4.07vw; }
  /* Close button just above the tour's top-right corner, like the video lightbox */
  body .s107-tour-modal .s107-tour-modal-close { position: absolute; top: auto; bottom: calc(100% + 2.04vw); right: 0; width: 10.18vw; height: 10.18vw; background-color: var(--e-global-color-white); }
  body .s107-tour-modal .s107-tour-modal-close svg { width: 5.09vw; height: 5.09vw; }
}
/* ==== END FACILITIES & SERVICES ==== */

/* ==== ABOUT TAYLOR'S SCHOOLS ==== */
/* Small unit beside a stat figure (e.g. 60%) */
.s107-stat-unit { font-size: 0.47em; letter-spacing: -0.02em; margin-left: 0.06em; }

/* About Taylor's CEO video play button: icon padding has no mobile setting - circle 64px on phones (Figma mobile), 112px desktop */
@media (max-width: 767px) { body .elementor .elementor-element.elementor-element.elementor-element-tsceoplay .elementor-icon { padding: 4.94vw; } }
/* Glass caption with clock icon */
.s107-tour-placeholder .s107-play-circle .elementor-icon svg { transform: none; }
.s107-glass-pill-time .elementor-heading-title::before { -webkit-mask-image: url("/wp-content/uploads/2026/10/icon-time.svg"); mask-image: url("/wp-content/uploads/2026/10/icon-time.svg"); }
/* Smaller quote mark (CEO quote card) */
.s107-quote-icon-s .elementor-heading-title::before { width: 3.06vw; height: 3.06vw; margin-bottom: 1.39vw; }
/* RECIPE letter marks on blurred red shapes */
.s107-recipe-mark .elementor-heading-title { display: flex; align-items: center; justify-content: center; width: 11.81vw; height: 11.81vw; background: center / contain no-repeat; color: #FFFFFF; font-family: Figtree, sans-serif; font-weight: 600; font-size: 6.67vw; line-height: 1; }
.s107-recipe-hex .elementor-heading-title { background-image: url("/wp-content/uploads/2026/10/recipe-shape-hexagon.svg"); }
.s107-recipe-circle .elementor-heading-title { background-image: url("/wp-content/uploads/2026/10/recipe-shape-circle.svg"); }
.s107-recipe-burst .elementor-heading-title { background-image: url("/wp-content/uploads/2026/10/recipe-shape-burst.svg"); }
@media (max-width: 1024px) {
  .s107-quote-icon-s .elementor-heading-title::before { width: 4.4vw; height: 4.4vw; margin-bottom: 2vw; }
  .s107-recipe-mark .elementor-heading-title { width: 18vw; height: 18vw; font-size: 10vw; }
}
@media (max-width: 767px) {
  .s107-quote-icon-s .elementor-heading-title::before { width: 10.18vw; height: 10.18vw; margin-bottom: 4.07vw; }
  .s107-recipe-mark .elementor-heading-title { width: 30.53vw; height: 30.53vw; font-size: 17.3vw; }
}
/* ==== END ABOUT TAYLOR'S SCHOOLS ==== */

/* ==== JOB OPPORTUNITIES ==== */
/* Larger filter chips (Figma Open roles filter: 12/20 padding, 12 radius) */
body .elementor .s107-filter-chips-l .elementor-icon-list-item { padding: 0.83vw 1.39vw; border-radius: 0.83vw; }
/* Job rows: hide a tag if its field is empty */
body .elementor .s107-jobs-loop .elementor-widget-heading:has(.elementor-heading-title:empty) { display: none; }
/* Load more: Load more button is styled by GLOBAL - BUTTONS via the loop grid's classes */
body .elementor .s107-jobs-loop .e-loop__load-more { text-align: center; }
@media (max-width: 1024px) {
  body .elementor .s107-filter-chips-l .elementor-icon-list-item { padding: 1.2vw 2vw; border-radius: 1.2vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-filter-chips-l .elementor-icon-list-item { padding: 2.54vw 4.07vw; border-radius: 3.05vw; }

}
/* ==== END JOB OPPORTUNITIES ==== */

/* ==== MOBILE - LISTS AND STACKS ==== */
/* Figma mobile (Oct 2026 update): some desktop carousels/rows become plain lists on phones.
   - .s107-m-stack (Nested/Loop Carousel): slider switched off on phones by Custom Code
     "Mobile - carousels as swipe rows"; cards stack with a 12px gap.
   - .s107-m-grid2: same, as a 2-column grid (Accreditations logos).
   - .s107-m-row-card (card container: image, heading, text, [button]): image 104px on the
     left, text beside it (Why S107, Beyond the classroom). */
@media (max-width: 767px) {
  body .elementor .elementor-element.elementor-widget.s107-m-stack { width: 100% !important; max-width: 100% !important; margin-inline: 0; }
  body .elementor .elementor-element.elementor-widget.s107-m-stack.s107-swiper-off .swiper.swiper { padding-inline: 0; overflow: visible; }
  body .elementor .elementor-element.elementor-widget.s107-m-stack.s107-swiper-off .swiper-wrapper.swiper-wrapper {
    display: flex; flex-direction: column; gap: 3.05vw; transform: none !important;
    overflow: visible; padding-inline: 0; scroll-snap-type: none;
  }
  body .elementor .elementor-element.elementor-widget.s107-m-grid2.s107-swiper-off .swiper-wrapper.swiper-wrapper {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  body .elementor .elementor-element.elementor-widget.s107-m-stack.s107-swiper-off .swiper-slide {
    width: 100% !important; margin: 0 !important; padding: 0 !important;
  }
  body .elementor .elementor-element.elementor-widget.s107-m-stack.s107-swiper-off .swiper-slide-duplicate { display: none; }
  body .elementor .elementor-element.elementor-widget.s107-m-stack :is(.elementor-swiper-button, .swiper-pagination) { display: none; }

  body .elementor .elementor-element.e-con.s107-m-row-card {
    display: grid; grid-template-columns: 26.46vw minmax(0, 1fr); grid-template-rows: auto auto 1fr;
    align-content: start; column-gap: 3.05vw; row-gap: 2.04vw;
  }
  body .elementor .s107-m-row-card > .elementor-widget-image { grid-column: 1; grid-row: 1 / 4; align-self: start; }
  body .elementor .s107-m-row-card > .elementor-widget:not(.elementor-widget-image) { grid-column: 2; }
  body .elementor .s107-m-row-card > .elementor-widget-button { align-self: start; margin-top: 2.04vw; }
  /* Row card with a footer (button or link) under the image, full width (Next steps, While you wait) */
  body .elementor .elementor-element.e-con.s107-m-row-card-foot { grid-template-rows: auto auto 1fr auto; }
  body .elementor .s107-m-row-card.s107-m-row-card-foot > .elementor-element:last-child { grid-column: 1 / -1; grid-row: 4; margin-top: 1.02vw; }
  /* Row card with 4 text rows (tag, title, text, link) */
  body .elementor .elementor-element.e-con.s107-m-row-card.s107-m-row-card-4 { grid-template-rows: auto auto auto 1fr auto; row-gap: 1.53vw; }
  body .elementor .s107-m-row-card.s107-m-row-card-4 > .elementor-widget-image { grid-row: 1 / 5; }
  body .elementor .s107-m-row-card.s107-m-row-card-foot.s107-m-row-card-4 > .elementor-element:last-child { grid-row: 5; }
  /* Row cards: Read more sits 12px under the text (Figma footer pt 12 = 6px row gap + 1.53vw), not the 32px used on tall cards */
  body .elementor .s107-m-row-card.s107-link-card .s107-read-more { padding-top: 1.53vw; }
  /* Tags inside row cards hug their text */
  body .elementor .s107-m-row-card > .s107-m-hug { justify-self: start; }
  /* Row card type on cards using global type styles (Figma: title 18px, text 15px) */
  body .elementor .elementor-element.e-con.s107-m-row-card { --e-global-typography-cardtitle-font-size: 4.58vw; --e-global-typography-bodysreg-font-size: 3.82vw; }
}
/* ==== END MOBILE - LISTS AND STACKS ==== */

/* ==== BACKGROUND VIDEO ==== */
/* YouTube background videos (e.g. Home hero): the player can't be styled, but taking pointer
   events away stops YouTube's hover pause/play button, title and links from appearing. */
.elementor-background-video-container, .elementor-background-video-container :is(iframe, video) { pointer-events: none; }
/* YouTube shows its pause/play icon as playback starts: keep the YouTube video hidden (fallback
   photo shows) until Custom Code 'Background video - hide YouTube start icon' adds .s107-bgv-ready. */
.elementor-background-video-container:has(iframe) { opacity: 0; transition: opacity 600ms ease-out; }
.elementor-background-video-container.s107-bgv-ready { opacity: 1; }
/* ==== END BACKGROUND VIDEO ==== */

/* ==== ACADEMIC RESULTS ==== */
/* Charts (How we compare / Trends) are plain Elementor containers:
   - .s107-hbar: horizontal bar, width = value as % of the scale (container Width).
   - .s107-vbar: column, height = value / 40 (container Min height, custom %), value label inside.
   - .s107-vline: world-average line (Min height = 30.9 / 40), label pill inside.
   - Entrance: the chart card (.s107-chart) has Elementor's Fade In entrance animation; while it is
     still .elementor-invisible the bars sit at 0 and grow when it scrolls into view. */
.s107-key .elementor-heading-title { display: inline-flex; align-items: center; gap: 0.56vw; }
.s107-key .elementor-heading-title::before { content: ""; width: 0.97vw; height: 0.97vw; border-radius: 0.28vw; background-color: var(--e-global-color-navy800); }
.s107-key-lav .elementor-heading-title::before { background-color: var(--e-global-color-navy300); }
body .elementor .elementor-element.e-con.s107-hbar { justify-self: start; }
body .elementor .elementor-element.e-con.s107-vbar { position: relative; align-self: end; justify-self: stretch; }
body .elementor .s107-vbar > .s107-chart-val { position: absolute; left: 0; right: 0; bottom: calc(100% + 0.56vw); }
/* Column chart placement: bars row 1 (columns 1-5), years row 2 */
.s107-colchart > .s107-vbar:nth-child(1) { grid-column: 1; grid-row: 1; }
.s107-colchart > .s107-vbar:nth-child(2) { grid-column: 2; grid-row: 1; }
.s107-colchart > .s107-vbar:nth-child(3) { grid-column: 3; grid-row: 1; }
.s107-colchart > .s107-vbar:nth-child(4) { grid-column: 4; grid-row: 1; }
.s107-colchart > .s107-vbar:nth-child(5) { grid-column: 5; grid-row: 1; }
.s107-colchart > .elementor-widget:nth-last-child(5) { grid-column: 1; } .s107-colchart > .elementor-widget:nth-last-child(4) { grid-column: 2; } .s107-colchart > .elementor-widget:nth-last-child(3) { grid-column: 3; } .s107-colchart > .elementor-widget:nth-last-child(2) { grid-column: 4; } .s107-colchart > .elementor-widget:nth-last-child(1) { grid-column: 5; }
.s107-colchart > .elementor-widget { grid-row: 2; }
/* Line and baseline sit on the bar row across all columns (out of the auto-placed flow) */
body .elementor .elementor-element.e-con:is(.s107-vaxis, .s107-vline) { grid-column: 1 / -1; grid-row: 1; }
body .elementor .elementor-element.e-con.s107-vaxis { align-self: end; z-index: 1; }
body .elementor .s107-vline-label .elementor-heading-title { white-space: nowrap; }
body .elementor .elementor-element.e-con.s107-vline { position: relative; align-self: end; z-index: 2; border-top: 2px solid var(--e-global-color-red500); pointer-events: none; }
body .elementor .s107-vline > .s107-vline-label { position: absolute; top: 0; left: 0.56vw; transform: translateY(-50%); }
.s107-hbar { transform-origin: left center; transition: transform 1300ms cubic-bezier(0.22, 0.75, 0.2, 1); }
.s107-vbar { transform-origin: center bottom; transition: transform 1300ms cubic-bezier(0.22, 0.75, 0.2, 1); }
.s107-chart .s107-chart-val, .s107-vline { transition: opacity 600ms ease-out 1100ms; }
.s107-colchart > .s107-vbar:nth-child(2) { transition-delay: 150ms; }
.s107-colchart > .s107-vbar:nth-child(3) { transition-delay: 300ms; }
.s107-colchart > .s107-vbar:nth-child(4) { transition-delay: 450ms; }
.s107-colchart > .s107-vbar:nth-child(5) { transition-delay: 600ms; }
.s107-hbars > .s107-hbar:nth-child(5) { transition-delay: 150ms; }
.s107-chart > .e-con:nth-child(4) .s107-hbar { transition-delay: 300ms; }
.s107-chart > .e-con:nth-child(4) .s107-hbars > .s107-hbar:nth-child(5) { transition-delay: 450ms; }
html.s107-charts-js .s107-chart:not(.is-visible) .s107-hbar, html.s107-charts-js .s107-chart:not(.is-visible) .s107-hbar { transform: scaleX(0); transition: none; }
html.s107-charts-js .s107-chart:not(.is-visible) .s107-vbar { transform: scaleY(0); transition: none; }
html.s107-charts-js .s107-chart:not(.is-visible) :is(.s107-chart-val, .s107-vline) { opacity: 0; transition: none; }
@media (prefers-reduced-motion: reduce) { .s107-hbar, .s107-vbar, .s107-chart .s107-chart-val, .s107-vline { transition: none !important; } html.s107-charts-js .s107-chart :is(.s107-hbar, .s107-vbar) { transform: none !important; } html.s107-charts-js .s107-chart :is(.s107-chart-val, .s107-vline) { opacity: 1 !important; } }
/* Series tabs: only one chart card shows; the active tab is navy */
body .elementor .elementor-element.e-con.s107-chart-hide { display: none; }
body .elementor .s107-chart-toggle .elementor-icon-list-item { cursor: pointer; transition: background-color 150ms ease-out; }
body .elementor .s107-chart-toggle .elementor-icon-list-item:first-child:not(.is-active) { background-color: transparent; }
body .elementor .s107-chart-toggle .elementor-icon-list-item:first-child:not(.is-active) .elementor-icon-list-text { color: var(--e-global-color-neutral950); }
body .elementor .s107-chart-toggle .elementor-icon-list-item.is-active { background-color: var(--e-global-color-navy800); }
body .elementor .s107-chart-toggle .elementor-icon-list-item.is-active .elementor-icon-list-text { color: var(--e-global-color-white); }
body .elementor .s107-chart-toggle .elementor-icon-list-item:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: 2px; }
@media (max-width: 1024px) {
  .s107-key .elementor-heading-title { gap: 0.8vw; }
  .s107-key .elementor-heading-title::before { width: 1.4vw; height: 1.4vw; border-radius: 0.4vw; }
}
@media (max-width: 767px) {
  .s107-key .elementor-heading-title { gap: 2.04vw; }
  .s107-key .elementor-heading-title::before { width: 3.56vw; height: 3.56vw; border-radius: 1.02vw; }
  body .elementor .s107-vbar > .s107-chart-val { bottom: calc(100% + 1.53vw); }
  body .elementor .s107-vline > .s107-vline-label { left: 1.53vw; }
}
/* ==== END ACADEMIC RESULTS ==== */

/* ==== UNIVERSITY DESTINATIONS ==== */
/* Region cards (.s107-region): university rows = logo + name (h4) with the location in
   .s107-uni-meta. Region tabs (.s107-region-tabs) are switched by Custom Code
   "Region tabs - University Destinations"; hidden cards get .s107-region-hide. */
body .elementor .s107-region .elementor-widget.s107-uni-name, body .elementor .s107-region .elementor-widget-heading { min-width: 0; }
body .elementor .s107-region .elementor-widget.s107-uni-name { flex: 1 1 0; }
/* Divider between logo and name: a 48px Navy 200 line centred on the row (Figma "Row": logo | line | text) */
body .elementor .s107-uni-name .elementor-heading-title { position: relative; padding-left: 0.83vw; }
body .elementor .s107-uni-name .elementor-heading-title::before { content: ""; position: absolute; left: 0; top: 50%; width: 1px; height: 3.33vw; transform: translateY(-50%); background-color: var(--e-global-color-navy200); }
body .elementor .s107-uni-meta { display: block; margin-top: 0.28vw; font-size: 1.11vw; font-weight: 400; line-height: 1.3; letter-spacing: 0; color: var(--e-global-color-navy500); }
body .elementor .e-con.s107-region.s107-region-hide { display: none; }
/* After the first tab click the cards drop Elementor's entrance animation (it would replay on every show). */
body .elementor .elementor-element.e-con.s107-region-tabbed { visibility: visible !important; opacity: 1; animation: none !important; }
body .elementor .elementor-element.e-con.s107-region-tabbed.s107-region-in { animation: s107RegionIn 350ms ease-out 0s !important; }
@keyframes s107RegionIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }
body .elementor .s107-region-tabs .elementor-icon-list-item { cursor: pointer; transition: background-color 150ms ease-out; }
body .elementor .s107-region-tabs .elementor-icon-list-item:first-child:not(.is-active) { background-color: transparent; }
body .elementor .s107-region-tabs .elementor-icon-list-item:first-child:not(.is-active) .elementor-icon-list-text { color: var(--e-global-color-neutral950); }
body .elementor .s107-region-tabs .elementor-icon-list-item.is-active { background-color: var(--e-global-color-navy800); }
body .elementor .s107-region-tabs .elementor-icon-list-item.is-active .elementor-icon-list-text { color: var(--e-global-color-white); }
body .elementor .s107-region-tabs .elementor-icon-list-item:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { body .elementor .e-con.s107-region-in { animation: none; } }
@media (max-width: 1024px) {
  body .elementor .s107-uni-name .elementor-heading-title { padding-left: 1.2vw; }
  body .elementor .s107-uni-name .elementor-heading-title::before { height: 4.8vw; }
  body .elementor .s107-uni-meta { margin-top: 0.4vw; font-size: 1.75vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-uni-name .elementor-heading-title { padding-left: 3.05vw; }
  body .elementor .s107-uni-name .elementor-heading-title::before { height: 12.21vw; }
  body .elementor .s107-uni-meta { margin-top: 1.02vw; font-size: 3.56vw; }
}
/* ==== END UNIVERSITY DESTINATIONS ==== */

/* ==== LEARNING PAGES ==== */
/* Shared parts of the Learning subpages (Early Years, Primary, Secondary, Pre-University, EAL,
   Wider Learning). All content is plain Elementor widgets; these rules only draw the extras:
   - .s107-day-pill (heading): time pill + dot and line to the next time (A day in ...).
     .s107-day-first = red pill, .s107-day-last = filled navy pill with no line after it.
   - .s107-step-num (heading): numbered circle + line (How subject choice works, EAL steps).
   - .s107-faq (Nested Accordion): question rows with a round +/- toggle; .s107-faq-help = side card.
   - .s107-table-wrap (Text Editor holding a <table class="s107-table">): navy header, striped rows;
     scrolls sideways on phones. */
body .elementor .elementor-widget.s107-day-pill,
body .elementor .elementor-widget.s107-step-num { display: flex; align-items: center; gap: 1.39vw; }
body .elementor .s107-day-pill .elementor-heading-title { display: inline-flex; align-items: center; padding: 0.42vw 1.11vw; border: 2px solid var(--e-global-color-navy800); border-radius: 999px; font-family: Figtree, sans-serif; font-size: 1.11vw; font-weight: 700; line-height: 1.5; color: var(--e-global-color-navy800); white-space: nowrap; }
body .elementor .s107-day-first .elementor-heading-title { background-color: var(--e-global-color-red500); border-color: var(--e-global-color-red500); color: var(--e-global-color-white); }
body .elementor .s107-day-last .elementor-heading-title { background-color: var(--e-global-color-navy800); color: var(--e-global-color-white); }
body .elementor .elementor-widget.s107-day-pill::after { content: ""; flex: 1 1 auto; height: 1.11vw; background: radial-gradient(circle at 0.56vw 50%, var(--e-global-color-navy800) 0.5vw, transparent 0.54vw), linear-gradient(var(--e-global-color-navy300), var(--e-global-color-navy300)) 0.56vw 50% / calc(100% - 0.56vw) 2px no-repeat; }
body .elementor .elementor-widget.s107-day-last::after { flex: 0 0 1.11vw; }
body .elementor .s107-step-num .elementor-heading-title { display: inline-flex; align-items: center; justify-content: center; width: 3.89vw; height: 3.89vw; border-radius: 50%; background-color: var(--e-global-color-navy800); font-family: Figtree, sans-serif; font-size: 1.39vw; font-weight: 500; line-height: 1; color: var(--e-global-color-white); flex: none; }
body .elementor .s107-step-first .elementor-heading-title { background-color: var(--e-global-color-red500); }
body .elementor .elementor-widget.s107-step-num::after { content: ""; flex: 1 1 auto; height: 2px; background-color: var(--e-global-color-navy300); }
body .elementor .elementor-widget.s107-step-last::after { content: none; }

body .elementor .s107-faq .e-n-accordion-item { background-color: var(--e-global-color-navy50); border-radius: 1.11vw; overflow: hidden; }
body .elementor .s107-faq .e-n-accordion-item-title { display: flex; align-items: center; justify-content: space-between; gap: 1.67vw; padding: 1.11vw 1.67vw; border: 0 !important; background: transparent !important; cursor: pointer; list-style: none; }
body .elementor .s107-faq .e-n-accordion-item-title::-webkit-details-marker { display: none; }
body .elementor .s107-faq .e-n-accordion-item-title-header { flex: 1 1 auto; }
body .elementor .s107-faq .e-n-accordion-item-title-text { font-family: Figtree, sans-serif; font-size: 1.53vw; font-weight: 700; line-height: 1.2; color: var(--e-global-color-navy800); }
body .elementor .s107-faq .e-n-accordion-item-title-icon { display: none; }
body .elementor .s107-faq .e-n-accordion-item-title::after { content: ""; flex: none; width: 2.78vw; height: 2.78vw; border-radius: 50%; background: var(--e-global-color-navy100) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M9.2 4h1.6v5.2H16v1.6h-5.2V16H9.2v-5.2H4V9.2h5.2z' fill='%23211E72'/%3E%3C/svg%3E") center / 1.39vw no-repeat; transition: background-color 150ms ease-out; }
body .elementor .s107-faq .e-n-accordion-item[open] > .e-n-accordion-item-title::after { background-color: var(--e-global-color-navy800); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M4 9.2h12v1.6H4z' fill='%23fff'/%3E%3C/svg%3E"); }
body .elementor .s107-faq .e-n-accordion-item > .e-con { padding: 0 1.67vw 1.94vw; border: 0; background: transparent; }
body .elementor .s107-faq .e-n-accordion-item > .e-con .elementor-heading-title { max-width: 49.44vw; }
body .elementor .e-con.s107-faq-help { position: relative; box-shadow: 0.56vw 0.56vw 0 var(--e-global-color-red500); }
body .elementor .e-con.s107-faq-help > .elementor-widget:not(.elementor-widget-image) { position: relative; z-index: 1; }

body .elementor .s107-table-wrap { border: 1px solid var(--e-global-color-navy200); border-radius: 1.11vw; overflow: hidden; }
body .elementor .s107-table { width: 100%; margin: 0; border-collapse: collapse; table-layout: fixed; font-family: Figtree, sans-serif; font-size: 1.11vw; line-height: 1.4; color: var(--e-global-color-navy800); }
body .elementor .s107-table :is(th, td) { padding: 1.67vw 2.22vw; border: 0; text-align: left; vertical-align: middle; background: transparent; }
body .elementor .s107-table thead th { padding-block: 1.39vw; background-color: var(--e-global-color-navy800); color: var(--e-global-color-white); font-weight: 700; }
body .elementor .s107-table tbody th { font-weight: 700; }
body .elementor .s107-table tbody td { font-weight: 400; }
body .elementor .s107-table tbody tr:nth-child(even) { background-color: var(--e-global-color-navy50); }
body .elementor .s107-table-wrap p:empty { display: none; }
@media (max-width: 1024px) {
  body .elementor .s107-day-pill .elementor-heading-title { padding: 0.6vw 1.6vw; font-size: 1.75vw; }
  body .elementor .elementor-widget.s107-day-pill::after { height: 1.6vw; background-size: auto, calc(100% - 0.8vw) 2px; background-position: 0 0, 0.8vw 50%; background-image: radial-gradient(circle at 0.8vw 50%, var(--e-global-color-navy800) 0.72vw, transparent 0.76vw), linear-gradient(var(--e-global-color-navy300), var(--e-global-color-navy300)); }
  body .elementor .elementor-widget.s107-day-last::after { flex: 0 0 1.6vw; }
  body .elementor .s107-step-num .elementor-heading-title { width: 5.4vw; height: 5.4vw; font-size: 2vw; }
  body .elementor .s107-faq .e-n-accordion-item-title { padding: 1.6vw 2.4vw; }
  body .elementor .s107-faq .e-n-accordion-item-title-text { font-size: 2.2vw; }
  body .elementor .s107-faq .e-n-accordion-item-title::after { width: 4vw; height: 4vw; background-size: 2vw; }
  body .elementor .s107-faq .e-n-accordion-item > .e-con { padding: 0 2.4vw 2.8vw; }
  body .elementor .s107-table { font-size: 1.75vw; }
  body .elementor .s107-table :is(th, td) { padding: 2vw 2.4vw; }
}
@media (max-width: 767px) {
  body .elementor .elementor-widget.s107-day-pill, body .elementor .elementor-widget.s107-step-num { gap: 4.07vw; }
  body .elementor .s107-day-pill .elementor-heading-title { padding: 1.53vw 4.07vw; font-size: 4.07vw; }
  body .elementor .elementor-widget.s107-day-pill::after { height: 4.07vw; background-image: radial-gradient(circle at 2.04vw 50%, var(--e-global-color-navy800) 1.9vw, transparent 2vw), linear-gradient(var(--e-global-color-navy300), var(--e-global-color-navy300)); background-position: 0 0, 2.04vw 50%; background-size: auto, calc(100% - 2.04vw) 2px; }
  body .elementor .elementor-widget.s107-day-last::after { flex: 0 0 4.07vw; }
  body .elementor .s107-step-num .elementor-heading-title { width: 12.21vw; height: 12.21vw; font-size: 5.09vw; }
  /* (Oct 2026 Figma) FAQ section stays white on phones; help card stays under the questions (Khairul) */
  body .elementor .s107-faq .e-n-accordion-item { border-radius: 3.05vw; background-color: var(--e-global-color-navy50); }
  body .elementor .s107-faq .e-n-accordion-item-title { gap: 4.07vw; padding: 4.07vw 5.09vw; }
  body .elementor .s107-faq .e-n-accordion-item-title-text { font-size: 4.58vw; }
  body .elementor .s107-faq .e-n-accordion-item-title::after { width: 10.18vw; height: 10.18vw; background-size: 5.09vw; }
  body .elementor .s107-faq .e-n-accordion-item > .e-con { padding: 0 5.09vw 5.09vw; }
  body .elementor .s107-faq .e-n-accordion-item > .e-con .elementor-heading-title { max-width: none; }
  body .elementor .e-con.s107-faq-help { box-shadow: 2.04vw 2.04vw 0 var(--e-global-color-red500); }
  body .elementor .s107-table-wrap { border-radius: 3.05vw; overflow-x: auto; scrollbar-width: none; }
  body .elementor .s107-table-wrap::-webkit-scrollbar { display: none; }
  /* Sideways-scrolling table: fade the right edge until scrolled to the end (.s107-at-end added by Custom Code 'Tables - swipe hint fade'). */
  body .elementor .s107-table-wrap:not(.s107-at-end) { -webkit-mask-image: linear-gradient(to right, #000 78%, transparent); mask-image: linear-gradient(to right, #000 78%, transparent); }
  body .elementor .s107-table { width: 180vw; font-size: 3.82vw; }
  body .elementor .s107-table :is(th, td) { padding: 4.58vw 5.09vw; }
  body .elementor .s107-table thead th { padding-block: 4.07vw; }
}
/* ==== END LEARNING PAGES ==== */

/* ==== NEWS ARCHIVE TABS ==== */
/* News archive (template 525): category tabs are a Nested Tabs widget (.s107-news-tabs), one loop grid per tab.
   Tab bar sits left (shared .s107-tabs centres it); search box sits on the right of the tab bar on desktop/tablet. */
body .elementor .s107-news-tabs .e-n-tabs-heading { margin-inline: 0; padding: 0.56vw; border-radius: 1.11vw; }
body .elementor .s107-news-tabs .e-n-tabs-content > .e-con { padding: 0; }
@media (min-width: 768px) {
  body .elementor .e-con.s107-news-list { position: relative; }
  body .elementor .elementor-widget.s107-news-search { position: absolute; top: 3.69vw; right: 4.17vw; z-index: 2; }
}
@media (max-width: 1024px) {
  body .elementor .s107-news-tabs .e-n-tabs-heading { padding: 0.8vw; border-radius: 1.6vw; }
}
@media (min-width: 768px) and (max-width: 1024px) {
  body .elementor .elementor-widget.s107-news-search { top: 4.5vw; right: 4vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-news-tabs .e-n-tabs-heading { width: 100%; padding: 2.04vw; border-radius: 4.07vw; }
}
/* ==== END NEWS ARCHIVE TABS ==== */

/* ==== ADMISSIONS PAGES ==== */
/* Admissions subpages. Content is plain Elementor widgets; these rules only draw the extras:
   - .s107-status (a <span> inside a table cell): availability badge with a dot. -open = green, -limited = amber.
   - .s107-table-plain: table without an outline (sits on a lavender section). .s107-table-l: 18px table text. */
body .elementor .s107-table { background-color: var(--e-global-color-white); }
body .elementor .s107-table thead tr { background-color: var(--e-global-color-navy800); }
body .elementor .s107-table-wrap.s107-table-plain { border: 0; }
body .elementor .s107-table-l .s107-table { font-size: 1.25vw; }
body .elementor .s107-table-l .s107-table tbody th { font-weight: 600; }
body .elementor span.s107-status { display: inline-flex; align-items: center; gap: 0.56vw; padding: 0.42vw 0.97vw 0.42vw 0.83vw; border-radius: 999px; font-size: 1.11vw; font-weight: 600; line-height: 1.1; white-space: nowrap; }
body .elementor span.s107-status::before { content: ""; flex: none; width: 0.56vw; height: 0.56vw; border-radius: 50%; background-color: currentColor; }
body .elementor .s107-status-open { background-color: #E3F4EA; color: #16794A; }
body .elementor .s107-status-limited { background-color: #FFF1D6; color: #8A5A00; }
@media (max-width: 1024px) {
  body .elementor .s107-table-l .s107-table { font-size: 1.75vw; }
  body .elementor span.s107-status { gap: 0.8vw; padding: 0.6vw 1.4vw 0.6vw 1.2vw; font-size: 1.56vw; }
  body .elementor span.s107-status::before { width: 0.8vw; height: 0.8vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-table-l .s107-table { font-size: 4.07vw; }
  body .elementor span.s107-status { gap: 2.04vw; padding: 1.53vw 3.56vw 1.53vw 3.05vw; font-size: 3.56vw; }
  body .elementor span.s107-status::before { width: 2.04vw; height: 2.04vw; }
}
/* Larger step number on phones (Figma admissions step card: 56px circle, 22px number) */
@media (max-width: 767px) {
  body .elementor .s107-step-num.s107-step-l .elementor-heading-title { width: 14.25vw; height: 14.25vw; font-size: 5.6vw; }
}
/* Dark fee table (.s107-table-dark on the Text Editor, used on the navy School Fees section): no outline, rows are separate translucent white bars with rounded ends, lavender header bar, figures right-aligned. */
body .elementor .s107-table-wrap.s107-table-dark { border: 0; border-radius: 0; }
body .elementor .s107-table-dark .s107-table { background-color: transparent; border-collapse: separate; border-spacing: 0 0.83vw; margin-block: -0.83vw; font-size: 1.25vw; color: var(--e-global-color-white); }
body .elementor .s107-table-dark .s107-table thead tr, body .elementor .s107-table-dark .s107-table tbody tr:nth-child(even) { background-color: transparent; }
body .elementor .s107-table-dark .s107-table :is(th, td) { padding: 1.11vw 2.22vw; }
body .elementor .s107-table-dark .s107-table thead th { padding-block: 0.83vw; background-color: var(--e-global-color-navy100); color: var(--e-global-color-navy800); font-weight: 600; }
body .elementor .s107-table-dark .s107-table tbody :is(th, td) { background-color: rgba(255, 255, 255, 0.05); }
body .elementor .s107-table-dark .s107-table tbody tr:nth-child(even) :is(th, td) { background-color: rgba(255, 255, 255, 0.12); }
body .elementor .s107-table-dark .s107-table tbody th { font-weight: 600; }
body .elementor .s107-table-dark .s107-table :is(th, td):not(:first-child) { text-align: right; }
body .elementor .s107-table-dark .s107-table :is(th, td):first-child { border-radius: 0.56vw 0 0 0.56vw; }
body .elementor .s107-table-dark .s107-table :is(th, td):last-child { border-radius: 0 0.56vw 0.56vw 0; }
@media (max-width: 1024px) {
  body .elementor .s107-table-dark .s107-table { font-size: 1.75vw; border-spacing: 0 1.2vw; margin-block: -1.2vw; }
  body .elementor .s107-table-dark .s107-table :is(th, td) { padding: 1.6vw 2.4vw; }
  body .elementor .s107-table-dark .s107-table :is(th, td):first-child { border-radius: 0.8vw 0 0 0.8vw; }
  body .elementor .s107-table-dark .s107-table :is(th, td):last-child { border-radius: 0 0.8vw 0.8vw 0; }
}
@media (max-width: 767px) {
  body .elementor .s107-table-dark .s107-table { width: 183vw; font-size: 4.07vw; border-spacing: 0 2.04vw; margin-block: -2.04vw; }
  body .elementor .s107-table-dark .s107-table :is(th, td) { padding: 4.07vw 6.11vw; }
  body .elementor .s107-table-dark .s107-table thead th { padding-block: 3.05vw; }
  body .elementor .s107-table-dark .s107-table :is(th, td):first-child { border-radius: 2.04vw 0 0 2.04vw; }
  body .elementor .s107-table-dark .s107-table :is(th, td):last-child { border-radius: 0 2.04vw 2.04vw 0; }
}
/* Phones: a grid item that should fill the whole last row of a 2-column grid (School Agents logo tiles) */
@media (max-width: 767px) {
  body .elementor .e-grid > .e-con.s107-m-span2 { grid-column: span 2; }
}
/* Legal pages: numbered clauses (2.1.1 ...) - indented, no check icon, same text colour as paragraphs */
.s107-legal-content ul.s107-legal-num li { color: var(--e-global-color-neutral700); line-height: 1.4; }
.s107-legal-content ul.s107-legal-num li::before { content: none; }
/* Legal contents list: number + text side by side so wrapped lines hang under the text (spans added by Custom Code "Legal pages - contents list number hang") */
.s107-toc a.elementor-toc__list-item-text[data-s107-num] { display: flex; gap: 0.3em; }
.s107-toc .s107-toc-num { flex: none; }
.s107-toc .s107-toc-text { flex: 1 1 auto; min-width: 0; }
/* Legal pages: numbered clauses with a hanging indent - the number sits in its own column and wrapped lines align with the clause text */
.s107-legal-content .s107-cl { display: flex; gap: 0.5em; }
.s107-legal-content .s107-cl-num { flex: none; min-width: 2.2em; }
.s107-legal-content .s107-cl-text { flex: 1 1 auto; min-width: 0; }
.s107-legal-content h2.s107-cl { gap: 0.3em; }
.s107-legal-content h2.s107-cl .s107-cl-num { min-width: 0; }
.s107-legal-content ul.s107-legal-num li.s107-cl { padding-left: 2.7em; }
.s107-legal-content ul.s107-legal-num li.s107-cl .s107-cl-num { min-width: 3em; }
/* ==== END ADMISSIONS PAGES ==== */

/* ==== OPEN DAY ==== */
/* Open Day state templates (Templates > Saved Templates > Open Day - ON / FULL / OFF / OFFER ENDS). Hero info chips reuse .s107-glass-pill; these pick the chip icon. */
.s107-glass-pill-cal .elementor-heading-title::before { -webkit-mask-image: url("/wp-content/uploads/2026/10/icon-calendar.svg"); mask-image: url("/wp-content/uploads/2026/10/icon-calendar.svg"); }
.s107-glass-pill-pin .elementor-heading-title::before { -webkit-mask-image: url("/wp-content/uploads/2026/10/icon-map-pin.svg"); mask-image: url("/wp-content/uploads/2026/10/icon-map-pin.svg"); }
.s107-glass-pill-user .elementor-heading-title::before { -webkit-mask-image: url("/wp-content/uploads/2026/10/icon-user.svg"); mask-image: url("/wp-content/uploads/2026/10/icon-user.svg"); }
/* ==== END OPEN DAY ==== */
/* ==========================================================================
   GLOBAL - MOBILE MENU (phones, Figma "Web / Mobile menu" 3700:27629)
   Off-Canvas widget "Mobile menu" (.s107-mm) in the Footer template, opened by
   the header "Menu" button and closed by "Close" (Off-Canvas dynamic tag).
   Slides in from the right (500ms); menu rows then rise in one after another.
   Links come from Appearance > Menus > Main Menu (WordPress Menu widget).
   Items with sub-pages open as an accordion - Custom Code "Mobile menu".
   Panel: top bar (logo + Close) | body that scrolls | pinned actions.
   ========================================================================== */
.s107-mm .e-off-canvas__main { padding: 0; height: 100vh; height: 100dvh; overflow: hidden; }
.s107-mm .e-off-canvas__content { height: 100%; }
body .elementor .elementor-element.s107-mm-wrap { height: 100%; }
.s107-mm-wrap > .e-con { flex-shrink: 0; }
body .elementor .elementor-element.s107-mm-wrap > .s107-mm-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; }

/* Menu rows */
.s107-mm-nav ul { list-style: none; margin: 0; padding: 0; }
.s107-mm-nav .menu > li { border-bottom: 1px solid var(--e-global-color-neutral200); }
.s107-mm-nav .menu > li > a,
.s107-mm-nav .sub-menu a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 3.05vw;
  font-family: "Figtree", sans-serif;
  font-weight: 600;
  font-size: 4.58vw;
  line-height: 1.2;
  text-decoration: none;
}
.s107-mm-nav .menu > li > a { min-height: 15.27vw; color: var(--e-global-color-navy900); }
.s107-mm-nav .menu > li > a::after {
  content: "";
  flex: 0 0 auto;
  width: 6.11vw;
  height: 6.11vw;
  background-color: var(--e-global-color-navy800);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.17 12 8.22 7.05l1.41-1.41L16 12l-6.36 6.36-1.42-1.41z'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13.17 12 8.22 7.05l1.41-1.41L16 12l-6.36 6.36-1.42-1.41z'/%3E%3C/svg%3E") center / contain no-repeat;
  transition: transform 0.4s cubic-bezier(0.32, 0.72, 0, 1);
}
/* items with sub-pages: chevron points down, flips up when open */
.s107-mm-nav .menu > li.menu-item-has-children > a::after { transform: rotate(90deg); }
.s107-mm-nav .menu > li.s107-open > a::after { transform: rotate(-90deg); }
/* Sub-pages (accordion): height animated by the Custom Code */
.s107-mm-nav .sub-menu { height: 0; overflow: hidden; visibility: hidden; transition: height 0.4s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s linear 0.4s; }
.s107-mm-nav .s107-open > .sub-menu { visibility: visible; transition: height 0.4s cubic-bezier(0.32, 0.72, 0, 1), visibility 0s; }
.s107-mm-nav .sub-menu a { min-height: 12.21vw; padding-left: 3.05vw; color: var(--e-global-color-navy800); }
.s107-mm-nav .sub-menu > li:last-child { padding-bottom: 3.05vw; }
.s107-mm-nav .current-menu-item > a { color: var(--e-global-color-red600); }

/* Close button: outline pill, 48 tall */
body .elementor .elementor-element.s107-mm-close .elementor-button,
body .elementor .elementor-element.s107-mm-close .elementor-button:hover,
body .elementor .elementor-element.s107-mm-close .elementor-button:active {
  display: inline-flex;
  align-items: center;
  height: 12.21vw;
  padding: 0 4.58vw 0 4.07vw;
  border: 0;
  border-radius: 50vw;
  background: transparent;
  color: var(--e-global-color-navy800);
  box-shadow: inset 0 0 0 1.5px var(--e-global-color-navy800);
  transform: none;
  font-family: "Figtree", sans-serif;
  font-weight: 600;
  font-size: 3.82vw;
  line-height: 1.3;
}
body .elementor .elementor-element.s107-mm-close .elementor-button::before,
body .elementor .elementor-element.s107-mm-close .elementor-button::after { display: none; }
body .elementor .elementor-element.s107-mm-close .elementor-button-content-wrapper { flex-direction: row; align-items: center; gap: 1.53vw; }
body .elementor .elementor-element.s107-mm-close .elementor-button-icon { display: flex; }
body .elementor .elementor-element.s107-mm-close .elementor-button-icon svg { width: 6.11vw; height: 6.11vw; fill: currentColor; }

/* Language row: globe icon sits on the text's centre line (drop the icon box's text line-height) */
.elementor-element-mmlangi .elementor-icon-wrapper, .elementor-element-mmlangi .elementor-icon { display: flex; line-height: 0; }
.elementor-element-mmlangi svg { display: block; }
/* Language switch: EN | Thai pill */
.s107-mm-langtoggle .elementor-heading-title { display: inline-flex; gap: 0; padding: 1.02vw; border-radius: 50vw; background: var(--e-global-color-navy50); }
.s107-mm-langtoggle .elementor-heading-title a {
  display: inline-flex;
  align-items: center;
  height: 10.18vw;
  padding: 0 5.09vw;
  border-radius: 50vw;
  font-family: "Figtree", sans-serif;
  font-weight: 600;
  font-size: 3.82vw;
  line-height: 1;
  color: var(--e-global-color-navy800);
  text-decoration: none;
}
.s107-mm-langtoggle .elementor-heading-title a.is-active { background: var(--e-global-color-navy800); color: var(--e-global-color-white); }
/* Figma mobile menu: the switch sits 12px after the 'Language' label (row gap), not pushed to the right */
body .elementor .elementor-element.s107-mm-langtoggle { margin-left: 0; }

/* Pinned actions: Enquire + Book a Tour share the row, Apply full width */
.s107-mm-actrow > .elementor-element { flex: 1 1 0; min-width: 0; }
.s107-mm-actrow .elementor-button,
.s107-mm-apply .elementor-button { width: 100%; justify-content: center; }
body .elementor .elementor-element.s107-mm-apply { width: 100%; }

/* Opening: once the panel has nearly landed, the rows rise in one after another
   (40ms apart), then contact + language. */
@keyframes s107-mm-in { from { opacity: 0; transform: translateY(3.05vw); } to { opacity: 1; transform: none; } }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li,
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-anim { animation: s107-mm-in 0.4s cubic-bezier(0.2, 0.7, 0.3, 1) both; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(1) { animation-delay: 0.22s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(2) { animation-delay: 0.26s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(3) { animation-delay: 0.3s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(4) { animation-delay: 0.34s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(5) { animation-delay: 0.38s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(6) { animation-delay: 0.42s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(7) { animation-delay: 0.46s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-nav .menu > li:nth-child(n+8) { animation-delay: 0.5s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-anim { animation-delay: 0.44s; }
.s107-mm .e-off-canvas[aria-hidden="false"] .s107-mm-anim + .s107-mm-anim { animation-delay: 0.48s; }
@media (prefers-reduced-motion: reduce) {
  .s107-mm .e-off-canvas .s107-mm-nav .menu > li,
  .s107-mm .e-off-canvas .s107-mm-anim { animation: none !important; }
  .s107-mm-nav .sub-menu, .s107-mm-nav .menu > li > a::after { transition: none; }
}
/* Scroll hint: when the open menu is taller than the space between the top bar
   and the pinned buttons, the body's edge fades out on the side that has more
   to scroll (same idea as the sideways tables). Classes set by Custom Code
   "Mobile menu (off-canvas)". */
.s107-mm-body.s107-more-down { -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 16.28vw), transparent); mask-image: linear-gradient(to bottom, #000 calc(100% - 16.28vw), transparent); }
.s107-mm-body.s107-more-up { -webkit-mask-image: linear-gradient(to top, #000 calc(100% - 8.14vw), transparent); mask-image: linear-gradient(to top, #000 calc(100% - 8.14vw), transparent); }
.s107-mm-body.s107-more-up.s107-more-down { -webkit-mask-image: linear-gradient(to bottom, transparent, #000 8.14vw, #000 calc(100% - 16.28vw), transparent); mask-image: linear-gradient(to bottom, transparent, #000 8.14vw, #000 calc(100% - 16.28vw), transparent); }
/* end scroll hint */
/* Open / close (mirror slide).
   Open: the panel slides fully in from the right in 500ms on a soft ease-out
   (starts at 40% opacity and is solid within the first third, so it never looks
   see-through over the page), then the rows rise in (above).
   Close: the whole panel (menu items included) slides back out to the right
   in 400ms, easing in and out so it mirrors the soft open (solid until the last third,
   then fades to 40% as it leaves), and stops taking taps
   straight away. Off-Canvas widget: Entrance = Fade In Right, Exit = Fade In
   Right, Duration 0.5s (= when the widget hides the panel; keep it at 0.5s or
   more so neither animation is cut short). */
@keyframes s107-mm-panel-in { 0% { transform: translateX(100%); opacity: 0.4; } 35% { opacity: 1; } 100% { transform: none; opacity: 1; } }
@keyframes s107-mm-panel-out { 0% { transform: none; opacity: 1; } 65% { opacity: 1; } 100% { transform: translateX(100%); opacity: 0.4; } }
.s107-mm .e-off-canvas { overflow: hidden; }
.s107-mm .e-off-canvas__main.animated:not(.reverse) { animation: s107-mm-panel-in 0.5s cubic-bezier(0.32, 0.72, 0, 1) both; }
.s107-mm .e-off-canvas__main.animated.reverse { animation: s107-mm-panel-out 0.4s cubic-bezier(0.65, 0, 0.35, 1) both; pointer-events: none; }
@media (prefers-reduced-motion: reduce) {
  .s107-mm .e-off-canvas__main.animated:not(.reverse),
  .s107-mm .e-off-canvas__main.animated.reverse,
}
/* end closing */
/* END MOBILE MENU */

/* ==========================================================================
   MOBILE - CAROUSEL STANDARD (phones, Figma mobile "Promo banner carousel" 3636:412)
   Every carousel on phones (except .s107-m-stack lists/grids) works the same way:
   - cards 300px wide, starting at the page edge (12px), the next card peeking in
     from the right, 12px apart;
   - two round arrow buttons (50px, white, 1.5px Navy 800 ring) beside the section
     heading when the heading is left-aligned, or under the carousel either side
     of the dots when the heading is centred;
   - dots under the carousel (8px, Navy 800 active, Navy 100 others).
   Custom Code "Mobile - carousel standard" adds .s107-mcar to each carousel and
   builds the arrows and dots (Elementor's own arrows and dots are hidden on phones).
   ========================================================================== */
.s107-mcar-nav, .s107-mcar-dots, .s107-mcar-foot { display: none; }
@media (max-width: 767px) {
  body .elementor .elementor-element.elementor-widget.s107-mcar {
    width: calc(100% + 3.05vw) !important;
    max-width: none !important;
    margin-left: 0 !important;
    margin-right: -3.05vw !important;
    --e-n-carousel-swiper-offset-size: 0px;
  }
  body .elementor .elementor-element.elementor-widget.s107-mcar .swiper.swiper {
    padding: 0 calc(100% - 79.39vw) 0 0 !important;
    overflow: hidden;
  }
  body .elementor .elementor-element.elementor-widget.s107-mcar .swiper-slide.swiper-slide { padding: 0 3.05vw 0 0 !important; margin: 0 !important; }
  body .elementor .elementor-element.elementor-widget.s107-mcar :is(.elementor-swiper-button, .swiper-pagination) { display: none !important; }

  /* Centred variant (Home "In their own words", Figma 3638:586): middle card centred with
     the previous and next cards peeking either side, red arrows over the card edges, no dots. */
  body .elementor .elementor-element.elementor-widget.s107-mcar.s107-mcar-center { position: relative; }
  body .elementor .elementor-element.elementor-widget.s107-mcar.s107-mcar-center .swiper.swiper, body .elementor .elementor-element.elementor-widget.s107-mcar.s107-mcar-center.s107-mcar-edge .swiper.swiper { padding: 0 8.78vw 0 11.83vw !important; overflow: hidden; }
  .s107-mcar-foot.is-hidden { display: none !important; }
  .s107-mcar-nav.s107-mcar-overlay { position: absolute; left: 3.31vw; right: 3.31vw; top: 41.48vw; z-index: 3; display: flex; justify-content: space-between; pointer-events: none; }
  body .s107-mcar-overlay button.s107-mcar-btn, body .s107-mcar-overlay button.s107-mcar-btn:hover, body .s107-mcar-overlay button.s107-mcar-btn:focus, body .s107-mcar-overlay button.s107-mcar-btn:active {
    width: 10.18vw !important; height: 10.18vw !important; pointer-events: auto;
    background: var(--e-global-color-red500) !important; color: var(--e-global-color-white) !important; box-shadow: none !important;
  }
  .s107-mcar-overlay .s107-mcar-btn::before { width: 5.09vw; height: 5.09vw; }
  body .elementor .s107-mcar-center .elementor-widget-image img { box-shadow: none !important; }
  /* Edge-to-edge carousels (section without side padding): first card starts 12px in */
  body .elementor .elementor-element.elementor-widget.s107-mcar.s107-mcar-edge { width: 100% !important; margin-right: 0 !important; }
  body .elementor .elementor-element.elementor-widget.s107-mcar.s107-mcar-edge .swiper.swiper { padding: 0 calc(100% - 82.44vw) 0 3.05vw !important; }

  /* Arrows */
  .s107-mcar-nav { display: flex; gap: 2.04vw; flex: 0 0 auto; }
  .s107-mcar-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 12.72vw; height: 12.72vw; padding: 0; margin: 0;
    border: 0; border-radius: 50%;
    background: var(--e-global-color-white);
    box-shadow: inset 0 0 0 1.5px var(--e-global-color-navy800);
    color: var(--e-global-color-navy800);
    cursor: pointer; transition: opacity 0.15s ease, background-color 0.15s ease;
  }
  .s107-mcar-btn:hover, .s107-mcar-btn:focus { background: var(--e-global-color-white); color: var(--e-global-color-navy800); }
  .s107-mcar-btn:active { background: var(--e-global-color-navy50); }
  .s107-mcar-btn::before {
    content: ""; width: 6.11vw; height: 6.11vw; background-color: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='13 13 24 24'%3E%3Cpath d='M31.96 23.7 24.61 16.35a1.82 1.82 0 0 0-2.6 2.6L28.07 25l-6.05 6.05a1.82 1.82 0 0 0 2.6 2.6l7.35-7.35a1.84 1.84 0 0 0 0-2.6Z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='13 13 24 24'%3E%3Cpath d='M31.96 23.7 24.61 16.35a1.82 1.82 0 0 0-2.6 2.6L28.07 25l-6.05 6.05a1.82 1.82 0 0 0 2.6 2.6l7.35-7.35a1.84 1.84 0 0 0 0-2.6Z'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  .s107-mcar-prev::before { transform: scaleX(-1); }
  .s107-mcar-btn[disabled] { opacity: 0.35; cursor: default; }
  .s107-mcar-btn:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: 2px; }

  /* Left-aligned heading: arrows sit at its right, lined up with the last line */
  body .elementor .elementor-element.s107-mcar-head { position: relative; padding-right: calc(30.53vw + var(--s107-mcar-r, 0px)) !important; }
  body .elementor .s107-mcar-head > .s107-mcar-nav { position: absolute; right: var(--s107-mcar-r, 0px); bottom: 0; }

  /* Dots (and, for centred headings, the arrows either side of them) */
  .s107-mcar-foot { display: flex; align-items: center; justify-content: center; gap: 4.07vw; margin-top: 7.63vw; width: calc(100% - 3.05vw); }
  .s107-mcar-dots { display: flex; gap: 2.04vw; }
  .s107-mcar-dot { width: 2.04vw; height: 2.04vw; padding: 0; border: 0; border-radius: 50%; background: var(--e-global-color-navy100); cursor: pointer; transition: background-color 0.2s ease; }
  .s107-mcar-dot:hover, .s107-mcar-dot:focus { background: var(--e-global-color-navy100); }
  .s107-mcar-dot.is-active, .s107-mcar-dot.is-active:hover { background: var(--e-global-color-navy800); }
  .s107-mcar-foot.has-nav .s107-mcar-dots { min-width: 0; }
  /* The site-wide button style (red pill, hard shadow, press effect) must not reach these */
  body button.s107-mcar-btn, body button.s107-mcar-btn:hover, body button.s107-mcar-btn:focus, body button.s107-mcar-btn:active {
    width: 12.72vw !important; height: 12.72vw !important; min-height: 0 !important; padding: 0 !important;
    border: 0 !important; border-radius: 50% !important; font-size: 0 !important; line-height: 0 !important;
    background: var(--e-global-color-white) !important; color: var(--e-global-color-neutral950) !important;
    box-shadow: inset 0 0 0 1.5px var(--e-global-color-navy800) !important; transform: none !important;
  }
  body button.s107-mcar-btn:active { background: var(--e-global-color-navy50) !important; }
  body button.s107-mcar-dot, body button.s107-mcar-dot:hover, body button.s107-mcar-dot:focus, body button.s107-mcar-dot:active {
    width: 2.04vw !important; height: 2.04vw !important; min-height: 0 !important; padding: 0 !important;
    border: 0 !important; border-radius: 50% !important; font-size: 0 !important; line-height: 0 !important;
    background: var(--e-global-color-navy100) !important; box-shadow: none !important; transform: none !important;
  }
  body button.s107-mcar-dot.is-active { background: var(--e-global-color-navy800) !important; }
}
/* END MOBILE CAROUSEL STANDARD */

/* Mobile: 2-column card grid (Home Why S107 + Beyond the classroom, Figma mobile 3rd iteration) */
@media (max-width: 767px) {
  body .elementor .elementor-element.e-con.s107-m-cards2 { width: 100%; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3.05vw; }
  body .elementor .s107-m-cards2 > .e-con { width: auto !important; min-width: 0; }
  body .elementor .s107-m-cards2 > .e-con > .elementor-widget-button { margin-top: auto; }
  /* Card titles in the 2-column grids: Figma 18px / 1.1 (cards are only 155px wide) */
  body .elementor .s107-m-cards2 > .e-con:not(.elementor-element-why6):not(.elementor-element-tyc4) > .elementor-widget-image + .elementor-widget-heading .elementor-heading-title { font-size: 4.58vw !important; line-height: 1.1 !important; }
  /* 'Come see it for yourself' tile: Figma 28px, so the title sits on 2 lines (Home Why S107, Thank You) */
  body .elementor :is(.elementor-element-why6h, .elementor-element-tyc4h) .elementor-heading-title { font-size: 7.12vw !important; line-height: 1.1 !important; }
}

/* Footer mobile (Figma 3rd iteration): CTA card = Enquire full width, the other two buttons
   side by side; link groups in one column; legal links (2 per row) above the copyright. */
@media (max-width: 767px) {
  body .elementor-location-footer .elementor-element.e-con.s107-footer-cta > .elementor-element { grid-column: 1 / -1; }
  body .elementor-location-footer .elementor-element.e-con.s107-footer-cta > .elementor-widget-button ~ .elementor-widget-button { grid-column: auto; }
  body .elementor-location-footer .elementor-element.e-con.s107-footer-cta > .elementor-widget-button:first-of-type { margin-top: 1.02vw; }
  body .elementor-location-footer .elementor-element.e-con.s107-footer-cta > .elementor-widget-button:nth-last-child(1):nth-child(5) { grid-column: 1 / -1; }
  body .elementor-location-footer .s107-footer-cta .elementor-widget-button .elementor-button { width: 100%; justify-content: center; }
}
/* end footer mobile */

/* NEWS ARCHIVE MOBILE GRID (Figma 5.0 News & Events mobile, 3rd iteration): two cards per row,
   so the card type is smaller on phones (title 16, date 14). */
@media (max-width: 767px) {
  body .elementor .elementor-element.elementor-element-nctitle .elementor-heading-title { font-size: 4.07vw; line-height: 1.2; }
  body .elementor .elementor-element.elementor-element-ncbtn .elementor-button { height: 10.18vw; padding-inline: 4.07vw; font-size: 3.56vw; }
}

/* CAROUSEL ARROW ICON (Figma arrow button: rounded bold chevron, Neutral 950) - every Elementor
   carousel arrow on the site uses the same icon as the mobile carousel buttons. */
body .elementor .elementor-swiper-button > svg, body .elementor .elementor-swiper-button > i { display: none; }
body .elementor .elementor-swiper-button::before { content: ""; width: 1.67vw; height: 1.67vw; background-color: var(--e-n-carousel-arrow-normal-color, var(--arrow-normal-color, var(--e-global-color-neutral950))); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='13 13 24 24'%3E%3Cpath d='M31.96 23.7 24.61 16.35a1.82 1.82 0 0 0-2.6 2.6L28.07 25l-6.05 6.05a1.82 1.82 0 0 0 2.6 2.6l7.35-7.35a1.84 1.84 0 0 0 0-2.6Z'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='13 13 24 24'%3E%3Cpath d='M31.96 23.7 24.61 16.35a1.82 1.82 0 0 0-2.6 2.6L28.07 25l-6.05 6.05a1.82 1.82 0 0 0 2.6 2.6l7.35-7.35a1.84 1.84 0 0 0 0-2.6Z'/%3E%3C/svg%3E") center / contain no-repeat; }
body .elementor .elementor-swiper-button-prev::before { transform: scaleX(-1); }
/* Chevron colour follows each carousel's own Arrows colour setting (white on red, navy on white) */
body .elementor .elementor-swiper-button:hover::before { background-color: var(--e-n-carousel-arrow-hover-color, var(--arrow-hover-color, var(--e-n-carousel-arrow-normal-color, var(--arrow-normal-color, var(--e-global-color-neutral950))))); }

@media (max-width: 1024px) { body .elementor .elementor-swiper-button::before { width: 3vw; height: 3vw; } }
@media (max-width: 767px) {
  body .elementor .elementor-swiper-button::before { width: 6.11vw; height: 6.11vw; }
  /* News heading wraps over 3 lines like Figma (Latest news / and upcoming / events) */
  body .elementor .elementor-element.elementor-element-newsh.s107-mcar-head { padding-right: calc(33.58vw + var(--s107-mcar-r, 0px)) !important; }
  body .elementor .elementor-element-newsh .elementor-heading-title { max-width: 54.71vw; }
  /* Home campaigns heading on 2 lines (What's / coming up) */
  body .elementor .elementor-element-cmph .elementor-heading-title { max-width: 40vw; }
}
/* end carousel arrow icon */

/* SIDEWAYS SCROLL HINT (tab bars + filter chips). Custom Code "Sideways scroll hint (tabs + filter chips)"
   adds two fade strips over the bar's edges and shows the one(s) with more to scroll. */
.s107-hfade { position: absolute; z-index: 2; width: 12.21vw; max-width: 64px; pointer-events: none; opacity: 0; transition: opacity 0.2s ease; }
.s107-hfade.is-on { opacity: 1; }
.s107-hfade-l { background: linear-gradient(to left, transparent, var(--s107-hfade-bg) 85%); }
.s107-hfade-r { transform: translateX(-100%); background: linear-gradient(to right, transparent, var(--s107-hfade-bg) 85%); }
/* end sideways scroll hint */


/* YEAR-GROUP FINDER (Admissions Info). Custom Code "Year-group finder (Admissions Info)" lays a real date input and
   dropdown invisibly over the designed field boxes; data comes from WP Admin > Year Group Finder. */
.s107-ygf .elementor-element-adfdf1b, .s107-ygf .elementor-element-adfdf2b { position: relative; cursor: pointer; transition: box-shadow .2s ease; }
.s107-ygf .s107-ygf-ctl { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; opacity: 0; cursor: pointer; font-size: 16px; -webkit-appearance: none; appearance: none; background: transparent; color: transparent; }
.s107-ygf .s107-ygf-ctl::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: 100%; height: 100%; cursor: pointer; }
.s107-ygf .elementor-element-adfdf1b:hover, .s107-ygf .elementor-element-adfdf2b:hover { box-shadow: inset 0 0 0 1px var(--e-global-color-navy200); }
.s107-ygf .elementor-element-adfdf1b:focus-within, .s107-ygf .elementor-element-adfdf2b:focus-within { box-shadow: inset 0 0 0 2px var(--e-global-color-navy500); }
.s107-ygf .elementor-element-adfdf1b:not(.is-filled) .elementor-element-adfdf1v .elementor-heading-title { color: var(--e-global-color-navy400); }
/* Icons sit exactly in the middle of the field (no inline-SVG baseline gap) */
.s107-ygf .elementor-element-adfdf1i .elementor-icon-wrapper, .s107-ygf .elementor-element-adfdf2c .elementor-icon-wrapper, .s107-ygf .elementor-element-adfdf1i .elementor-icon, .s107-ygf .elementor-element-adfdf2c .elementor-icon { display: flex; align-items: center; justify-content: center; line-height: 0; }
.s107-ygf .elementor-element-adfdf1i svg, .s107-ygf .elementor-element-adfdf2c svg { display: block; }
/* end year-group finder */

/* ==========================================================================
   GLOBAL - GRAVITY FORMS (.s107-gform)
   Built from Figma "Web / Form card" + "Web / Form field" (Contact Us form).
   Use: Elementor "Form" widget (Gravity Forms), pick the form, Advanced >
   CSS Classes = s107-gform. Gravity Forms' own CSS is switched off
   (Forms > Settings > Output CSS = No), so everything is styled here.
   In the form: half-width fields (drag a field beside another in the form
   editor) sit two to a row on desktop/tablet and stack on
   phones; an HTML field is shown as a small notice paragraph; a Consent field
   shows its checkbox + text only (its label is kept for screen readers).
   ========================================================================== */
body .s107-gform {
  --s107-gf-label: 1.11vw;
  --s107-gf-text: 1.25vw;
  --s107-gf-h: 3.89vw;
  --s107-gf-px: 1.11vw;
  --s107-gf-radius: 0.56vw;
  --s107-gf-area: 9.17vw;
  --s107-gf-row: 1.39vw;
  --s107-gf-col: 1.11vw;
  --s107-gf-block: 1.67vw;
  --s107-gf-lgap: 0.56vw;
  --s107-gf-icon: 1.67vw;
  --s107-gf-box: 1.39vw;
  --s107-gf-btn-h: 3.89vw;
  --s107-gf-btn-px: 1.7vw;
  --s107-gf-btn-sx: 3px;
  --s107-gf-btn-sy: 5px;
  width: 100%;
}
body .s107-gform .gform_wrapper { margin: 0; }
body .s107-gform :is(.gform_heading, .gform_required_legend, .gform_validation_container, .gfield--type-honeypot, .gfield_visibility_hidden, .gform_hidden) { display: none !important; }
body .s107-gform fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }

/* Layout: fields on a 2-column grid; half-width fields share a row */
body .s107-gform .gform_fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--s107-gf-col); row-gap: var(--s107-gf-row); }
body .s107-gform .gfield { grid-column: 1 / -1; margin: 0; padding: 0; min-width: 0; }
body .s107-gform .gfield--width-half { grid-column: span 1; }
/* Notices + consent sit a little further from the fields (Figma: 24px blocks) */
body .s107-gform :is(.gfield--type-html, .gfield--type-consent) { margin-top: calc(var(--s107-gf-block) - var(--s107-gf-row)); }

/* Labels: Figtree SemiBold 16, Navy 800, red asterisk */
body .s107-gform .gfield_label {
  display: flex; gap: 0.28vw; margin: 0 0 var(--s107-gf-lgap); padding: 0;
  font-family: "Figtree", sans-serif; font-weight: 600; font-size: var(--s107-gf-label); line-height: 1.2;
  color: var(--e-global-color-navy800);
}
body .s107-gform .gfield_required { color: var(--e-global-color-red600); }
/* Consent: the question label is for screen readers; the checkbox text is what shows */
body .s107-gform .gfield--type-consent > .gfield_label {
  position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* Inputs: Navy 50 box, no border, Figtree Regular 18 */
body .s107-gform :is(input[type="text"], input[type="email"], input[type="tel"], input[type="number"], input[type="url"], select, textarea) {
  display: block; width: 100%; height: var(--s107-gf-h); margin: 0; padding: 0 var(--s107-gf-px);
  border: 0; border-radius: var(--s107-gf-radius); outline: 0;
  background-color: var(--e-global-color-navy50); box-shadow: inset 0 0 0 1px transparent;
  font-family: "Figtree", sans-serif; font-weight: 400; font-size: var(--s107-gf-text); line-height: 1.3;
  color: var(--e-global-color-navy800);
  transition: box-shadow 0.15s ease, background-color 0.15s ease;
}
body .s107-gform :is(input, textarea)::placeholder { color: var(--e-global-color-navy500); opacity: 1; }
/* (container in the .elementor-kit-10 so it outranks the shared input rule above) */
body .s107-gform .ginput_container textarea { height: var(--s107-gf-area); min-height: var(--s107-gf-area); padding: var(--s107-gf-px); resize: vertical; }
body .s107-gform :is(input, select, textarea):hover { box-shadow: inset 0 0 0 1px var(--e-global-color-navy200); }
body .s107-gform :is(input, select, textarea):focus { background-color: var(--e-global-color-white); box-shadow: inset 0 0 0 1.5px var(--e-global-color-navy800); }
/* Dropdown: own chevron (Figma Icon/chevron-down, Navy 800); placeholder option in Navy 500 */
body .s107-gform select {
  -webkit-appearance: none; appearance: none; cursor: pointer;
  padding-right: calc(var(--s107-gf-px) * 2 + var(--s107-gf-icon));
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23211E72'%3E%3Cpath d='M12 13.17 16.95 8.22l1.41 1.41L12 16 5.64 9.64l1.41-1.41z'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right var(--s107-gf-px) center; background-size: var(--s107-gf-icon);
}
body .s107-gform select:has(option.gf_placeholder:checked) { color: var(--e-global-color-navy500); }
body .s107-gform select option { color: var(--e-global-color-navy800); }

/* Notice (HTML field) + consent text: Figtree Regular 18, Neutral 700 */
body .s107-gform :is(.gfield--type-html, .gfield_consent_label) {
  font-family: "Figtree", sans-serif; font-weight: 400; font-size: var(--s107-gf-text); line-height: 1.3;
  color: var(--e-global-color-neutral700);
}
body .s107-gform :is(.gfield--type-html, .gfield_consent_label) a { color: inherit; text-decoration: underline; text-underline-offset: 0.15em; }
body .s107-gform :is(.gfield--type-html, .gfield_consent_label) a:hover { color: var(--e-global-color-navy800); }
body .s107-gform .ginput_container_consent { display: flex; align-items: flex-start; gap: 0.83vw; }
body .s107-gform .gfield_consent_label { margin: 0; cursor: pointer; }
/* Checkbox: 20px box, Navy 300 ring, Navy 800 when ticked; centred on the first line */
body .s107-gform input[type="checkbox"] {
  -webkit-appearance: none; appearance: none; flex: none; cursor: pointer;
  width: var(--s107-gf-box); height: var(--s107-gf-box); margin: calc((var(--s107-gf-text) * 1.3 - var(--s107-gf-box)) / 2) 0 0; padding: 0;
  border: 1.5px solid var(--e-global-color-navy300); border-radius: 0.28vw; background: var(--e-global-color-white) center / 80% no-repeat;
  transition: background-color 0.15s ease, border-color 0.15s ease;
}
body .s107-gform input[type="checkbox"]:hover { border-color: var(--e-global-color-navy800); }
body .s107-gform input[type="checkbox"]:checked {
  border-color: var(--e-global-color-navy800); background-color: var(--e-global-color-navy800);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23fff'%3E%3Cpath d='m10 15.17 9.19-9.19 1.42 1.41L10 18 3.64 11.64l1.41-1.41z'/%3E%3C/svg%3E");
}
body .s107-gform input[type="checkbox"]:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: 2px; }

/* Submit: Accent button (red pill, #FC9690 hard shadow, press effect), full width */
body .s107-gform .gform_footer { display: flex; align-items: center; gap: 1.11vw; margin: var(--s107-gf-block) 0 0; padding: 0; }
body .s107-gform .gform_footer .gform_button,
body .s107-gform .gform_footer .gform_button:is(:hover, :focus, :active) {
  display: inline-flex; align-items: center; justify-content: center; width: 100%;
  height: var(--s107-gf-btn-h); margin: 0; padding: 0 var(--s107-gf-btn-px);
  border: 0; border-radius: 50vw; cursor: pointer;
  background: var(--e-global-color-red500); color: var(--e-global-color-white);
  font-family: "Figtree", sans-serif; font-weight: 600; font-size: var(--s107-gf-text); line-height: 1.2; text-transform: none;
  box-shadow: var(--s107-gf-btn-sx) var(--s107-gf-btn-sy) 0 #FC9690;
  transition: transform 150ms ease-out, box-shadow 150ms ease-out;
}
@media (hover: hover) {
  body .s107-gform .gform_footer .gform_button:hover { transform: translate(var(--s107-gf-btn-sx), var(--s107-gf-btn-sy)); box-shadow: 0 0 0 0 transparent; }
}
body .s107-gform .gform_footer .gform_button:active { transform: translate(var(--s107-gf-btn-sx), var(--s107-gf-btn-sy)); box-shadow: 0 0 0 0 transparent; }
body .s107-gform .gform_footer .gform_button:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: 3px; }
body .s107-gform .gform_footer .gform_button:disabled { cursor: progress; opacity: 0.7; }
body .s107-gform .gform_ajax_spinner { flex: none; width: var(--s107-gf-box); height: var(--s107-gf-box); }

/* Errors: summary box on top, red ring + message under each field */
body .s107-gform .gform_validation_errors {
  margin: 0 0 var(--s107-gf-block); padding: 1.11vw; border-radius: var(--s107-gf-radius);
  background: var(--e-global-color-error50); box-shadow: inset 0 0 0 1px var(--e-global-color-error600);
}
body .s107-gform .gform_validation_errors :is(h2, .gform_submission_error) {
  margin: 0; font-family: "Figtree", sans-serif; font-weight: 600; font-size: var(--s107-gf-label); line-height: 1.3; color: var(--e-global-color-error600);
}
body .s107-gform .gform_validation_errors .gform-icon { display: none; }
body .s107-gform .gfield_error :is(input:not([type="checkbox"]), select, textarea) { box-shadow: inset 0 0 0 1.5px var(--e-global-color-error600); }
body .s107-gform .gfield_error input[type="checkbox"] { border-color: var(--e-global-color-error600); }
body .s107-gform .gfield_validation_message, body .s107-gform .validation_message {
  margin: var(--s107-gf-lgap) 0 0; padding: 0; background: none; border: 0;
  font-family: "Figtree", sans-serif; font-weight: 400; font-size: 0.97vw; line-height: 1.3; color: var(--e-global-color-error600);
}
body .s107-gform .gform_confirmation_message { font-family: "Figtree", sans-serif; font-size: var(--s107-gf-text); line-height: 1.3; color: var(--e-global-color-navy800); }

@media (max-width: 1024px) {
  body .s107-gform {
    --s107-gf-label: 1.6vw; --s107-gf-text: 1.8vw; --s107-gf-h: 5.6vw; --s107-gf-px: 1.6vw; --s107-gf-radius: 0.8vw;
    --s107-gf-area: 13.2vw; --s107-gf-row: 2vw; --s107-gf-col: 1.6vw; --s107-gf-block: 2.4vw; --s107-gf-lgap: 0.8vw;
    --s107-gf-icon: 2.4vw; --s107-gf-box: 2vw; --s107-gf-btn-h: 6.75vw; --s107-gf-btn-px: 3vw;
  }
  body .s107-gform .ginput_container_consent { gap: 1.2vw; }
  body .s107-gform .gfield_validation_message, body .s107-gform .validation_message { font-size: 1.4vw; }
}
/* Phones (Figma mobile 393): one column, 50px fields, 16px text, 30px between blocks, button fits its label */
@media (max-width: 767px) {
  body .s107-gform {
    --s107-gf-label: 4.07vw; --s107-gf-text: 4.07vw; --s107-gf-h: 12.72vw; --s107-gf-px: 4.07vw; --s107-gf-radius: 1.53vw;
    --s107-gf-area: 33.59vw; --s107-gf-row: 4.07vw; --s107-gf-col: 0; --s107-gf-block: 7.63vw; --s107-gf-lgap: 2.04vw;
    --s107-gf-icon: 6.11vw; --s107-gf-box: 5.09vw; --s107-gf-btn-h: 12.21vw; --s107-gf-btn-px: 4.07vw;
    --s107-gf-btn-sx: 2px; --s107-gf-btn-sy: 4px;
  }
  body .s107-gform .gform_fields { grid-template-columns: minmax(0, 1fr); }
  body .s107-gform .gfield--width-half { grid-column: 1 / -1; }
  body .s107-gform .gfield_label { gap: 1.02vw; }
  body .s107-gform .ginput_container_consent { gap: 3.05vw; }
  body .s107-gform input[type="checkbox"] { border-radius: 1.02vw; }
  body .s107-gform .gform_footer { gap: 3.05vw; }
  body .s107-gform .gform_footer .gform_button,
  body .s107-gform .gform_footer .gform_button:is(:hover, :focus, :active) { width: auto; }
  body .s107-gform .gform_validation_errors { padding: 4.07vw; }
  body .s107-gform .gfield_validation_message, body .s107-gform .validation_message { font-size: 3.56vw; }
}
/* end gravity forms */

/* ==========================================================================
   GLOBAL - FOOTER MENUS (.s107-ftr-menu)
   Footer link columns + legal links use the "WordPress Menu" widget with the menus in
   Appearance > Menus (Footer/About, Footer/Learning, Footer/Admissions, Footer/Legal).
   Font, colours and spacing are set in each widget's Style tab; only the layout
   of the legal links needs CSS.
   Legal links (.s107-ftr-menu-inline): 24px to the right of each link instead of the widget's
   'Space Between' (that adds margins on both sides, which push a wrapped row out); 2 per row on phones.
   ========================================================================== */
body .elementor .s107-ftr-menu-inline .elementor-nav-menu > li { margin: 0 !important; }
body .elementor .s107-ftr-menu-inline .elementor-nav-menu > li:not(:last-child) { margin-right: 1.7vw !important; }
body .elementor .s107-ftr-menu-inline .elementor-nav-menu > li > a { margin-inline: 0 !important; }
@media (max-width: 767px) {
  body .elementor .s107-ftr-menu-inline .elementor-nav-menu { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 3.05vw; row-gap: 3.05vw; margin: 0; }
  body .elementor .s107-ftr-menu-inline .elementor-nav-menu > li:not(:last-child) { margin-right: 0 !important; }
}
/* end footer menus */

/* ==========================================================================
   CAMPAIGN LANDING PAGES (page /campaign/ = Template widget -> saved template "Campaign LP - ..." per persona)
   Header/Footer: Theme Builder "Header/Footer - Campaign landing pages".
   ========================================================================== */
/* Hero form card floats over the bottom-right of the hero photo on desktop;
   tablet and phones stack it under the photo. */
@media (min-width: 1025px) {
  body .elementor .elementor-element.e-con.s107-lp-herowrap { position: relative; }
  body .elementor .elementor-element.e-con.s107-lp-heroform { position: absolute; top: 18.13vw; right: 4.44vw; z-index: 3; }
}
/* Stat number: the unit (%) is smaller and sits on the baseline (Figma 70 / 32) */
body .elementor .s107-lp-stat .elementor-heading-title span { font-size: 0.457em; margin-left: 0.06em; letter-spacing: -0.02em; }
/* Mini header: logo not linked; keep the call button the same size as the main header's */
@media (max-width: 767px) {
  body .elementor .s107-lp-header .s107-hdr-call .elementor-icon-wrapper { line-height: 0; }
  body .elementor .s107-lp-header .elementor-element.s107-hdr-call .elementor-icon { display: flex; align-items: center; justify-content: center; width: 12.21vw; height: 12.21vw; padding: 0; border-width: 0.38vw; }
}
/* Footer link inherits white */
body .elementor .s107-lp-footer a { color: inherit; text-decoration: underline; text-underline-offset: 0.15em; }
/* FAQ on lavender (Figma campaign landing): lavender section, white question cards */
body .elementor .e-con.s107-faq-sec.s107-faq-lav { background-color: var(--e-global-color-navy100); }
body .elementor .s107-faq-lav .s107-faq .e-n-accordion-item { background-color: var(--e-global-color-white); }
/* end campaign landing pages */

/* ===== GLOBAL - LANGUAGE SWITCHER (.s107-lang header EN | ไทย; links + active state set by snippet 'Language switchers') ===== */
.s107-lang .elementor-icon-list-item .elementor-icon-list-text { transition: opacity .2s ease; }
.s107-lang:has(.is-active) .elementor-icon-list-item:not(.is-active) .elementor-icon-list-text { opacity: .65; }
.s107-lang .elementor-icon-list-item:not(.is-active) a:hover .elementor-icon-list-text { opacity: 1; }
.s107-lang .elementor-icon-list-item.is-active .elementor-icon-list-text { font-weight: 600; }


/* ===== SCHOOL FEES (Figma 3.3 School Fees, Oct 2026 update) =====
   - .s107-faq-sub on a Nested Accordion (.s107-faq): Navy 50 question cards on a white section, on every device.
   - .s107-faq-w: white question cards on the navy tuition section.
   - .s107-table-fit on a .s107-table-wrap: table fits the phone width instead of scrolling sideways (Enrolment fees).
   - .s107-bank-lines (Text Editor): the bank detail lines in the red banner. */
body .elementor .s107-faq.s107-faq-sub .e-n-accordion-item { background-color: var(--e-global-color-navy50); }
body .elementor .s107-faq.s107-faq-w .e-n-accordion-item { background-color: var(--e-global-color-white); }
body .elementor .s107-bank-lines p { margin: 0 0 0.56vw; }
body .elementor .s107-bank-lines p:last-child { margin-bottom: 0; }
body .elementor .s107-bank-lines strong { font-weight: 700; }
@media (max-width: 767px) {
  body .elementor .s107-table-wrap.s107-table-fit { overflow: hidden; -webkit-mask-image: none; mask-image: none; }
  body .elementor .s107-table-wrap.s107-table-fit .s107-table { width: 100%; font-size: 3.56vw; }
  body .elementor .s107-table-wrap.s107-table-fit .s107-table :is(th, td) { padding: 3.05vw 2.04vw; }
  body .elementor .s107-table-wrap.s107-table-fit .s107-table :is(th, td):first-child { padding-left: 4.07vw; }
  body .elementor .s107-bank-lines p { margin-bottom: 2.04vw; }
}
body .elementor :is(.s107-faq-sub, .s107-faq-w) .e-n-accordion-item > .e-con .elementor-heading-title { max-width: none; }
body .elementor .s107-table-dark .s107-table tbody :is(th, td) { padding-block: 0.83vw; }
@media (max-width: 1024px) { body .elementor .s107-table-dark .s107-table tbody :is(th, td) { padding-block: 1.2vw; } }
@media (max-width: 767px) { body .elementor .s107-table-dark .s107-table tbody :is(th, td) { padding-block: 3.05vw; } body .elementor .s107-table-dark .s107-table td { white-space: nowrap; } body .elementor .s107-table-dark .s107-table { table-layout: auto; width: max-content; min-width: 183vw; } body .elementor .s107-table-dark .s107-table col { width: auto !important; } body .elementor .s107-table-dark .s107-table th[scope="row"] { min-width: 40vw; } body .elementor .s107-table-dark .s107-table :is(th, td):not(:first-child) { text-align: left; } }
body .elementor .s107-btn-nowrap .elementor-button-text { white-space: nowrap; }
/* ===== END SCHOOL FEES ===== */

/* ===== MOBILE HERO BUTTONS 56px (Figma Oct 2026: inner-page heroes; Home, Campaign LP and Open Day stay 48px) ===== */
@media (max-width: 767px) { body .s107-btn-mob-md.s107-btn-mob-lg { --s107-btn-h: 14.25vw; } }
/* ===== END MOBILE HERO BUTTONS 56px ===== */

/* ===== MOBILE QUOTE CAROUSEL CARDS (Figma mobile Oct 2026: 144px image, name · label on one line, no quote mark). Layout/arrows come from MOBILE - CAROUSEL STANDARD centred variant (.s107-mcar-center on the widget) ===== */
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con.e-con:has(> .s107-quote-icon) {
    display: flex; flex-direction: row; flex-wrap: wrap; align-items: baseline; align-content: flex-start;
    --display: flex; --gap: 4.07vw 0; --row-gap: 4.07vw; --column-gap: 0; gap: 4.07vw 0;
    --padding-top: 3.05vw; --padding-right: 3.05vw; --padding-bottom: 3.05vw; --padding-left: 3.05vw;
    padding: 3.05vw;
  }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-image,
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .s107-quote-icon { width: 100%; flex: 0 0 100%; }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .s107-quote-icon { margin-bottom: 2.04vw; }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-image img { height: 36.64vw; }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .s107-quote-icon .elementor-heading-title::before { display: none; }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) { width: auto; flex: 0 0 auto; }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) .elementor-heading-title { font-size: 4.58vw; font-weight: 700; line-height: 1.1; color: var(--e-global-color-navy800); }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) ~ .elementor-widget-heading:not(.s107-quote-icon):not(:has(a)) .elementor-heading-title::before { content: "·"; margin-inline: 0.3em; }
  body .elementor .elementor-element.s107-stories-carousel.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget { margin-inline: 0; --margin-left: 0; --margin-right: 0; padding-inline: 0; --padding-left: 0; --padding-right: 0; }
}
/* ===== END MOBILE QUOTE CAROUSEL ===== */
/* ===== OPEN DAY PROGRAMME - phones (Figma mobile 3.6 Open Day: number pill + vertical line on the left, card on the right) ===== */
@media (max-width: 767px) {
  body .elementor .s107-od-prog > .e-con { flex-direction: row !important; align-items: stretch; gap: 3.05vw; }
  body .elementor .s107-od-prog > .e-con > .elementor-widget.s107-step-num { flex-direction: column; align-items: center; gap: 2.04vw; width: auto; flex: none; }
  body .elementor .s107-od-prog > .e-con > .elementor-widget.s107-step-num .elementor-heading-title { width: 12.72vw; height: 8.65vw; border-radius: 999px; font-size: 4.58vw; }
  body .elementor .s107-od-prog > .e-con > .elementor-widget.s107-step-num::after { content: ""; flex: 1 1 auto; width: 3.56vw; height: auto; min-height: 3.56vw; background-image: radial-gradient(circle at 50% 1.78vw, var(--e-global-color-navy800) 1.68vw, transparent 1.78vw), linear-gradient(var(--e-global-color-navy300), var(--e-global-color-navy300)); background-position: 0 0, 50% 3.56vw; background-size: 3.56vw 3.56vw, 2px calc(100% - 3.56vw); background-repeat: no-repeat; background-color: transparent; }
  body .elementor .s107-od-prog > .e-con > .e-con { flex: 1 1 auto; }
  body .elementor .s107-od-prog > .e-con:last-child > .elementor-widget.s107-step-num::after { flex: 0 0 3.56vw; }
}
/* ===== END OPEN DAY PROGRAMME ===== */

/* ===== TABS - navy active state (Elementor core's [aria-selected] rule reads --n-tabs-title-background-color-active, which defaults to the Accent red; set it so the active tab stays Navy 800 even where core CSS loads after the template, e.g. Open Day) ===== */
body .elementor .elementor-element.elementor-widget-n-tabs.s107-tabs-navy { --n-tabs-title-background-color-active: var(--e-global-color-navy800); --n-tabs-title-color-active: var(--e-global-color-white); }
/* ===== END TABS - navy active state ===== */

/* ===== GLASS STAT CARDS (Figma Learning pages 'The essentials': 12% white + background blur) ===== */
body .elementor .e-con.s107-glass { -webkit-backdrop-filter: blur(0.69vw); backdrop-filter: blur(0.69vw); }
/* ===== END GLASS STAT CARDS ===== */

/* ===== ENRICHMENT CARDS - phones (Figma mobile 'More than lessons': 2 columns, square 155px photo, 22px title, 15px body) ===== */
@media (max-width: 767px) {
  body .elementor .elementor-element.e-con.s107-m-cards2.s107-enr-cards { gap: 4.07vw 2.8vw; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con { --padding-top: 3.05vw; --padding-right: 3.05vw; --padding-bottom: 6.11vw; --padding-left: 3.05vw; padding: 3.05vw 3.05vw 6.11vw; --gap: 0; gap: 0; justify-content: flex-start; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con > .elementor-widget-image { margin: 0 0 4.07vw; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con > .elementor-widget-image img { width: 100%; height: 39.44vw; aspect-ratio: 1; object-fit: cover; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con > .elementor-widget-image + .elementor-widget-heading { margin: 0 0 2.04vw; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con > .elementor-widget-image + .elementor-widget-heading .elementor-heading-title { font-size: 5.6vw !important; line-height: 1.1 !important; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con > .elementor-widget-heading + .elementor-widget-heading { margin: 0; }
  body .elementor .s107-m-cards2.s107-enr-cards > .elementor-element.e-con > .elementor-widget-heading + .elementor-widget-heading .elementor-heading-title { font-size: 3.82vw; line-height: 1.3; }
}
/* ===== END ENRICHMENT CARDS ===== */

/* ===== SUPPORT CARDS - phones (Figma mobile 'Support for what comes next': 12px card padding, 200px photo, 16px gap, text inset 12px, 22px title, 15px body) ===== */
@media (max-width: 767px) {
  body .elementor .elementor-element.e-con.s107-sup-cards { --gap: 4.07vw; --row-gap: 4.07vw; gap: 4.07vw; }
  body .elementor .s107-sup-cards > .elementor-element.e-con { --padding-top: 3.05vw; --padding-right: 3.05vw; --padding-bottom: 6.11vw; --padding-left: 3.05vw; padding: 3.05vw 3.05vw 6.11vw; --gap: 0; gap: 0; }
  body .elementor .s107-sup-cards > .elementor-element.e-con > .elementor-widget-image { margin: 0 0 4.07vw; }
  body .elementor .s107-sup-cards > .elementor-element.e-con > .elementor-widget-image img { width: 100%; height: 50.89vw; object-fit: cover; border-radius: 2.04vw; }
  body .elementor .s107-sup-cards > .elementor-element.e-con > .elementor-widget-heading { margin: 0; padding-inline: 3.05vw; }
  body .elementor .s107-sup-cards > .elementor-element.e-con > .elementor-widget-image + .elementor-widget-heading { margin-bottom: 2.04vw; }
  body .elementor .s107-sup-cards > .elementor-element.e-con > .elementor-widget-image + .elementor-widget-heading .elementor-heading-title { font-size: 5.6vw !important; line-height: 1.1 !important; }
  body .elementor .s107-sup-cards > .elementor-element.e-con > .elementor-widget-heading + .elementor-widget-heading .elementor-heading-title { font-size: 3.82vw; line-height: 1.3; }
}
/* ===== END SUPPORT CARDS ===== */

/* ===== STACKED CARDS - phones (with .s107-sup-cards; Figma mobile Wider Learning: tag 16px, title 22px, gaps 8px, read more +16px) ===== */
@media (max-width: 767px) {
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-tag { margin: 0 0 2.04vw; }
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-tag .elementor-heading-title { font-size: 4.07vw !important; line-height: 1.2 !important; }
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-title { margin: 0 0 2.04vw; }
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-title .elementor-heading-title { font-size: 5.6vw !important; line-height: 1.1 !important; }
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-more { margin: 4.07vw 0 0; }
  /* pill tags (stories): pill starts at the text inset, Figma 16px bold, 4/12 padding, 26px tall */
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-tag .elementor-heading-title { line-height: 1.1 !important; }
  body .elementor .s107-stack-cards > .elementor-element.e-con.s107-link-card > .elementor-widget-heading.s107-sc-tag { margin-left: 3.05vw; }
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-more .elementor-heading-title { font-size: 4.58vw !important; line-height: 1.2 !important; }
}
@media (max-width: 767px) {
  /* button at the foot of a stacked card (Next steps): 32px above, 12px inset */
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-button.s107-sc-btn { margin: 8.14vw 0 0; padding-inline: 3.05vw; }
}
@media (max-width: 767px) {
  /* widget-styled pill tags (background on the widget): start at the 12px text inset like Figma */
  body .elementor .s107-stack-cards > .elementor-element.e-con > .elementor-widget-heading.s107-sc-pill { margin-left: 3.05vw; }
}
/* ===== END STACKED CARDS ===== */

/* ===== BOARD OF GOVERNORS - white staff cards on the lavender section (Leadership page, loop .s107-board-grid) ===== */
body .elementor .s107-board-grid .e-loop-item .s107-staff-card { --background-color: var(--e-global-color-white); background-color: var(--e-global-color-white); }
/* ===== END BOARD OF GOVERNORS ===== */

/* ===== RECIPE CARDS - letter badge (Vision & Values, Taylor's Schools panel; Figma 56px red square, 12px radius) ===== */
body .elementor .s107-recipe-card .s107-recipe-badge { width: 3.89vw; max-width: 3.89vw; }
body .elementor .s107-recipe-card .s107-recipe-badge .elementor-heading-title { display: flex; align-items: center; justify-content: center; width: 3.89vw; height: 3.89vw; border-radius: 0.83vw; background-color: var(--e-global-color-red500); }
@media (max-width: 1024px) { body .elementor .s107-recipe-card .s107-recipe-badge, body .elementor .s107-recipe-card .s107-recipe-badge .elementor-heading-title { width: 5.6vw; max-width: 5.6vw; } body .elementor .s107-recipe-card .s107-recipe-badge .elementor-heading-title { height: 5.6vw; border-radius: 1.2vw; } }
@media (max-width: 767px) { body .elementor .s107-recipe-card .s107-recipe-badge, body .elementor .s107-recipe-card .s107-recipe-badge .elementor-heading-title { width: 14.25vw; max-width: 14.25vw; } body .elementor .s107-recipe-card .s107-recipe-badge .elementor-heading-title { height: 14.25vw; border-radius: 3.05vw; } }
/* ===== END RECIPE CARDS ===== */

/* ===== QUOTE CAROUSEL 1000 - desktop (Accreditations 'In the inspectors' words': Figma 1000px cards, 32px gap, peeks either side) ===== */
@media (min-width: 1025px) {
  body .elementor .elementor-element.elementor-widget-n-carousel.s107-stories-carousel.s107-quote-1000 { --e-n-carousel-swiper-offset-size: 14.17vw; }
  body .elementor .s107-quote-1000.s107-carousel-gap-l .swiper-slide { padding-inline: 1.11vw; }
}
/* ===== END QUOTE CAROUSEL 1000 ===== */

/* ===== INLINE ON MOBILE ONLY - text inside a heading that only shows on phones (quote card 'report · Read the full report') ===== */
body .s107-m-inline { display: none; }
@media (max-width: 767px) { body .s107-m-inline { display: inline; } body .s107-m-inline a { color: inherit; } }
/* ===== END INLINE ON MOBILE ONLY ===== */

/* ==== STEP CARDS - ROW ON PHONES ==== */
/* .s107-steps-mrow on the steps grid: on phones each step card shows the number circle on the left
   and the title + body on the right, with no connector line (Figma 3.4 Enquire Now mobile). */
@media (max-width: 767px) {
  body .elementor .s107-steps-mrow > .e-con { display: grid; grid-template-columns: 14.25vw 1fr; column-gap: 3.05vw; row-gap: 2.04vw; align-items: start; align-content: start; padding: 4.07vw 3.05vw !important; border-radius: 6.11vw; }
  body .elementor .s107-steps-mrow > .e-con > .elementor-widget { margin: 0 !important; width: auto; max-width: none; }
  body .elementor .s107-steps-mrow > .e-con > .elementor-widget.s107-step-num { grid-column: 1; grid-row: 1 / span 2; }
  body .elementor .s107-steps-mrow > .e-con > .elementor-widget.s107-step-num::after { content: none; }
  body .elementor .s107-steps-mrow .s107-step-num.s107-step-l .elementor-heading-title { width: 14.25vw; height: 14.25vw; font-size: 4.58vw; }
  body .elementor .s107-steps-mrow > .e-con > .elementor-widget:not(.s107-step-num) { grid-column: 2; }
}
/* ==== END STEP CARDS - ROW ON PHONES ==== */

/* ==== TRUST STRIP - MOBILE BG ==== */
/* .s107-trust-mbg on a section: light navy background on phones only (Figma 3.4 Enquire Now mobile trust strip). */
@media (max-width: 767px) {
  body .elementor .e-con.s107-trust-mbg { background-color: var(--e-global-color-navy100) !important; }
}
/* ==== END TRUST STRIP - MOBILE BG ==== */

/* ==== STEP CARDS - TITLE ONLY ==== */
/* Step cards in .s107-steps-mrow that have only a number + title: centre the title beside the number on phones (Figma Scholarships mobile). */
@media (max-width: 767px) {
  body .elementor .s107-steps-mrow > .e-con:has(> .s107-step-num:nth-last-child(2)) { align-items: center; }
  body .elementor .s107-steps-mrow > .e-con > .elementor-widget.s107-step-num:nth-last-child(2) { grid-row: 1; }
}
/* ==== END STEP CARDS - TITLE ONLY ==== */

/* ==== TERMS CARDS - ROW ON PHONES ==== */
/* .s107-terms-mrow on a grid of icon + title + checklist cards: on phones the icon badge (45px, radius 8) sits beside the title,
   the checklist runs full width underneath (Figma Scholarships mobile 'Dates, conditions and renewal'). */
@media (max-width: 767px) {
  body .elementor .s107-terms-mrow > .e-con { display: grid; grid-template-columns: 11.45vw 1fr; column-gap: 3.05vw; row-gap: 4.07vw; align-items: center; align-content: start; }
  body .elementor .s107-terms-mrow > .e-con > .elementor-widget { margin: 0 !important; width: auto; max-width: none; }
  body .elementor .s107-terms-mrow > .e-con > .elementor-widget-icon { grid-column: 1; grid-row: 1; }
  body .elementor .s107-terms-mrow > .e-con > .elementor-widget-icon .elementor-icon { padding: 2.16vw; border-radius: 2.04vw; }
  body .elementor .s107-terms-mrow > .e-con > .elementor-widget-heading { grid-column: 2; grid-row: 1; }
  body .elementor .s107-terms-mrow > .e-con > .elementor-widget:not(.elementor-widget-icon):not(.elementor-widget-heading) { grid-column: 1 / -1; }
}
/* ==== END TERMS CARDS - ROW ON PHONES ==== */

/* ==== QUOTE CAROUSEL - STACKED NAME ON PHONES ==== */
/* .s107-quote-stack on a .s107-stories-carousel.s107-mcar-center: on phones the name and role sit on two lines
   (name 18px bold, role 15px navy500, 8px apart) instead of 'Name · Role' (Figma Scholarships mobile). */
@media (max-width: 767px) {
  body .elementor .elementor-element.s107-stories-carousel.s107-quote-stack.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) { width: 100%; flex: 0 0 100%; }
  body .elementor .elementor-element.s107-stories-carousel.s107-quote-stack.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) ~ .elementor-widget-heading:not(.s107-quote-icon) { margin-top: -2.03vw; }
  body .elementor .elementor-element.s107-stories-carousel.s107-quote-stack.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) ~ .elementor-widget-heading:not(.s107-quote-icon) .elementor-heading-title { font-size: 3.82vw; font-weight: 400; line-height: 1.2; color: var(--e-global-color-navy500); }
  body .elementor .elementor-element.s107-stories-carousel.s107-quote-stack.s107-mcar-center .swiper-slide > .e-con:has(> .s107-quote-icon) > .elementor-widget-heading:not(.s107-quote-icon) ~ .elementor-widget-heading:not(.s107-quote-icon):not(:has(a)) .elementor-heading-title::before { content: none; }
}
/* ==== END QUOTE CAROUSEL - STACKED NAME ON PHONES ==== */
/* ==== COMPACT TABLE ON PHONES ==== */
/* .s107-table-m-compact on a .s107-table-wrap: on phones the table is 602px wide (first column 162px, others 140px), 14px text,
   12px x 16px cell padding (Figma Scholarships mobile eligibility table). */
@media (max-width: 767px) {
  body .elementor .s107-table-m-compact table { width: 153.18vw; min-width: 153.18vw; table-layout: fixed; }
  body .elementor .s107-table-m-compact :is(th, td) { padding: 3.05vw 4.07vw; font-size: 3.56vw; line-height: 1.3; }
  body .elementor .s107-table-m-compact :is(th, td):first-child { width: 41.22vw; }
  body .elementor .s107-table-m-compact :is(th, td):not(:first-child) { width: 35.62vw; }
}
/* ==== END COMPACT TABLE ON PHONES ==== */

/* ==== FORM PLACEHOLDER ==== */
/* .s107-form-placeholder (HTML widget in a form card): card title + dashed box, shown until the real form is chosen. */
body .elementor .s107-form-placeholder .s107-fp-title { margin: 0 0 1.67vw; font-family: Figtree, sans-serif; font-size: 2.22vw; font-weight: 700; line-height: 1.1; color: var(--e-global-color-navy800); }
body .elementor .s107-form-placeholder .s107-fp-box { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.56vw; min-height: 27.78vw; padding: 2.22vw; border: 2px dashed var(--e-global-color-navy300); border-radius: 1.11vw; background-color: var(--e-global-color-navy50); text-align: center; }
body .elementor .s107-form-placeholder .s107-fp-box span { font-size: 1.39vw; font-weight: 600; color: var(--e-global-color-navy800); }
body .elementor .s107-form-placeholder .s107-fp-box small { font-size: 1.11vw; color: var(--e-global-color-navy500); }
@media (max-width: 1024px) {
  body .elementor .s107-form-placeholder .s107-fp-title { font-size: 3.2vw; margin-bottom: 2.4vw; }
  body .elementor .s107-form-placeholder .s107-fp-box { min-height: 40vw; border-radius: 1.6vw; }
  body .elementor .s107-form-placeholder .s107-fp-box span { font-size: 2vw; }
  body .elementor .s107-form-placeholder .s107-fp-box small { font-size: 1.6vw; }
}
@media (max-width: 767px) {
  body .elementor .s107-form-placeholder .s107-fp-title { font-size: 6.11vw; margin-bottom: 6.11vw; }
  body .elementor .s107-form-placeholder .s107-fp-box { min-height: 76.34vw; padding: 6.11vw; gap: 2.04vw; border-radius: 3.05vw; }
  body .elementor .s107-form-placeholder .s107-fp-box span { font-size: 4.58vw; }
  body .elementor .s107-form-placeholder .s107-fp-box small { font-size: 3.82vw; }
}
/* ==== END FORM PLACEHOLDER ==== */

/* ==== CTA CARD IN 2-COL GRID - PHONES ==== */
/* .s107-cta-card-m on a card inside .s107-m-cards2: on phones the text + button sit centred in the card with 16px between heading and text and 24px above the button
   (Figma Home mobile 'Come see it for yourself' card), instead of the button pinned to the bottom. */
@media (max-width: 767px) {
  body .elementor .s107-m-cards2 > .e-con.s107-cta-card-m { justify-content: center !important; }
  body .elementor .s107-m-cards2 > .e-con.s107-cta-card-m > .elementor-widget { flex-grow: 0 !important; }
  body .elementor .s107-m-cards2 > .e-con.s107-cta-card-m > .elementor-widget-button { margin-top: 4.07vw !important; }
}
/* ==== END CTA CARD IN 2-COL GRID - PHONES ==== */

/* ==== BUTTON ROW ON ONE LINE - PHONES ==== */
/* .s107-btn-row-m1 on a button row: on phones the buttons stay side by side (14px side padding so two Medium buttons fit 369px,
   Figma Home mobile 'Academic Results' + 'University Destinations'). */
@media (max-width: 767px) {
  body .elementor .e-con.s107-btn-row-m1 { flex-wrap: nowrap; }
  body .elementor .s107-btn-row-m1 .elementor-widget-button { --s107-btn-px: 3.56vw; }
}
/* ==== END BUTTON ROW ON ONE LINE - PHONES ==== */

/* ==== DAY TIMELINE - VERTICAL ON PHONES ==== */
/* .s107-day-mvert on a 'A day in ...' grid of .s107-day-item cards: on phones the time pill sits in a 72px column on the left,
   with a dot and a line running down to the next time, and the card on the right (Figma Early Years mobile). */
@media (max-width: 767px) {
  body .elementor .s107-day-mvert > .e-con.s107-day-item { display: grid; grid-template-columns: 18.32vw minmax(0, 1fr); column-gap: 3.05vw; align-items: stretch; }
  body .elementor .s107-day-mvert > .s107-day-item > .elementor-widget.s107-day-pill { grid-column: 1; grid-row: 1; flex-direction: column; align-items: center; gap: 3.05vw; width: auto; margin: 0 !important; }
  body .elementor .s107-day-mvert .s107-day-pill .elementor-heading-title { justify-content: center; min-width: 18.32vw; box-sizing: border-box; padding: 2.04vw 4.07vw; font-size: 4.07vw; line-height: 1.4; }
  body .elementor .s107-day-mvert .elementor-widget.s107-day-pill::after { width: 3.56vw; height: auto; min-height: 3.56vw; flex: 1 1 auto; background-image: radial-gradient(circle at 50% 1.78vw, var(--e-global-color-navy800) 1.68vw, transparent 1.78vw), linear-gradient(var(--e-global-color-navy300), var(--e-global-color-navy300)); background-position: 0 0, 50% 3.56vw; background-size: 3.56vw 3.56vw, 2px calc(100% - 3.56vw); background-repeat: no-repeat; }
  body .elementor .s107-day-mvert .elementor-widget.s107-day-last::after { flex: 0 0 3.56vw; }
  body .elementor .s107-day-mvert > .s107-day-item > .e-con { grid-column: 2; grid-row: 1; }
}
/* ==== END DAY TIMELINE - VERTICAL ON PHONES ==== */


/* ==========================================================================
   HEADING LINE BREAK - DESKTOP/TABLET ONLY
   <br class="s107-br-d"> inside a heading forces a break on wider screens;
   on phones the text wraps naturally.
   ========================================================================== */
@media (max-width: 767px) { .s107-br-d { display: none; } }


/* ==========================================================================
   DARK TABLE - FIT ON PHONES
   .s107-table-dark + .s107-table-fit: on phones the dark table fits the screen
   (no sideways swipe); dates wrap, first column 38%, figures right-aligned.
   ========================================================================== */
@media (max-width: 767px) {
  body .elementor .s107-table-dark.s107-table-fit .s107-table { table-layout: fixed; width: 100%; min-width: 0; font-size: 3.56vw; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table col { width: 31% !important; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table col:first-child { width: 38% !important; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table td { white-space: normal; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table th[scope="row"] { min-width: 0; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table :is(th, td) { padding: 3.05vw 2.04vw; line-height: 1.3; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table :is(th, td):first-child { padding-left: 3.05vw; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table :is(th, td):last-child { padding-right: 3.05vw; }
  body .elementor .s107-table-dark.s107-table-fit .s107-table :is(th, td):not(:first-child) { text-align: right; }
}


/* ==== THANK YOU - CLICKABLE CARDS ==== */
/* .s107-ty-cards on the 'While you wait' grid (Thank You pages): the card's 'Read more' link is stretched over the whole card, so clicking anywhere on the card opens it. */
body .elementor .s107-ty-cards > .e-con { position: relative; }
body .elementor .s107-ty-cards .e-con.s107-mm-cardlink { position: static; }
body .elementor .s107-ty-cards .s107-mm-cardlink::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
/* ==== END THANK YOU - CLICKABLE CARDS ==== */


/* ==== SECTION ANCHORS - CLEAR STICKY HEADER ==== */
/* Sections with a CSS ID (e.g. #virtual-tour, #booking-form) stop below the sticky header when a link jumps to them. */
body .elementor .e-con[id] { scroll-margin-top: 7.5vw; }
@media (max-width: 1024px) { body .elementor .e-con[id] { scroll-margin-top: 12vw; } }
@media (max-width: 767px) { body .elementor .e-con[id] { scroll-margin-top: 20vw; } }
/* ==== END SECTION ANCHORS - CLEAR STICKY HEADER ==== */


/* ==== HEADER - STICKY WHITE (27 Oct 2026, Figma prototype: navy compact bar removed) - SWITCHED OFF 28 Oct 2026: the navy compact bar is back (snippet 465 COMPACT_ON_SCROLL = true). To go back to the sticky white header, uncomment the two rules below and set COMPACT_ON_SCROLL = false. ==== */
/* The Header template sticks to the top; the announcement strip scrolls away (top = minus its height, set by Custom Code
   'Header - compact bar on scroll' as --s107-hdr-top) and the white bar stays. A light shadow appears once it is stuck. */
/* OFF 28 Oct 2026 (navy compact bar is back): body [data-elementor-type="header"] { position: sticky; top: var(--s107-hdr-top, 0px); z-index: 990; } */
/* OFF 28 Oct 2026 (it overrode the navy bar's slide-away transition, so the bar snapped away on scroll up): body .elementor .elementor-element.s107-hdr-main { transition: box-shadow 0.25s ease-out; } */
/* OFF 28 Oct 2026: body.s107-hdr-stuck .elementor .elementor-element.s107-hdr-main { box-shadow: 0 2px 16px rgba(14, 11, 64, 0.08); } */
/* ==== END HEADER - STICKY WHITE ==== */


/* ==== LEGAL PAGES - CONTENTS LIST BELOW THE STICKY WHITE HEADER ==== */
/* The sticky contents list stops 24px under the white header. --s107-hdr-h = the white bar's height, set by Custom Code
   'Header - compact bar on scroll' (falls back to the desktop bar height). */
@media (min-width: 768px) {
  /* OFF 28 Oct 2026 (navy compact bar is back): body .elementor .elementor-element.s107-legal-toc { top: calc(var(--s107-hdr-h, 6.32vw) + 1.67vw); } */
}
/* ==== END LEGAL PAGES - CONTENTS LIST BELOW THE STICKY WHITE HEADER ==== */


/* ==== MOBILE MENU UNDER HEADER (27 Oct 2026, same as the umbrella site) ==== */
/* Phones: the mobile menu (GLOBAL - MOBILE MENU) opens under the sticky white header instead of covering it. The panel's
   own top bar (logo + Close) is hidden; the header "Menu" button is the toggle. Custom Code "Mobile menu (off-canvas)"
   adds body.s107-mm-open while the menu is open, swaps the label (Menu / Close) and sets --s107-mm-top = the header's
   bottom edge when it opens (72px header, plus the announcement strip if it is still on screen). */
@media (max-width: 767px) {
  body .elementor-widget-off-canvas.s107-mm .e-off-canvas { top: var(--s107-mm-top, 18.32vw); height: calc(100vh - var(--s107-mm-top, 18.32vw)); height: calc(100dvh - var(--s107-mm-top, 18.32vw)); }
  body .elementor-widget-off-canvas.s107-mm :is(.e-off-canvas__main, .e-off-canvas__content) { height: calc(100vh - var(--s107-mm-top, 18.32vw)); height: calc(100dvh - var(--s107-mm-top, 18.32vw)); max-height: none; }
  body .elementor .s107-mm-wrap > .e-con:first-child { display: none; }
  /* While open, page scrolling is locked (which stops position:sticky), so the header is pinned where it was */
  body.s107-mm-open [data-elementor-type="header"] { position: fixed; top: var(--s107-mm-hdr-y, 0px); left: 0; right: 0; width: 100%; }

  /* Toggle button: navy pill (Menu) <-> outline pill (Close), colours fade */
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button { transition: background-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease; }
  body.s107-mm-open .elementor .elementor-element.s107-hdr-menubtn .elementor-button {
    background: transparent; color: var(--e-global-color-navy800); box-shadow: inset 0 0 0 1.5px var(--e-global-color-navy800);
  }
  /* Icon drawn in CSS (the SVG is hidden): 3 lines that morph into an X. Lines meet in the middle first, then rotate;
     closing plays it backwards. Change the look here only: size (6.11vw), line length (4.58vw), gap (1.53vw), timing. */
  .s107-hdr-menubtn .elementor-button-icon { position: relative; width: 6.11vw; height: 6.11vw; flex: 0 0 auto; }
  /* Middle line = the Menu SVG element itself, drawn as a solid bar (its paths hidden). A real box, because a 2px
     background stripe could vanish on iPhones when it landed on a fraction of a pixel. */
  body .elementor .elementor-element.s107-hdr-menubtn .elementor-button-icon svg { display: block; position: absolute; left: 50%; top: calc(50% - 1px); width: 4.58vw !important; height: 2px !important; margin-left: -2.29vw;
    border-radius: 2px; background: currentColor; fill: none; transition: transform 0.2s ease 0.1s; }
  .s107-hdr-menubtn .elementor-button-icon svg * { display: none; }
  .s107-hdr-menubtn .elementor-button-icon::before,
  .s107-hdr-menubtn .elementor-button-icon::after {
    content: ""; position: absolute; left: 50%; width: 4.58vw; height: 2px; margin-left: -2.29vw; border-radius: 2px; background: currentColor;
    transition: top 0.2s ease 0.2s, transform 0.25s ease;
  }
  .s107-hdr-menubtn .elementor-button-icon::before { top: calc(50% - 1.53vw - 1px); }
  .s107-hdr-menubtn .elementor-button-icon::after { top: calc(50% + 1.53vw - 1px); }
  body.s107-mm-open .elementor .elementor-element.s107-hdr-menubtn .elementor-button-icon svg { transform: scaleX(0); transition-delay: 0s; }
  body.s107-mm-open .s107-hdr-menubtn .elementor-button-icon::before,
  body.s107-mm-open .s107-hdr-menubtn .elementor-button-icon::after { top: calc(50% - 1px); transition: top 0.2s ease, transform 0.25s ease 0.2s; }
  body.s107-mm-open .s107-hdr-menubtn .elementor-button-icon::before { transform: rotate(45deg); }
  body.s107-mm-open .s107-hdr-menubtn .elementor-button-icon::after { transform: rotate(-45deg); }
  /* Label: quick fade + rise when it swaps (two keyframe names so it replays each way) */
  body.s107-mm-open .s107-hdr-menubtn .elementor-button-text { animation: s107MmLabelIn 0.3s ease both; }
  body.s107-mm-used:not(.s107-mm-open) .s107-hdr-menubtn .elementor-button-text { animation: s107MmLabelOut 0.3s ease both; }
}
@keyframes s107MmLabelIn { from { opacity: 0; transform: translateY(35%); } to { opacity: 1; transform: none; } }
@keyframes s107MmLabelOut { from { opacity: 0; transform: translateY(35%); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .s107-hdr-menubtn .elementor-button, .s107-hdr-menubtn .elementor-button-icon svg, .s107-hdr-menubtn .elementor-button-icon::before, .s107-hdr-menubtn .elementor-button-icon::after { transition: none !important; }
  .s107-hdr-menubtn .elementor-button-text { animation: none !important; }
}
/* Header stays above the page while the menu is open (needed since the sticky white header rule with its z-index is off, 28 Oct 2026) */
body.s107-mm-open [data-elementor-type="header"] { z-index: 990; }
/* Navy compact bar + menu open: fill the bar's box white so the page doesn't show around its rounded corners / side gaps (28 Oct 2026) */
body.s107-mm-open .elementor .elementor-element.s107-hdr-main.s107-hdr-compact { background-color: var(--e-global-color-white, #fff); box-shadow: 0 4px 0 0 var(--e-global-color-white, #fff); } /* shadow: covers the hairline seam between the bar and the menu panel */
/* ==== END MOBILE MENU UNDER HEADER ==== */

/* ==== MOBILE MENU - TALK TO US ICON BADGES ==== */
/* Figma mobile menu 'Contact': 40px round badge with a 24px icon, 12px to the text (row gap). The badge was rendering
   48px inside a 41px widget, so it overlapped the text gap. Fixed size here (.s107-mm-cicon on the Icon widgets). */
body .elementor .elementor-element.s107-mm-cicon { width: 10.18vw; max-width: 10.18vw; flex: 0 0 10.18vw; }
body .elementor .elementor-element.s107-mm-cicon .elementor-icon-wrapper { display: flex; line-height: 0; }
body .elementor .elementor-element.s107-mm-cicon .elementor-icon { width: 10.18vw; height: 10.18vw; padding: 0; display: inline-flex; align-items: center; justify-content: center; }
body .elementor .elementor-element.s107-mm-cicon .elementor-icon svg { width: 6.11vw; height: 6.11vw; }
/* ==== END MOBILE MENU - TALK TO US ICON BADGES ==== */


/* ==== MOBILE CAROUSEL DOTS - VISIBLE ON LAVENDER ==== */
/* Inactive dots were Navy 100, the same colour as the lavender (Navy 100) sections, so they vanished there (e.g. Home
   news). Navy 800 at 20% reads as a light dot on white and stays visible on lavender. */
@media (max-width: 767px) {
  body button.s107-mcar-dot, body button.s107-mcar-dot:hover, body button.s107-mcar-dot:focus, body button.s107-mcar-dot:active { background: rgba(33, 30, 114, 0.2) !important; }
  body button.s107-mcar-dot.is-active { background: var(--e-global-color-navy800) !important; }
}
/* ==== END MOBILE CAROUSEL DOTS - VISIBLE ON LAVENDER ==== */

/* ==== CARD HOVER - IMAGE ZOOM ==== */
/* Whole-card links: hovering the card zooms its photo to 1.05 inside the photo's rounded corners (same as the umbrella
   site's school cards). Snippet "Card hover - image zoom" copies each photo's radius onto its image widget and adds
   .s107-zoom-media; nothing zooms until it has. Mouse/trackpad only; off for reduced motion. */
body .elementor .elementor-widget.s107-zoom-media { overflow: hidden; isolation: isolate; line-height: 0; }
body .elementor .s107-zoom-media img { transform: scale(1); transition: transform 0.6s cubic-bezier(0.22, 1, 0.36, 1); }
@media (hover: hover) {
  body .elementor :is(.e-con.s107-card-link, .s107-mm-feature, .s107-ty-cards > .e-con):hover .s107-zoom-media img { transform: scale(1.05); }
}
@media (prefers-reduced-motion: reduce) {
  body .elementor .s107-zoom-media img { transition: none; transform: none !important; }
}
/* ==== END CARD HOVER - IMAGE ZOOM ==== */
/* ==== SEARCH INPUT - NO THEME FOCUS RING ==== */
/* Hello Elementor 3.5.1 reset.css gives every focused input a 4px white box-shadow ring. On the lavender search bar it showed as a white box around the field; the caret and the bar already show focus. */
body .elementor .e-search-input:focus-visible { box-shadow: none; outline: none; }
/* ==== END SEARCH INPUT - NO THEME FOCUS RING ==== */

/* ==== MEGA MENU - CLOSE ON SCROLL ==== */
/* Snippet 'Header - compact bar on scroll' adds .s107-mega-closing to the header bar while it closes an open mega menu at the header switch: both ways it is instant (.s107-mega-now): a fading panel left a ghost over the page. The 0.2s fade is only used when something else closes the menu (e.g. opening search). */
body .elementor .s107-hdr-main.s107-mega-closing .s107-hdr-mega .e-n-menu-content { opacity: 0; pointer-events: none; transition: opacity 0.2s ease; }
/* While the page scrolls (.s107-hdr-scrolling, removed 250ms after scrolling stops) the top-level nav items ignore the mouse, so a resting cursor doesn't open a menu as the header slides under it. */
body .elementor .s107-hdr-main.s107-hdr-scrolling .s107-hdr-mega .e-n-menu-title { pointer-events: none; }
body .elementor .s107-hdr-main.s107-mega-closing.s107-mega-now .s107-hdr-mega .e-n-menu-content { transition: none; }
/* ==== END MEGA MENU - CLOSE ON SCROLL ==== */


/* ==== TABLES - KEYBOARD FOCUS ==== */
/* Sideways-scrolling tables get tabindex=0 on phones (Custom Code 'Tables - swipe hint fade'). Visible focus ring inside the box;
   the right-edge fade is removed while focused so the ring shows on all sides. */
body .elementor .s107-table-wrap:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: -2px; box-shadow: none; -webkit-mask-image: none; mask-image: none; }
body .elementor .s107-table-wrap.s107-table-dark:focus-visible { outline-color: white; }
/* ==== END TABLES - KEYBOARD FOCUS ==== */


/* ==== MOBILE CAROUSEL DOTS - 24PX TAP TARGETS ==== */
/* WCAG 2.5.8: each dot button is 24px square (6.2vw at 393) with the 8px dot drawn in its centre, so the dots sit
   24px apart instead of 16px. Same look, bigger target. */
@media (max-width: 767px) {
  body .s107-mcar-dots { gap: 0; }
  body button.s107-mcar-dot, body button.s107-mcar-dot:hover, body button.s107-mcar-dot:focus, body button.s107-mcar-dot:active {
    width: 6.2vw !important; height: 6.2vw !important; border-radius: 0 !important;
    background: radial-gradient(circle, rgba(33, 30, 114, 0.2) 0 1.02vw, transparent calc(1.02vw + 0.5px)) !important;
  }
  body button.s107-mcar-dot.is-active, body button.s107-mcar-dot.is-active:hover, body button.s107-mcar-dot.is-active:focus {
    background: radial-gradient(circle, var(--e-global-color-navy800) 0 1.02vw, transparent calc(1.02vw + 0.5px)) !important;
  }
  body button.s107-mcar-dot:focus-visible { outline: 2px solid var(--e-global-color-navy800); outline-offset: -2px; }
}
/* ==== END MOBILE CAROUSEL DOTS - 24PX TAP TARGETS ==== */


/* ==== BREADCRUMBS - UNDERLINED LINKS ON PHONES ==== */
/* On phones there is no hover, so the breadcrumb links (Home / News ...) were told apart from the current page by colour
   only (WCAG 1.4.1, axe link-in-text-block). Underline them on phones. */
@media (max-width: 767px) {
  body .elementor-widget-breadcrumbs a { text-decoration: underline; text-underline-offset: 0.2em; text-decoration-thickness: 1px; }
}
/* ==== END BREADCRUMBS - UNDERLINED LINKS ON PHONES ==== */


/* ==== SEARCH RESULTS - NO RESULTS LINKS ==== */
/* Home / Contact Us links in the 'No pages match your search' message (Search results template 508). */
body .elementor .e-loop-nothing-found-message a { color: var(--e-global-color-navy800); font-weight: 600; text-decoration: underline; text-underline-offset: 0.2em; }
body .elementor .e-loop-nothing-found-message a:hover { color: var(--e-global-color-red500); }
/* ==== END SEARCH RESULTS - NO RESULTS LINKS ==== *//* End custom CSS */