/* ===========================================================================
 * Vuetify 3 compatibility layer for a Vuetify 4 build
 *
 * Rules below are copied verbatim from vuetify@3.13.5 — same declarations,
 * same source order, same media queries — so the cascade behaves as it did
 * on v3. Nothing here is hand-tuned.
 *
 * Two separate v4 changes break a site built against v3:
 *
 *   1. DELETED CLASSES. v4 swapped the Material Design 2 type scale for MD3,
 *      removing text-h1..h6, text-body-1/2, text-subtitle-1/2, text-caption
 *      and text-overline. This site uses them ~247 times, so those elements
 *      silently fell back to browser defaults.
 *
 *   2. LOST !important. v4 moved its rules into @layer vuetify-components
 *      and dropped !important from the utilities, letting the layer carry
 *      priority. But an UNLAYERED stylesheet (assets/css/styles.css, or this
 *      one) outranks a layered rule whatever its specificity — so utilities
 *      like .font-weight-bold and .mb-4 quietly stopped winning arguments
 *      they used to win.
 *
 * font-family is never set here: the site's own Manrope / Fraunces rules in
 * styles.css must keep winning, as they did on v3.
 *
 * Media queries are preserved. Flattening them is not cosmetic — a global
 * .d-md-flex loses to .d-none at every width and blanks out the nav.
 *
 * LOAD ORDER: after vuetify.min.css, before assets/css/styles.css.
 * ========================================================================= */

.bg-white { background-color:#fff!important; color:#000!important; }
.bg-transparent { background-color:initial!important; color:currentColor!important; }
.bg-grey-lighten-5 { background-color:#fafafa!important; color:#000!important; }
.bg-grey-lighten-4 { background-color:#f5f5f5!important; color:#000!important; }
.bg-grey-lighten-3 { background-color:#eee!important; color:#000!important; }
.bg-grey-darken-4 { background-color:#212121!important; color:#fff!important; }
.text-black { color:#000!important; }
.text-white { color:#fff!important; }
.text-grey-lighten-1 { color:#bdbdbd!important; }
.elevation-8 { box-shadow:0 5px 5px -3px var(--v-shadow-key-umbra-opacity,#0003),0 8px 10px 1px var(--v-shadow-key-penumbra-opacity,#00000024),0 3px 14px 2px var(--v-shadow-key-ambient-opacity,#0000001f)!important; }
.elevation-4 { box-shadow:0 2px 4px -1px var(--v-shadow-key-umbra-opacity,#0003),0 4px 5px 0 var(--v-shadow-key-penumbra-opacity,#00000024),0 1px 10px 0 var(--v-shadow-key-ambient-opacity,#0000001f)!important; }
.elevation-3 { box-shadow:0 3px 3px -2px var(--v-shadow-key-umbra-opacity,#0003),0 3px 4px 0 var(--v-shadow-key-penumbra-opacity,#00000024),0 1px 8px 0 var(--v-shadow-key-ambient-opacity,#0000001f)!important; }
.elevation-2 { box-shadow:0 3px 1px -2px var(--v-shadow-key-umbra-opacity,#0003),0 2px 2px 0 var(--v-shadow-key-penumbra-opacity,#00000024),0 1px 5px 0 var(--v-shadow-key-ambient-opacity,#0000001f)!important; }
.elevation-1 { box-shadow:0 2px 1px -1px var(--v-shadow-key-umbra-opacity,#0003),0 1px 1px 0 var(--v-shadow-key-penumbra-opacity,#00000024),0 1px 3px 0 var(--v-shadow-key-ambient-opacity,#0000001f)!important; }
.elevation-0 { box-shadow:0 0 0 0 var(--v-shadow-key-umbra-opacity,#0003),0 0 0 0 var(--v-shadow-key-penumbra-opacity,#00000024),0 0 0 0 var(--v-shadow-key-ambient-opacity,#0000001f)!important; }
.overflow-hidden { overflow:hidden!important; }
.overflow-y-auto { overflow-y:auto!important; }
.d-none { display:none!important; }
.d-inline-block { display:inline-block!important; }
.d-block { display:block!important; }
.d-flex { display:flex!important; }
.d-inline-flex { display:inline-flex!important; }
.flex-column { flex-direction:column!important; }
.flex-grow-1 { flex-grow:1!important; }
.flex-shrink-0 { flex-shrink:0!important; }
.flex-wrap { flex-wrap:wrap!important; }
.justify-end { justify-content:flex-end!important; }
.justify-center { justify-content:center!important; }
.justify-space-between { justify-content:space-between!important; }
.align-start { align-items:flex-start!important; }
.align-end { align-items:flex-end!important; }
.align-center { align-items:center!important; }
.align-baseline { align-items:baseline!important; }
.align-stretch { align-items:stretch!important; }
.align-self-center { align-self:center!important; }
.ga-2 { gap:8px!important; }
.ga-3 { gap:12px!important; }
.ma-0 { margin:0!important; }
.mx-2 { margin-left:8px!important; margin-right:8px!important; }
.mx-4 { margin-left:16px!important; margin-right:16px!important; }
.mx-auto { margin-left:auto!important; margin-right:auto!important; }
.my-1 { margin-bottom:4px!important; margin-top:4px!important; }
.my-4 { margin-bottom:16px!important; margin-top:16px!important; }
.my-6 { margin-bottom:24px!important; margin-top:24px!important; }
.mt-2 { margin-top:8px!important; }
.mt-3 { margin-top:12px!important; }
.mt-4 { margin-top:16px!important; }
.mt-5 { margin-top:20px!important; }
.mt-8 { margin-top:32px!important; }
.mt-auto { margin-top:auto!important; }
.mr-1 { margin-right:4px!important; }
.mr-2 { margin-right:8px!important; }
.mr-3 { margin-right:12px!important; }
.mr-4 { margin-right:16px!important; }
.mr-6 { margin-right:24px!important; }
.mr-8 { margin-right:32px!important; }
.mb-0 { margin-bottom:0!important; }
.mb-1 { margin-bottom:4px!important; }
.mb-2 { margin-bottom:8px!important; }
.mb-3 { margin-bottom:12px!important; }
.mb-4 { margin-bottom:16px!important; }
.mb-5 { margin-bottom:20px!important; }
.mb-6 { margin-bottom:24px!important; }
.mb-8 { margin-bottom:32px!important; }
.mb-10 { margin-bottom:40px!important; }
.mb-12 { margin-bottom:48px!important; }
.mb-16 { margin-bottom:64px!important; }
.ml-1 { margin-left:4px!important; }
.ml-2 { margin-left:8px!important; }
.pa-0 { padding:0!important; }
.pa-1 { padding:4px!important; }
.pa-2 { padding:8px!important; }
.pa-3 { padding:12px!important; }
.pa-4 { padding:16px!important; }
.pa-5 { padding:20px!important; }
.pa-6 { padding:24px!important; }
.pa-7 { padding:28px!important; }
.pa-8 { padding:32px!important; }
.px-0 { padding-left:0!important; padding-right:0!important; }
.px-2 { padding-left:8px!important; padding-right:8px!important; }
.px-4 { padding-left:16px!important; padding-right:16px!important; }
.px-5 { padding-left:20px!important; padding-right:20px!important; }
.px-6 { padding-left:24px!important; padding-right:24px!important; }
.px-8 { padding-left:32px!important; padding-right:32px!important; }
.py-0 { padding-bottom:0!important; padding-top:0!important; }
.py-2 { padding-bottom:8px!important; padding-top:8px!important; }
.py-3 { padding-bottom:12px!important; padding-top:12px!important; }
.py-4 { padding-bottom:16px!important; padding-top:16px!important; }
.py-6 { padding-bottom:24px!important; padding-top:24px!important; }
.py-10 { padding-bottom:40px!important; padding-top:40px!important; }
.py-12 { padding-bottom:48px!important; padding-top:48px!important; }
.py-16 { padding-bottom:64px!important; padding-top:64px!important; }
.pt-3 { padding-top:12px!important; }
.pt-4 { padding-top:16px!important; }
.pb-1 { padding-bottom:4px!important; }
.pb-3 { padding-bottom:12px!important; }
.pb-4 { padding-bottom:16px!important; }
.pb-16 { padding-bottom:64px!important; }
.rounded-0 { border-radius:0!important; }
.rounded-lg { border-radius:8px!important; }
.rounded-xl { border-radius:24px!important; }
.rounded-circle { border-radius:50%!important; }
.border { border-color:rgba(var(--v-border-color),var(--v-border-opacity))!important; border-style:solid!important; border-width:thin!important; }
.border-t { border-block-start-color:rgba(var(--v-border-color),var(--v-border-opacity))!important; border-block-start-style:solid!important; border-block-start-width:thin!important; }
.border-b { border-block-end-color:rgba(var(--v-border-color),var(--v-border-opacity))!important; border-block-end-style:solid!important; border-block-end-width:thin!important; }
.text-right { text-align:right!important; }
.text-center { text-align:center!important; }
.text-decoration-none { text-decoration:none!important; }
.opacity-90 { opacity:.9!important; }
.text-medium-emphasis { color:rgba(var(--v-theme-on-background),var(--v-medium-emphasis-opacity))!important; }
.text-truncate { overflow:hidden!important; text-overflow:ellipsis!important; white-space:nowrap!important; }
.text-h2 { font-weight:300; line-height:1; text-transform:none!important; }
.text-h2 { font-size:3.75rem!important; letter-spacing:-.0083333333em!important; }
.text-h3 { font-size:3rem!important; letter-spacing:normal!important; line-height:1.05; }
.text-h3, .text-h4 { font-weight:400; text-transform:none!important; }
.text-h4 { font-size:2.125rem!important; letter-spacing:.0073529412em!important; line-height:1.175; }
.text-h5 { font-size:1.5rem!important; font-weight:400; letter-spacing:normal!important; line-height:1.333; }
.text-h5, .text-h6 { text-transform:none!important; }
.text-h6 { font-size:1.25rem!important; font-weight:500; letter-spacing:.0125em!important; line-height:1.6; }
.text-subtitle-1 { font-size:1rem!important; font-weight:400; letter-spacing:.009375em!important; line-height:1.75; }
.text-subtitle-1, .text-subtitle-2 { text-transform:none!important; }
.text-subtitle-2 { font-size:.875rem!important; font-weight:500; letter-spacing:.0071428571em!important; line-height:1.6; }
.text-body-1 { font-size:1rem!important; letter-spacing:.03125em!important; line-height:1.5; }
.text-body-1, .text-body-2 { font-weight:400; text-transform:none!important; }
.text-body-2 { letter-spacing:.0178571429em!important; line-height:1.425; }
.text-body-2 { font-size:.875rem!important; }
.text-caption { font-weight:400; letter-spacing:.0333333333em!important; line-height:1.667; text-transform:none!important; }
.text-caption, .text-overline { font-size:.75rem!important; }
.text-overline { font-weight:500; letter-spacing:.1666666667em!important; line-height:2.667; text-transform:uppercase!important; }
.text-none { text-transform:none!important; }
.text-capitalize { text-transform:capitalize!important; }
.font-weight-light { font-weight:300!important; }
.font-weight-regular { font-weight:400!important; }
.font-weight-medium { font-weight:500!important; }
.font-weight-bold { font-weight:700!important; }
.fill-height { height:100%!important; }
.h-100 { height:100%!important; }
@media (min-width:600px) {
  .d-sm-none { display:none!important; }
  .d-sm-inline { display:inline!important; }
  .flex-sm-row { flex-direction:row!important; }
  .pa-sm-3 { padding:12px!important; }
  .pa-sm-4 { padding:16px!important; }
  .pa-sm-9 { padding:36px!important; }
  .text-sm-left { text-align:left!important; }
}
@media (min-width:960px) {
  .d-md-none { display:none!important; }
  .d-md-block { display:block!important; }
  .d-md-flex { display:flex!important; }
  .flex-md-row { flex-direction:row!important; }
  .mb-md-0 { margin-bottom:0!important; }
  .pa-md-8 { padding:32px!important; }
  .py-md-14 { padding-bottom:56px!important; padding-top:56px!important; }
  .py-md-16 { padding-bottom:64px!important; padding-top:64px!important; }
  .pr-md-12 { padding-right:48px!important; }
  .text-md-h2 { font-weight:300; line-height:1; text-transform:none!important; }
  .text-md-h2 { font-size:3.75rem!important; letter-spacing:-.0083333333em!important; }
}
.v-col-12, .v-col-4, .v-col-lg-3, .v-col-lg-4, .v-col-lg-5, .v-col-lg-8, .v-col-md-3, .v-col-md-4, .v-col-md-5, .v-col-md-6, .v-col-md-9, .v-col-sm-6, .v-col-sm-8 { padding:12px; width:100%; }
.v-col-4 { flex:0 0 33.3333333333%; max-width:33.3333333333%; }
.v-col-12 { flex:0 0 100%; max-width:100%; }
@media (min-width:600px) {
  .v-col-sm-6 { flex:0 0 50%; max-width:50%; }
  .v-col-sm-8 { flex:0 0 66.6666666667%; max-width:66.6666666667%; }
}
@media (min-width:960px) {
  .v-col-md-3 { flex:0 0 25%; max-width:25%; }
  .v-col-md-4 { flex:0 0 33.3333333333%; max-width:33.3333333333%; }
  .v-col-md-5 { flex:0 0 41.6666666667%; max-width:41.6666666667%; }
  .v-col-md-6 { flex:0 0 50%; max-width:50%; }
  .v-col-md-9 { flex:0 0 75%; max-width:75%; }
}
@media (min-width:1280px) {
  .v-col-lg-3 { flex:0 0 25%; max-width:25%; }
  .v-col-lg-4 { flex:0 0 33.3333333333%; max-width:33.3333333333%; }
  .v-col-lg-5 { flex:0 0 41.6666666667%; max-width:41.6666666667%; }
  .v-col-lg-8 { flex:0 0 66.6666666667%; max-width:66.6666666667%; }
}
.v-progress-linear__buffer { background:currentColor; bottom:0; left:0; opacity:var(--v-border-opacity); position:absolute; top:0; transition-delay:inherit; transition-duration:inherit; transition-property:width,left,right; transition-timing-function:inherit; width:100%; }
@media (forced-colors:active) {
  .v-progress-linear__buffer { background-color:highlight!important; opacity:.5!important; }
}
.v-progress-linear__indeterminate { background:currentColor; }
@media (forced-colors:active) {
  .v-progress-linear__indeterminate { background-color:highlight!important; }
}

/* --- The universal reset v4 dropped ---------------------------------- */
/* v3 shipped `* { margin: 0; padding: 0 }`; v4 ships only `body, html`.
   Without it every <p>, <h1>..<h6> and list gets its browser-default
   margins back, adding ~16px above and below each paragraph.

   This CANNOT go in unlayered CSS. Unlayered rules outrank layered ones
   whatever their specificity, so a bare `*` here would beat every
   @layer vuetify-components rule and strip the padding from every
   component. Instead it is injected into the v4 stylesheet OWN lowest layer, which is
   where the v3 reset effectively sat — components then override it. */
@layer vuetify-core.reset {
  * { margin: 0; padding: 0; }
}

/* --- Rounded corners on the state overlays --------------------------- */
/* v3 gave these `border-radius: inherit` so the hover/ripple layer matched
   its parent; v4 dropped it, squaring off the highlight on rounded
   buttons and chips. Invisible at rest (opacity 0), visible on hover. */
.v-btn__overlay,
.v-chip__overlay, .v-chip__underlay,
.v-alert__underlay { border-radius: inherit; }

/* --- Theme colour utilities v4 de-prioritised ------------------------- */
/* Vuetify writes these at runtime from component props (color="primary"
   becomes .bg-primary), so they live in an injected <style>, not the CDN
   file. v3 marked them !important; v4 does not. .bg-primary carries the
   CONTRASTING TEXT COLOUR as well as the background, so without this the
   primary CTAs render black-on-teal instead of white-on-teal. */
.bg-primary { background-color: rgb(var(--v-theme-primary)) !important; color: rgb(var(--v-theme-on-primary)) !important; }
.bg-secondary { background-color: rgb(var(--v-theme-secondary)) !important; color: rgb(var(--v-theme-on-secondary)) !important; }
.bg-success { background-color: rgb(var(--v-theme-success)) !important; color: rgb(var(--v-theme-on-success)) !important; }
.bg-error { background-color: rgb(var(--v-theme-error)) !important; color: rgb(var(--v-theme-on-error)) !important; }
.bg-warning { background-color: rgb(var(--v-theme-warning)) !important; color: rgb(var(--v-theme-on-warning)) !important; }
.bg-info { background-color: rgb(var(--v-theme-info)) !important; color: rgb(var(--v-theme-on-info)) !important; }
.bg-surface { background-color: rgb(var(--v-theme-surface)) !important; color: rgb(var(--v-theme-on-surface)) !important; }
.bg-background { background-color: rgb(var(--v-theme-background)) !important; color: rgb(var(--v-theme-on-background)) !important; }
.text-primary { color: rgb(var(--v-theme-primary)) !important; }
.text-secondary { color: rgb(var(--v-theme-secondary)) !important; }
.text-success { color: rgb(var(--v-theme-success)) !important; }
.text-error { color: rgb(var(--v-theme-error)) !important; }
.text-warning { color: rgb(var(--v-theme-warning)) !important; }
.text-info { color: rgb(var(--v-theme-info)) !important; }
.text-surface { color: rgb(var(--v-theme-surface)) !important; }
.text-background { color: rgb(var(--v-theme-background)) !important; }

/* --- Container widths v4 changed -------------------------------------- */
/* v4 moved BOTH the breakpoints and the max-widths (md 960->900px became
   840->700px, lg 1280->1200px became 1145->1000px, and so on). The result is
   a container ~200px narrower at desktop widths: content shifts inward and
   columns get narrow enough to force extra line wraps. These are v3 values.
   The first rule undoes v4's 700px cap from 840px: v3 had no cap below
   960px, and with it every page was squeezed to 700px at 840–959px. */
@media (min-width:840px) { .v-container { max-width:none; } }
@media (min-width:960px) { .v-container { max-width:900px; } }

/* --- md display helpers start at 840px on v4 ---------------------------- */
/* v4 applies .d-md-* from 840px, v3 (which these pages were built for) from
   960px. In between, v4 hid the menu button (.d-md-none) while the desktop
   links (.d-none .d-md-flex, restored below for 960px+) were still hidden:
   no navigation at all. Keep the menu button showing there, as on v3. */
@media (min-width:840px) and (max-width:959.98px) {
  .v-btn.d-md-none { display:flex; }
}
@media (min-width:1280px) { .v-container { max-width:1200px; } }
@media (min-width:1920px) { .v-container { max-width:1800px; } }
@media (min-width:2560px) { .v-container { max-width:2400px; } }

/* --- Button typography v4 changed ------------------------------------ */
/* v3 shouted its buttons (uppercase, wide tracking); v4 does not. Only type
   properties are restored — v4 lays buttons out with flex where v3 used
   grid, and that layout is deliberately left alone. */
.v-btn { letter-spacing: 0.0892857143em; text-indent: 0.0892857143em; text-transform: uppercase; }
