/* IWS page-section styles, migrated out of inline <style> blocks 28 Jul 2026.
 *
 * These were emitted inside the page body on every view, where a browser can never
 * cache them. Each block had exactly one source post and one version, verified before
 * extraction. The CSS below is byte-identical to what those blocks contained.
 *
 * This file is enqueued LAST (priority 1200) on purpose. The blocks used to sit at the
 * end of the body, after every <link>, so they won the cascade against equal-specificity
 * rules earlier in the head. .bkt2 in particular must keep beating iws-legacy.css, which
 * carries an older and shorter copy of it. Do not move this earlier.
 *
 * NOT included, because they have genuine per-page variants that a shared file would
 * silently flatten: .iws-prog (Home vs Our Programmes) and .iws-team (Home vs
 * About Us / Our Teachers). Those need a base-plus-override split, not a straight move.
 */


/* ---- .bkt2{  (booking / lead block)  from post 36305 ---- */
.bkt2{font-family:inherit;width:100%;max-width:1080px;margin:0 auto}.bkt2__tabsrow{text-align:center;margin:0 0 34px}.bkt2__tabs{display:inline-flex;gap:4px;background:#eef1fb;border-radius:50px;padding:6px}.bkt2__tab{appearance:none;border:0;background:none;cursor:pointer;font-family:inherit;font-weight:700;font-size:15px;padding:12px 22px;border-radius:50px;color:#5a6798;display:inline-flex;align-items:center;gap:8px;transition:background .2s,color .2s,box-shadow .2s}.bkt2__tab svg{width:17px;height:17px;flex:none}.bkt2__tab.is-active{background:#0A1776;color:#fff;box-shadow:0 6px 16px rgba(10,23,118,.25)}.bkt2__panel{display:none}.bkt2__panel.is-active{display:block}.bkt2__cal{background:transparent;border:0;border-radius:0;box-shadow:none;overflow:hidden;padding:0}.bkt2__cal .calendly-inline-widget{min-width:280px;width:100%;height:720px}.bkt2wa{max-width:600px;margin:0 auto;text-align:center;background:transparent;border:0;box-shadow:none;padding:36px 20px}.bkt2wa__icon{width:74px;height:74px;border-radius:50%;background:#25D366;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;box-shadow:0 12px 26px rgba(37,211,102,.32)}.bkt2wa__icon svg{width:40px;height:40px;fill:#fff}.bkt2wa h3{font-size:24px;font-weight:800;color:#0A1776;margin:0 0 12px}.bkt2wa p{font-size:15.5px;line-height:1.6;color:#52608f;max-width:440px;margin:0 auto 26px}.bkt2wa__btn{display:inline-flex;align-items:center;gap:10px;background:#25D366;color:#fff;font-weight:800;font-size:16px;padding:16px 34px;border-radius:40px;text-decoration:none;transition:transform .2s,box-shadow .2s}.bkt2wa__btn svg{width:22px;height:22px;fill:#fff}.bkt2wa__btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(37,211,102,.4)}.bkt2wa__meta{display:flex;flex-direction:column;gap:5px;margin-top:24px;font-size:13px;color:#8a96bf}.bkt2wa__meta b{font-weight:700;color:#0A1776;font-size:16px}.bkt2-form{max-width:820px;margin:0 auto}.bkt2-form .wpcf7{background:transparent;border:0;box-shadow:none;padding:0}.bkt2-form .iwsf-h{font-weight:800;color:#0A1776;font-size:13px;text-transform:uppercase;letter-spacing:.09em;margin:18px 0 18px;display:flex;align-items:center;gap:14px}.bkt2-form .iwsf-h:first-child{margin-top:0}.bkt2-form .iwsf-h:after{content:"";flex:1;height:1px;background:#e2e8f6}.bkt2-form .iwsf-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.bkt2-form .iwsf-grid>p{margin:0 0 18px}.bkt2-form .iwsf-grid>.iwsf-full{grid-column:1/-1}.bkt2-form label{display:block;font-weight:600;color:#3a4675;font-size:13px}.bkt2-form .wpcf7 input,.bkt2-form .wpcf7 select,.bkt2-form .wpcf7 textarea{width:100%;padding:13px 15px;border:1.5px solid #e2e8f6;border-radius:12px;font-size:15px;font-family:inherit;margin-top:7px;box-sizing:border-box;background:#fff;transition:border-color .15s,box-shadow .15s}.bkt2-form .wpcf7 input:focus,.bkt2-form .wpcf7 select:focus,.bkt2-form .wpcf7 textarea:focus{outline:none;border-color:#0A1776;box-shadow:0 0 0 3px rgba(10,23,118,.12)}.bkt2-form .wpcf7 textarea{min-height:130px}.bkt2-form .wpcf7 .wpcf7-submit{width:auto;background:linear-gradient(135deg,#0A1776,#0067E0);color:#fff;font-weight:800;border:0;border-radius:40px;padding:16px 42px;cursor:pointer;margin-top:10px;font-size:16px;box-shadow:0 12px 26px rgba(10,23,118,.28);transition:transform .2s,box-shadow .2s}.bkt2-form .wpcf7 .wpcf7-submit:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(10,23,118,.36)}@media(max-width:768px){.bkt2{padding:0}.bkt2__tabsrow{margin-bottom:24px}.bkt2__tabs{display:flex;width:100%;gap:3px;padding:5px}.bkt2__tab{flex:1;justify-content:center;padding:11px 6px;font-size:12.5px;gap:6px}.bkt2__tab svg{width:14px;height:14px}.bkt2-form .iwsf-grid{grid-template-columns:1fr}.bkt2-form .wpcf7{background:#fff;border-radius:16px;padding:24px 18px;box-shadow:0 10px 30px rgba(10,23,118,.07)}.bkt2__cal .calendly-inline-widget{height:1000px}.bkt2wa{padding:30px 14px}}


/* ---- .iws-faq{  (homepage FAQ section)  from post 33757 ---- */
.iws-faq{background:#fff;padding:86px 0;font-family:inherit;position:relative}.iws-faq .in{max-width:830px;margin:0 auto;padding:0 24px}.iws-faq .ey{text-transform:uppercase;letter-spacing:.14em;font-size:13px;font-weight:700;color:#0A1776;text-align:center;margin:0 0 10px}.iws-faq h2{font-size:clamp(28px,3.4vw,40px);line-height:1.14;color:#0A1776;text-align:center;margin:0 0 44px;font-weight:800}.iws-faq .it{position:relative;border:1px solid #e7edf8;border-radius:16px;margin:0 0 14px;background:#fff;overflow:hidden;transition:box-shadow .25s ease,border-color .25s ease,background .25s ease}.iws-faq .it[open]{border-color:#cdddff;box-shadow:0 14px 36px rgba(10,23,118,.11);background:linear-gradient(180deg,#FFFFFF 0%,#F8FAFC 100%)}.iws-faq .it::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:#0067E0;transform:scaleY(0);transform-origin:top;transition:transform .25s ease}.iws-faq .it[open]::before{transform:scaleY(1)}.iws-faq summary{list-style:none;cursor:pointer;padding:22px 28px;display:flex;align-items:center;justify-content:space-between;gap:18px}.iws-faq summary::-webkit-details-marker{display:none}.iws-faq .q{font-size:17px;font-weight:700;color:#0A1776;line-height:1.4}.iws-faq .ic{position:relative;flex:0 0 30px;width:30px;height:30px;border-radius:50%;background:#EAF0FF;transition:background .25s ease}.iws-faq .ic::before,.iws-faq .ic::after{content:"";position:absolute;left:50%;top:50%;background:#0A1776;border-radius:2px;transition:.25s ease}.iws-faq .ic::before{width:12px;height:2px;transform:translate(-50%,-50%)}.iws-faq .ic::after{width:2px;height:12px;transform:translate(-50%,-50%)}.iws-faq .it[open] .ic{background:#0067E0}.iws-faq .it[open] .ic::before,.iws-faq .it[open] .ic::after{background:#fff}.iws-faq .it[open] .ic::after{transform:translate(-50%,-50%) scaleY(0)}.iws-faq .an{padding:0 28px 24px;color:#475569;font-size:16px;line-height:1.7}.iws-faq .an p{margin:0}.iws-faq .more{text-align:center;margin:34px 0 0;color:#475569;font-size:16px}.iws-faq .more a{color:#0067E0;font-weight:700;text-decoration:none}.iws-faq .more a:hover{text-decoration:underline}@media(max-width:560px){.iws-faq{padding:58px 0}.iws-faq summary{padding:18px 20px}.iws-faq .q{font-size:16px}.iws-faq .an{padding:0 20px 20px}}.iws-faq .in{max-width:1140px}.iws-faq .faq-row{display:flex;gap:46px;align-items:stretch;margin-top:30px;text-align:left}.iws-faq .faq-photo{flex:0 0 36%;border-radius:18px;overflow:hidden;box-shadow:0 18px 40px rgba(10,23,118,.14)}.iws-faq .faq-photo img{width:100%;height:100%;min-height:540px;object-fit:cover;display:block;border-radius:18px}.iws-faq .faq-list{flex:1;min-width:0}@media(max-width:880px){.iws-faq .in{max-width:680px}.iws-faq .faq-row{flex-direction:column;gap:24px;margin-top:24px}.iws-faq .faq-photo{flex:none}.iws-faq .faq-photo img{min-height:0;max-height:340px}}


/* ---- .iws-why{  (homepage Why section)  from post 33757 ----
   REBUILT 31 Jul 2026 as .iwsq, "the four questions parents ask".
   Replaces four flat icon cards with a sticky question spine on the left
   whose answer assembles beside it as you scroll.

   NO JAVASCRIPT AND NO ENTRANCE ANIMATION, DELIBERATELY.
     - Every proof is server-rendered text, so AI crawlers read all of it.
     - There is no state in which content exists but is hidden, which is the
       exact class of bug fixed right across this site earlier on 31 Jul
       (the Enquire Now entrance animation, the hero decode).
   The scrollytelling comes from position:sticky, which costs nothing and
   cannot flash. Motion is interaction-only.

   R4 radii 8 / 14 / 22 / 999, no fifth step.
   R5 every gradient stop is a named token from IWS_DESIGN.md section 3.
   R6 transform and opacity only, settle do not swoop, no per-card stagger.
   R7 container 1180px.

   ⚠️ THIS FILE LOADS AFTER iws-global.css and the .iws-why rules there have
   identical specificity, so THESE win. The h2 size lives HERE. An earlier
   attempt on 31 Jul to raise it from iws-global.css silently did nothing. */
.iws-why{background:linear-gradient(180deg,#FFFFFF 0%,#EAF1FF 100%);padding:88px 0;font-family:inherit}
.iws-why .in{max-width:1180px;margin:0 auto;padding:0 24px}
.iws-why .ey{text-transform:uppercase;letter-spacing:.14em;font-size:13px;font-weight:700;color:#0A1776;text-align:center;margin:0 0 10px}
.iws-why h2{font-size:clamp(32px,4.4vw,52px);line-height:1.1;color:#0A1776;text-align:center;margin:0 0 16px;font-weight:800}
.iws-why .sub{max-width:640px;margin:0 auto;text-align:center;color:#475569;font-size:17px;line-height:1.62}

/* ---- the spine ---- */
.iwsq__steps{list-style:none;margin:0;padding:0}
.iwsq__step{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:60px;align-items:start;padding:60px 0;border-top:1px solid #E2E8F0}
.iwsq__step:first-child{border-top:0;padding-top:52px}
.iwsq__q{position:sticky;top:155px}
.iwsq__n{display:block;font-size:12.5px;font-weight:800;letter-spacing:.18em;color:#B45309;margin:0 0 12px}
.iwsq__q h3{font-size:clamp(23px,2.1vw,30px);line-height:1.26;color:#0A1776;font-weight:800;margin:0}

/* ---- the answer ---- */
.iwsq__lead{font-size:clamp(19px,1.55vw,24px);line-height:1.32;color:#0A1776;font-weight:700;margin:0 0 12px}
.iwsq__body{font-size:16.5px;line-height:1.68;color:#475569;margin:0 0 26px;max-width:62ch}
.iwsq__panel{background:linear-gradient(180deg,#FFFFFF 0%,#F8FAFC 100%);border:1px solid #E2E8F0;border-radius:22px;padding:26px}
.iwsq__ph{display:flex;align-items:center;gap:12px;margin:0 0 20px}
.iwsq__ph svg{width:26px;height:26px;flex:none;stroke:#0067E0;fill:none;stroke-width:1.6}
.iwsq__ph p{margin:0;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#0A1776}
.iwsq__cap{font-size:13.5px;line-height:1.62;color:#475569;margin:16px 0 0}
.iwsq__cap a{color:#0067E0;text-decoration:underline;text-underline-offset:2px}

/* ---- 01 seats ---- */
.iwsq__seats{display:flex;flex-wrap:wrap;gap:11px;align-items:center;margin:0}
.iwsq__seat{width:36px;height:36px;border-radius:999px;background:linear-gradient(160deg,#CFE0FF 0%,#EAF1FF 100%);border:1px solid #CFE0FF}
.iwsq__seat.is-you{background:linear-gradient(160deg,#D97706 0%,#B45309 100%);border-color:#B45309;box-shadow:0 0 0 4px rgba(180,83,9,.15)}
.iwsq__stats{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 0;padding:0}
.iwsq__stats li{display:flex;flex-direction:column;gap:3px;background:linear-gradient(180deg,#FFFFFF 0%,#EAF1FF 100%);border:1px solid #E2E8F0;border-radius:14px;padding:12px 16px;flex:1 1 132px}
.iwsq__stats b{font-size:22px;font-weight:800;color:#0A1776;line-height:1;font-feature-settings:"tnum"}
.iwsq__stats span{font-size:12.5px;color:#475569;line-height:1.36}

/* ---- 02 houses ---- */
.iwsq__houses{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0;padding:0}
.iwsq__house{background:linear-gradient(180deg,#FFFFFF 0%,#EAF1FF 100%);border:1px solid #E2E8F0;border-radius:14px;padding:16px 14px;transition:transform .25s cubic-bezier(.22,.61,.36,1),box-shadow .25s cubic-bezier(.22,.61,.36,1),border-color .25s cubic-bezier(.22,.61,.36,1)}
.iwsq__house:hover{transform:translateY(-4px);box-shadow:0 14px 32px rgba(10,23,118,.12);border-color:#CFE0FF}
.iwsq__pt{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:linear-gradient(160deg,#0A1776 0%,#13266B 100%);color:#FFFFFF;font-size:12px;font-weight:800;letter-spacing:.02em;margin:0 0 12px}
.iwsq__house b{display:block;font-size:16px;font-weight:800;color:#0A1776;margin:0 0 4px}
/* the motto carries its own class rather than a bare `span`, because
   `.iwsq__house span` (0,0,1,1) outranks `.iwsq__pt` (0,0,1,0) and painted the
   compass letter slate-on-navy, i.e. invisible. Measured 31 Jul 2026. */
.iwsq__hm{display:block;font-size:13px;line-height:1.45;color:#475569}

/* ---- 03 the wellbeing year ---- */
.iwsq__year{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.iwsq__tt{margin:0 0 10px;font-size:12.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#0A1776;padding:0 0 9px;border-bottom:2px solid #CFE0FF}
.iwsq__tt em{font-style:normal;font-weight:600;color:#475569;letter-spacing:.04em}
.iwsq__term ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}
.iwsq__term li{display:flex;flex-direction:column;gap:2px;padding:9px 12px;border-radius:8px;background:linear-gradient(180deg,#FFFFFF 0%,#F8FAFC 100%);border:1px solid #E2E8F0}
.iwsq__term li b{font-size:13.5px;font-weight:700;color:#0A1776;line-height:1.3}
.iwsq__term li span{font-size:12px;color:#475569;font-feature-settings:"tnum"}

/* ---- 04 the path ---- */
.iwsq__path{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0 0 24px;padding:0}
/* space-between, so the age line sits on the bottom edge of every stage and
   the row stays aligned when a longer name like "Lower Secondary" wraps */
.iwsq__path li{flex:1 1 118px;padding:14px 12px;border-radius:14px;background:linear-gradient(180deg,#FFFFFF 0%,#EAF1FF 100%);border:1px solid #E2E8F0;text-align:center;display:flex;flex-direction:column;justify-content:space-between;gap:6px}
.iwsq__path li b{display:block;font-size:14.5px;font-weight:800;color:#0A1776;line-height:1.25}
.iwsq__path li span{display:block;font-size:12px;color:#475569;margin:3px 0 0}
.iwsq__path li.is-end{background:linear-gradient(160deg,#0A1776 0%,#13266B 100%);border-color:#0A1776}
.iwsq__path li.is-end b{color:#FFFFFF}
.iwsq__path li.is-end span{color:#CFE0FF}
.iwsq__dest{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.iwsq__dt{margin:0 0 4px;font-size:12.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#B45309}
.iwsq__chips{list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 0;padding:0}
.iwsq__chips li{border-radius:999px;padding:7px 14px;font-size:13px;font-weight:600;color:#0A1776;background:linear-gradient(180deg,#EAF1FF 0%,#CFE0FF 100%);border:1px solid #CFE0FF}

@media(max-width:1024px){
.iws-why{padding:64px 0}
.iwsq__step{grid-template-columns:1fr;gap:24px;padding:44px 0}
.iwsq__step:first-child{padding-top:38px}
.iwsq__q{position:static}
.iwsq__year{grid-template-columns:1fr}
.iwsq__term ul{display:grid;grid-template-columns:repeat(2,1fr)}
}
@media(max-width:900px){
.iwsq__houses{grid-template-columns:1fr 1fr}
.iwsq__dest{grid-template-columns:1fr}
}
@media(max-width:560px){
.iws-why h2{font-size:clamp(26px,6.6vw,34px)}
.iwsq__houses{grid-template-columns:1fr}
.iwsq__panel{padding:18px}
.iwsq__term ul{grid-template-columns:1fr}
.iwsq__seat{width:30px;height:30px}
.iwsq__body{font-size:16px}
}
@media(prefers-reduced-motion:reduce){
.iwsq__house{transition:none}
.iwsq__house:hover{transform:none}
}


/* ---- .iws-ft{  (site footer)  from post 250 ---- */
.iws-ft{background:#F8FAFC;color:#3b4263;border-top:1px solid #e3e9f6}
.iws-ft a{color:#475569;text-decoration:none;transition:color .2s}
.iws-ft a:hover{color:#0067E0}
.iws-ft-top{max-width:1200px;margin:0 auto;padding:64px 32px 40px;display:grid;grid-template-columns:1.5fr 1fr 1fr 1.25fr 1fr;gap:40px}
.iws-ft h3{font-size:.95rem;font-weight:800 !important;letter-spacing:.1em;text-transform:uppercase;color:#0A1776;margin:0 0 20px}
.iws-ft ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.iws-ft ul li a{font-size:.92rem}
.iws-ft-brand .flogo{margin-left:-55px !important;display:block;margin-bottom:18px}
.iws-ft-brand .flogo img{height:48px;width:auto;display:block}
.iws-ft-brand p{font-size:.9rem;line-height:1.65;color:#475569;margin:0 0 16px;max-width:300px}
.iws-ft-brand .addr{font-size:.84rem;line-height:1.6;color:#8a90a8}
.iws-ft-brand 
.iws-ft-brand 
.iws-ft-contact li{font-size:.9rem;color:#475569;display:flex;gap:9px;align-items:flex-start;line-height:1.5}
.iws-ft-contact li .ic{flex:none;opacity:.6}
.iws-ft-accred{display:flex;flex-direction:column;gap:12px}
.iws-ft-accred .chip{background:#0A1776;border-radius:10px;padding:12px 14px;display:flex;align-items:center;justify-content:center}
.iws-ft-accred .chip img{max-height:26px;max-width:118px;width:auto;object-fit:contain}
.iws-ft-social{max-width:1200px;margin:0 auto;padding:26px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid #e3e9f6}
.iws-ft-social .socs{display:flex;gap:11px}
.iws-ft-social .socs a{width:40px;height:40px;border-radius:50%;background:#0A1776;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.iws-ft-social .socs a:hover{background:#0067E0}
.iws-ft-social .socs svg{width:17px;height:17px;fill:#fff}
.iws-ft-tag{font-family:'Sora',sans-serif;font-weight:800;letter-spacing:.2em;font-size:.74rem;text-transform:uppercase;color:#EAF1FF}
.iws-ft-bottom{background:#e7edf8}
.iws-ft-bottom .in{max-width:1200px;margin:0 auto;padding:18px 32px;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:.82rem;color:#6a7390}
.iws-ft-bottom .links{display:flex;gap:18px;flex-wrap:wrap}
.iws-ft-bottom a{color:#6a7390}
@media(max-width:1000px){.iws-ft-top{grid-template-columns:1fr 1fr;gap:34px;padding:52px 26px 34px}.iws-ft-brand{grid-column:1 / -1}}
@media(max-width:560px){.iws-ft-top{grid-template-columns:1fr;gap:28px}.iws-ft-social{flex-direction:column;align-items:flex-start}.iws-ft-bottom .in{flex-direction:column;align-items:flex-start}}




@media(max-width:768px){.iws-ft-accred{grid-template-columns:1fr 1fr !important;gap:10px !important;max-width:330px}}

/* ---- .iws-prog  (Home + Our Programmes, one shared version) ---- */
/* The two pages' copies differed only in `.iws-prog .ey{color}`, and that
   declaration never rendered on either: iws-global.css sets the same property
   !important at higher specificity. No page override is needed. */
.iws-prog{background:#fff;padding:74px 0;font-family:inherit}.iws-prog .in{max-width:1240px;margin:0 auto;padding:0 24px}.iws-prog .ey{text-transform:uppercase;letter-spacing:.14em;font-size:12.5px;font-weight:700;color:#0067E0;text-align:center;margin:0 0 9px}.iws-prog h2{font-size:clamp(26px,3.1vw,36px);line-height:1.15;color:#0A1776;text-align:center;margin:0 0 12px;font-weight:800}.iws-prog .sub{max-width:600px;margin:0 auto 42px;text-align:center;color:#475569;font-size:16px;line-height:1.6}.iws-prog .grid{display:flex;flex-wrap:wrap;justify-content:center;gap:18px}.iws-prog .pc{flex:0 0 calc((100% - 72px)/5);max-width:calc((100% - 72px)/5);background:#fff;border:1px solid #eceff6;border-radius:16px;overflow:hidden;text-decoration:none;box-shadow:0 2px 10px rgba(10,23,118,.05);transition:transform .25s ease,box-shadow .25s ease;display:flex;flex-direction:column}.iws-prog .pc:hover{transform:translateY(-6px);box-shadow:0 16px 38px rgba(10,23,118,.14)}.iws-prog .im{position:relative;width:100%;aspect-ratio:1/1;overflow:hidden;background:#eef2fb}.iws-prog .im img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transition:transform .55s ease}.iws-prog .pc:hover .im img{transform:scale(1.05)}.iws-prog .bd{padding:15px 15px 17px;display:flex;flex-direction:column;flex:1 1 auto}.iws-prog .tag{align-self:flex-start;font-size:13px;font-weight:600;letter-spacing:0;text-transform:none;color:#2563EB;background:none;padding:0;border-radius:0;margin:0 0 6px}.iws-prog .bd h3{font-size:16px;color:#0A1776;margin:0 0 8px;font-weight:800}.iws-prog .bd p{font-size:12.5px;line-height:1.5;color:#475569;margin:0;flex:1 1 auto}.iws-prog .lm{display:inline-flex;align-items:center;gap:6px;color:#0067E0;font-weight:700;font-size:13.5px}.iws-prog .lm svg{transition:transform .2s ease}.iws-prog .pc:hover .lm svg{transform:translateX(3px)}@media(max-width:1080px){.iws-prog .pc{flex:0 0 calc((100% - 36px)/3);max-width:calc((100% - 36px)/3)}}@media(max-width:760px){.iws-prog{padding:52px 0}.iws-prog .grid{gap:14px}.iws-prog .pc{flex:0 0 calc(50% - 7px);max-width:calc(50% - 7px)}.iws-prog .bd{padding:12px 13px 14px}.iws-prog .bd p{display:none}.iws-prog .bd h3{font-size:15px;margin:2px 0 4px}.iws-prog .tag{font-size:10px;padding:3px 9px;margin-bottom:8px}.iws-prog .lm{font-size:13px}}.iws-prog .lm{display:none}


/* ---- .iws-team  base: About Us + Our Teachers (identical copies) ---- */
.iws-team{background:#F8FAFC;padding:84px 0;font-family:inherit}.iws-team .in{max-width:1080px;margin:0 auto;padding:0 24px}.iws-team .ey{text-transform:uppercase;letter-spacing:.14em;font-size:13px;font-weight:700;color:#0A1776;text-align:center;margin:0 0 10px}.iws-team h2{font-size:clamp(28px,3.4vw,40px);line-height:1.14;color:#0A1776;text-align:center;margin:0 0 14px;font-weight:800}.iws-team .sub{max-width:680px;margin:0 auto 50px;text-align:center;color:#475569;font-size:17px;line-height:1.6}.iws-team .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;max-width:1000px;margin:0 auto}.iws-team .c{background:#fff;border-radius:22px;overflow:hidden;box-shadow:0 6px 26px rgba(10,23,118,.10);transition:transform .25s ease,box-shadow .25s ease;border:1px solid #eef2fb}.iws-team .c:hover{transform:translateY(-7px);box-shadow:0 22px 50px rgba(10,23,118,.18)}.iws-team .ph{height:312px;background:linear-gradient(165deg,#EAF1FF 0%,#CFE0FF 100%);display:flex;align-items:flex-end;justify-content:center;overflow:hidden}.iws-team .ph img{max-height:100%;max-width:94%;width:auto;height:auto;object-fit:contain;display:block;filter:drop-shadow(0 14px 22px rgba(10,23,118,.18))}.iws-team .b{padding:22px 24px 28px;text-align:center;position:relative}.iws-team .b::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:48px;height:4px;border-radius:2px;background:#0067E0}.iws-team .b h3{font-size:21px;color:#0A1776;margin:14px 0 6px;font-weight:800}.iws-team .b .r{font-size:13.5px;color:#0A1776;font-weight:700;letter-spacing:.03em;text-transform:uppercase}@media(max-width:860px){.iws-team .grid{grid-template-columns:1fr 1fr;max-width:600px}}@media(max-width:560px){.iws-team{padding:56px 0}.iws-team .grid{grid-template-columns:1fr;max-width:330px}}


/* ---- .iws-team  Home overrides ---- */
/* Home paints this section white instead of the base #F8FAFC, and is the only
   page with a .note line under the team grid. Scoped to the page-id body class
   (0,2,1) so it outranks the base (0,1,0) without touching the other pages. */
body.page-id-33757 .iws-team{background:#fff}
body.page-id-33757 .iws-team .note{max-width:720px;margin:50px auto 0;text-align:center;color:#0A1776;font-size:19px;line-height:1.55;font-weight:600;font-style:italic}

/* ==== migrated out of WPCode snippet 37041, 28 Jul 2026 ==== */

/* ---- was <style id="hp-hero-slides-css"> ---- */
.hp-hero .hp-slides{position:absolute;inset:0;z-index:0;overflow:hidden}
.hp-hero .hp-slide{position:absolute;inset:0;background-size:cover;background-repeat:no-repeat;opacity:0;transition:opacity 1.2s ease}
.hp-hero .hp-slide.is-on{opacity:1}
.hp-hero .hp-scrim{position:absolute;left:0;right:0;bottom:0;height:46%;z-index:1;pointer-events:none;background:linear-gradient(to bottom,rgba(6,12,52,0) 0%,rgba(6,12,52,.34) 55%,rgba(6,12,52,.72) 100%)}
.hp-hero::before{z-index:1}
.hp-hero>.in{position:relative;z-index:2}
.hp-hero>.trust{z-index:3}
@media(min-width:769px){.hp-hero .trust .lbl{color:rgba(255,255,255,.9)!important}.hp-hero .trust img{opacity:1!important;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))!important}}
@media(max-width:768px){.hp-hero .hp-scrim{display:none}.hp-hero>.trust{position:relative!important;z-index:5!important}}

/* ---- was <style id="(no id)"> ---- */
.pg-hero-img.iws-acc-box{flex:0 0 48%;max-width:560px}
.iws-acc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;width:100%}
.iws-acc-card{display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:16px;padding:18px 20px;min-height:126px}
.iws-acc-logo{width:100%;height:60px;background-position:center;background-repeat:no-repeat;background-size:contain}
@media(max-width:1024px){.pg-hero-img.iws-acc-box{width:100%;max-width:560px;flex:1 1 100%;margin-left:auto;margin-right:auto}}
@media(max-width:560px){.iws-acc-grid{gap:12px}.iws-acc-card{min-height:100px;padding:14px 16px}.iws-acc-logo{height:48px}}

/* ---- was <style id="iws-prog-reviews"> ---- */
.iws-pr{max-width:780px;margin:20px auto 0;}
.iws-pr-vp{overflow:hidden;}
.iws-pr-track{display:flex;transition:transform .55s cubic-bezier(.4,0,.2,1);}
.iws-pr-slide{flex:0 0 100%;box-sizing:border-box;padding:6px;}
.iws-pr-card{background:#fff;border:1px solid rgba(10,23,118,.08);border-radius:16px;box-shadow:0 10px 30px rgba(10,23,118,.08);padding:30px 30px 26px;box-sizing:border-box;text-align:left;}
.iws-pr-stars{color:#D97706;font-size:17px;letter-spacing:2px;margin-bottom:12px;}
.iws-pr-q{color:#33405c;font-size:15.5px;line-height:1.65;margin:0 0 18px;font-style:italic;}
.iws-pr-who{display:flex;align-items:center;gap:12px;padding-top:14px;border-top:1px solid rgba(10,23,118,.06);}
.iws-pr-av{width:44px;height:44px;border-radius:50%;background:#0A1776;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex:0 0 auto;}
.iws-pr-nm strong{display:block;color:#0A1776;font-size:14.5px;line-height:1.2;}
.iws-pr-nm small{color:#7a86a3;font-size:12.5px;}
.iws-pr-dots{display:flex;justify-content:center;gap:8px;margin-top:16px;}
.iws-pr-dot{width:8px;height:8px;border-radius:50%;background:rgba(10,23,118,.2);border:0;cursor:pointer;padding:0;transition:all .25s;}
.iws-pr-dot.on{background:#0A1776;width:22px;border-radius:5px;}
.iws-pr-section{padding:80px 20px;background:#F8FAFC;}
.iws-pr-section .iws-pr{margin-top:0;}
.iws-pr-head{text-align:center;color:#0067e0;font-weight:700;font-size:11px;letter-spacing:1.9px;text-transform:uppercase;margin:0 0 16px;font-family:Inter,Arial,sans-serif;}

/* ---- was <style id="iws-home-rv"> ---- */
body.page-id-33757 .track{align-items:stretch !important;}
body.page-id-33757 .slide{height:auto !important;display:flex !important;}
body.page-id-33757 .slide > .rc{height:100% !important;width:100% !important;display:flex !important;flex-direction:column !important;border-radius:16px !important;background:#fff !important;border:1px solid rgba(10,23,118,0.07) !important;box-shadow:0 6px 22px rgba(10,23,118,0.07),0 1px 3px rgba(10,23,118,0.05) !important;padding:28px 28px 24px !important;position:relative !important;overflow:hidden !important;transition:transform .28s ease,box-shadow .28s ease !important;}
body.page-id-33757 .slide > .rc::before{content:"" !important;position:absolute !important;left:0;top:0;height:4px;width:100% !important;background:linear-gradient(90deg,#0A1776 0%,#2c5bd8 60%,#5b8bff 100%) !important;opacity:.9 !important;}
body.page-id-33757 .slide > .rc .strow{margin-bottom:14px !important;}
body.page-id-33757 .slide > .rc .st.f{color:#D97706 !important;font-size:16px !important;letter-spacing:1px !important;}
body.page-id-33757 .slide > .rc .q{flex:1 1 auto !important;color:#33405c !important;font-size:15px !important;line-height:1.6 !important;margin:0 0 18px !important;}
body.page-id-33757 .slide > .rc .who{margin-top:auto !important;display:flex !important;align-items:center !important;gap:12px !important;padding-top:16px !important;border-top:1px solid rgba(10,23,118,0.06) !important;}
body.page-id-33757 .slide > .rc .who .av{width:42px !important;height:42px !important;border-radius:50% !important;display:flex !important;align-items:center !important;justify-content:center !important;color:#fff !important;font-weight:700 !important;font-size:13px !important;flex:0 0 auto !important;box-shadow:0 3px 8px rgba(10,23,118,0.18) !important;}
body.page-id-33757 .slide > .rc .who .nm strong{color:#0A1776 !important;font-size:14.5px !important;display:block !important;line-height:1.2 !important;}
body.page-id-33757 .slide > .rc .who .nm span{color:#7a86a3 !important;font-size:12px !important;}
@media(max-width:768px){body.page-id-33757 .vp{cursor:grab;touch-action:pan-y;}}

/* ---- migrated out of WPCode snippet 36004, 28 Jul 2026 ---- */
.bkt2-form .iti{width:100%}.bkt2-form .iti input{width:100%}.bkt2-form .iti--separate-dial-code .iti__selected-flag{border-radius:12px 0 0 12px}

/* ---- .iws-team .ph height guard (28 Jul 2026) ----
   iws-legacy.css sets `.ph{min-height:100svh!important;align-items:flex-start!important}`.
   `.ph` is a legacy full-viewport photo-hero class; it is only (0,1,0) but it is
   !important, so it beat the `.iws-team .ph{height:312px}` rule above and stretched every
   teacher card to a full viewport height with the portrait stuck to the top.
   This override is (0,2,2) + !important so it wins, and it is scoped to .iws-team so a
   genuine full-viewport .ph hero elsewhere still works. Do not lower the specificity. */
html body .iws-team .ph{height:312px !important;min-height:0 !important;align-items:flex-end !important;}
html body .iws-team .ph img{max-height:100% !important;height:auto !important;}

/* ==== 29 Jul 2026: footer gradient rebuilt + #achievers spacing ==================== */

/* ---- A. FOOTER: drifting aurora field on the dark card, white band behind ----
   Sixth version, 29 July 2026. Burak: "I don't want circle motions", and the mobile
   rendering was blotchy.

   WHY THE ROTATION VERSIONS LOOKED WRONG. Rotating one shared layer is the cheap way to
   fake a moving gradient. It has two tells: every blob travels on a circular arc around a
   single centre, so the field reads as spinning rather than drifting; and with a hard
   radial falloff and no blur the colour steps band visibly, which is what showed up on
   the phone. The documented professional pattern (Stripe and Linear style aurora) is
   different in three specific ways, and all three are implemented here:
     1. THREE OR MORE independent blobs, each its own element, not two pseudo-elements.
     2. Each blob carries its own `filter: blur()`. The blur is what removes the banding,
        and because the blur is static on the element the browser rasterises it once and
        only moves it afterwards, so it stays cheap.
     3. Each drifts on its own TRANSLATE path over a NON-DIVISIBLE duration (19s, 25s,
        15s), so no two ever resynchronise and the field never visibly repeats.

   That needed real elements, so `<div class="iws-ft-aur"><i></i><i></i><i></i></div>` was
   added as the first child of the card in post 250, marked aria-hidden.

   PERFORMANCE. Only `transform` animates, so the compositor handles every frame with no
   repaint. The reference guidance warns that three simultaneously blurred layers can drop
   frames on low-end devices, so the blur radius steps down at each breakpoint rather than
   staying fixed, and the blobs are sized in % of the card so they scale instead of being
   cropped on small screens.

   COLOUR. Off-palette, footer only, granted by Burak 29 July and deliberately NOT written
   into IWS_DESIGN.md, so section 3.4 stands unchanged everywhere else. Do not copy these
   hexes outside `.iws-ft`. White body text sits on this card, so contrast is the hard
   floor and was re-measured after this change. */
body .thim-ekit__footer__inner{
	position:relative;
	padding:60px;
	background-color:#fff;
	background-image:none;
	animation:none;
	overflow:visible;
	isolation:auto;
}

body .iws-ft{
	position:relative;
	z-index:1;
	border-radius:28px;
	overflow:hidden;
	isolation:isolate;
	box-shadow:0 26px 60px -28px rgba(6,14,58,.55),0 2px 8px -4px rgba(6,14,58,.25);
}

/* the field sits behind everything in the card */
body .iws-ft .iws-ft-aur{
	position:absolute;
	inset:0;
	z-index:0;
	pointer-events:none;
	overflow:hidden;
	border-radius:inherit;
}

body .iws-ft .iws-ft-aur i{
	position:absolute;
	display:block;
	border-radius:50%;
	filter:blur(46px);
	will-change:transform;
	opacity:.40;
}

/* Three blobs, three paths, three durations with no common factor.
   Sizes are % of the card, so they scale with the viewport instead of being cropped. */
body .iws-ft .iws-ft-aur i:nth-child(1){
	width:62%; aspect-ratio:1; left:-8%; top:-24%;
	background:#2B8CFF;
	animation:iwsAurA 3s ease-in-out infinite alternate;
}
body .iws-ft .iws-ft-aur i:nth-child(2){
	width:54%; aspect-ratio:1; right:-10%; top:6%;
	background:#12E0FF;
	opacity:.20;
	animation:iwsAurB 4s ease-in-out infinite alternate;
}
body .iws-ft .iws-ft-aur i:nth-child(3){
	width:70%; aspect-ratio:1; left:22%; bottom:-40%;
	background:#1B3FD8;
	opacity:.46;
	animation:iwsAurC 5s ease-in-out infinite alternate;
}

/* Translate only. `alternate` means the path retraces rather than jumping back to the
   start, so there is no seam to see. */
@keyframes iwsAurA{
	from{transform:translate3d(0,0,0)}
	to{transform:translate3d(26%,18%,0)}
}
@keyframes iwsAurB{
	from{transform:translate3d(0,0,0)}
	to{transform:translate3d(-22%,26%,0)}
}
@keyframes iwsAurC{
	from{transform:translate3d(0,0,0)}
	to{transform:translate3d(-18%,-22%,0)}
}

/* Scrim. Measured before it existed: the brightest drifting pixel reached 3.14:1
   against white text at 1440 and 2.74:1 at 390, all below the 4.5:1 floor. A blob can
   wander anywhere, so clamping opacity alone would mean re-measuring after every tweak.
   This fixes the ceiling instead: it sits above the field and below the content, so the
   worst case is bounded by construction. */
body .iws-ft .iws-ft-aur::after{
	content:"";
	position:absolute;
	inset:0;
	background:rgba(7,13,46,.34);
	pointer-events:none;
}

/* Everything else in the card paints above the field. */
body .iws-ft > *:not(.iws-ft-aur){
	position:relative;
	z-index:1;
}

@media(max-width:900px){
	body .thim-ekit__footer__inner{padding:26px}
	body .iws-ft{
		border-radius:22px;
		box-shadow:0 8px 22px -12px rgba(6,14,58,.55),0 2px 6px -4px rgba(6,14,58,.25);
	}
	/* smaller viewport, smaller blur: three blurred layers is where low-end devices
	   start dropping frames, and a 46px radius is doing far more work than a 375px
	   wide card needs. */
	body .iws-ft .iws-ft-aur i{filter:blur(34px)}
}

@media(max-width:560px){
	body .thim-ekit__footer__inner{padding:14px}
	body .iws-ft{
		border-radius:18px;
		box-shadow:0 5px 14px -8px rgba(6,14,58,.5),0 1px 4px -3px rgba(6,14,58,.22);
	}
	body .iws-ft .iws-ft-aur i{filter:blur(26px)}
	/* the footer is very tall once stacked, so the blobs are widened to keep the field
	   reading as one continuous wash rather than three separate spots */
	body .iws-ft .iws-ft-aur i:nth-child(1){width:110%}
	body .iws-ft .iws-ft-aur i:nth-child(2){width:96%}
	body .iws-ft .iws-ft-aur i:nth-child(3){width:120%}
	/* Phone measures tighter than desktop on contrast: 4.23:1 against a 4.5 floor while
	   desktop reads 6.37:1, because the stacked footer puts text over more of the field.
	   A slightly heavier scrim here rather than a weaker field everywhere. */
	body .iws-ft .iws-ft-aur::after{background:rgba(7,13,46,.48)}
}

/* Reduced motion freezes the field at its rest position rather than removing it, so the
   composition is unchanged for anyone who asked for less movement. R6 in 9.1. */
@media(prefers-reduced-motion:reduce){
	body .iws-ft .iws-ft-aur i{animation:none}
}

/* ---- B. #achievers: equal breathing room around the intro paragraph ----
   Measured before: the gap from the highlighted title's ink to the paragraph's first
   line was 2.2px, while the gap from the paragraph's last line to the topmost arc tile
   was 74.1px. Not slightly uneven, 2px against 74px.

   Both are set to 52px. The paragraph gains 50px above (it had margin-top:0, and the
   heading contributes nothing below), and .iwsarc's 58px top margin comes down to 36px,
   which lands the tile 52px under the last line once the tile's own 12px inset inside
   .iwsarc is counted. Net effect on section height is +28px, so the block breathes
   slightly more overall rather than simply being redistributed.

   SCOPED TO #achievers ON PURPOSE: .iwspw__sub is also used in #pathways on the same
   page, and .iwsarc is shared with iws-dome.css. An unscoped rule would move both. */
#achievers .iwspw__sub{margin-top:50px}
#achievers .iwsarc{margin-top:36px}

/* ---- logo size parity, header and footer (29 Jul 2026, trimmed assets) ----
   Both logos now use alpha-bbox TRIMMED files (edge-to-edge ink, no transparent gutter):
     header  iws-logo-navy-trimmed.png   281x113  aspect 2.4867
     footer  iws-logo-white-trimmed.png  299x120  aspect 2.4917
   Because there is no gutter, the CSS box edge IS the visible ink edge, so alignment is
   geometric and needs no compensation. The earlier translateX(-12.541%) hack that offset
   the untrimmed gutter has been REMOVED -- with trimmed files it would over-shift them.
   Height-only sizing with width:auto: the trimmed aspect is ~2.49, so the previous
   explicit 182x48 would distort the mark. At height 48 the two render 119.36 and 119.60
   px wide, matched to a quarter of a pixel.
   If either logo file is ever replaced, re-trim it to its alpha bbox first. */
html body .site-header .phys-logo.phys-logo.phys-logo img,
html body .iws-ft .flogo img{
	height:48px !important;
	width:auto !important;
	max-width:none !important;
	object-fit:contain !important;
	/* vertical centring: as an inline element the logo sat on the text baseline and
	   hung ~1px high of the CTA buttons. block takes it out of baseline alignment so
	   the flex parent centres it on the cross axis. 29 Jul 2026. */
	display:block !important;
}

@media(max-width:900px){
	html body .site-header .phys-logo.phys-logo.phys-logo img,
	html body .iws-ft .flogo img{height:42px !important;}
}

@media(max-width:480px){
	html body .site-header .phys-logo.phys-logo.phys-logo img,
	html body .iws-ft .flogo img{height:36px !important;}
}

/* Post 250's own Elementor data used to carry a `.iws-ft-brand .flogo{margin-left:-32px}`
   flogo pull-left hack, calibrated for some earlier logo width. Removed 28 Jul 2026
   because it pulled the footer logo 32px left of where the matched box sizing above
   puts it, breaking parity with the header logo. This rule makes the corrected
   value explicit rather than relying on an absence of margin. */
html body .iws-ft-brand .flogo{margin-left:0 !important}

/* The logo wrapper is inline-block by default, so it sits on a text baseline and its
   parent .width-logo gains ~2px of descender space (50px box around 48px of logo).
   That left the logo's centre 1px above the CTA buttons. Taking the wrapper out of
   wrapper baseline layout lets the flex parent centre it exactly. 29 Jul 2026. */
html body .site-header .phys-logo.phys-logo{display:block !important;line-height:0 !important;}

/* ---- /faq/ accordion question font (29 Jul 2026, Wave 1) ----
   .acc-q is a <button>. Form controls do NOT inherit font-family from the document,
   so with no font-family declared anywhere the UA stylesheet's Arial was showing on
   all 23 questions. Inter matches the homepage FAQ <summary>, which is the dominant
   pattern for this component. Do not "fix" this by deleting the rule. */
body .acc-q{font-family:var(--iws-font-body)}

/* ---- booking tabs: an unselected tab is not a primary CTA (29 Jul 2026, Wave 1) ----
   iws-global.css paints EVERY .bkt2__tab with the primary CTA gradient. Once the
   active tab was repointed to that same canonical gradient, selected and unselected
   became indistinguishable. This quiets the unselected ones so the active state is
   carried by the gradient, which is what a tab row should do.
   (0,2,2) beats the consolidation's (0,1,2); !important is needed to match it. */
html body .bkt2__tab:not(.is-active){
	background-image:none !important;
	background-color:transparent !important;
	color:#475569 !important;
	box-shadow:none !important;
}
html body .bkt2__tab:not(.is-active):hover{
	background-color:#fff !important;
	color:#0A1776 !important;
}

/* ==== WAVE 2 (29 Jul 2026) — the signature devices reach the whole site ==== */

/* ---- R2: the marker highlight now works on dark grounds (29 Jul 2026) ----
   iws-global.css defends the block colour with
     html body .hl.hl.hl.hl.hl.hl:not(.hl--amber){background-image:…!important}
   -- (0,7,2) with !important. That rule is doing a real job (it stops page-level
   inline styles repainting the marker), so it is left in place rather than unwound.

   The casualty was the design system's OWN dark-ground inversion (4.3b: periwinkle
   ground, Royal Blue text on dark). `.on-dark .hl` is only (0,2,0) and non-important,
   so it lost to the wall and the inversion was dead SITE-WIDE, including the homepage
   hero -- not just on the inner pages.

   This restores it at (0,8,2), one class above the wall, for every dark ground the site
   actually has: the three the design system already named, plus the six inner-page hero
   families. Yes, it is an ugly selector. It is ugly because it has to be exactly one
   step above a deliberate wall, and writing it any other way would silently lose again.

   WAVE 4 RETIRES THIS: when the hero families collapse to one component and carry a
   single `.on-dark` class, this whole block becomes the one selector the design system
   already specifies. */
html body .on-dark   .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .iws-dark  .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .ph        .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .au-hero   .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .pg-hero   .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .pf-hero   .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .bph       .hl.hl.hl.hl.hl.hl:not(.hl--amber),
html body .iws-ss-hero .hl.hl.hl.hl.hl.hl:not(.hl--amber){
	background-image:linear-gradient(90deg,var(--iws-peri,#CFE0FF) 0%,#EAF1FF 100%)!important;
}

/* The two text states that go with the inverted block. Before the sweep arrives the
   phrase must stay legible on navy (white); once the block is painted the text sits on
   periwinkle and must flip to Royal Blue. Both at (0,9,2) so neither can be lost. */
html body .on-dark   .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .iws-dark  .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .ph        .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .au-hero   .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .pg-hero   .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .pf-hero   .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .bph       .hl.hl.hl.hl.hl.hl:not(.is-in),
html body .iws-ss-hero .hl.hl.hl.hl.hl.hl:not(.is-in){color:#fff!important;}

html body .on-dark   .hl.hl.hl.hl.hl.hl.is-in,
html body .iws-dark  .hl.hl.hl.hl.hl.hl.is-in,
html body .ph        .hl.hl.hl.hl.hl.hl.is-in,
html body .au-hero   .hl.hl.hl.hl.hl.hl.is-in,
html body .pg-hero   .hl.hl.hl.hl.hl.hl.is-in,
html body .pf-hero   .hl.hl.hl.hl.hl.hl.is-in,
html body .bph       .hl.hl.hl.hl.hl.hl.is-in,
html body .iws-ss-hero .hl.hl.hl.hl.hl.hl.is-in{color:var(--iws-royal,#0A1776)!important;}

/* Reduced motion never runs the sweep, so the block is painted from the start and the
   text must already be Royal Blue rather than the pre-sweep white. */
@media(prefers-reduced-motion:reduce){
	html body .on-dark .hl.hl.hl.hl.hl.hl,
	html body .iws-dark .hl.hl.hl.hl.hl.hl,
	html body .ph .hl.hl.hl.hl.hl.hl,
	html body .au-hero .hl.hl.hl.hl.hl.hl,
	html body .pg-hero .hl.hl.hl.hl.hl.hl,
	html body .pf-hero .hl.hl.hl.hl.hl.hl,
	html body .bph .hl.hl.hl.hl.hl.hl,
	html body .iws-ss-hero .hl.hl.hl.hl.hl.hl{color:var(--iws-royal,#0A1776)!important;}
}

/* ---- R3: one eyebrow, one size ----
   iws-global.css's July consolidation unified the typeface and colour but deliberately
   declined to force size, so a hero eyebrow kept "its intended scale". The result is two
   sizes on one page: measured on /programmes/a-level/, `.ey` 13px and `.ph-eye` 10.88px.
   IWS_DESIGN.md 4.1 and 14 both specify 11px, which the consolidation already applies to
   the classes it does cover. These are the classes it missed.

   Only SIZE is set here. Colour is deliberately left alone: `.ph-eye` is already Sky
   Light on its dark ground and `.ey` already Sky on light, which is exactly right, and
   forcing one colour across both grounds would break that. */
html body .ph-eye,
html body .bph-eye,
html body .pg-hero-eye,
html body .iws-ss-ey,
html body .ey{
	font-family:var(--iws-font-display)!important;
	font-weight:700!important;
	font-size:11px!important;
	letter-spacing:0.16em!important;
	text-transform:uppercase!important;
}

/* ---- R3 pass 2, 29 Jul 2026: the five eyebrows the first pass missed ----
   Each verified in the DOM as a genuine eyebrow: uppercase, tracked, sitting
   directly above an h2 or h3. Measured BEFORE this rule:
     .iwsxp__kicker  11.5px / 600 / Sora   homepage explainer
     .pw-eyc         13px   / 700 / Inter  /pathways/
     .vts__eye       16px   / 400 / Sora   /results/       <- one class,
     .vts__eye       13px   / 700 / Sora   /reviews/       <- two sizes
     .ac-eye         10.4px / 700 / Inter  /accreditations/
   IWS_DESIGN.md R3 and 14 both specify one eyebrow at 11px, Sora, 700,
   0.16em, uppercase. Size, family, weight and tracking are forced here.
   COLOUR is deliberately left alone, for the reason in the block above:
   these sit on different grounds and one forced colour would break the
   light/dark pair. .iwsxp__kicker ships #5A6488, not a palette token;
   that is an R5 item for the Wave 3 token sweep, not a size fix. */
html body .iwsxp__kicker,
html body .pw-eyc,
html body .vts__eye,
html body .ac-eye{
	font-family:var(--iws-font-display)!important;
	font-weight:700!important;
	font-size:11px!important;
	letter-spacing:0.16em!important;
	text-transform:uppercase!important;
}

/* ---- .vts video-testimonial carousel, moved to file 29 Jul 2026 ----
   BUG THIS FIXES: this component ships on BOTH /results/ and /reviews/, but its
   CSS lived only inside /reviews/ own _elementor_data. /results/ rendered the same
   JS-built markup with NO layout CSS: .vts__row computed display:block instead of
   flex, so six cards stacked at 1440x1495 each and the page ran 13,989px tall
   against /reviews/ 5,543px. Measured: /results/ got 1 carousel rule, /reviews/ 8.
   Copied VERBATIM so /reviews/ cannot shift. On /reviews/ the inline block still
   wins on source order (same 0,1,0 specificity, later in the document), so that
   page is untouched until the inline copy is removed.
   KNOWN, NOT FIXED HERE (deliberate, so the two pages stay identical):
     .vts__sub #52608f and .vts__row scrollbar #b9c4ee are not palette tokens (R5)
     .vts__tag sets #241a00 text on a Sky Blue fill, which 3.4 forbids
   Fix those once this file is the single owner, not before. */
.vts{background:#F8FAFC;padding:64px 0 0;font-family:inherit}.vts *{box-sizing:border-box}.vts__in{max-width:1180px;margin:0 auto;padding:0 24px}.vts__eye{text-transform:uppercase;letter-spacing:.18em;font-size:13px;font-weight:700;color:#0067E0;margin:0 0 10px;text-align:center}.vts__title{font-size:clamp(26px,3.4vw,40px);font-weight:800;color:#0A1776;margin:0 0 8px;text-align:center;line-height:1.14}.vts__sub{font-size:16px;color:#475569;text-align:center;margin:0 auto 30px;max-width:600px}.vts__wrap{position:relative;padding:0 46px}.vts__row{display:flex;gap:20px;overflow-x:auto;padding:6px 4px 16px;scroll-snap-type:x mandatory;scrollbar-width:thin;scrollbar-color:#CFE0FF transparent}.vts__row::-webkit-scrollbar{height:8px}.vts__row::-webkit-scrollbar-thumb{background:#CFE0FF;border-radius:8px}.vts__card{flex:0 0 auto;width:230px;aspect-ratio:9/16;border-radius:18px;overflow:hidden;position:relative;scroll-snap-align:start;cursor:pointer;background:#0A1776;box-shadow:0 10px 24px rgba(10,23,118,.16);text-decoration:none;display:block}.vts__thumb{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;display:block}.vts__card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,13,54,0) 48%,rgba(8,13,54,.85) 100%);z-index:1}.vts__play{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.92);display:flex;align-items:center;justify-content:center;z-index:2;transition:transform .2s,background .2s}.vts__play svg{width:22px;height:22px;fill:#0A1776;margin-left:3px}.vts__card:hover .vts__play{transform:translate(-50%,-50%) scale(1.08);background:#fff}.vts__tag{position:absolute;top:12px;left:12px;z-index:2;background:rgba(10,23,118,.96);color:#fff;font-size:10px;font-weight:800;letter-spacing:.06em;padding:4px 8px;border-radius:6px}.vts__meta{position:absolute;left:0;right:0;bottom:0;padding:0 15px 16px;z-index:2}.vts__name{display:block;color:#fff;font-weight:800;font-size:15.5px;line-height:1.2}.vts__role{display:block;color:#7BA7FF;font-size:12px;margin-top:3px;line-height:1.3}.vts__card iframe{position:absolute;inset:0;width:100%;height:100%;border:0;z-index:5}.vts__nav{position:absolute;top:46%;transform:translateY(-50%);z-index:6;width:40px;height:40px;border-radius:50%;border:1px solid rgba(10,23,118,.10);background:#fff;box-shadow:0 5px 14px rgba(10,23,118,.16);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#0A1776;transition:transform .2s,background .2s,color .2s}.vts__nav:hover{background:#0A1776;color:#fff;border-color:#0A1776;transform:translateY(-50%) scale(1.08)}.vts__nav svg{width:18px;height:18px}.vts__prev{left:2px}.vts__next{right:2px}.vts__wrap::after{display:none}@media(max-width:768px){.vts{padding:46px 0 0}.vts__wrap{padding:0}.vts__card{width:200px}.vts__nav{display:none}}

/* ---- .iws-team: reserve two lines for the name, 29 Jul 2026 ----
   Added when Elsie Eayrs and Anika van der Westhuizen joined the grid.
   "Anika van der Westhuizen" wraps to two lines, and because CSS Grid sizes a
   row to its tallest item, that pushed the whole second row to 465px against
   the first row 438px. Reserving two lines on the name makes card height
   independent of name length, so any future addition drops in without
   re-tiering the grid. min-height, not height: a three-line name still grows. */
html body .iws-team .c .b h3{min-height:2.34em;display:flex;align-items:center;justify-content:center;margin-top:0;}

/* ==== PERF 1: retire the 213 KB Thim icon webfont ====================== 29 Jul 2026
   MEASURED BEFORE: `thim-ekits.woff2` was the single heaviest file on the site at
   213 KB, six times Elementor's entire 36 KB footprint.

   MEASURED USAGE: exactly two glyphs render in that family across the whole site.
     U+F062  the scroll-to-top arrow   `.tk-arrow-up::before`
     U+F104  the mobile menu back arrow `.thim-ekits-menu__icon-menu-back::before`
   The nav dropdown chevrons also carry the family but their `content` is an empty string
   and they are scaled to `scaleX(0)`, so they paint nothing; the visible nav chevrons are
   inline SVG. That is 213 KB for two arrows, about 106 KB each.

   WHY THIS APPROACH: a webfont is only fetched when something actually needs a glyph from
   it. Replace the two glyphs and the browser never requests the file. So no plugin file is
   edited, nothing is dequeued, and a Thim kit update cannot undo it.

   The replacements are SVG masks rather than background images, so each arrow inherits
   `currentColor` and keeps working on both the dark scroll-button and the mobile menu
   panel, which are different colours. Each mask is about 200 bytes inline. */
html body .tk-arrow-up::before,
html body .thim-ekits-menu__icon-menu-back::before{
	content:"" !important;
	/* NOT `inherit`. The first attempt used inherit and failed: thim-ekits-icons.min.css
	   sets `font-family:thim-ekits!important` on the ELEMENT via `[class*=" tk-"]`, so
	   `inherit` on the pseudo resolved straight back to thim-ekits and the 217 KB file
	   still downloaded. An explicit family is required, and the element itself has to be
	   overridden too, which the block below does. */
	font-family:system-ui,-apple-system,sans-serif !important;
	display:inline-block;
	width:1em;
	height:1em;
	vertical-align:-.125em;
	background-color:currentColor;
	-webkit-mask-repeat:no-repeat;
	mask-repeat:no-repeat;
	-webkit-mask-position:center;
	mask-position:center;
	-webkit-mask-size:contain;
	mask-size:contain;
}

/* U+F062 arrow-up */
html body .tk-arrow-up::before{
	-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 13.5V3.2M3.4 7.8L8 3.2l4.6 4.6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M8 13.5V3.2M3.4 7.8L8 3.2l4.6 4.6' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* U+F104 angle-left */
html body .thim-ekits-menu__icon-menu-back::before{
	-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M10.2 2.8L5 8l5.2 5.2' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M10.2 2.8L5 8l5.2 5.2' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}

/* Belt and braces: nothing else may resolve to the retired family, or the 213 KB comes
   straight back. The nav chevron already paints nothing; this makes that explicit. */
/* The ELEMENT-level override. This is the one that actually stops the download:
   `thim-ekits-icons.min.css` targets `[class*=" tk-"]` with !important at (0,1,0), so a
   (0,1,2) selector with !important beats it. Both the element and its pseudos must be
   covered, since the pseudo inherits from the element. */
html body .tk,
html body [class*=" tk-"],
html body [class^="tk-"],
html body .thim-ekits-menu__icon-menu-back,
html body .thim-ekits-menu__nav-link::after,
html body [class*="thim-ekits"]::before,
html body [class*="thim-ekits"]::after,
html body .tk::before,
html body .tk::after{
	font-family:system-ui,-apple-system,sans-serif !important;
}

/* PERF 2 (intl-tel-input, 122 KB) was drafted here and REMOVED before shipping.
   The draft hid `.iti__flag` until the dropdown opened. That would not have helped: the
   SELECTED flag is visible whenever a phone field is on the page, so the 69 KB sprite
   would load regardless. Deferring it needs the JS side handled in PHP, and first it needs
   evidence of WHICH pages actually render a phone field. Tracked in TASKS.md instead of
   shipped on a guess. */

/* ---- .iws-ctahd  (homepage: the question above the contact tabs) ----------
   Added 31 Jul 2026. Burak asked for "a big title question, something
   psychological" above the Send a Message / Book a Call / WhatsApp tabs, with
   the important text on an orange gradient block.

   It sits in the HOMEPAGE container fc3185f, NOT in the shared [iws_lead_block]
   (post 36305), because 13 published pages embed that block and it would have
   appeared on all of them uninvited.

   The marker itself needs no CSS here: .hl / .hl--amber live in iws-global.css
   and the site-wide sweep in iws-global.js picks up every .hl on the page, so
   this heading gets the scroll motion for free. h2:has(.hl) already forces the
   1.3 line height that 4.3b requires. */
.iws-ctahd{padding:0 0 30px;font-family:inherit;text-align:center}
.iws-ctahd .in{max-width:1180px;margin:0 auto;padding:0 24px}
.iws-ctahd .ey{text-transform:uppercase;letter-spacing:.14em;font-size:13px;font-weight:700;color:#0A1776;margin:0 0 10px}
.iws-ctahd h2{font-size:clamp(30px,3.9vw,46px);color:#0A1776;font-weight:800;margin:0 0 14px}
.iws-ctahd .sub{max-width:600px;margin:0 auto;color:#475569;font-size:17px;line-height:1.62}
@media(max-width:560px){
.iws-ctahd h2{font-size:clamp(26px,6.4vw,34px)}
.iws-ctahd .sub{font-size:16px}
}

/* ---- The HOMEPAGE hero marker is BLUE, not the inverted periwinkle block ----
   Burak, 2 Aug 2026, looking at "unlimited 1:1 support" on the rebuilt hero:
   "make the highlighting blue gradient like the previous homepage hero section".

   This is a DEPARTURE from IWS_DESIGN 4.3b, which says a marker on a dark ground
   inverts to a Periwinkle block with Royal Blue text. He owns that file and ruled
   for blue here. It is scoped to `.iwshero` ONLY: `.iwshero` was lifted out of the
   four shared selector lists above so the other EIGHT dark-ground families
   (.on-dark, .iws-dark, .ph, .au-hero, .pg-hero, .pf-hero, .bph, .iws-ss-hero)
   keep the documented inversion untouched.

   ⚠️ WHY IT LIVES HERE AND NOT IN iws-home.css. The block above is a deliberate
   specificity wall at (0,8,2) WITH !important, and iws-sections.css loads AFTER
   iws-home.css. An edit to the hero rule in iws-home.css (0,2,1) cannot win and
   silently did nothing when tried; the served file was correct and the page still
   painted periwinkle. Match the wall or do not bother.

   Contrast, measured before shipping, against 3.5's rule that a gradient's
   LIGHTEST stop must clear AA: white on Sky #0067E0 = 5.23:1 PASS; white on Royal
   #0A1776 = 15.03:1. Pre-sweep stays white on the navy photograph (~15:1); Royal
   Blue there would be 1.26:1, which is why a plain copy of the light-ground rule
   would have been unreadable. */
html body .iwshero .hl.hl.hl.hl.hl.hl:not(.hl--amber){
	background-image:linear-gradient(90deg,var(--iws-royal,#0A1776) 0%,var(--iws-sky,#0067E0) 100%)!important;
}
html body .iwshero .hl.hl.hl.hl.hl.hl:not(.is-in){color:#fff!important;}
html body .iwshero .hl.hl.hl.hl.hl.hl.is-in{color:#fff!important;}
@media(prefers-reduced-motion:reduce){
	html body .iwshero .hl.hl.hl.hl.hl.hl{color:#fff!important;}
}


/* ══════════════════════════════════════════════════════════════════════════
   .iwsld — THE CAPTURE-FIRST LEAD JOURNEY. 2 Aug 2026, Burak-approved plan
   (Paid Ads/LEAD_JOURNEY_PLAN.md §5a) built from the approved mockup.
   Replaces the .bkt2 tab block on the shared lead source (post 36305, embedded
   on 13 pages). Step 1 is the CF7 form (32659, now 6 fields); step 2 appears
   after wpcf7mailsent (controller at the foot of iws-page.js).
   Tokens only (R5): Royal/Sky/Navy/Glow/Periwinkle + --iws-grad-cta amber.
   Radius 8/14/22/999 (R4). Class family verified FREE across all sheets.
   ⚠️ RUCSS safelist needs `iwsld` before this can ever be enabled on live.
   ══════════════════════════════════════════════════════════════════════════ */
.iwsld{width:100%;}
.iwsld__grid{
  display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);
  gap:34px;align-items:start;max-width:1180px;margin:0 auto;
}
.iwsld__card{
  background:#fff;border:1px solid #E3E8F4;border-radius:22px;
  box-shadow:0 2px 4px rgba(16,30,90,.04),0 24px 48px -18px rgba(16,30,90,.14);
  padding:28px 26px;
}
.iwsld__steps{
  display:flex;gap:10px;align-items:center;margin:0 0 18px;
  font-family:var(--iws-font-display,Sora,sans-serif);font-size:12.5px;font-weight:600;
  color:#64748B;
}
.iwsld__steps .is-on{color:var(--iws-royal,#0A1776);}
.iwsld__steps i{flex:1;height:3px;border-radius:999px;background:#E3E8F4;}
.iwsld.is-2 .iwsld__steps span:first-child{color:#64748B;}
.iwsld.is-2 .iwsld__steps span:last-child{color:var(--iws-royal,#0A1776);}
.iwsld.is-2 .iwsld__steps i{background:linear-gradient(90deg,var(--iws-royal,#0A1776),var(--iws-sky,#0067E0));}

/* the form: 16px inputs kill the iOS focus zoom the old 15px block caused */
.iwsld .iwsf-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;}
.iwsld .wpcf7 p{margin:0 0 14px;}
.iwsld .wpcf7 label{font-weight:600;font-size:14px;color:var(--iws-royal,#0A1776);}
.iwsld .wpcf7 .req{color:var(--iws-amber-ink,#B45309);margin-left:2px;}
.iwsld .wpcf7 input:not([type=submit]),.iwsld .wpcf7 select,.iwsld .wpcf7 textarea{
  width:100%;font-size:16px;line-height:1.3;color:#15203C;margin-top:5px;
  padding:12px 13px;border:1px solid #E3E8F4;border-radius:8px;background:#fff;
  min-height:48px;
}
.iwsld .wpcf7 input:focus,.iwsld .wpcf7 select:focus{
  outline:3px solid rgba(0,103,224,.35);outline-offset:1px;border-color:var(--iws-sky,#0067E0);
}
.iwsld .wpcf7 input.wpcf7-submit{
  width:100%;min-height:52px;margin-top:4px;border:0;border-radius:8px;cursor:pointer;
  font-family:var(--iws-font-display,Sora,sans-serif);font-weight:600;font-size:16px;color:#fff;
  background-color:transparent;background-image:var(--iws-grad-cta,linear-gradient(120deg,#B45309,#7C2D12));
  box-shadow:0 6px 18px rgba(124,45,18,.24);
}
.iwsld .wpcf7 input.wpcf7-submit:focus-visible{outline:3px solid var(--iws-royal,#0A1776);outline-offset:2px;}
.iwsld__micro{margin:12px 0 0;font-size:13px;color:#64748B;text-align:center;}

/* step 2 */
.iwsld__thanks{
  font-family:var(--iws-font-display,Sora,sans-serif);font-size:22px;font-weight:700;
  color:#15203C;margin:0 0 6px;
}
.iwsld__thanks:focus{outline:none;}
.iwsld__sub{margin:0 0 20px;font-size:15px;color:#64748B;}
.iwsld__choice{
  display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 18px;align-items:center;
  border:1px solid #E3E8F4;border-radius:14px;padding:16px 18px;margin:0 0 12px;
}
.iwsld__choice h4{
  font-family:var(--iws-font-display,Sora,sans-serif);font-size:16px;font-weight:700;
  color:#15203C;margin:0 0 3px;
}
.iwsld__choice p{margin:0;font-size:13.5px;color:#64748B;}
.iwsld__btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:46px;padding:0 20px;border-radius:8px;border:0;cursor:pointer;
  font-family:var(--iws-font-display,Sora,sans-serif);font-weight:600;font-size:15px;
  text-decoration:none;
}
.iwsld__btn--primary{
  color:#fff;background-color:transparent;
  background-image:var(--iws-grad-cta,linear-gradient(120deg,#B45309,#7C2D12));
  box-shadow:0 6px 18px rgba(124,45,18,.24);
}
.iwsld__btn--ghost{
  color:var(--iws-royal,#0A1776);background:transparent;border:1.5px solid var(--iws-royal,#0A1776);
}
.iwsld__btn--wa{color:#0E7A43;background:transparent;border:1.5px solid #25D366;}
.iwsld__btn:focus-visible{outline:3px solid var(--iws-royal,#0A1776);outline-offset:2px;}
.iwsld__calwrap{border:1px solid #E3E8F4;border-radius:14px;overflow:hidden;margin:0 0 12px;}
.iwsld__consent{padding:20px;background:#F5F8FF;text-align:center;}
.iwsld__consent p{margin:0 0 12px;font-size:14px;color:#64748B;}

/* the rail */
.iwsld__rail{
  background-image:linear-gradient(150deg,#070D2E 0%,#13266B 100%);
  border-radius:22px;color:var(--iws-peri,#CFE0FF);padding:26px 24px;
}
.iwsld__rail h3{
  font-family:var(--iws-font-display,Sora,sans-serif);font-size:18px;font-weight:700;
  color:#fff;margin:0 0 16px;
}
.iwsld__rail ol{list-style:none;margin:0;padding:0;counter-reset:ls;}
.iwsld__rail li{
  counter-increment:ls;display:grid;grid-template-columns:32px minmax(0,1fr);gap:12px;
  margin:0 0 14px;font-size:14px;line-height:1.5;
}
.iwsld__rail li::before{
  content:counter(ls);display:flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:999px;
  font-family:var(--iws-font-display,Sora,sans-serif);font-weight:700;color:#fff;
  background:rgba(207,224,255,.16);border:1px solid rgba(207,224,255,.34);
}
.iwsld__rail b{display:block;color:#fff;font-weight:600;}
.iwsld__adv{
  display:flex;gap:12px;align-items:center;margin:18px 0 0;padding-top:16px;
  border-top:1px solid rgba(207,224,255,.22);
}
.iwsld__adv img{width:56px;height:56px;border-radius:999px;object-fit:cover;flex:0 0 56px;}
.iwsld__adv p{margin:0;font-size:13px;line-height:1.4;}
.iwsld__adv b{display:block;color:#fff;font-size:14.5px;}
.iwsld__trust{
  display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:16px;padding-top:14px;
  border-top:1px solid rgba(207,224,255,.22);font-size:12.5px;font-weight:600;
}
.iwsld__trust span{display:flex;align-items:center;gap:7px;}
.iwsld__trust span::before{
  content:"";width:8px;height:8px;border-radius:999px;flex:0 0 8px;
  background:linear-gradient(140deg,var(--iws-sky,#0067E0),var(--iws-peri,#CFE0FF));
}

@media (max-width:900px){
  .iwsld__grid{grid-template-columns:minmax(0,1fr);gap:22px;}
}
@media (max-width:560px){
  .iwsld .iwsf-grid{grid-template-columns:1fr;}
  .iwsld__choice{grid-template-columns:minmax(0,1fr);}
  .iwsld__choice .iwsld__btn{width:100%;margin-top:8px;}
}

/* iwsld: at phone widths the embedding Elementor containers provide NO side
   padding (measured 2 Aug: card 360px in a 360px viewport, flush to both
   edges), so the component carries its own gutter below 900px. Desktop keeps
   none, because there the page container's gutters are real. */
@media (max-width:900px){
  .iwsld{padding-left:16px;padding-right:16px;box-sizing:border-box;}
}


/* ══════════════════════════════════════════════════════════════════════════
   .iwspr — /prospectus/, the gated lead magnet. 3 Aug 2026.
   The capture itself is .iwsld (R1, one component with variants); this file
   only adds the hero that sits above it. Split hero, copy left, the REAL
   rendered cover right — never a div mockup of a document we actually own.
   Tokens only (R5), radius 8/14/22 (R4), 1180 container (R7), settle (R6).
   ⚠️ RUCSS safelist needs `iwspr` alongside `iwsld`.
   ══════════════════════════════════════════════════════════════════════════ */
.iwspr{
  display:block;padding:0 0 72px;
  background-image:linear-gradient(180deg,#F8FAFC 0%,#FFFFFF 46%);
}
.iwspr__hero{
  max-width:1180px;margin:0 auto;padding:56px 24px 44px;
  display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);
  gap:48px;align-items:center;
}
.iwspr__ey{
  margin:0 0 14px;font-family:var(--iws-font-display,Sora,sans-serif);
  font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
  color:var(--iws-sky,#0067E0);
}
.iwspr__h1{
  margin:0 0 16px;font-family:var(--iws-font-display,Sora,sans-serif)!important;
  font-weight:700;font-size:clamp(30px,3.6vw,44px);line-height:1.14;
  letter-spacing:-.015em;color:#15203C;text-wrap:balance;
}
.iwspr__lede{margin:0 0 22px;max-width:52ch;font-size:16.5px;line-height:1.62;color:#475569;}

/* The three facts are the proof, so they are numbers first and label second.
   Not an icon grid: three real figures from the document itself. */
.iwspr__facts{
  display:flex;flex-wrap:wrap;gap:14px 34px;margin:0;padding:0;list-style:none;
}
.iwspr__facts li{
  display:flex;align-items:baseline;gap:8px;
  font-size:13.5px;color:#475569;
}
.iwspr__facts b{
  font-family:var(--iws-font-display,Sora,sans-serif);font-size:26px;font-weight:700;
  color:var(--iws-royal,#0A1776);font-variant-numeric:tabular-nums;line-height:1;
}

/* The cover sits slightly off-square with a real shadow: it is a document, so
   it should read as an object on the page rather than a flat image block. */
.iwspr__cover{margin:0;}
.iwspr__cover img{
  display:block;width:100%;height:auto;border-radius:14px;
  border:1px solid rgba(16,30,90,.10);
  box-shadow:0 2px 4px rgba(16,30,90,.05),0 30px 60px -22px rgba(16,30,90,.34);
}

/* the capture sits in the same 1180 rail as everything else */
.iwspr .iwsld{max-width:1180px;margin:0 auto;padding:0 24px;}

@media (max-width:900px){
  .iwspr__hero{grid-template-columns:minmax(0,1fr);gap:30px;padding:40px 20px 32px;}
  /* the cover leads on a phone: it is the thing being offered */
  .iwspr__cover{order:-1;max-width:420px;}
  .iwspr .iwsld{padding:0;}
}
@media (max-width:560px){
  .iwspr__facts{gap:12px 22px;}
  .iwspr__facts b{font-size:22px;}
}
