/* Oriental Spa — brand system, September 2026
 * GENERATED by build-brand-css.py. Do not hand-edit; edit the generator.
 * Load this LAST, after every other stylesheet.
 *
 * Inks (guidelines section 2). Hex comes from the guidelines table, never from a
 * CMYK conversion — naive conversion of C80 M20 Y100 K70 yields ~#0F3D00, not #004214.
 *   Dark Green #004214  primary — the mark, headings, secondary emphasis
 *   Green      #2D803B  accent, primary CTA — never the mark
 *   Grey       #939598  rules and dividers ONLY; 3.00:1 on white, fails body text
 *   Black      #231F20  renders #231F20, not #000000. That is correct.
 * Gold #C9A227 is a FOIL FINISH, not an ink, and has no token here — "Gold as
 * CMYK or hex is never permitted" (section 6).
 *
 * Type: Philosopher (SIL OFL). One display face and one body face; it does both.
 * Headings Bold, body Regular at 16px+ on screen, emphasis Italic.
 * Never fake-italicise or fake-bold — all four real files are self-hosted below.
 */

:root{
  --os-dark-green:#004214;
  --os-green:#2D803B;
  --os-grey:#939598;
  --os-black:#231F20;
  --os-paper:#FFFFFF;
  --os-font:'Philosopher',Georgia,serif;
}


/* --- Philosopher, self-hosted, true weights --- */
@font-face{font-family:'Philosopher';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:700;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:700;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

/* --- Retired faces, aliased across the full weight axis --- */
/* Philosopher */
@font-face{font-family:'Philosopher';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Philosopher';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Montserrat */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Noto Sans */
@font-face{font-family:'Noto Sans';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Noto Sans';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Noto Sans';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Noto Sans';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Noto Sans';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Noto Sans';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Noto Sans';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Noto Sans';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Playfair Display */
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Playfair Display';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Playfair Display';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Lato */
@font-face{font-family:'Lato';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Lato';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Lato';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Lato';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Lato';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Lato';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Lato';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Lato';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Dancing Script */
@font-face{font-family:'Dancing Script';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Dancing Script';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Dancing Script';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Dancing Script';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Dancing Script';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Dancing Script';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Dancing Script';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Dancing Script';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Roboto */
@font-face{font-family:'Roboto';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Roboto';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Roboto';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Roboto Slab */
@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Roboto Slab';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto Slab';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto Slab';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Roboto Slab';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Roboto Slab';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Vidaloka */
@font-face{font-family:'Vidaloka';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Vidaloka';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Vidaloka';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Vidaloka';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Vidaloka';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Vidaloka';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Vidaloka';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Vidaloka';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* Poppins */
@font-face{font-family:'Poppins';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Poppins';font-style:normal;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Poppins';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Poppins';font-style:italic;font-weight:100 500;font-display:swap;src:url('fonts/philosopher-400-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-normal-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Poppins';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'Poppins';font-style:italic;font-weight:600 900;font-display:swap;src:url('fonts/philosopher-700-italic-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

/* --- Anchored header -----------------------------------------------------
 * The nav stays reachable on a 10-screen home page. Astra's transparent header is
 * position:absolute over the hero, so it becomes `fixed` to keep the overlay while
 * anchoring; every other header is in flow and only needs `sticky`.
 */
.ast-primary-header-bar,.os-header{position:sticky;top:0;z-index:900;
  transition:background-color .2s ease,box-shadow .2s ease;}
body.ast-theme-transparent-header:not(.ast-header-break-point) .ast-primary-header-bar{
  position:fixed;top:0;left:0;right:0;width:100%;}

/* Past the hero the bar has body copy behind it, so it takes a solid ground. */
html.os-stuck .ast-primary-header-bar,
html.os-stuck .os-header{background:#FFFFFF!important;box-shadow:0 1px 0 #939598;}

@media (prefers-reduced-motion:reduce){
  .ast-primary-header-bar,.os-header{transition:none;}
}

/* --- Header lockup -------------------------------------------------------
 * Astra serves a TRANSPARENT header: at desktop widths it is position:absolute
 * over the hero, so the logo sits directly on a photograph. Dark Green on a
 * busy background is a section 6 "Never" — the reversed lockup is the supplied
 * answer, so both files ship and CSS picks one. No filter, no recolour: the
 * artwork is never altered, only selected.
 *
 * Astra's own JS puts .ast-header-break-point on <body> at mobile widths, where
 * the header becomes position:relative on white — so the dark lockup is correct
 * there, and on any page without .ast-theme-transparent-header.
 *
 * Size: 200px wide (160 mobile), against a 64px-wide minimum and 90 recommended
 * (section 4). Intrinsic width/height stay the artwork's own 672x120 and CSS sets
 * width with height:auto, so no squash can creep in.
 */
.custom-logo-link img,.custom-logo,.os-logo-rev{
  width:200px!important;max-width:200px!important;height:auto!important;display:block;}
.os-logo-rev{display:none!important;}

/* `os-overhero` is set by os-sticky-header.js only when a photograph or dark ground
   is MEASURED behind the bar. The body class was the old test and it lied: /services
   carries ast-theme-transparent-header but opens on white, so the reversed lockup
   rendered white-on-white and disappeared. Default is the dark lockup — the safe
   direction, since Dark Green on white is always legible. */
html.os-overhero:not(.ast-header-break-point) .custom-logo{display:none!important;}
html.os-overhero:not(.ast-header-break-point) .os-logo-rev{display:block!important;}

@media (max-width:480px){
  .custom-logo-link img,.custom-logo,.os-logo-rev{width:160px!important;max-width:160px!important;}
}

/* --- Header navigation ---------------------------------------------------
 * There was no colour rule for the nav links at all: they inherited Astra's white
 * from the transparent-header theme and KEPT it once the bar went solid white, so
 * the whole menu vanished on scroll and on any page that opens on white.
 *
 * Bound to the same measured `os-overhero` class as the lockup, so the type and the
 * mark can never disagree about what is behind them. Dark Green is the default —
 * legible on white, which is the state that cannot be got wrong.
 */
html body .main-header-menu .menu-link,
html body .main-header-menu > .menu-item > a{
  color:var(--os-dark-green)!important;transition:color .2s ease;}
html body .main-header-menu .menu-item:hover > .menu-link,
html body .main-header-menu .menu-item.current-menu-item > .menu-link{
  color:var(--os-green)!important;}

html.os-overhero body .main-header-menu .menu-link,
html.os-overhero body .main-header-menu > .menu-item > a{color:#FFFFFF!important;}
html.os-overhero body .main-header-menu .menu-item:hover > .menu-link,
html.os-overhero body .main-header-menu .menu-item.current-menu-item > .menu-link{
  color:#FFFFFF!important;text-decoration-color:#FFFFFF;}

/* The SECOND header. brochure, training, booking, gift-voucher and the voucher
 * pages use a hand-written .os-header instead of Astra's, and its own <style>
 * block hardcodes `.os-nav a{color:#fff}` with a text-shadow — white type for
 * ever, whatever is behind it. On those pages the bar sits on white and the menu
 * disappeared exactly like the Astra one did. !important because that rule lives
 * in a page <style> that loads after this file.
 *
 * The Book button keeps white type: it has its own green pill behind it.
 * The lockup needs no rule here — both variants are already in this markup, so
 * the os-overhero swap above covers it.
 */
html body .os-header .os-nav a:not([href="/booking"]){
  color:var(--os-dark-green)!important;text-shadow:none!important;}
html body .os-header .os-nav a:not([href="/booking"]):hover{
  color:var(--os-green)!important;}
html.os-overhero body .os-header .os-nav a:not([href="/booking"]){
  color:#FFFFFF!important;text-shadow:0 1px 3px rgba(0,0,0,.4)!important;}

@media (prefers-reduced-motion:reduce){
  html body .main-header-menu .menu-link{transition:none;}
}

/* Two headers re-set the wordmark in live type beside a lockup that already
 * carries it — section 6, "Never: re-set the wordmark in live type."
 *   .ast-site-title-wrap  Astra's header (index, about, contact, services, …)
 *   .os-logo-text         the custom header on booking, gift-voucher, brochure,
 *                         training, voucher-policy and voucher-payment
 * Hidden from sight, kept in the DOM: the Astra one carries schema.org
 * itemprop="name", and both give the link an accessible name. */
.ast-site-title-wrap,.os-logo-text{position:absolute!important;width:1px;height:1px;margin:-1px;
  padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;}

/* --- One button, eleven class names ------------------------------------
 * Measured before writing this: 11 distinct button classes across the site
 * (elementor-button, osl-btn, bf-btn, oblo-btn, osb-svcbtn, osb-btn, ocb-btn,
 * os-form-btn, os-cta-btn, opro-btn, os-card-btn) rendering at 8 different corner
 * radii — 30, 28, 24, 20, 8, 6, 5 and 3px. Eleven implementations of one control.
 *
 * They are not renamed or refactored: the markup is generated by Elementor and by
 * apiMenuPublish, so a rename would be undone on the next publish. Instead every
 * name resolves to the SAME two roles. Adding a twelfth class means adding it here,
 * not inventing a twelfth appearance.
 *
 *   primary  Green ground, white text  — 4.93:1, passes AA
 *   ghost    Dark Green outline on paper
 */
/* `html body` prefix is load-bearing. These pages carry inline <style> blocks
 * LATER in the document than this sheet, and a later !important at equal
 * specificity wins — 17 of 28 buttons were still ignoring the rule. Raising
 * specificity beats them without depending on load order, which a republish
 * from apiMenuPublish or Elementor could change again. */
html body .elementor-button,html body .osl-btn,html body .bf-btn,
html body .oblo-btn,html body .osb-svcbtn,html body .osb-btn,html body .ocb-btn,
html body .os-form-btn,html body .os-cta-btn,html body .opro-btn,
html body .os-card-btn,html body .osms-btn{
  border-radius:999px!important;
  font-family:var(--os-font)!important;
  font-weight:700!important;
  letter-spacing:.02em!important;
  line-height:1.2!important;
  border-width:1px!important;
  transition:background-color .16s ease,color .16s ease,border-color .16s ease!important;
}
/* One focus treatment everywhere. Several of these had none at all, which is a
   keyboard-only user losing their place. */
html body .elementor-button:focus-visible,html body .osl-btn:focus-visible,
html body .bf-btn:focus-visible,html body .oblo-btn:focus-visible,
html body .osb-svcbtn:focus-visible,html body .osb-btn:focus-visible,
html body .ocb-btn:focus-visible,html body .os-form-btn:focus-visible,
html body .os-cta-btn:focus-visible,html body .opro-btn:focus-visible,
html body .os-card-btn:focus-visible,html body .osms-btn:focus-visible{
  outline:3px solid var(--os-dark-green)!important;
  outline-offset:2px!important;
}
@media (prefers-reduced-motion:reduce){
  html body .elementor-button,html body .osl-btn,html body .bf-btn,html body .oblo-btn,
  html body .osb-svcbtn,html body .osb-btn,html body .ocb-btn,html body .os-form-btn,
  html body .os-cta-btn,html body .opro-btn,html body .os-card-btn,
  html body .osms-btn{transition:none!important;}
}

/* --- Branch picker ---
 * The same idiom as the voucher card: white chips with green type that INVERT to
 * green-on-white when chosen, so the selected branch reads at a glance on paper
 * and on screen. Built on real radios so it is keyboard- and screen-reader-native;
 * the input is visually hidden, never display:none (that removes it from the tab
 * order and from the accessibility tree).
 */
html body .os-branch-pick{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 14px;}
html body .os-branch-pick > span{flex:1 1 150px;position:relative;display:block;}
html body .os-branch-pick input{position:absolute;width:1px;height:1px;opacity:0;
  margin:0;pointer-events:none;}
html body .os-branch-pick label{display:block;text-align:center;cursor:pointer;
  padding:11px 14px;border:1px solid var(--os-grey);border-radius:30px;
  background:#fff;color:var(--os-dark-green);font-family:var(--os-font);
  font-size:15px;line-height:1.2;transition:background .2s,color .2s,border-color .2s;}
html body .os-branch-pick input:checked + label{background:var(--os-green);
  border-color:var(--os-green);color:#fff;}
html body .os-branch-pick input:focus-visible + label{outline:3px solid var(--os-dark-green);
  outline-offset:2px;}
@media (prefers-reduced-motion:reduce){
  html body .os-branch-pick label{transition:none;}
}

/* A fixed header over a page that opens on copy rather than a hero overlaps the
   first thing on the page. os-sticky-header.js sets os-headroom (and the measured
   --os-header-h) only in that case, so pages that WANT the overlap keep it. */
html.os-headroom #content,html.os-headroom .site-content{
  padding-top:var(--os-header-h,88px);}
/* A branch fact that is a SENTENCE, not a banner. The tinted strip that used to
   carry these read as an ad; the facts themselves (training is Plattekloof only,
   a voucher is valid at both) are load-bearing and stay, in the page's own voice. */
html body .os-branchnote{max-width:900px;margin:0 auto 18px;padding:0 20px;
  font-size:15px;line-height:1.6;color:var(--os-black);}
html body .os-branchnote strong{color:var(--os-dark-green);}

/* --- The 922-1100px squeeze ---------------------------------------------
 * Astra swaps to its mobile header at 921px, so from 922px up the FULL desktop
 * nav has to fit — logo, seven links and the Book Now button. Between 922 and
 * about 1100 it does not: the button wraps to a second row and the bar goes from
 * 80px to 122px. Measured at 960px, and it is what a laptop at a half-screen
 * window actually gets. Because the title band's top padding is derived from the
 * header height, the band grew with it — one wrap, two visible faults.
 *
 * Tighten the row rather than add another breakpoint to Astra's: smaller type,
 * tighter gutters, smaller lockup — all still above the 64px lockup minimum.
 */
@media (min-width:922px) and (max-width:1100px){
  html body .ast-primary-header-bar .main-header-menu .menu-link{
    font-size:14px!important;padding-left:9px!important;padding-right:9px!important;}
  html body .ast-primary-header-bar .ast-custom-button,
  html body .ast-primary-header-bar .ast-builder-button-wrap .ast-custom-button,
  html body .ast-primary-header-bar .ast-header-button-1 .ast-custom-button{
    padding:9px 16px!important;font-size:14px!important;white-space:nowrap!important;}
  html body .custom-logo-link img,html body .custom-logo,html body .os-logo-rev{
    width:150px!important;max-width:150px!important;}
  html body .ast-primary-header-bar .site-header-primary-section-left,
  html body .ast-primary-header-bar .site-header-primary-section-right{
    flex-wrap:nowrap!important;}
}

/* --- Inner-page title band ----------------------------------------------
 * Every inner page opened with a 553px title band: 230px of top padding and
 * 190px of bottom around ~133px of words. Now that the photograph runs up under
 * the menu bar there is no white gap to fill, so the band only has to clear the
 * header and breathe a little. Top padding is the MEASURED header height plus
 * 40, so the title can never collide with the bar at any header size.
 * Saves ~240px on every one of these pages before a visitor scrolls.
 */
body.ast-theme-transparent-header:not(.home) #content .elementor-top-section:first-of-type{
  padding-top:calc(var(--os-header-h,80px) + 14px)!important;
  padding-bottom:26px!important;}
/* The title itself was set for a 553px band. At this height it only has to name
   the page, so it comes down with the padding rather than filling the space. */
body.ast-theme-transparent-header:not(.home) #content .elementor-top-section:first-of-type h1,
body.ast-theme-transparent-header:not(.home) #content .elementor-top-section:first-of-type h2{
  font-size:clamp(30px,4.2vw,52px)!important;line-height:1.1!important;margin:0!important;}
body.ast-theme-transparent-header:not(.home) #content .elementor-top-section:first-of-type
  .elementor-divider{padding-top:8px!important;padding-bottom:0!important;}
@media (max-width:921px){
  body.ast-theme-transparent-header:not(.home) #content .elementor-top-section:first-of-type{
    padding-top:calc(var(--os-header-h,80px) + 10px)!important;
    padding-bottom:18px!important;}
}

/* --- Home: choose a branch, above the fold -------------------------------
 * The home page was 8.5 screens and buried the branch choice at y=866 — below
 * the fold on a 900px viewport, so the first decision a visitor has to make was
 * the one thing they could not see. Everything below the chooser duplicated a
 * page already in the nav, so it is gone; what remains is the hero and the
 * chooser, and the hero is capped so both fit one screen.
 *
 * Measured at 1440x900: chooser 492px + footer 121px, so a hero of 42vh (378px)
 * puts the branch tabs AND both call-to-action buttons inside the first screen.
 * Scoped to body.home so no other page's hero changes.
 */
/* The 866px hero was 510px of PADDING — 270 top, 240 bottom — around 356px of
   content. Capping min-height did nothing because the height never came from
   min-height. Budget at 1440x900: hero 56+288+40 = 384, chooser ~480, total 864,
   inside the 900 fold with both buttons visible. */
body.home .elementor-top-section{min-height:0!important;
  padding-top:56px!important;padding-bottom:40px!important;}
body.home .elementor-top-section > .elementor-container{
  min-height:32vh!important;max-height:46vh!important;}
body.home #os-locations{padding-top:18px!important;padding-bottom:18px!important;}
@media (max-width:921px){
  /* On a phone the fold is a different promise — let the hero breathe and let
     the chooser follow it rather than squeezing both into a short viewport. */
  body.home .elementor-top-section{padding-top:40px!important;padding-bottom:32px!important;}
  body.home .elementor-top-section > .elementor-container{
    min-height:34vh!important;max-height:none!important;}
}

/* --- Footer policy links ------------------------------------------------
 * Appointment Times, Cancellation & Refunds, Voucher Terms and Health & Safety
 * were linked from the HOME PAGE ONLY. Trimming the home page to a one-screen
 * chooser would have orphaned four live pages — reachable by typing the URL and
 * no other way. They belong in the footer, which is on every page, and they
 * should have been there all along.
 */
html body .os-footer-links{display:flex;flex-wrap:wrap;justify-content:center;
  gap:6px 20px;margin:0 0 10px;font-size:13px;line-height:1.6;}
html body .os-footer-links a{color:var(--os-dark-green);text-decoration:none;
  border-bottom:1px solid transparent;}
html body .os-footer-links a:hover,html body .os-footer-links a:focus-visible{
  color:var(--os-green);border-bottom-color:currentColor;}

/* --- Type --- */
body,button,input,select,optgroup,textarea{font-family:var(--os-font);}
h1,h2,h3,h4,h5,h6,.elementor-heading-title,.site-title{font-family:var(--os-font);}

