/*! Fibens widgets v1.2.0 | https://fibens.com/w/v1/ */
/*
  Looks — pick with data attributes on the widget, no CSS needed:
    (default)                     "Fibens design": the look of the Fibens studio pages (portal).
    data-fw-theme="inherit"       use the website's own fonts and colours.
    data-fw-mode="dark"           dark cards (for dark websites).
    data-fw-corners="square"      square corners instead of rounded ones.
    data-fw-accent="#rrggbb"      accent colour (buttons, prices, active tabs) of this widget.

  For developers — level 1, CSS variables (set them on .fw or a more specific selector such as
  `.my-section .fw`):
    --fw-bg, --fw-surface, --fw-surface-2, --fw-text, --fw-text-2, --fw-muted, --fw-faint,
    --fw-line, --fw-line-strong, --fw-accent, --fw-accent-hover, --fw-accent-ink, --fw-accent-soft,
    --fw-warn, --fw-deal-bg, --fw-deal-text, --fw-radius, --fw-radius-sm, --fw-pill, --fw-gap,
    --fw-shadow, --fw-font-heading, --fw-font-body, --fw-font-mono, --fw-font-size,
    --fw-heading-weight, --fw-slot (height of one hour in the week calendar). Below 700px widget
    width the week calendar becomes a day list (a container query - it follows every resize).
  Level 2 — restyle the stable BEM classes (fw-<widget>__<element>--<modifier>; the price lists
  also carry the shared fw-prices__* classes). The widget rules are written as `.fw .fw-…` (two
  classes) so a website's global rules (`button {…}`, `.entry-content a {…}`, `ul li {…}`,
  `h3 {…}`) cannot break them — write your overrides the same way, e.g.
  `.fw .fw-prices__buy { border-radius: 0; }`, after this stylesheet.
  Level 3 — own HTML: a <template data-fw-template> in the mount replaces the built-in markup
  (see fibens-widgets.js); then only your own CSS applies (.fw--custom on the mount).
  Every widget reserves its height while loading (no layout shift).
*/

/* Inter (SIL OFL 1.1, fonts/Inter-OFL-LICENSE.txt), self-hosted: downloaded only when a widget
   in the default theme is on the page — no third-party font request. */
@font-face {
  font-family: "Fibens Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("fonts/inter-latin-wght-normal.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: "Fibens Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("fonts/inter-latin-ext-wght-normal.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;
}

/* ---------------------------------------------------------------- themes (zero specificity:
   any .fw rule of the website wins). Default = the portal tokens (wwwroot/css/scaleup). */
:where(.fw) {
  --fw-bg: transparent;
  --fw-surface: #ffffff;
  --fw-surface-2: #f5f7fb;
  --fw-text: #0f172a;
  --fw-text-2: #475569;
  --fw-muted: #64748b;
  --fw-faint: #94a3b8;
  --fw-line: #e6e8ee;
  --fw-line-strong: #cfd3dc;
  --fw-accent: #1e3a8a;
  --fw-accent-hover: color-mix(in srgb, var(--fw-accent) 82%, #000);
  --fw-accent-ink: var(--fw-auto-ink, #ffffff);
  --fw-accent-soft: color-mix(in srgb, var(--fw-accent) 8%, var(--fw-surface));
  --fw-accent-tint: color-mix(in srgb, var(--fw-accent) 20%, var(--fw-surface));
  --fw-warn: #d97706;
  --fw-deal-bg: #d1fae5;
  --fw-deal-text: #047857;
  --fw-radius: 14px;
  --fw-radius-sm: 9px;
  --fw-pill: 999px;
  --fw-gap: 14px;
  --fw-shadow: 0 6px 24px -8px rgba(15, 23, 42, .10);
  --fw-font-heading: "Fibens Inter", Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --fw-font-body: "Fibens Inter", Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --fw-font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --fw-font-size: 14px;
  --fw-heading-weight: 600;
  --fw-slot: 76px;
}
:where(.fw[data-fw-mode="dark"]) {
  --fw-surface: #171b21;
  --fw-surface-2: #1f242c;
  --fw-text: #f2f4f7;
  --fw-text-2: #c4cbd6;
  --fw-muted: #99a3b2;
  --fw-faint: #6b7584;
  --fw-line: #2a3039;
  --fw-line-strong: #3a424e;
  --fw-accent: #7c9cff;
  --fw-deal-bg: #12382c;
  --fw-deal-text: #6ee7b7;
  --fw-shadow: 0 6px 24px -8px rgba(0, 0, 0, .5);
}
:where(.fw[data-fw-theme="inherit"]) {
  --fw-surface: transparent;
  --fw-surface-2: color-mix(in srgb, currentColor 4%, transparent);
  --fw-text: currentColor;
  --fw-text-2: color-mix(in srgb, currentColor 82%, transparent);
  --fw-muted: color-mix(in srgb, currentColor 64%, transparent);
  --fw-faint: color-mix(in srgb, currentColor 45%, transparent);
  --fw-line: color-mix(in srgb, currentColor 16%, transparent);
  --fw-line-strong: color-mix(in srgb, currentColor 30%, transparent);
  --fw-accent: currentColor;
  --fw-accent-soft: color-mix(in srgb, var(--fw-accent) 10%, transparent);
  --fw-accent-tint: color-mix(in srgb, var(--fw-accent) 28%, transparent);
  --fw-radius: 6px;
  --fw-radius-sm: 6px;
  --fw-shadow: none;
  --fw-font-heading: inherit;
  --fw-font-body: inherit;
  --fw-font-mono: inherit;
  --fw-font-size: 1em;
  --fw-heading-weight: inherit;
}
:where(.fw[data-fw-theme="inherit"][data-fw-mode="dark"]) {
  --fw-surface: transparent;
  --fw-text: currentColor;
}
:where(.fw[data-fw-corners="square"]) { --fw-radius: 0; --fw-radius-sm: 0; --fw-pill: 0; }

/* ---------------------------------------------------------------- base + reset against the
   website's global element rules (only on the elements the built-in markup renders) */
.fw {
  display: block;
  position: relative;
  color: var(--fw-text);
  background: var(--fw-bg);
  font-family: var(--fw-font-body);
  font-size: var(--fw-font-size);
  font-weight: 400;
  line-height: 1.5;
  text-align: left;
  letter-spacing: normal;
  text-transform: none;
  -webkit-font-smoothing: antialiased;
}
.fw.fw--custom { font: inherit; color: inherit; line-height: inherit; }
.fw:where(:not(.fw--custom)) *, .fw:where(:not(.fw--custom)) *::before, .fw:where(:not(.fw--custom)) *::after { box-sizing: border-box; }
.fw:where(:not(.fw--custom)) :is(div, p, span, ul, ol, li, h2, h3, h4, h5, h6, a, button, img, s, small, section, blockquote, details, summary, address, table, caption, tr, th, td) {
  margin: 0; padding: 0; border: 0; background: none; box-shadow: none; float: none;
  font-family: inherit; font-size: inherit; font-weight: inherit; font-style: inherit; line-height: inherit;
  color: inherit; letter-spacing: inherit; text-transform: none; text-decoration: none; text-shadow: none;
  text-align: inherit; min-width: 0; max-width: none; min-height: 0; width: auto; height: auto; vertical-align: baseline;
}
.fw:where(:not(.fw--custom)) ul, .fw:where(:not(.fw--custom)) ol, .fw:where(:not(.fw--custom)) li { list-style: none; }
.fw:where(:not(.fw--custom)) :is(li, h2, h3, h4, a, button, p)::before, .fw:where(:not(.fw--custom)) :is(li, h2, h3, h4, a, button, p)::after { content: none; }
.fw:where(:not(.fw--custom)) a { color: inherit; text-decoration: none; }
.fw:where(:not(.fw--custom)) a:where(:hover, :focus, :visited, :active) { color: inherit; text-decoration: none; }
.fw:where(:not(.fw--custom)) button { appearance: none; -webkit-appearance: none; cursor: pointer; border-radius: 0; text-align: center; }
.fw:where(:not(.fw--custom)) img { display: block; max-width: 100%; }
.fw:where(:not(.fw--custom)) table { border-collapse: collapse; border-spacing: 0; width: auto; }
.fw:where(:not(.fw--custom)) summary { display: list-item; list-style: revert; cursor: pointer; }
.fw:where(:not(.fw--custom)) blockquote { quotes: none; }
.fw:where(:not(.fw--custom)) svg { display: block; flex: none; }
.fw :focus-visible { outline: 2px solid var(--fw-accent); outline-offset: 2px; }

.fw .fw-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.fw .fw-error, .fw .fw-empty { padding: 32px 16px; text-align: center; color: var(--fw-muted); }

/* reserved space while loading (released once the data is in: .fw--ready) */
.fw.fw-schedule:not(.fw--ready) { min-height: 420px; }
.fw:is(.fw-memberships, .fw-cards, .fw-prices, .fw-team, .fw-vouchers):not(.fw--ready) { min-height: 320px; }
.fw:is(.fw-offers, .fw-classes):not(.fw--ready) { min-height: 200px; }
.fw:is(.fw-reviews, .fw-studio):not(.fw--ready) { min-height: 160px; }
.fw.fw-trial:not(.fw--ready) { min-height: 120px; }
.fw.fw--custom:not(.fw--ready) { min-height: 0; }
.fw .fw-skeleton { display: grid; gap: 12px; }
.fw .fw-skeleton__bar {
  height: 72px; border-radius: var(--fw-radius);
  background: linear-gradient(90deg, var(--fw-line) 0%, var(--fw-surface) 50%, var(--fw-line) 100%);
  background-size: 200% 100%; animation: fw-pulse 1.4s ease-in-out infinite;
}
.fw .fw-skeleton--schedule .fw-skeleton__bar:first-child { height: 120px; }
@keyframes fw-pulse { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) { .fw .fw-skeleton__bar { animation: none; } }

/* ---------------------------------------------------------------- buttons */
.fw .fw-prices__buy {
  display: inline-flex; align-items: center; justify-content: center; min-height: 36px; padding: 0 16px;
  border: 1px solid var(--fw-accent); border-radius: var(--fw-radius-sm); background: var(--fw-accent); color: var(--fw-accent-ink);
  font-weight: 600; font-size: .93em; line-height: 1.2; white-space: nowrap; cursor: pointer;
  transition: background-color .15s, border-color .15s, color .15s;
}
.fw .fw-prices__buy:hover { background: var(--fw-accent-hover); border-color: var(--fw-accent-hover); color: var(--fw-accent-ink); }
.fw :is(.fw-cards__buy--disabled, .fw-memberships__buy--disabled, .fw-vouchers__buy--disabled, .fw-offers__buy--disabled, .fw-trial__buy--disabled),
.fw :is(.fw-cards__buy--disabled, .fw-memberships__buy--disabled, .fw-vouchers__buy--disabled, .fw-offers__buy--disabled, .fw-trial__buy--disabled):hover {
  background: transparent; border-color: var(--fw-line-strong); color: var(--fw-muted); cursor: default;
}

/* ---------------------------------------------------------------- price lists (portal "Prices") */
.fw .fw-prices__block { background: var(--fw-surface); border: 1px solid var(--fw-line); border-radius: var(--fw-radius); overflow: hidden; }
.fw .fw-prices__section { display: block; padding: 22px; }
.fw .fw-prices__section + .fw-prices__section { border-top: 1px solid var(--fw-line); }
.fw .fw-prices__head { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.fw .fw-prices__icon { width: 44px; height: 44px; border-radius: 12px; background: var(--fw-surface-2); color: var(--fw-accent); display: grid; place-items: center; flex: none; }
.fw .fw-prices__title { font-family: var(--fw-font-heading); font-size: 1.64em; font-weight: 700; letter-spacing: -.02em; line-height: 1.2; }
.fw .fw-prices__subtitle { font-size: .93em; color: var(--fw-muted); margin-top: 3px; }
.fw .fw-prices__tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.fw .fw-prices__tab {
  display: inline-flex; align-items: center; padding: 7px 12px; border: 1px solid var(--fw-line); border-radius: var(--fw-pill);
  background: var(--fw-surface); color: var(--fw-text-2); font-size: .9em; font-weight: 500; transition: border-color .15s, color .15s;
}
.fw .fw-prices__tab:hover { border-color: var(--fw-line-strong); color: var(--fw-text); }
.fw .fw-prices__tab--active, .fw .fw-prices__tab--active:hover { background: var(--fw-accent-soft); border-color: var(--fw-accent-tint); color: var(--fw-accent); }
.fw .fw-prices__list { display: block; }
.fw .fw-prices__row { display: flex; justify-content: space-between; align-items: flex-start; gap: 28px; padding: 20px 0; border-top: 1px solid var(--fw-line); }
.fw .fw-prices__row:first-child { border-top: 0; padding-top: 8px; }
.fw .fw-prices__list:last-child .fw-prices__row:last-child { padding-bottom: 0; }
.fw .fw-prices__none { padding: 16px 0; color: var(--fw-muted); }
.fw .fw-prices__main { flex: 1; min-width: 0; }
.fw .fw-prices__line { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.fw .fw-prices__name { font-family: var(--fw-font-heading); font-size: 1.18em; font-weight: var(--fw-heading-weight); letter-spacing: -.01em; line-height: 1.3; overflow-wrap: anywhere; }
.fw .fw-prices__pill { display: inline-flex; padding: 3px 9px; border-radius: var(--fw-pill); background: var(--fw-surface-2); color: var(--fw-text-2); font-size: .72em; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; line-height: 1.4; }
.fw .fw-prices__pill--deal { background: var(--fw-deal-bg); color: var(--fw-deal-text); }
.fw .fw-prices__pill--accent { background: var(--fw-accent-soft); color: var(--fw-accent); }
.fw .fw-prices__sub { font-size: .93em; color: var(--fw-muted); margin-top: 5px; white-space: pre-line; }
.fw .fw-prices__note { font-size: .9em; color: var(--fw-text-2); margin-top: 7px; }
.fw .fw-prices__meta { font-family: var(--fw-font-mono); font-size: .86em; color: var(--fw-muted); margin-top: 9px; }
.fw .fw-prices__side { display: flex; flex-direction: column; align-items: flex-end; gap: 12px; flex-shrink: 0; text-align: right; }
.fw .fw-prices__price { line-height: 1.15; }
.fw .fw-prices__was { display: block; font-size: .93em; color: var(--fw-faint); text-decoration: line-through; }
.fw .fw-prices__amount { font-family: var(--fw-font-heading); font-size: 1.64em; font-weight: 700; letter-spacing: -.02em; color: var(--fw-text); white-space: nowrap; }
.fw .fw-prices__unit { font-size: .86em; color: var(--fw-muted); font-weight: 500; margin-left: 4px; white-space: nowrap; }
.fw .fw-prices__small { font-size: .82em; color: var(--fw-muted); margin-top: -8px; }
.fw .fw-memberships__terms { margin-top: 10px; font-size: .88em; color: var(--fw-muted); }
.fw .fw-memberships__terms-title { color: var(--fw-text-2); font-weight: 500; }
.fw .fw-memberships__terms-list { margin-top: 6px; display: flex; flex-direction: column; gap: 4px; }
.fw .fw-memberships__desc { margin-top: 8px; white-space: pre-line; }
.fw .fw-offers__item { --fw-dot: var(--fw-group-color, var(--fw-accent)); }
.fw .fw-offers__item .fw-prices__line::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--fw-dot); flex: none; }
.fw.fw-trial .fw-prices__row:first-child { padding-top: 0; }
@media (max-width: 680px) {
  .fw .fw-prices__section { padding: 18px 16px; }
  .fw .fw-prices__row { flex-direction: column; gap: 14px; }
  .fw .fw-prices__side { align-items: center; width: 100%; flex-direction: row; justify-content: space-between; text-align: left; }
  .fw .fw-prices__small { margin-top: 0; }
  .fw .fw-prices__title { font-size: 1.43em; }
}

/* ---------------------------------------------------------------- schedule (portal "Class calendar") */
.fw.fw-schedule { container-type: inline-size; }
.fw .fw-schedule__toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 14px; }
.fw .fw-schedule__nav { display: inline-flex; align-items: center; gap: 6px; padding: 4px; background: var(--fw-surface); border: 1px solid var(--fw-line); border-radius: var(--fw-pill); }
.fw .fw-schedule__nav-btn { width: 30px; height: 30px; display: grid; place-items: center; border-radius: var(--fw-pill); color: var(--fw-text-2); font-size: 1.3em; line-height: 1; }
.fw .fw-schedule__nav-btn--today { width: auto; padding: 0 12px; font-size: .86em; font-weight: 500; }
.fw .fw-schedule__nav-btn:hover:not(:disabled) { background: var(--fw-surface-2); color: var(--fw-text); }
.fw .fw-schedule__nav-btn:disabled { opacity: .35; cursor: default; }
.fw .fw-schedule__week { padding: 0 12px 0 6px; font-size: .93em; font-weight: 500; white-space: nowrap; }
.fw .fw-schedule__filter { display: contents; }
.fw .fw-schedule__filter-label { margin: 0 2px 0 6px; font-size: .79em; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--fw-muted); }
.fw .fw-schedule__chip {
  display: inline-flex; align-items: center; padding: 7px 12px; border: 1px solid var(--fw-line); border-radius: var(--fw-pill);
  background: var(--fw-surface); color: var(--fw-text-2); font-size: .89em; font-weight: 500; transition: border-color .15s, color .15s;
}
.fw .fw-schedule__chip:hover { border-color: var(--fw-line-strong); color: var(--fw-text); }
.fw .fw-schedule__chip--active, .fw .fw-schedule__chip--active:hover { background: var(--fw-accent-soft); border-color: var(--fw-accent-tint); color: var(--fw-accent); }
.fw .fw-schedule__calendar { background: var(--fw-surface); border: 1px solid var(--fw-line); border-radius: var(--fw-radius); overflow: hidden; }
.fw .fw-schedule__head, .fw .fw-schedule__body { display: grid; grid-template-columns: 56px repeat(7, minmax(0, 1fr)); }
.fw .fw-schedule__head { border-bottom: 1px solid var(--fw-line); background: var(--fw-surface-2); }
.fw .fw-schedule__corner { display: grid; place-items: center; border-right: 1px solid var(--fw-line); color: var(--fw-muted); font-family: var(--fw-font-mono); font-size: .72em; }
.fw .fw-schedule__day-head { display: flex; flex-direction: column; gap: 2px; padding: 12px 12px 10px; border-right: 1px solid var(--fw-line); }
.fw .fw-schedule__day-head:last-child { border-right: 0; }
.fw .fw-schedule__dow { font-size: .75em; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; color: var(--fw-muted); }
.fw .fw-schedule__date { font-size: 1.14em; font-weight: 600; letter-spacing: -.01em; }
.fw .fw-schedule__day-head--today .fw-schedule__date { color: var(--fw-accent); }
.fw .fw-schedule__times { display: flex; flex-direction: column; border-right: 1px solid var(--fw-line); }
.fw .fw-schedule__hour { height: var(--fw-slot); padding: 6px 6px 0; border-bottom: 1px solid var(--fw-line); text-align: right; font-family: var(--fw-font-mono); font-size: .75em; color: var(--fw-muted); }
.fw .fw-schedule__col { position: relative; border-right: 1px solid var(--fw-line); }
.fw .fw-schedule__col:last-child { border-right: 0; }
.fw .fw-schedule__line { height: var(--fw-slot); border-bottom: 1px solid var(--fw-line); }
.fw .fw-schedule__hour:last-child, .fw .fw-schedule__line:last-child { border-bottom: 0; }
.fw .fw-schedule__event {
  position: absolute; display: flex; flex-direction: column; overflow: hidden; padding: 6px 8px;
  border-radius: 8px; border: 1px solid rgba(0, 0, 0, .04);
  background: var(--fw-event, var(--fw-accent)); color: var(--fw-event-ink, var(--fw-accent-ink));
  font-size: .79em; line-height: 1.3; transition: transform .15s, box-shadow .15s;
}
.fw a.fw-schedule__event:hover { transform: translateY(-1px); box-shadow: var(--fw-shadow); z-index: 2; color: var(--fw-event-ink, var(--fw-accent-ink)); }
.fw .fw-schedule__event .fw-schedule__time { font-weight: 600; font-size: .95em; }
.fw .fw-schedule__event .fw-schedule__name { font-weight: 500; margin-top: 2px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.fw .fw-schedule__event :is(.fw-schedule__trainer, .fw-schedule__room) { margin-top: 2px; font-family: var(--fw-font-mono); font-size: .9em; opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fw :is(.fw-schedule__event--compact, .fw-schedule__event--mini) :is(.fw-schedule__trainer, .fw-schedule__room) { display: none; }
.fw .fw-schedule__event--mini { padding-top: 4px; padding-bottom: 4px; }
.fw .fw-schedule__event--mini .fw-schedule__name { -webkit-line-clamp: 1; }
.fw .fw-schedule__event--past { opacity: .5; }
.fw .fw-schedule__event--full { opacity: .72; }
.fw .fw-schedule__event--dim { opacity: .32; }
.fw .fw-schedule__event--cancelled { background: var(--fw-surface-2); color: var(--fw-muted); border: 1px dashed var(--fw-line-strong); }
.fw .fw-schedule__event--cancelled .fw-schedule__name { text-decoration: line-through; }
.fw .fw-schedule__cx { font-size: .9em; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: #b42318; }
.fw .fw-schedule__empty { padding: 56px 28px; text-align: center; color: var(--fw-muted); }

/* agenda list: the calendar on a narrow widget (<700px), like the portal on phones */
.fw .fw-schedule__agenda { display: none; }
@container (max-width: 699px) {
  .fw .fw-schedule__head, .fw .fw-schedule__body, .fw .fw-schedule__empty { display: none; }
  .fw .fw-schedule__agenda { display: block; }
}
@supports not (container-type: inline-size) {
  @media (max-width: 700px) {
    .fw .fw-schedule__head, .fw .fw-schedule__body, .fw .fw-schedule__empty { display: none; }
    .fw .fw-schedule__agenda { display: block; }
  }
}
.fw .fw-schedule__agenda-day { border-bottom: 1px solid var(--fw-line); }
.fw .fw-schedule__agenda-day:last-child { border-bottom: 0; }
.fw .fw-schedule__agenda-date { display: flex; align-items: baseline; gap: 8px; padding: 12px 16px 8px; background: var(--fw-surface-2); }
.fw .fw-schedule__agenda-day--today .fw-schedule__agenda-date { background: var(--fw-accent-soft); }
.fw .fw-schedule__agenda-dow { font-size: .93em; font-weight: 700; letter-spacing: -.01em; }
.fw .fw-schedule__agenda-num { font-family: var(--fw-font-mono); font-size: .86em; color: var(--fw-muted); }
.fw .fw-schedule__agenda-day--today .fw-schedule__agenda-num { color: var(--fw-accent); }
.fw .fw-schedule__agenda-empty { padding: 12px 16px; font-size: .93em; color: var(--fw-faint); }
.fw .fw-schedule__item {
  display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-top: 1px solid var(--fw-line);
  border-left: 4px solid var(--fw-event, var(--fw-accent)); background: var(--fw-surface);
}
.fw .fw-schedule__agenda-date + .fw-schedule__item { border-top: 0; }
.fw a.fw-schedule__item:hover { background: var(--fw-surface-2); }
.fw .fw-schedule__item-time { display: flex; flex-direction: column; min-width: 46px; font-family: var(--fw-font-mono); font-size: .93em; font-weight: 700; }
.fw .fw-schedule__item-end { font-size: .77em; font-weight: 500; color: var(--fw-faint); }
.fw .fw-schedule__item-body { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.fw .fw-schedule__item .fw-schedule__time:empty { display: none; }
.fw .fw-schedule__item .fw-schedule__name { font-size: 1em; font-weight: 600; letter-spacing: -.01em; }
.fw .fw-schedule__item :is(.fw-schedule__trainer, .fw-schedule__room) { font-size: .86em; color: var(--fw-muted); margin-top: 1px; }
.fw .fw-schedule__item .fw-schedule__spots { font-size: .82em; color: var(--fw-muted); margin-top: 2px; }
.fw .fw-schedule__item .fw-schedule__spots--few { color: var(--fw-warn); }
.fw .fw-schedule__item-go { color: var(--fw-faint); font-size: 1.3em; }
.fw .fw-schedule__item--past { opacity: .55; }
.fw .fw-schedule__item--cancelled { border-left-color: var(--fw-line-strong); }
.fw .fw-schedule__item--cancelled .fw-schedule__name, .fw .fw-schedule__item--cancelled .fw-schedule__item-time { text-decoration: line-through; color: var(--fw-muted); }

/* ---------------------------------------------------------------- classes */
.fw .fw-classes__item { display: block; padding: 18px 22px 18px 26px; border-top: 1px solid var(--fw-line); position: relative; }
.fw .fw-classes__item:first-child { border-top: 0; }
.fw .fw-classes__item::before { content: ""; position: absolute; left: 0; top: 18px; bottom: 18px; width: 4px; border-radius: 0 4px 4px 0; background: var(--fw-group-color, var(--fw-accent)); }
.fw .fw-classes__name { font-family: var(--fw-font-heading); font-size: 1.18em; font-weight: var(--fw-heading-weight); letter-spacing: -.01em; line-height: 1.3; }
.fw .fw-classes__desc { margin-top: 5px; font-size: .93em; color: var(--fw-muted); white-space: pre-line; }
.fw .fw-classes__tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.fw .fw-classes__tag { padding: 3px 9px; border-radius: var(--fw-pill); background: var(--fw-surface-2); color: var(--fw-text-2); font-size: .77em; font-weight: 500; }

/* ---------------------------------------------------------------- team (portal "Meet the team") */
.fw .fw-team__grid { display: grid; gap: var(--fw-gap); grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.fw .fw-team__card { display: flex; flex-direction: column; align-items: center; padding: 18px; text-align: center; background: var(--fw-surface); border: 1px solid var(--fw-line); border-radius: var(--fw-radius); }
.fw .fw-team__photo { width: 72px; height: 72px; margin-bottom: 12px; overflow: hidden; border-radius: 50%; background: linear-gradient(135deg, var(--fw-accent-soft), #e7c8a8); }
.fw .fw-team__img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
.fw .fw-team__photo--empty { display: grid; place-items: center; font-size: 1.57em; font-weight: 600; color: var(--fw-accent); }
.fw .fw-team__name { font-family: var(--fw-font-heading); font-size: 1.04em; font-weight: 600; }
.fw .fw-team__role { margin-top: 2px; font-size: .86em; color: var(--fw-muted); }
.fw .fw-team__bio { margin-top: 8px; font-size: .86em; color: var(--fw-text-2); display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
:where(.fw[data-fw-theme="inherit"]) .fw-team__photo { background: var(--fw-surface-2); }

/* ---------------------------------------------------------------- reviews */
.fw .fw-reviews__summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px; margin-bottom: var(--fw-gap); }
.fw .fw-reviews__score { font-family: var(--fw-font-heading); font-weight: 700; font-size: 2.2em; line-height: 1; letter-spacing: -.02em; }
.fw .fw-reviews__stars, .fw .fw-reviews__card-stars { color: #f5a623; letter-spacing: 3px; }
:where(.fw[data-fw-theme="inherit"]) .fw-reviews__stars, :where(.fw[data-fw-theme="inherit"]) .fw-reviews__card-stars { color: var(--fw-accent); }
.fw .fw-reviews__count { color: var(--fw-muted); }
.fw .fw-reviews__list { display: grid; gap: var(--fw-gap); grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
.fw .fw-reviews__card { display: flex; flex-direction: column; gap: 10px; padding: 18px; background: var(--fw-surface); border: 1px solid var(--fw-line); border-radius: var(--fw-radius); }
.fw .fw-reviews__text { color: var(--fw-text-2); line-height: 1.6; }
.fw .fw-reviews__author { font-size: .89em; font-weight: 600; }
.fw .fw-reviews__more { display: inline-block; margin-top: var(--fw-gap); color: var(--fw-accent); font-weight: 600; }
.fw .fw-reviews__more:hover { text-decoration: underline; color: var(--fw-accent); }

/* ---------------------------------------------------------------- studio (portal "Location & hours") */
.fw .fw-studio__box { display: flex; flex-direction: column; gap: 6px; padding: 22px; background: var(--fw-surface); border: 1px solid var(--fw-line); border-radius: var(--fw-radius); }
.fw .fw-studio__name { font-family: var(--fw-font-heading); font-size: 1.21em; font-weight: 600; margin-bottom: 4px; }
.fw .fw-studio__label { font-weight: 600; }
.fw .fw-studio__address { display: flex; flex-direction: column; font-style: normal; color: var(--fw-text-2); }
.fw .fw-studio__contact { display: flex; flex-wrap: wrap; gap: 6px 16px; }
.fw .fw-studio__contact a, .fw .fw-studio__map, .fw .fw-studio__links a { color: var(--fw-accent); font-weight: 500; }
.fw .fw-studio__contact a:hover, .fw .fw-studio__map:hover, .fw .fw-studio__links a:hover { color: var(--fw-accent); text-decoration: underline; }
.fw .fw-studio__map { align-self: flex-start; }
.fw .fw-studio__hours { width: 100%; margin-top: 12px; font-size: .96em; }
.fw .fw-studio__hours-title { padding: 14px 0 8px; text-align: left; font-size: .79em; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--fw-muted); border-top: 1px dashed var(--fw-line-strong); }
.fw .fw-studio__hours th, .fw .fw-studio__hours td { padding: 4px 0; text-align: left; font-weight: 400; color: var(--fw-text-2); border-bottom: 1px solid var(--fw-line); }
.fw .fw-studio__hours td { text-align: right; }
.fw .fw-studio__hours tr:last-child th, .fw .fw-studio__hours tr:last-child td { border-bottom: 0; }
.fw .fw-studio__today th, .fw .fw-studio__today td { font-weight: 600; color: var(--fw-text); }
