@charset "UTF-8";
@import "https://necolas.github.io/normalize.css/latest/normalize.css";
html,
body,
div,
article,
aside,
section,
main,
nav,
footer,
header,
form,
fieldset,
legend,
pre,
code,
a,
h1,
h2,
h3,
h4,
h5,
h6,
p,
ul,
ol,
li,
dl,
dt,
dd,
blockquote,
figcaption,
figure,
textarea,
table,
td,
th,
tr,
input[type=email],
input[type=number],
input[type=password],
input[type=tel],
input[type=text],
input[type=url],
.border-box, * {
  box-sizing: border-box;
  background-clip: padding-box;
}

input {
  -webkit-appearance: none;
  -moz-appearance: none;
}

input[type=checkbox] {
  -webkit-appearance: checkbox;
  -moz-appearance: checkbox;
}

input[type=number] {
  -moz-appearance: textfield;
}
input[type=number]::-webkit-outer-spin-button, input[type=number]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/*
  Naming conventions:

  {modifier _}{attribute}-{value}{_ media}

  - Modifier: things like hover. T
  - Attribute: use the property name, and take the first letters of the property with dashes.
    When there are conflicts, add a letter to all conflicting terms
    e.g. background-color --> bc --> bgc
         border-color --> bc --> bdc
  - Value: use the value name, same as before
    e.g. block --> b
    e.g. table-row-group --> trg
  - Media:
    - default/no suffix: small display
    - ns: not-small display
    - m: medium display
    - l: large display

    |--(default)--|--medium--|--large----->
                  |------not small-------->


  - If the class sets multiple properties, name it with full words, describing the semantics
    e.g. table-layout: fixed; width: 100%
         --> table-fixed-100p

  */
/* Small is smaller than this */
/* Medium is in between */
/* Large is larger than this. */
/*
    ========================================================
    Align, text decorations
  */
.center {
  margin-right: auto;
  margin-left: auto;
}

.va-mid {
  vertical-align: middle;
}

.ta-c, .cal-weekday-header {
  text-align: center;
}

.td-n, a,
.link, .fz-dashed-action, .fz-workout-tile, .fz-sidebar-item {
  /* Should this be 'text decoration 1' ? */
  text-decoration: none;
}

.fixed {
  position: fixed;
}

.o-s {
  overflow: scroll;
}

.oy-s {
  overflow-y: scroll;
}

.sw-n {
  scrollbar-width: none;
}

.p-s {
  position: sticky;
}

.tw-nw, .fz-tabs > * {
  text-wrap: nowrap;
}

/*
    ========================================================
    colors
  */
.c-primary, a,
.link, .fz-tabs > *[aria-selected=true],
.fz-tabs > *:has(input:checked), .fz-panel-header h3, .fz-alert-action, .fz-page-toolbar h2, .fz-page-toolbar-title-prefix, .fz-page-toolbar-title-input {
  color: var(--color-primary);
}

.bdc-primary, .fz-tabs > *[aria-selected=true],
.fz-tabs > *:has(input:checked), .cal-day-today {
  border-color: var(--color-primary);
}

.bgc-primary {
  background-color: var(--color-primary);
}

.c-on-primary {
  color: var(--color-on-primary);
}

.bdc-on-primary {
  border-color: var(--color-on-primary);
}

.bgc-on-primary {
  background-color: var(--color-on-primary);
}

.c-primary-container {
  color: var(--color-primary-container);
}

.bdc-primary-container {
  border-color: var(--color-primary-container);
}

.bgc-primary-container {
  background-color: var(--color-primary-container);
}

.c-on-primary-container {
  color: var(--color-on-primary-container);
}

.bdc-on-primary-container {
  border-color: var(--color-on-primary-container);
}

.bgc-on-primary-container {
  background-color: var(--color-on-primary-container);
}

.c-secondary, .fz-menu-label, .cal-day-num-month {
  color: var(--color-secondary);
}

.bdc-secondary {
  border-color: var(--color-secondary);
}

.bgc-secondary {
  background-color: var(--color-secondary);
}

.c-on-secondary {
  color: var(--color-on-secondary);
}

.bdc-on-secondary {
  border-color: var(--color-on-secondary);
}

.bgc-on-secondary {
  background-color: var(--color-on-secondary);
}

.c-secondary-container {
  color: var(--color-secondary-container);
}

.bdc-secondary-container {
  border-color: var(--color-secondary-container);
}

.bgc-secondary-container {
  background-color: var(--color-secondary-container);
}

.c-on-secondary-container {
  color: var(--color-on-secondary-container);
}

.bdc-on-secondary-container {
  border-color: var(--color-on-secondary-container);
}

.bgc-on-secondary-container {
  background-color: var(--color-on-secondary-container);
}

.c-tertiary {
  color: var(--color-tertiary);
}

.bdc-tertiary {
  border-color: var(--color-tertiary);
}

.bgc-tertiary {
  background-color: var(--color-tertiary);
}

.c-on-tertiary {
  color: var(--color-on-tertiary);
}

.bdc-on-tertiary {
  border-color: var(--color-on-tertiary);
}

.bgc-on-tertiary {
  background-color: var(--color-on-tertiary);
}

.c-tertiary-container {
  color: var(--color-tertiary-container);
}

.bdc-tertiary-container {
  border-color: var(--color-tertiary-container);
}

.bgc-tertiary-container {
  background-color: var(--color-tertiary-container);
}

.c-on-tertiary-container {
  color: var(--color-on-tertiary-container);
}

.bdc-on-tertiary-container {
  border-color: var(--color-on-tertiary-container);
}

.bgc-on-tertiary-container {
  background-color: var(--color-on-tertiary-container);
}

.c-error {
  color: var(--color-error);
}

.bdc-error, .error {
  border-color: var(--color-error);
}

.bgc-error {
  background-color: var(--color-error);
}

.c-on-error {
  color: var(--color-on-error);
}

.bdc-on-error {
  border-color: var(--color-on-error);
}

.bgc-on-error {
  background-color: var(--color-on-error);
}

.c-error-container {
  color: var(--color-error-container);
}

.bdc-error-container {
  border-color: var(--color-error-container);
}

.bgc-error-container {
  background-color: var(--color-error-container);
}

.c-on-error-container {
  color: var(--color-on-error-container);
}

.bdc-on-error-container {
  border-color: var(--color-on-error-container);
}

.bgc-on-error-container {
  background-color: var(--color-on-error-container);
}

.c-surface {
  color: var(--color-surface);
}

.bdc-surface {
  border-color: var(--color-surface);
}

.bgc-surface, .fz-panel-section, .fz-alert, .stats-sport-card, .fz-workout-tile, .fz-card, .fz-page-toolbar {
  background-color: var(--color-surface);
}

.c-on-surface, section,
.section, input, textarea, select, .text-input, .fz-tabs > *:not([aria-selected=true]):not(:has(input:checked)):hover, .fz-panel, .fz-panel-list li a,
.fz-panel-list li button, .fz-panel-icon-btn:hover, .fz-panel-header, .fz-panel-header-action:hover, .fz-panel-section, .fz-alert-body, .fz-dashed-action:hover, .stats-total-value, .stats-sport-time, .fz-workout-tile, .fz-card, .fz-sidebar, .fz-sidebar-item, .fz-side-tab:hover {
  color: var(--color-on-surface);
}

.bdc-on-surface {
  border-color: var(--color-on-surface);
}

.bgc-on-surface {
  background-color: var(--color-on-surface);
}

.c-surface-variant {
  color: var(--color-surface-variant);
}

.bdc-surface-variant {
  border-color: var(--color-surface-variant);
}

.bgc-surface-variant {
  background-color: var(--color-surface-variant);
}

.c-on-surface-variant, .fz-prog-label, .fz-bubble-header, .fz-menu-item > i, .fz-menu-item-hint, input:disabled, textarea:disabled, select:disabled, .text-input:disabled, .fz-tabs > *, .fz-panel-icon-btn, .fz-panel-header-action, .fz-panel-section-header h3, .fz-alert-time, .fz-alert-action-muted, .fz-stat-row, .fz-stat-label, .cal-event-chip-meta, .fz-dashed-action, .cal-weekday-header, .cal-day-num, .cal-stats, .stats-week-header, .stats-total-row, .stats-sport-label, .stats-sport-dist, .stats-sport-planned, .fz-workout-tile-meta, .fz-sidebar-section-label, .fz-page-toolbar-title-input::placeholder, .fz-side-tab {
  color: var(--color-on-surface-variant);
}

.bdc-on-surface-variant {
  border-color: var(--color-on-surface-variant);
}

.bgc-on-surface-variant {
  background-color: var(--color-on-surface-variant);
}

.c-outline {
  color: var(--color-outline);
}

.bdc-outline, .fz-tabs > *:not([aria-selected=true]):not(:has(input:checked)):hover, .fz-dashed-action:hover {
  border-color: var(--color-outline);
}

.bgc-outline {
  background-color: var(--color-outline);
}

.c-outline-variant {
  color: var(--color-outline-variant);
}

.bdc-outline-variant, .fz-answer-option, input, textarea, select, .text-input, .fz-tabs > *, .fz-panel-section, .fz-panel-divider, .fz-dashed-action, .fz-sidebar, .fz-right-panel {
  border-color: var(--color-outline-variant);
}

.bgc-outline-variant {
  background-color: var(--color-outline-variant);
}

.c-shadow {
  color: var(--color-shadow);
}

.bdc-shadow {
  border-color: var(--color-shadow);
}

.bgc-shadow {
  background-color: var(--color-shadow);
}

.c-scrim {
  color: var(--color-scrim);
}

.bdc-scrim {
  border-color: var(--color-scrim);
}

.bgc-scrim {
  background-color: var(--color-scrim);
}

.c-inverse-surface {
  color: var(--color-inverse-surface);
}

.bdc-inverse-surface {
  border-color: var(--color-inverse-surface);
}

.bgc-inverse-surface, button:disabled {
  background-color: var(--color-inverse-surface);
}

.c-inverse-on-surface, button:disabled {
  color: var(--color-inverse-on-surface);
}

.bdc-inverse-on-surface {
  border-color: var(--color-inverse-on-surface);
}

.bgc-inverse-on-surface {
  background-color: var(--color-inverse-on-surface);
}

.c-inverse-primary {
  color: var(--color-inverse-primary);
}

.bdc-inverse-primary {
  border-color: var(--color-inverse-primary);
}

.bgc-inverse-primary {
  background-color: var(--color-inverse-primary);
}

.c-primary-fixed {
  color: var(--color-primary-fixed);
}

.bdc-primary-fixed {
  border-color: var(--color-primary-fixed);
}

.bgc-primary-fixed {
  background-color: var(--color-primary-fixed);
}

.c-on-primary-fixed {
  color: var(--color-on-primary-fixed);
}

.bdc-on-primary-fixed {
  border-color: var(--color-on-primary-fixed);
}

.bgc-on-primary-fixed {
  background-color: var(--color-on-primary-fixed);
}

.c-primary-fixed-dim {
  color: var(--color-primary-fixed-dim);
}

.bdc-primary-fixed-dim {
  border-color: var(--color-primary-fixed-dim);
}

.bgc-primary-fixed-dim {
  background-color: var(--color-primary-fixed-dim);
}

.c-on-primary-fixed-variant {
  color: var(--color-on-primary-fixed-variant);
}

.bdc-on-primary-fixed-variant {
  border-color: var(--color-on-primary-fixed-variant);
}

.bgc-on-primary-fixed-variant {
  background-color: var(--color-on-primary-fixed-variant);
}

.c-secondary-fixed {
  color: var(--color-secondary-fixed);
}

.bdc-secondary-fixed {
  border-color: var(--color-secondary-fixed);
}

.bgc-secondary-fixed {
  background-color: var(--color-secondary-fixed);
}

.c-on-secondary-fixed {
  color: var(--color-on-secondary-fixed);
}

.bdc-on-secondary-fixed {
  border-color: var(--color-on-secondary-fixed);
}

.bgc-on-secondary-fixed {
  background-color: var(--color-on-secondary-fixed);
}

.c-secondary-fixed-dim {
  color: var(--color-secondary-fixed-dim);
}

.bdc-secondary-fixed-dim {
  border-color: var(--color-secondary-fixed-dim);
}

.bgc-secondary-fixed-dim {
  background-color: var(--color-secondary-fixed-dim);
}

.c-on-secondary-fixed-variant {
  color: var(--color-on-secondary-fixed-variant);
}

.bdc-on-secondary-fixed-variant {
  border-color: var(--color-on-secondary-fixed-variant);
}

.bgc-on-secondary-fixed-variant {
  background-color: var(--color-on-secondary-fixed-variant);
}

.c-tertiary-fixed {
  color: var(--color-tertiary-fixed);
}

.bdc-tertiary-fixed {
  border-color: var(--color-tertiary-fixed);
}

.bgc-tertiary-fixed {
  background-color: var(--color-tertiary-fixed);
}

.c-on-tertiary-fixed {
  color: var(--color-on-tertiary-fixed);
}

.bdc-on-tertiary-fixed {
  border-color: var(--color-on-tertiary-fixed);
}

.bgc-on-tertiary-fixed {
  background-color: var(--color-on-tertiary-fixed);
}

.c-tertiary-fixed-dim {
  color: var(--color-tertiary-fixed-dim);
}

.bdc-tertiary-fixed-dim {
  border-color: var(--color-tertiary-fixed-dim);
}

.bgc-tertiary-fixed-dim {
  background-color: var(--color-tertiary-fixed-dim);
}

.c-on-tertiary-fixed-variant {
  color: var(--color-on-tertiary-fixed-variant);
}

.bdc-on-tertiary-fixed-variant {
  border-color: var(--color-on-tertiary-fixed-variant);
}

.bgc-on-tertiary-fixed-variant {
  background-color: var(--color-on-tertiary-fixed-variant);
}

.c-surface-dim {
  color: var(--color-surface-dim);
}

.bdc-surface-dim {
  border-color: var(--color-surface-dim);
}

.bgc-surface-dim {
  background-color: var(--color-surface-dim);
}

.c-surface-bright {
  color: var(--color-surface-bright);
}

.bdc-surface-bright {
  border-color: var(--color-surface-bright);
}

.bgc-surface-bright, section,
.section, .cal-day {
  background-color: var(--color-surface-bright);
}

.c-surface-container-lowest {
  color: var(--color-surface-container-lowest);
}

.bdc-surface-container-lowest {
  border-color: var(--color-surface-container-lowest);
}

.bgc-surface-container-lowest, input, textarea, select, .text-input {
  background-color: var(--color-surface-container-lowest);
}

.c-surface-container-low {
  color: var(--color-surface-container-low);
}

.bdc-surface-container-low {
  border-color: var(--color-surface-container-low);
}

.bgc-surface-container-low, input:disabled, textarea:disabled, select:disabled, .text-input:disabled, .fz-panel, .fz-sidebar, .fz-main {
  background-color: var(--color-surface-container-low);
}

.c-surface-container {
  color: var(--color-surface-container);
}

.bdc-surface-container {
  border-color: var(--color-surface-container);
}

.bgc-surface-container, .cal-event-chip, .cal-event-chip-done, .stats-sport-bar, .fz-side-tab, .fz-right-panel {
  background-color: var(--color-surface-container);
}

.c-surface-container-high {
  color: var(--color-surface-container-high);
}

.bdc-surface-container-high {
  border-color: var(--color-surface-container-high);
}

.bgc-surface-container-high, .fz-panel-icon-btn:hover, .fz-panel-header, .fz-sidebar-item:hover {
  background-color: var(--color-surface-container-high);
}

.c-surface-container-highest {
  color: var(--color-surface-container-highest);
}

.bdc-surface-container-highest {
  border-color: var(--color-surface-container-highest);
}

.bgc-surface-container-highest, details.fz-panel-collapsible > summary:hover, .fz-sport-bar, .cal-stats, .fz-workout-tile:hover {
  background-color: var(--color-surface-container-highest);
}

.bgcc-primary {
  color: var(--color-on-primary);
  background-color: var(--color-primary);
}

.bgcc-primary-container, .fz-sidebar-item-active {
  color: var(--color-on-primary-container);
  background-color: var(--color-primary-container);
}

.bgcc-secondary {
  color: var(--color-on-secondary);
  background-color: var(--color-secondary);
}

.bgcc-secondary-container {
  color: var(--color-on-secondary-container);
  background-color: var(--color-secondary-container);
}

.bgcc-tertiary {
  color: var(--color-on-tertiary);
  background-color: var(--color-tertiary);
}

.bgcc-tertiary-container {
  color: var(--color-on-tertiary-container);
  background-color: var(--color-tertiary-container);
}

.bgcc-error {
  color: var(--color-on-error);
  background-color: var(--color-error);
}

.bgcc-error-container, .error {
  color: var(--color-on-error-container);
  background-color: var(--color-error-container);
}

.bgcc-surface {
  color: var(--color-on-surface);
  background-color: var(--color-surface);
}

.bgcc-surface-variant {
  color: var(--color-on-surface-variant);
  background-color: var(--color-surface-variant);
}

.bgcc-primary-fixed {
  color: var(--color-on-primary-fixed);
  background-color: var(--color-primary-fixed);
}

.bgcc-secondary-fixed {
  color: var(--color-on-secondary-fixed);
  background-color: var(--color-secondary-fixed);
}

.bgcc-tertiary-fixed {
  color: var(--color-on-tertiary-fixed);
  background-color: var(--color-tertiary-fixed);
}

/*
    ========================================================
    Font
  */
.fn-1 {
  font-family: var(--font-1);
}

.fn-2, h2, h3, .fz-modal-title {
  font-family: var(--font-2);
}

.fn-3 {
  font-family: var(--font-3);
}

.fn-4 {
  font-family: var(--font-4);
}

/*
    ========================================================
    font size
  */
.fs-xxl, h1 {
  font-size: var(--font-size-xxl);
}

.fs-xl, h2 {
  font-size: var(--font-size-xl);
}

.fs-l, h3, .fz-md h1, .fz-modal-title {
  font-size: var(--font-size-l);
}

.fs-m, .fz-md h2 {
  font-size: var(--font-size-m);
}

.fs-s, .fz-md h3, .fz-md h4, .fz-md h5, .fz-md h6, .fz-panel-header h3, .fz-alert-name, .fz-stat-value, .fz-workout-tile-header, .fz-sidebar-item {
  font-size: var(--font-size-s);
}

.fs-xs, .fz-prog-label, .fz-menu-label, .fz-menu-item-hint, label, .fz-tabs > *, .fz-panel-section-header h3, .fz-alert-body, .fz-alert-action-danger, .fz-stat-row, .cal-event-chip-header, .cal-weekday-header, .cal-stats {
  font-size: var(--font-size-xs);
}

.fs-xxs, .fz-bubble-header, .fz-alert-time, .fz-alert-category, .fz-alert-action, .fz-stat-label, .fz-sport-row, .cal-event-chip-meta, .cal-day-num, .stats-week-header, .stats-total-row, .stats-sport-label, .stats-sport-time, .stats-sport-dist, .fz-workout-tile-meta, .fz-sidebar-section-label {
  font-size: var(--font-size-xxs);
}

.fw-xxxl {
  font-weight: var(--font-weight-xxxl);
}

.fw-xxl {
  font-weight: var(--font-weight-xxl);
}

.fw-xl, .fz-alert-action-danger {
  font-weight: var(--font-weight-xl);
}

.fw-l, .fz-prog-label, .fz-bubble-author, .fz-modal-title, label, .fz-panel-header h3, .fz-panel-section-header h3, .fz-alert-name, .fz-alert-category, .fz-alert-action, .fz-stat-value, .cal-weekday-header, .cal-day-num-month, .stats-week-header {
  font-weight: var(--font-weight-l);
}

.fw-m, .cal-event-chip-header, .stats-total-value, .stats-sport-time, .fz-workout-tile-header {
  font-weight: var(--font-weight-m);
}

.fw-s, .fz-tabs > * {
  font-weight: var(--font-weight-s);
}

.fw-xs {
  font-weight: var(--font-weight-xs);
}

.fw-xxs {
  font-weight: var(--font-weight-xxs);
}

.fw-xxxs {
  font-weight: var(--font-weight-xxxs);
}

/* 
    ========================================================
    Max width
  */
/* 
    ========================================================
    Display
  */
.fg-0 {
  flex-grow: 0;
}

.fg-1 {
  flex-grow: 1;
}

.fw-w, .fz-prog-row, .fz-alert-actions {
  flex-wrap: wrap;
}

.ai-c, .fz-answer-option, .fz-prog-row, .fz-bubble-header, .fz-modal-header, .fz-modal-footer, .fz-tabs > *, .icon-button, .fz-panel-header, .fz-panel-header-action, .fz-alert-actions, .fz-alert-action, .fz-alert-action-danger, .fz-sport-row, .cal-event-chip-header, .cal-ap-chip-header, .fz-dashed-action, .stats-sport-card, .fz-workout-tile-header {
  align-items: center;
}

.ai-b, .fz-form-grid, .fz-alert-header, .stats-week-header, .stats-total-row {
  align-items: baseline;
}

/* 
    ========================================================
    Borders
  */
/* So that this can be overriden by below styles, it must
     appear first. */
.b-reset, .error, input, textarea, select, .text-input, .fz-tabs > *, button, .button, .icon-button, .fz-panel-header-action, .fz-panel-section, .fz-panel-divider, .fz-alert, .fz-alert-action, .fz-alert-action-danger, .cal-day, .cal-day-today, .stats-sport-card, .fz-workout-tile, .fz-card, .fz-sidebar, .fz-right-panel {
  border-width: 0;
  border-style: solid;
}

/* 
    ========================================================
    Padding & margins
  */
/* 
    ========================================================
    Transitions
  */
.t-color-fast, a,
.link, .fz-sidebar-item {
  transition: var(--transition-color-fast);
}

.t-all-fast, .fz-answer-option, .fz-tabs > *, .fz-panel-tabs li, .fz-alert-action-danger, .fz-dashed-action, .cal-day-add, .fz-workout-tile {
  transition: var(--transition-all-fast);
}

.t-color-slow {
  transition: var(--transition-color-slow);
}

.t-all-slow {
  transition: var(--transition-all-slow);
}

/*
    ========================================================
    Letter spacing
  */
.ls-s, .fz-alert-time, .cal-day-num, .stats-week-header, .stats-sport-label {
  letter-spacing: var(--letter-spacing-s);
}

.ls-m, .fz-alert-action, .fz-alert-action-danger {
  letter-spacing: var(--letter-spacing-m);
}

.ls-l, .fz-alert-category {
  letter-spacing: var(--letter-spacing-l);
}

/*
    ========================================================
    Opacity
  */
.op-decorative, .fz-empty-action-bg-icon {
  opacity: var(--opacity-decorative);
}

.op-muted, .cal-day-num {
  opacity: var(--opacity-muted);
}

.op-dim, .fz-tabs > .fz-tab-dim:not([aria-selected=true]), .fz-sport-bar-fill {
  opacity: var(--opacity-dim);
}

.op-subtle, .cal-event-chip-meta {
  opacity: var(--opacity-subtle);
}

/*
    ========================================================
    Line height
  */
.lh-s, .fz-empty-action i, .fz-empty-action-bg-icon {
  line-height: var(--line-height-s);
}

.lh-m {
  line-height: var(--line-height-m);
}

.lh-l, .fz-alert-body {
  line-height: var(--line-height-l);
}

/*
    ========================================================
    Derived colors — computed from resolved theme tokens, not customizable directly.
    Lives here rather than theme.css so theme.css stays raw-values-only.
  */
:root {
  --color-outline-faint: color-mix(in srgb, var(--color-outline-variant) 30%, transparent);
}

.bdc-outline-faint, .fz-alert, .cal-day, .stats-sport-card, .fz-workout-tile, .fz-card {
  border-color: var(--color-outline-faint);
}

.bgc-outline-faint {
  background-color: var(--color-outline-faint);
}

/*
  ========================================================
  Animations
*/
@keyframes slide-in-right {
  0% {
    transform: translateX(100%);
  }
}
@keyframes slide-in-bottom {
  0% {
    transform: translateY(25%);
  }
}
@keyframes slide-out-right {
  to {
    transform: translateX(100%);
  }
}
@keyframes slide-out-bottom {
  to {
    transform: translateY(25%);
  }
}
@keyframes opacity-fade-out {
  from {
    opacity: 0.9;
  }
  to {
    opacity: 0;
  }
}
@keyframes opacity-fade-in {
  0% {
    opacity: 0;
  }
}
:root {
  --ease-1: cubic-bezier(.25,0,.3,1);
  --animation-slide-in-right: slide-in-right 0.2s var(--ease-1);
  --animation-slide-in-bottom: slide-in-bottom 0.2s var(--ease-1);
  --animation-slide-out-right: slide-out-right 0.2s var(--ease-1);
  --animation-slide-out-bottom: slide-out-bottom 0.2s var(--ease-1);
  --animation-fade-in: opacity-fade-in 0.2s var(--ease-1);
  --animation-fade-out: opacity-fade-out 0.2s var(--ease-1);
}

/* 
    ========================================================
    Generate rules with media versions.
  */
/* The default size is "s", small. There are no suffix for "s", since it's the default. */
.ta-l {
  text-align: left;
}

.ta-r {
  text-align: right;
}

.gp-xxxl {
  gap: var(--spacing-xxxl);
}

.rgp-xxxl {
  row-gap: var(--spacing-xxxl);
}

.cgp-xxxl {
  column-gap: var(--spacing-xxxl);
}

.gp-xxl {
  gap: var(--spacing-xxl);
}

.rgp-xxl {
  row-gap: var(--spacing-xxl);
}

.cgp-xxl {
  column-gap: var(--spacing-xxl);
}

.gp-xl {
  gap: var(--spacing-xl);
}

.rgp-xl {
  row-gap: var(--spacing-xl);
}

.cgp-xl {
  column-gap: var(--spacing-xl);
}

.gp-l {
  gap: var(--spacing-l);
}

.rgp-l {
  row-gap: var(--spacing-l);
}

.cgp-l {
  column-gap: var(--spacing-l);
}

.gp-m {
  gap: var(--spacing-m);
}

.rgp-m {
  row-gap: var(--spacing-m);
}

.cgp-m {
  column-gap: var(--spacing-m);
}

.gp-s, .fz-modal-footer, .fz-alert-actions {
  gap: var(--spacing-s);
}

.rgp-s {
  row-gap: var(--spacing-s);
}

.cgp-s {
  column-gap: var(--spacing-s);
}

.gp-xs, .fz-answer-option, .fz-prog-row, .fz-modal-header, .fz-stat-cards, .stats-total-row {
  gap: var(--spacing-xs);
}

.rgp-xs {
  row-gap: var(--spacing-xs);
}

.cgp-xs {
  column-gap: var(--spacing-xs);
}

.gp-xxs, .fz-bubble-header, .fz-form-grid, .fz-tabs > *, .icon-button, .fz-panel-section-body, .fz-alert-action-danger, .fz-sport-row, .fz-dashed-action, .stats-week-header, .stats-sport-cards, .fz-workout-tile-header {
  gap: var(--spacing-xxs);
}

.rgp-xxs {
  row-gap: var(--spacing-xxs);
}

.cgp-xxs {
  column-gap: var(--spacing-xxs);
}

.gp-xxxs, .fz-alert-action, .cal-event-chip-header, .cal-ap-chip-header {
  gap: var(--spacing-xxxs);
}

.rgp-xxxs {
  row-gap: var(--spacing-xxxs);
}

.cgp-xxxs {
  column-gap: var(--spacing-xxxs);
}

.gp-none {
  gap: var(--spacing-none);
}

.rgp-none {
  row-gap: var(--spacing-none);
}

.cgp-none {
  column-gap: var(--spacing-none);
}

.p-xxl {
  padding: var(--spacing-xxl);
}

.pl-xxl {
  padding-left: var(--spacing-xxl);
}

.pr-xxl {
  padding-right: var(--spacing-xxl);
}

.pt-xxl {
  padding-top: var(--spacing-xxl);
}

.pb-xxl {
  padding-bottom: var(--spacing-xxl);
}

.ph-xxl {
  padding-left: var(--spacing-xxl);
  padding-right: var(--spacing-xxl);
}

.pv-xxl {
  padding-top: var(--spacing-xxl);
  padding-bottom: var(--spacing-xxl);
}

.m-xxl {
  margin: var(--spacing-xxl);
}

.ml-xxl {
  margin-left: var(--spacing-xxl);
}

.mr-xxl {
  margin-right: var(--spacing-xxl);
}

.mt-xxl {
  margin-top: var(--spacing-xxl);
}

.mb-xxl {
  margin-bottom: var(--spacing-xxl);
}

.mh-xxl {
  margin-left: var(--spacing-xxl);
  margin-right: var(--spacing-xxl);
}

.mv-xxl {
  margin-top: var(--spacing-xxl);
  margin-bottom: var(--spacing-xxl);
}

.p-xl {
  padding: var(--spacing-xl);
}

.pl-xl {
  padding-left: var(--spacing-xl);
}

.pr-xl {
  padding-right: var(--spacing-xl);
}

.pt-xl {
  padding-top: var(--spacing-xl);
}

.pb-xl {
  padding-bottom: var(--spacing-xl);
}

.ph-xl {
  padding-left: var(--spacing-xl);
  padding-right: var(--spacing-xl);
}

.pv-xl {
  padding-top: var(--spacing-xl);
  padding-bottom: var(--spacing-xl);
}

.m-xl {
  margin: var(--spacing-xl);
}

.ml-xl {
  margin-left: var(--spacing-xl);
}

.mr-xl {
  margin-right: var(--spacing-xl);
}

.mt-xl {
  margin-top: var(--spacing-xl);
}

.mb-xl {
  margin-bottom: var(--spacing-xl);
}

.mh-xl {
  margin-left: var(--spacing-xl);
  margin-right: var(--spacing-xl);
}

.mv-xl {
  margin-top: var(--spacing-xl);
  margin-bottom: var(--spacing-xl);
}

.p-l {
  padding: var(--spacing-l);
}

.pl-l {
  padding-left: var(--spacing-l);
}

.pr-l {
  padding-right: var(--spacing-l);
}

.pt-l {
  padding-top: var(--spacing-l);
}

.pb-l {
  padding-bottom: var(--spacing-l);
}

.ph-l {
  padding-left: var(--spacing-l);
  padding-right: var(--spacing-l);
}

.pv-l {
  padding-top: var(--spacing-l);
  padding-bottom: var(--spacing-l);
}

.m-l {
  margin: var(--spacing-l);
}

.ml-l {
  margin-left: var(--spacing-l);
}

.mr-l {
  margin-right: var(--spacing-l);
}

.mt-l {
  margin-top: var(--spacing-l);
}

.mb-l {
  margin-bottom: var(--spacing-l);
}

.mh-l {
  margin-left: var(--spacing-l);
  margin-right: var(--spacing-l);
}

.mv-l {
  margin-top: var(--spacing-l);
  margin-bottom: var(--spacing-l);
}

.p-m {
  padding: var(--spacing-m);
}

.pl-m {
  padding-left: var(--spacing-m);
}

.pr-m {
  padding-right: var(--spacing-m);
}

.pt-m {
  padding-top: var(--spacing-m);
}

.pb-m {
  padding-bottom: var(--spacing-m);
}

.ph-m {
  padding-left: var(--spacing-m);
  padding-right: var(--spacing-m);
}

.pv-m {
  padding-top: var(--spacing-m);
  padding-bottom: var(--spacing-m);
}

.m-m {
  margin: var(--spacing-m);
}

.ml-m {
  margin-left: var(--spacing-m);
}

.mr-m {
  margin-right: var(--spacing-m);
}

.mt-m {
  margin-top: var(--spacing-m);
}

.mb-m {
  margin-bottom: var(--spacing-m);
}

.mh-m {
  margin-left: var(--spacing-m);
  margin-right: var(--spacing-m);
}

.mv-m {
  margin-top: var(--spacing-m);
  margin-bottom: var(--spacing-m);
}

.p-s {
  padding: var(--spacing-s);
}

.pl-s {
  padding-left: var(--spacing-s);
}

.pr-s {
  padding-right: var(--spacing-s);
}

.pt-s {
  padding-top: var(--spacing-s);
}

.pb-s {
  padding-bottom: var(--spacing-s);
}

.ph-s, .fz-panel-header, .fz-panel-section-header, .fz-panel-section-body, .fz-sidebar-brand, .fz-sidebar-section-label, .fz-sidebar-item, .fz-page-toolbar, .fz-toolbar-tabs {
  padding-left: var(--spacing-s);
  padding-right: var(--spacing-s);
}

.pv-s, .fz-sidebar-brand {
  padding-top: var(--spacing-s);
  padding-bottom: var(--spacing-s);
}

.m-s {
  margin: var(--spacing-s);
}

.ml-s {
  margin-left: var(--spacing-s);
}

.mr-s {
  margin-right: var(--spacing-s);
}

.mt-s {
  margin-top: var(--spacing-s);
}

.mb-s, section,
.section {
  margin-bottom: var(--spacing-s);
}

.mh-s {
  margin-left: var(--spacing-s);
  margin-right: var(--spacing-s);
}

.mv-s {
  margin-top: var(--spacing-s);
  margin-bottom: var(--spacing-s);
}

.p-xs, section,
.section, .fz-answer-option, .fz-workout-tile, .fz-card {
  padding: var(--spacing-xs);
}

.pl-xs {
  padding-left: var(--spacing-xs);
}

.pr-xs {
  padding-right: var(--spacing-xs);
}

.pt-xs, .fz-panel-section-header {
  padding-top: var(--spacing-xs);
}

.pb-xs {
  padding-bottom: var(--spacing-xs);
}

.ph-xs, .fz-menu-label, .fz-tabs > *, button, .button, .icon-button, .cal-weekday-header {
  padding-left: var(--spacing-xs);
  padding-right: var(--spacing-xs);
}

.pv-xs, .fz-panel-header, .fz-panel-section-body, .fz-sidebar-nav, .fz-sidebar-footer, .fz-page-toolbar {
  padding-top: var(--spacing-xs);
  padding-bottom: var(--spacing-xs);
}

.m-xs, .fz-panel-list li {
  margin: var(--spacing-xs);
}

.ml-xs {
  margin-left: var(--spacing-xs);
}

.mr-xs {
  margin-right: var(--spacing-xs);
}

.mt-xs {
  margin-top: var(--spacing-xs);
}

.mb-xs, label, .fz-alert-category, .fz-alert-body, .fz-sidebar-section {
  margin-bottom: var(--spacing-xs);
}

.mh-xs {
  margin-left: var(--spacing-xs);
  margin-right: var(--spacing-xs);
}

.mv-xs {
  margin-top: var(--spacing-xs);
  margin-bottom: var(--spacing-xs);
}

.p-xxs, input, textarea, select, .text-input, .cal-day, .stats-sport-card {
  padding: var(--spacing-xxs);
}

.pl-xxs, .fz-alert-category {
  padding-left: var(--spacing-xxs);
}

.pr-xxs {
  padding-right: var(--spacing-xxs);
}

.pt-xxs, .fz-tabs > *, .fz-toolbar-tabs {
  padding-top: var(--spacing-xxs);
}

.pb-xxs, .cal-weekday-header {
  padding-bottom: var(--spacing-xxs);
}

.ph-xxs {
  padding-left: var(--spacing-xxs);
  padding-right: var(--spacing-xxs);
}

.pv-xxs, .fz-menu-label, button, .button, .icon-button, .fz-sidebar-section-label, .fz-sidebar-item {
  padding-top: var(--spacing-xxs);
  padding-bottom: var(--spacing-xxs);
}

.m-xxs, .fz-alert {
  margin: var(--spacing-xxs);
}

.ml-xxs {
  margin-left: var(--spacing-xxs);
}

.mr-xxs {
  margin-right: var(--spacing-xxs);
}

.mt-xxs, .cal-event-chip, .cal-event-chip-done, .cal-ap-chip {
  margin-top: var(--spacing-xxs);
}

.mb-xxs, .fz-alert-header {
  margin-bottom: var(--spacing-xxs);
}

.mh-xxs {
  margin-left: var(--spacing-xxs);
  margin-right: var(--spacing-xxs);
}

.mv-xxs, .fz-panel-divider {
  margin-top: var(--spacing-xxs);
  margin-bottom: var(--spacing-xxs);
}

.p-none, .fz-panel-list, .fz-panel-list li, .fz-panel-header-action, .fz-alert-action {
  padding: var(--spacing-none);
}

.pl-none {
  padding-left: var(--spacing-none);
}

.pr-none {
  padding-right: var(--spacing-none);
}

.pt-none, .cal-weekday-header {
  padding-top: var(--spacing-none);
}

.pb-none {
  padding-bottom: var(--spacing-none);
}

.ph-none {
  padding-left: var(--spacing-none);
  padding-right: var(--spacing-none);
}

.pv-none {
  padding-top: var(--spacing-none);
  padding-bottom: var(--spacing-none);
}

.m-none, .fz-panel-list, .fz-panel-header h3, .fz-panel-tabs, .fz-panel-section-header h3 {
  margin: var(--spacing-none);
}

.ml-none {
  margin-left: var(--spacing-none);
}

.mr-none {
  margin-right: var(--spacing-none);
}

.mt-none {
  margin-top: var(--spacing-none);
}

.mb-none {
  margin-bottom: var(--spacing-none);
}

.mh-none {
  margin-left: var(--spacing-none);
  margin-right: var(--spacing-none);
}

.mv-none {
  margin-top: var(--spacing-none);
  margin-bottom: var(--spacing-none);
}

.d-b, label, .fz-panel-list li a,
.fz-panel-list li button, .fz-empty-action i, .fz-workout-tile, .fz-card {
  display: block;
}

.d-ib {
  display: inline-block;
}

.d-n {
  display: none;
}

.d-tc {
  display: table-cell;
}

.d-f, .fz-answer-option, .fz-prog-row, .fz-bubble-header, .fz-modal-header, .fz-modal-footer, .fz-tabs > *, .icon-button, .fz-panel-header, .fz-panel-header-action, .fz-panel-section-body, .fz-alert-header, .fz-alert-actions, .fz-alert-action, .fz-alert-action-danger, .fz-stat-row, .fz-stat-cards, .fz-stat-card, .fz-sport-row, .fz-sport-bar, .cal-event-chip-header, .cal-ap-chip-header, .fz-dashed-action, .stats-week-header, .stats-total-row, .stats-sport-bar, .stats-sport-cards, .stats-sport-card, .fz-workout-tile-header {
  display: flex;
}

.d-g {
  display: grid;
}

.bw-xxl {
  border-width: var(--border-width-xxl);
}

.blw-xxl {
  border-left-width: var(--border-width-xxl);
}

.brw-xxl {
  border-right-width: var(--border-width-xxl);
}

.btw-xxl {
  border-top-width: var(--border-width-xxl);
}

.bbw-xxl {
  border-bottom-width: var(--border-width-xxl);
}

.br-xxl {
  border-radius: var(--border-radius-xxl);
}

.brt-xxl {
  border-top-left-radius: var(--border-radius-xxl);
  border-top-right-radius: var(--border-radius-xxl);
}

.bw-xl {
  border-width: var(--border-width-xl);
}

.blw-xl {
  border-left-width: var(--border-width-xl);
}

.brw-xl {
  border-right-width: var(--border-width-xl);
}

.btw-xl {
  border-top-width: var(--border-width-xl);
}

.bbw-xl {
  border-bottom-width: var(--border-width-xl);
}

.br-xl {
  border-radius: var(--border-radius-xl);
}

.brt-xl {
  border-top-left-radius: var(--border-radius-xl);
  border-top-right-radius: var(--border-radius-xl);
}

.bw-l {
  border-width: var(--border-width-l);
}

.blw-l {
  border-left-width: var(--border-width-l);
}

.brw-l {
  border-right-width: var(--border-width-l);
}

.btw-l {
  border-top-width: var(--border-width-l);
}

.bbw-l, .fz-tabs > *[aria-selected=true],
.fz-tabs > *:has(input:checked) {
  border-bottom-width: var(--border-width-l);
}

.br-l, section,
.section, button, .button, .icon-button, .fz-panel {
  border-radius: var(--border-radius-l);
}

.brt-l {
  border-top-left-radius: var(--border-radius-l);
  border-top-right-radius: var(--border-radius-l);
}

.bw-m, .fz-dashed-action {
  border-width: var(--border-width-m);
}

.blw-m, .error {
  border-left-width: var(--border-width-m);
}

.brw-m {
  border-right-width: var(--border-width-m);
}

.btw-m {
  border-top-width: var(--border-width-m);
}

.bbw-m {
  border-bottom-width: var(--border-width-m);
}

.br-m, dialog, .popover, .fz-alert, .fz-alert-action-danger, .fz-dashed-action, .cal-day, .cal-stats, .fz-workout-tile, .fz-card {
  border-radius: var(--border-radius-m);
}

.brt-m {
  border-top-left-radius: var(--border-radius-m);
  border-top-right-radius: var(--border-radius-m);
}

.bw-s, .fz-answer-option {
  border-width: var(--border-width-s);
}

.blw-s {
  border-left-width: var(--border-width-s);
}

.brw-s {
  border-right-width: var(--border-width-s);
}

.btw-s {
  border-top-width: var(--border-width-s);
}

.bbw-s, .fz-tabs > * {
  border-bottom-width: var(--border-width-s);
}

.br-s, .fz-answer-option, input, textarea, select, .text-input, .cal-event-chip, .cal-event-chip-done, .cal-ap-chip, .stats-sport-bar, .stats-sport-card {
  border-radius: var(--border-radius-s);
}

.brt-s {
  border-top-left-radius: var(--border-radius-s);
  border-top-right-radius: var(--border-radius-s);
}

.bw-xs {
  border-width: var(--border-width-xs);
}

.blw-xs {
  border-left-width: var(--border-width-xs);
}

.brw-xs {
  border-right-width: var(--border-width-xs);
}

.btw-xs {
  border-top-width: var(--border-width-xs);
}

.bbw-xs {
  border-bottom-width: var(--border-width-xs);
}

.br-xs, .fz-sport-bar, .fz-sport-bar-fill {
  border-radius: var(--border-radius-xs);
}

.brt-xs {
  border-top-left-radius: var(--border-radius-xs);
  border-top-right-radius: var(--border-radius-xs);
}

.bw-xxs, input, textarea, select, .text-input, button, .button, .icon-button, .fz-alert, .stats-sport-card, .fz-workout-tile, .fz-card {
  border-width: var(--border-width-xxs);
}

.blw-xxs, .fz-right-panel {
  border-left-width: var(--border-width-xxs);
}

.brw-xxs, .fz-sidebar {
  border-right-width: var(--border-width-xxs);
}

.btw-xxs, .fz-panel-section, .fz-panel-divider {
  border-top-width: var(--border-width-xxs);
}

.bbw-xxs {
  border-bottom-width: var(--border-width-xxs);
}

.br-xxs {
  border-radius: var(--border-radius-xxs);
}

.brt-xxs {
  border-top-left-radius: var(--border-radius-xxs);
  border-top-right-radius: var(--border-radius-xxs);
}

.w-xxxl {
  width: var(--width-xxxl);
}

.maxw-xxxl {
  max-width: var(--width-xxxl);
}

.minw-xxxl {
  min-width: var(--width-xxxl);
}

.w-xxl {
  width: var(--width-xxl);
}

.maxw-xxl {
  max-width: var(--width-xxl);
}

.minw-xxl {
  min-width: var(--width-xxl);
}

.w-xl {
  width: var(--width-xl);
}

.maxw-xl {
  max-width: var(--width-xl);
}

.minw-xl {
  min-width: var(--width-xl);
}

.w-l {
  width: var(--width-l);
}

.maxw-l {
  max-width: var(--width-l);
}

.minw-l {
  min-width: var(--width-l);
}

.w-m {
  width: var(--width-m);
}

.maxw-m {
  max-width: var(--width-m);
}

.minw-m {
  min-width: var(--width-m);
}

.w-s {
  width: var(--width-s);
}

.maxw-s {
  max-width: var(--width-s);
}

.minw-s {
  min-width: var(--width-s);
}

.w-xs {
  width: var(--width-xs);
}

.maxw-xs {
  max-width: var(--width-xs);
}

.minw-xs {
  min-width: var(--width-xs);
}

.w-xxs {
  width: var(--width-xxs);
}

.maxw-xxs {
  max-width: var(--width-xxs);
}

.minw-xxs {
  min-width: var(--width-xxs);
}

.w-xxxs {
  width: var(--width-xxxs);
}

.maxw-xxxs {
  max-width: var(--width-xxxs);
}

.minw-xxxs {
  min-width: var(--width-xxxs);
}

/* Not Small */
@media screen and (min-width: 30em) {
  .ta-l_ns {
    text-align: left;
  }

  .ta-r_ns, .formgrid field {
    text-align: right;
  }

  .gp-xxxl_ns {
    gap: var(--spacing-xxxl);
  }

  .rgp-xxxl_ns {
    row-gap: var(--spacing-xxxl);
  }

  .cgp-xxxl_ns {
    column-gap: var(--spacing-xxxl);
  }

  .gp-xxl_ns {
    gap: var(--spacing-xxl);
  }

  .rgp-xxl_ns {
    row-gap: var(--spacing-xxl);
  }

  .cgp-xxl_ns {
    column-gap: var(--spacing-xxl);
  }

  .gp-xl_ns {
    gap: var(--spacing-xl);
  }

  .rgp-xl_ns {
    row-gap: var(--spacing-xl);
  }

  .cgp-xl_ns {
    column-gap: var(--spacing-xl);
  }

  .gp-l_ns {
    gap: var(--spacing-l);
  }

  .rgp-l_ns {
    row-gap: var(--spacing-l);
  }

  .cgp-l_ns {
    column-gap: var(--spacing-l);
  }

  .gp-m_ns {
    gap: var(--spacing-m);
  }

  .rgp-m_ns {
    row-gap: var(--spacing-m);
  }

  .cgp-m_ns {
    column-gap: var(--spacing-m);
  }

  .gp-s_ns {
    gap: var(--spacing-s);
  }

  .rgp-s_ns {
    row-gap: var(--spacing-s);
  }

  .cgp-s_ns {
    column-gap: var(--spacing-s);
  }

  .gp-xs_ns {
    gap: var(--spacing-xs);
  }

  .rgp-xs_ns {
    row-gap: var(--spacing-xs);
  }

  .cgp-xs_ns {
    column-gap: var(--spacing-xs);
  }

  .gp-xxs_ns {
    gap: var(--spacing-xxs);
  }

  .rgp-xxs_ns {
    row-gap: var(--spacing-xxs);
  }

  .cgp-xxs_ns {
    column-gap: var(--spacing-xxs);
  }

  .gp-xxxs_ns {
    gap: var(--spacing-xxxs);
  }

  .rgp-xxxs_ns {
    row-gap: var(--spacing-xxxs);
  }

  .cgp-xxxs_ns {
    column-gap: var(--spacing-xxxs);
  }

  .gp-none_ns {
    gap: var(--spacing-none);
  }

  .rgp-none_ns {
    row-gap: var(--spacing-none);
  }

  .cgp-none_ns {
    column-gap: var(--spacing-none);
  }

  .p-xxl_ns {
    padding: var(--spacing-xxl);
  }

  .pl-xxl_ns {
    padding-left: var(--spacing-xxl);
  }

  .pr-xxl_ns {
    padding-right: var(--spacing-xxl);
  }

  .pt-xxl_ns {
    padding-top: var(--spacing-xxl);
  }

  .pb-xxl_ns {
    padding-bottom: var(--spacing-xxl);
  }

  .ph-xxl_ns {
    padding-left: var(--spacing-xxl);
    padding-right: var(--spacing-xxl);
  }

  .pv-xxl_ns {
    padding-top: var(--spacing-xxl);
    padding-bottom: var(--spacing-xxl);
  }

  .m-xxl_ns {
    margin: var(--spacing-xxl);
  }

  .ml-xxl_ns {
    margin-left: var(--spacing-xxl);
  }

  .mr-xxl_ns {
    margin-right: var(--spacing-xxl);
  }

  .mt-xxl_ns {
    margin-top: var(--spacing-xxl);
  }

  .mb-xxl_ns {
    margin-bottom: var(--spacing-xxl);
  }

  .mh-xxl_ns {
    margin-left: var(--spacing-xxl);
    margin-right: var(--spacing-xxl);
  }

  .mv-xxl_ns {
    margin-top: var(--spacing-xxl);
    margin-bottom: var(--spacing-xxl);
  }

  .p-xl_ns {
    padding: var(--spacing-xl);
  }

  .pl-xl_ns {
    padding-left: var(--spacing-xl);
  }

  .pr-xl_ns {
    padding-right: var(--spacing-xl);
  }

  .pt-xl_ns {
    padding-top: var(--spacing-xl);
  }

  .pb-xl_ns {
    padding-bottom: var(--spacing-xl);
  }

  .ph-xl_ns {
    padding-left: var(--spacing-xl);
    padding-right: var(--spacing-xl);
  }

  .pv-xl_ns {
    padding-top: var(--spacing-xl);
    padding-bottom: var(--spacing-xl);
  }

  .m-xl_ns {
    margin: var(--spacing-xl);
  }

  .ml-xl_ns {
    margin-left: var(--spacing-xl);
  }

  .mr-xl_ns {
    margin-right: var(--spacing-xl);
  }

  .mt-xl_ns {
    margin-top: var(--spacing-xl);
  }

  .mb-xl_ns {
    margin-bottom: var(--spacing-xl);
  }

  .mh-xl_ns {
    margin-left: var(--spacing-xl);
    margin-right: var(--spacing-xl);
  }

  .mv-xl_ns {
    margin-top: var(--spacing-xl);
    margin-bottom: var(--spacing-xl);
  }

  .p-l_ns {
    padding: var(--spacing-l);
  }

  .pl-l_ns {
    padding-left: var(--spacing-l);
  }

  .pr-l_ns {
    padding-right: var(--spacing-l);
  }

  .pt-l_ns {
    padding-top: var(--spacing-l);
  }

  .pb-l_ns {
    padding-bottom: var(--spacing-l);
  }

  .ph-l_ns {
    padding-left: var(--spacing-l);
    padding-right: var(--spacing-l);
  }

  .pv-l_ns {
    padding-top: var(--spacing-l);
    padding-bottom: var(--spacing-l);
  }

  .m-l_ns {
    margin: var(--spacing-l);
  }

  .ml-l_ns {
    margin-left: var(--spacing-l);
  }

  .mr-l_ns {
    margin-right: var(--spacing-l);
  }

  .mt-l_ns {
    margin-top: var(--spacing-l);
  }

  .mb-l_ns {
    margin-bottom: var(--spacing-l);
  }

  .mh-l_ns {
    margin-left: var(--spacing-l);
    margin-right: var(--spacing-l);
  }

  .mv-l_ns {
    margin-top: var(--spacing-l);
    margin-bottom: var(--spacing-l);
  }

  .p-m_ns {
    padding: var(--spacing-m);
  }

  .pl-m_ns {
    padding-left: var(--spacing-m);
  }

  .pr-m_ns {
    padding-right: var(--spacing-m);
  }

  .pt-m_ns {
    padding-top: var(--spacing-m);
  }

  .pb-m_ns {
    padding-bottom: var(--spacing-m);
  }

  .ph-m_ns {
    padding-left: var(--spacing-m);
    padding-right: var(--spacing-m);
  }

  .pv-m_ns {
    padding-top: var(--spacing-m);
    padding-bottom: var(--spacing-m);
  }

  .m-m_ns {
    margin: var(--spacing-m);
  }

  .ml-m_ns {
    margin-left: var(--spacing-m);
  }

  .mr-m_ns {
    margin-right: var(--spacing-m);
  }

  .mt-m_ns {
    margin-top: var(--spacing-m);
  }

  .mb-m_ns {
    margin-bottom: var(--spacing-m);
  }

  .mh-m_ns {
    margin-left: var(--spacing-m);
    margin-right: var(--spacing-m);
  }

  .mv-m_ns {
    margin-top: var(--spacing-m);
    margin-bottom: var(--spacing-m);
  }

  .p-s_ns, section,
.section {
    padding: var(--spacing-s);
  }

  .pl-s_ns {
    padding-left: var(--spacing-s);
  }

  .pr-s_ns {
    padding-right: var(--spacing-s);
  }

  .pt-s_ns {
    padding-top: var(--spacing-s);
  }

  .pb-s_ns {
    padding-bottom: var(--spacing-s);
  }

  .ph-s_ns {
    padding-left: var(--spacing-s);
    padding-right: var(--spacing-s);
  }

  .pv-s_ns {
    padding-top: var(--spacing-s);
    padding-bottom: var(--spacing-s);
  }

  .m-s_ns {
    margin: var(--spacing-s);
  }

  .ml-s_ns {
    margin-left: var(--spacing-s);
  }

  .mr-s_ns {
    margin-right: var(--spacing-s);
  }

  .mt-s_ns {
    margin-top: var(--spacing-s);
  }

  .mb-s_ns {
    margin-bottom: var(--spacing-s);
  }

  .mh-s_ns {
    margin-left: var(--spacing-s);
    margin-right: var(--spacing-s);
  }

  .mv-s_ns {
    margin-top: var(--spacing-s);
    margin-bottom: var(--spacing-s);
  }

  .p-xs_ns {
    padding: var(--spacing-xs);
  }

  .pl-xs_ns {
    padding-left: var(--spacing-xs);
  }

  .pr-xs_ns {
    padding-right: var(--spacing-xs);
  }

  .pt-xs_ns {
    padding-top: var(--spacing-xs);
  }

  .pb-xs_ns {
    padding-bottom: var(--spacing-xs);
  }

  .ph-xs_ns {
    padding-left: var(--spacing-xs);
    padding-right: var(--spacing-xs);
  }

  .pv-xs_ns {
    padding-top: var(--spacing-xs);
    padding-bottom: var(--spacing-xs);
  }

  .m-xs_ns {
    margin: var(--spacing-xs);
  }

  .ml-xs_ns {
    margin-left: var(--spacing-xs);
  }

  .mr-xs_ns {
    margin-right: var(--spacing-xs);
  }

  .mt-xs_ns {
    margin-top: var(--spacing-xs);
  }

  .mb-xs_ns {
    margin-bottom: var(--spacing-xs);
  }

  .mh-xs_ns {
    margin-left: var(--spacing-xs);
    margin-right: var(--spacing-xs);
  }

  .mv-xs_ns {
    margin-top: var(--spacing-xs);
    margin-bottom: var(--spacing-xs);
  }

  .p-xxs_ns {
    padding: var(--spacing-xxs);
  }

  .pl-xxs_ns {
    padding-left: var(--spacing-xxs);
  }

  .pr-xxs_ns {
    padding-right: var(--spacing-xxs);
  }

  .pt-xxs_ns {
    padding-top: var(--spacing-xxs);
  }

  .pb-xxs_ns {
    padding-bottom: var(--spacing-xxs);
  }

  .ph-xxs_ns {
    padding-left: var(--spacing-xxs);
    padding-right: var(--spacing-xxs);
  }

  .pv-xxs_ns {
    padding-top: var(--spacing-xxs);
    padding-bottom: var(--spacing-xxs);
  }

  .m-xxs_ns {
    margin: var(--spacing-xxs);
  }

  .ml-xxs_ns {
    margin-left: var(--spacing-xxs);
  }

  .mr-xxs_ns {
    margin-right: var(--spacing-xxs);
  }

  .mt-xxs_ns {
    margin-top: var(--spacing-xxs);
  }

  .mb-xxs_ns {
    margin-bottom: var(--spacing-xxs);
  }

  .mh-xxs_ns {
    margin-left: var(--spacing-xxs);
    margin-right: var(--spacing-xxs);
  }

  .mv-xxs_ns {
    margin-top: var(--spacing-xxs);
    margin-bottom: var(--spacing-xxs);
  }

  .p-none_ns {
    padding: var(--spacing-none);
  }

  .pl-none_ns {
    padding-left: var(--spacing-none);
  }

  .pr-none_ns {
    padding-right: var(--spacing-none);
  }

  .pt-none_ns {
    padding-top: var(--spacing-none);
  }

  .pb-none_ns {
    padding-bottom: var(--spacing-none);
  }

  .ph-none_ns {
    padding-left: var(--spacing-none);
    padding-right: var(--spacing-none);
  }

  .pv-none_ns {
    padding-top: var(--spacing-none);
    padding-bottom: var(--spacing-none);
  }

  .m-none_ns {
    margin: var(--spacing-none);
  }

  .ml-none_ns {
    margin-left: var(--spacing-none);
  }

  .mr-none_ns {
    margin-right: var(--spacing-none);
  }

  .mt-none_ns {
    margin-top: var(--spacing-none);
  }

  .mb-none_ns {
    margin-bottom: var(--spacing-none);
  }

  .mh-none_ns {
    margin-left: var(--spacing-none);
    margin-right: var(--spacing-none);
  }

  .mv-none_ns {
    margin-top: var(--spacing-none);
    margin-bottom: var(--spacing-none);
  }

  .d-b_ns {
    display: block;
  }

  .d-ib_ns {
    display: inline-block;
  }

  .d-n_ns {
    display: none;
  }

  .d-tc_ns {
    display: table-cell;
  }

  .d-f_ns {
    display: flex;
  }

  .d-g_ns, .fz-form-grid {
    display: grid;
  }

  .bw-xxl_ns {
    border-width: var(--border-width-xxl);
  }

  .blw-xxl_ns {
    border-left-width: var(--border-width-xxl);
  }

  .brw-xxl_ns {
    border-right-width: var(--border-width-xxl);
  }

  .btw-xxl_ns {
    border-top-width: var(--border-width-xxl);
  }

  .bbw-xxl_ns {
    border-bottom-width: var(--border-width-xxl);
  }

  .br-xxl_ns {
    border-radius: var(--border-radius-xxl);
  }

  .brt-xxl_ns {
    border-top-left-radius: var(--border-radius-xxl);
    border-top-right-radius: var(--border-radius-xxl);
  }

  .bw-xl_ns {
    border-width: var(--border-width-xl);
  }

  .blw-xl_ns {
    border-left-width: var(--border-width-xl);
  }

  .brw-xl_ns {
    border-right-width: var(--border-width-xl);
  }

  .btw-xl_ns {
    border-top-width: var(--border-width-xl);
  }

  .bbw-xl_ns {
    border-bottom-width: var(--border-width-xl);
  }

  .br-xl_ns {
    border-radius: var(--border-radius-xl);
  }

  .brt-xl_ns {
    border-top-left-radius: var(--border-radius-xl);
    border-top-right-radius: var(--border-radius-xl);
  }

  .bw-l_ns {
    border-width: var(--border-width-l);
  }

  .blw-l_ns {
    border-left-width: var(--border-width-l);
  }

  .brw-l_ns {
    border-right-width: var(--border-width-l);
  }

  .btw-l_ns {
    border-top-width: var(--border-width-l);
  }

  .bbw-l_ns {
    border-bottom-width: var(--border-width-l);
  }

  .br-l_ns, dialog, .popover {
    border-radius: var(--border-radius-l);
  }

  .brt-l_ns {
    border-top-left-radius: var(--border-radius-l);
    border-top-right-radius: var(--border-radius-l);
  }

  .bw-m_ns {
    border-width: var(--border-width-m);
  }

  .blw-m_ns {
    border-left-width: var(--border-width-m);
  }

  .brw-m_ns {
    border-right-width: var(--border-width-m);
  }

  .btw-m_ns {
    border-top-width: var(--border-width-m);
  }

  .bbw-m_ns {
    border-bottom-width: var(--border-width-m);
  }

  .br-m_ns {
    border-radius: var(--border-radius-m);
  }

  .brt-m_ns {
    border-top-left-radius: var(--border-radius-m);
    border-top-right-radius: var(--border-radius-m);
  }

  .bw-s_ns {
    border-width: var(--border-width-s);
  }

  .blw-s_ns {
    border-left-width: var(--border-width-s);
  }

  .brw-s_ns {
    border-right-width: var(--border-width-s);
  }

  .btw-s_ns {
    border-top-width: var(--border-width-s);
  }

  .bbw-s_ns {
    border-bottom-width: var(--border-width-s);
  }

  .br-s_ns {
    border-radius: var(--border-radius-s);
  }

  .brt-s_ns {
    border-top-left-radius: var(--border-radius-s);
    border-top-right-radius: var(--border-radius-s);
  }

  .bw-xs_ns {
    border-width: var(--border-width-xs);
  }

  .blw-xs_ns {
    border-left-width: var(--border-width-xs);
  }

  .brw-xs_ns {
    border-right-width: var(--border-width-xs);
  }

  .btw-xs_ns {
    border-top-width: var(--border-width-xs);
  }

  .bbw-xs_ns {
    border-bottom-width: var(--border-width-xs);
  }

  .br-xs_ns {
    border-radius: var(--border-radius-xs);
  }

  .brt-xs_ns {
    border-top-left-radius: var(--border-radius-xs);
    border-top-right-radius: var(--border-radius-xs);
  }

  .bw-xxs_ns {
    border-width: var(--border-width-xxs);
  }

  .blw-xxs_ns {
    border-left-width: var(--border-width-xxs);
  }

  .brw-xxs_ns {
    border-right-width: var(--border-width-xxs);
  }

  .btw-xxs_ns {
    border-top-width: var(--border-width-xxs);
  }

  .bbw-xxs_ns {
    border-bottom-width: var(--border-width-xxs);
  }

  .br-xxs_ns {
    border-radius: var(--border-radius-xxs);
  }

  .brt-xxs_ns {
    border-top-left-radius: var(--border-radius-xxs);
    border-top-right-radius: var(--border-radius-xxs);
  }

  .w-xxxl_ns {
    width: var(--width-xxxl);
  }

  .maxw-xxxl_ns {
    max-width: var(--width-xxxl);
  }

  .minw-xxxl_ns {
    min-width: var(--width-xxxl);
  }

  .w-xxl_ns {
    width: var(--width-xxl);
  }

  .maxw-xxl_ns {
    max-width: var(--width-xxl);
  }

  .minw-xxl_ns {
    min-width: var(--width-xxl);
  }

  .w-xl_ns {
    width: var(--width-xl);
  }

  .maxw-xl_ns {
    max-width: var(--width-xl);
  }

  .minw-xl_ns {
    min-width: var(--width-xl);
  }

  .w-l_ns {
    width: var(--width-l);
  }

  .maxw-l_ns {
    max-width: var(--width-l);
  }

  .minw-l_ns {
    min-width: var(--width-l);
  }

  .w-m_ns {
    width: var(--width-m);
  }

  .maxw-m_ns {
    max-width: var(--width-m);
  }

  .minw-m_ns {
    min-width: var(--width-m);
  }

  .w-s_ns {
    width: var(--width-s);
  }

  .maxw-s_ns {
    max-width: var(--width-s);
  }

  .minw-s_ns {
    min-width: var(--width-s);
  }

  .w-xs_ns {
    width: var(--width-xs);
  }

  .maxw-xs_ns {
    max-width: var(--width-xs);
  }

  .minw-xs_ns {
    min-width: var(--width-xs);
  }

  .w-xxs_ns {
    width: var(--width-xxs);
  }

  .maxw-xxs_ns {
    max-width: var(--width-xxs);
  }

  .minw-xxs_ns {
    min-width: var(--width-xxs);
  }

  .w-xxxs_ns {
    width: var(--width-xxxs);
  }

  .maxw-xxxs_ns {
    max-width: var(--width-xxxs);
  }

  .minw-xxxs_ns {
    min-width: var(--width-xxxs);
  }
}
/* Medium (Not Small, but Not Large) */
@media screen and (min-width: 30em) and (max-width: 60em) {
  .ta-l_m {
    text-align: left;
  }

  .ta-r_m {
    text-align: right;
  }

  .gp-xxxl_m {
    gap: var(--spacing-xxxl);
  }

  .rgp-xxxl_m {
    row-gap: var(--spacing-xxxl);
  }

  .cgp-xxxl_m {
    column-gap: var(--spacing-xxxl);
  }

  .gp-xxl_m {
    gap: var(--spacing-xxl);
  }

  .rgp-xxl_m {
    row-gap: var(--spacing-xxl);
  }

  .cgp-xxl_m {
    column-gap: var(--spacing-xxl);
  }

  .gp-xl_m {
    gap: var(--spacing-xl);
  }

  .rgp-xl_m {
    row-gap: var(--spacing-xl);
  }

  .cgp-xl_m {
    column-gap: var(--spacing-xl);
  }

  .gp-l_m {
    gap: var(--spacing-l);
  }

  .rgp-l_m {
    row-gap: var(--spacing-l);
  }

  .cgp-l_m {
    column-gap: var(--spacing-l);
  }

  .gp-m_m {
    gap: var(--spacing-m);
  }

  .rgp-m_m {
    row-gap: var(--spacing-m);
  }

  .cgp-m_m {
    column-gap: var(--spacing-m);
  }

  .gp-s_m {
    gap: var(--spacing-s);
  }

  .rgp-s_m {
    row-gap: var(--spacing-s);
  }

  .cgp-s_m {
    column-gap: var(--spacing-s);
  }

  .gp-xs_m {
    gap: var(--spacing-xs);
  }

  .rgp-xs_m {
    row-gap: var(--spacing-xs);
  }

  .cgp-xs_m {
    column-gap: var(--spacing-xs);
  }

  .gp-xxs_m {
    gap: var(--spacing-xxs);
  }

  .rgp-xxs_m {
    row-gap: var(--spacing-xxs);
  }

  .cgp-xxs_m {
    column-gap: var(--spacing-xxs);
  }

  .gp-xxxs_m {
    gap: var(--spacing-xxxs);
  }

  .rgp-xxxs_m {
    row-gap: var(--spacing-xxxs);
  }

  .cgp-xxxs_m {
    column-gap: var(--spacing-xxxs);
  }

  .gp-none_m {
    gap: var(--spacing-none);
  }

  .rgp-none_m {
    row-gap: var(--spacing-none);
  }

  .cgp-none_m {
    column-gap: var(--spacing-none);
  }

  .p-xxl_m {
    padding: var(--spacing-xxl);
  }

  .pl-xxl_m {
    padding-left: var(--spacing-xxl);
  }

  .pr-xxl_m {
    padding-right: var(--spacing-xxl);
  }

  .pt-xxl_m {
    padding-top: var(--spacing-xxl);
  }

  .pb-xxl_m {
    padding-bottom: var(--spacing-xxl);
  }

  .ph-xxl_m {
    padding-left: var(--spacing-xxl);
    padding-right: var(--spacing-xxl);
  }

  .pv-xxl_m {
    padding-top: var(--spacing-xxl);
    padding-bottom: var(--spacing-xxl);
  }

  .m-xxl_m {
    margin: var(--spacing-xxl);
  }

  .ml-xxl_m {
    margin-left: var(--spacing-xxl);
  }

  .mr-xxl_m {
    margin-right: var(--spacing-xxl);
  }

  .mt-xxl_m {
    margin-top: var(--spacing-xxl);
  }

  .mb-xxl_m {
    margin-bottom: var(--spacing-xxl);
  }

  .mh-xxl_m {
    margin-left: var(--spacing-xxl);
    margin-right: var(--spacing-xxl);
  }

  .mv-xxl_m {
    margin-top: var(--spacing-xxl);
    margin-bottom: var(--spacing-xxl);
  }

  .p-xl_m {
    padding: var(--spacing-xl);
  }

  .pl-xl_m {
    padding-left: var(--spacing-xl);
  }

  .pr-xl_m {
    padding-right: var(--spacing-xl);
  }

  .pt-xl_m {
    padding-top: var(--spacing-xl);
  }

  .pb-xl_m {
    padding-bottom: var(--spacing-xl);
  }

  .ph-xl_m {
    padding-left: var(--spacing-xl);
    padding-right: var(--spacing-xl);
  }

  .pv-xl_m {
    padding-top: var(--spacing-xl);
    padding-bottom: var(--spacing-xl);
  }

  .m-xl_m {
    margin: var(--spacing-xl);
  }

  .ml-xl_m {
    margin-left: var(--spacing-xl);
  }

  .mr-xl_m {
    margin-right: var(--spacing-xl);
  }

  .mt-xl_m {
    margin-top: var(--spacing-xl);
  }

  .mb-xl_m {
    margin-bottom: var(--spacing-xl);
  }

  .mh-xl_m {
    margin-left: var(--spacing-xl);
    margin-right: var(--spacing-xl);
  }

  .mv-xl_m {
    margin-top: var(--spacing-xl);
    margin-bottom: var(--spacing-xl);
  }

  .p-l_m {
    padding: var(--spacing-l);
  }

  .pl-l_m {
    padding-left: var(--spacing-l);
  }

  .pr-l_m {
    padding-right: var(--spacing-l);
  }

  .pt-l_m {
    padding-top: var(--spacing-l);
  }

  .pb-l_m {
    padding-bottom: var(--spacing-l);
  }

  .ph-l_m {
    padding-left: var(--spacing-l);
    padding-right: var(--spacing-l);
  }

  .pv-l_m {
    padding-top: var(--spacing-l);
    padding-bottom: var(--spacing-l);
  }

  .m-l_m {
    margin: var(--spacing-l);
  }

  .ml-l_m {
    margin-left: var(--spacing-l);
  }

  .mr-l_m {
    margin-right: var(--spacing-l);
  }

  .mt-l_m {
    margin-top: var(--spacing-l);
  }

  .mb-l_m {
    margin-bottom: var(--spacing-l);
  }

  .mh-l_m {
    margin-left: var(--spacing-l);
    margin-right: var(--spacing-l);
  }

  .mv-l_m {
    margin-top: var(--spacing-l);
    margin-bottom: var(--spacing-l);
  }

  .p-m_m {
    padding: var(--spacing-m);
  }

  .pl-m_m {
    padding-left: var(--spacing-m);
  }

  .pr-m_m {
    padding-right: var(--spacing-m);
  }

  .pt-m_m {
    padding-top: var(--spacing-m);
  }

  .pb-m_m {
    padding-bottom: var(--spacing-m);
  }

  .ph-m_m {
    padding-left: var(--spacing-m);
    padding-right: var(--spacing-m);
  }

  .pv-m_m {
    padding-top: var(--spacing-m);
    padding-bottom: var(--spacing-m);
  }

  .m-m_m {
    margin: var(--spacing-m);
  }

  .ml-m_m {
    margin-left: var(--spacing-m);
  }

  .mr-m_m {
    margin-right: var(--spacing-m);
  }

  .mt-m_m {
    margin-top: var(--spacing-m);
  }

  .mb-m_m {
    margin-bottom: var(--spacing-m);
  }

  .mh-m_m {
    margin-left: var(--spacing-m);
    margin-right: var(--spacing-m);
  }

  .mv-m_m {
    margin-top: var(--spacing-m);
    margin-bottom: var(--spacing-m);
  }

  .p-s_m {
    padding: var(--spacing-s);
  }

  .pl-s_m {
    padding-left: var(--spacing-s);
  }

  .pr-s_m {
    padding-right: var(--spacing-s);
  }

  .pt-s_m {
    padding-top: var(--spacing-s);
  }

  .pb-s_m {
    padding-bottom: var(--spacing-s);
  }

  .ph-s_m {
    padding-left: var(--spacing-s);
    padding-right: var(--spacing-s);
  }

  .pv-s_m {
    padding-top: var(--spacing-s);
    padding-bottom: var(--spacing-s);
  }

  .m-s_m {
    margin: var(--spacing-s);
  }

  .ml-s_m {
    margin-left: var(--spacing-s);
  }

  .mr-s_m {
    margin-right: var(--spacing-s);
  }

  .mt-s_m {
    margin-top: var(--spacing-s);
  }

  .mb-s_m {
    margin-bottom: var(--spacing-s);
  }

  .mh-s_m {
    margin-left: var(--spacing-s);
    margin-right: var(--spacing-s);
  }

  .mv-s_m {
    margin-top: var(--spacing-s);
    margin-bottom: var(--spacing-s);
  }

  .p-xs_m {
    padding: var(--spacing-xs);
  }

  .pl-xs_m {
    padding-left: var(--spacing-xs);
  }

  .pr-xs_m {
    padding-right: var(--spacing-xs);
  }

  .pt-xs_m {
    padding-top: var(--spacing-xs);
  }

  .pb-xs_m {
    padding-bottom: var(--spacing-xs);
  }

  .ph-xs_m {
    padding-left: var(--spacing-xs);
    padding-right: var(--spacing-xs);
  }

  .pv-xs_m {
    padding-top: var(--spacing-xs);
    padding-bottom: var(--spacing-xs);
  }

  .m-xs_m {
    margin: var(--spacing-xs);
  }

  .ml-xs_m {
    margin-left: var(--spacing-xs);
  }

  .mr-xs_m {
    margin-right: var(--spacing-xs);
  }

  .mt-xs_m {
    margin-top: var(--spacing-xs);
  }

  .mb-xs_m {
    margin-bottom: var(--spacing-xs);
  }

  .mh-xs_m {
    margin-left: var(--spacing-xs);
    margin-right: var(--spacing-xs);
  }

  .mv-xs_m {
    margin-top: var(--spacing-xs);
    margin-bottom: var(--spacing-xs);
  }

  .p-xxs_m {
    padding: var(--spacing-xxs);
  }

  .pl-xxs_m {
    padding-left: var(--spacing-xxs);
  }

  .pr-xxs_m {
    padding-right: var(--spacing-xxs);
  }

  .pt-xxs_m {
    padding-top: var(--spacing-xxs);
  }

  .pb-xxs_m {
    padding-bottom: var(--spacing-xxs);
  }

  .ph-xxs_m {
    padding-left: var(--spacing-xxs);
    padding-right: var(--spacing-xxs);
  }

  .pv-xxs_m {
    padding-top: var(--spacing-xxs);
    padding-bottom: var(--spacing-xxs);
  }

  .m-xxs_m {
    margin: var(--spacing-xxs);
  }

  .ml-xxs_m {
    margin-left: var(--spacing-xxs);
  }

  .mr-xxs_m {
    margin-right: var(--spacing-xxs);
  }

  .mt-xxs_m {
    margin-top: var(--spacing-xxs);
  }

  .mb-xxs_m {
    margin-bottom: var(--spacing-xxs);
  }

  .mh-xxs_m {
    margin-left: var(--spacing-xxs);
    margin-right: var(--spacing-xxs);
  }

  .mv-xxs_m {
    margin-top: var(--spacing-xxs);
    margin-bottom: var(--spacing-xxs);
  }

  .p-none_m {
    padding: var(--spacing-none);
  }

  .pl-none_m {
    padding-left: var(--spacing-none);
  }

  .pr-none_m {
    padding-right: var(--spacing-none);
  }

  .pt-none_m {
    padding-top: var(--spacing-none);
  }

  .pb-none_m {
    padding-bottom: var(--spacing-none);
  }

  .ph-none_m {
    padding-left: var(--spacing-none);
    padding-right: var(--spacing-none);
  }

  .pv-none_m {
    padding-top: var(--spacing-none);
    padding-bottom: var(--spacing-none);
  }

  .m-none_m {
    margin: var(--spacing-none);
  }

  .ml-none_m {
    margin-left: var(--spacing-none);
  }

  .mr-none_m {
    margin-right: var(--spacing-none);
  }

  .mt-none_m {
    margin-top: var(--spacing-none);
  }

  .mb-none_m {
    margin-bottom: var(--spacing-none);
  }

  .mh-none_m {
    margin-left: var(--spacing-none);
    margin-right: var(--spacing-none);
  }

  .mv-none_m {
    margin-top: var(--spacing-none);
    margin-bottom: var(--spacing-none);
  }

  .d-b_m {
    display: block;
  }

  .d-ib_m {
    display: inline-block;
  }

  .d-n_m {
    display: none;
  }

  .d-tc_m {
    display: table-cell;
  }

  .d-f_m {
    display: flex;
  }

  .d-g_m {
    display: grid;
  }

  .bw-xxl_m {
    border-width: var(--border-width-xxl);
  }

  .blw-xxl_m {
    border-left-width: var(--border-width-xxl);
  }

  .brw-xxl_m {
    border-right-width: var(--border-width-xxl);
  }

  .btw-xxl_m {
    border-top-width: var(--border-width-xxl);
  }

  .bbw-xxl_m {
    border-bottom-width: var(--border-width-xxl);
  }

  .br-xxl_m {
    border-radius: var(--border-radius-xxl);
  }

  .brt-xxl_m {
    border-top-left-radius: var(--border-radius-xxl);
    border-top-right-radius: var(--border-radius-xxl);
  }

  .bw-xl_m {
    border-width: var(--border-width-xl);
  }

  .blw-xl_m {
    border-left-width: var(--border-width-xl);
  }

  .brw-xl_m {
    border-right-width: var(--border-width-xl);
  }

  .btw-xl_m {
    border-top-width: var(--border-width-xl);
  }

  .bbw-xl_m {
    border-bottom-width: var(--border-width-xl);
  }

  .br-xl_m {
    border-radius: var(--border-radius-xl);
  }

  .brt-xl_m {
    border-top-left-radius: var(--border-radius-xl);
    border-top-right-radius: var(--border-radius-xl);
  }

  .bw-l_m {
    border-width: var(--border-width-l);
  }

  .blw-l_m {
    border-left-width: var(--border-width-l);
  }

  .brw-l_m {
    border-right-width: var(--border-width-l);
  }

  .btw-l_m {
    border-top-width: var(--border-width-l);
  }

  .bbw-l_m {
    border-bottom-width: var(--border-width-l);
  }

  .br-l_m {
    border-radius: var(--border-radius-l);
  }

  .brt-l_m {
    border-top-left-radius: var(--border-radius-l);
    border-top-right-radius: var(--border-radius-l);
  }

  .bw-m_m {
    border-width: var(--border-width-m);
  }

  .blw-m_m {
    border-left-width: var(--border-width-m);
  }

  .brw-m_m {
    border-right-width: var(--border-width-m);
  }

  .btw-m_m {
    border-top-width: var(--border-width-m);
  }

  .bbw-m_m {
    border-bottom-width: var(--border-width-m);
  }

  .br-m_m {
    border-radius: var(--border-radius-m);
  }

  .brt-m_m {
    border-top-left-radius: var(--border-radius-m);
    border-top-right-radius: var(--border-radius-m);
  }

  .bw-s_m {
    border-width: var(--border-width-s);
  }

  .blw-s_m {
    border-left-width: var(--border-width-s);
  }

  .brw-s_m {
    border-right-width: var(--border-width-s);
  }

  .btw-s_m {
    border-top-width: var(--border-width-s);
  }

  .bbw-s_m {
    border-bottom-width: var(--border-width-s);
  }

  .br-s_m {
    border-radius: var(--border-radius-s);
  }

  .brt-s_m {
    border-top-left-radius: var(--border-radius-s);
    border-top-right-radius: var(--border-radius-s);
  }

  .bw-xs_m {
    border-width: var(--border-width-xs);
  }

  .blw-xs_m {
    border-left-width: var(--border-width-xs);
  }

  .brw-xs_m {
    border-right-width: var(--border-width-xs);
  }

  .btw-xs_m {
    border-top-width: var(--border-width-xs);
  }

  .bbw-xs_m {
    border-bottom-width: var(--border-width-xs);
  }

  .br-xs_m {
    border-radius: var(--border-radius-xs);
  }

  .brt-xs_m {
    border-top-left-radius: var(--border-radius-xs);
    border-top-right-radius: var(--border-radius-xs);
  }

  .bw-xxs_m {
    border-width: var(--border-width-xxs);
  }

  .blw-xxs_m {
    border-left-width: var(--border-width-xxs);
  }

  .brw-xxs_m {
    border-right-width: var(--border-width-xxs);
  }

  .btw-xxs_m {
    border-top-width: var(--border-width-xxs);
  }

  .bbw-xxs_m {
    border-bottom-width: var(--border-width-xxs);
  }

  .br-xxs_m {
    border-radius: var(--border-radius-xxs);
  }

  .brt-xxs_m {
    border-top-left-radius: var(--border-radius-xxs);
    border-top-right-radius: var(--border-radius-xxs);
  }

  .w-xxxl_m {
    width: var(--width-xxxl);
  }

  .maxw-xxxl_m {
    max-width: var(--width-xxxl);
  }

  .minw-xxxl_m {
    min-width: var(--width-xxxl);
  }

  .w-xxl_m {
    width: var(--width-xxl);
  }

  .maxw-xxl_m {
    max-width: var(--width-xxl);
  }

  .minw-xxl_m {
    min-width: var(--width-xxl);
  }

  .w-xl_m {
    width: var(--width-xl);
  }

  .maxw-xl_m {
    max-width: var(--width-xl);
  }

  .minw-xl_m {
    min-width: var(--width-xl);
  }

  .w-l_m {
    width: var(--width-l);
  }

  .maxw-l_m {
    max-width: var(--width-l);
  }

  .minw-l_m {
    min-width: var(--width-l);
  }

  .w-m_m {
    width: var(--width-m);
  }

  .maxw-m_m {
    max-width: var(--width-m);
  }

  .minw-m_m {
    min-width: var(--width-m);
  }

  .w-s_m {
    width: var(--width-s);
  }

  .maxw-s_m {
    max-width: var(--width-s);
  }

  .minw-s_m {
    min-width: var(--width-s);
  }

  .w-xs_m {
    width: var(--width-xs);
  }

  .maxw-xs_m {
    max-width: var(--width-xs);
  }

  .minw-xs_m {
    min-width: var(--width-xs);
  }

  .w-xxs_m {
    width: var(--width-xxs);
  }

  .maxw-xxs_m {
    max-width: var(--width-xxs);
  }

  .minw-xxs_m {
    min-width: var(--width-xxs);
  }

  .w-xxxs_m {
    width: var(--width-xxxs);
  }

  .maxw-xxxs_m {
    max-width: var(--width-xxxs);
  }

  .minw-xxxs_m {
    min-width: var(--width-xxxs);
  }
}
/* Large */
@media screen and (min-width: 60em) {
  .ta-l_l {
    text-align: left;
  }

  .ta-r_l {
    text-align: right;
  }

  .gp-xxxl_l {
    gap: var(--spacing-xxxl);
  }

  .rgp-xxxl_l {
    row-gap: var(--spacing-xxxl);
  }

  .cgp-xxxl_l {
    column-gap: var(--spacing-xxxl);
  }

  .gp-xxl_l {
    gap: var(--spacing-xxl);
  }

  .rgp-xxl_l {
    row-gap: var(--spacing-xxl);
  }

  .cgp-xxl_l {
    column-gap: var(--spacing-xxl);
  }

  .gp-xl_l {
    gap: var(--spacing-xl);
  }

  .rgp-xl_l {
    row-gap: var(--spacing-xl);
  }

  .cgp-xl_l {
    column-gap: var(--spacing-xl);
  }

  .gp-l_l {
    gap: var(--spacing-l);
  }

  .rgp-l_l {
    row-gap: var(--spacing-l);
  }

  .cgp-l_l {
    column-gap: var(--spacing-l);
  }

  .gp-m_l {
    gap: var(--spacing-m);
  }

  .rgp-m_l {
    row-gap: var(--spacing-m);
  }

  .cgp-m_l {
    column-gap: var(--spacing-m);
  }

  .gp-s_l {
    gap: var(--spacing-s);
  }

  .rgp-s_l {
    row-gap: var(--spacing-s);
  }

  .cgp-s_l {
    column-gap: var(--spacing-s);
  }

  .gp-xs_l {
    gap: var(--spacing-xs);
  }

  .rgp-xs_l {
    row-gap: var(--spacing-xs);
  }

  .cgp-xs_l {
    column-gap: var(--spacing-xs);
  }

  .gp-xxs_l {
    gap: var(--spacing-xxs);
  }

  .rgp-xxs_l {
    row-gap: var(--spacing-xxs);
  }

  .cgp-xxs_l {
    column-gap: var(--spacing-xxs);
  }

  .gp-xxxs_l {
    gap: var(--spacing-xxxs);
  }

  .rgp-xxxs_l {
    row-gap: var(--spacing-xxxs);
  }

  .cgp-xxxs_l {
    column-gap: var(--spacing-xxxs);
  }

  .gp-none_l {
    gap: var(--spacing-none);
  }

  .rgp-none_l {
    row-gap: var(--spacing-none);
  }

  .cgp-none_l {
    column-gap: var(--spacing-none);
  }

  .p-xxl_l {
    padding: var(--spacing-xxl);
  }

  .pl-xxl_l {
    padding-left: var(--spacing-xxl);
  }

  .pr-xxl_l {
    padding-right: var(--spacing-xxl);
  }

  .pt-xxl_l {
    padding-top: var(--spacing-xxl);
  }

  .pb-xxl_l {
    padding-bottom: var(--spacing-xxl);
  }

  .ph-xxl_l {
    padding-left: var(--spacing-xxl);
    padding-right: var(--spacing-xxl);
  }

  .pv-xxl_l {
    padding-top: var(--spacing-xxl);
    padding-bottom: var(--spacing-xxl);
  }

  .m-xxl_l {
    margin: var(--spacing-xxl);
  }

  .ml-xxl_l {
    margin-left: var(--spacing-xxl);
  }

  .mr-xxl_l {
    margin-right: var(--spacing-xxl);
  }

  .mt-xxl_l {
    margin-top: var(--spacing-xxl);
  }

  .mb-xxl_l {
    margin-bottom: var(--spacing-xxl);
  }

  .mh-xxl_l {
    margin-left: var(--spacing-xxl);
    margin-right: var(--spacing-xxl);
  }

  .mv-xxl_l {
    margin-top: var(--spacing-xxl);
    margin-bottom: var(--spacing-xxl);
  }

  .p-xl_l {
    padding: var(--spacing-xl);
  }

  .pl-xl_l {
    padding-left: var(--spacing-xl);
  }

  .pr-xl_l {
    padding-right: var(--spacing-xl);
  }

  .pt-xl_l {
    padding-top: var(--spacing-xl);
  }

  .pb-xl_l {
    padding-bottom: var(--spacing-xl);
  }

  .ph-xl_l {
    padding-left: var(--spacing-xl);
    padding-right: var(--spacing-xl);
  }

  .pv-xl_l {
    padding-top: var(--spacing-xl);
    padding-bottom: var(--spacing-xl);
  }

  .m-xl_l {
    margin: var(--spacing-xl);
  }

  .ml-xl_l {
    margin-left: var(--spacing-xl);
  }

  .mr-xl_l {
    margin-right: var(--spacing-xl);
  }

  .mt-xl_l {
    margin-top: var(--spacing-xl);
  }

  .mb-xl_l {
    margin-bottom: var(--spacing-xl);
  }

  .mh-xl_l {
    margin-left: var(--spacing-xl);
    margin-right: var(--spacing-xl);
  }

  .mv-xl_l {
    margin-top: var(--spacing-xl);
    margin-bottom: var(--spacing-xl);
  }

  .p-l_l {
    padding: var(--spacing-l);
  }

  .pl-l_l {
    padding-left: var(--spacing-l);
  }

  .pr-l_l {
    padding-right: var(--spacing-l);
  }

  .pt-l_l {
    padding-top: var(--spacing-l);
  }

  .pb-l_l {
    padding-bottom: var(--spacing-l);
  }

  .ph-l_l {
    padding-left: var(--spacing-l);
    padding-right: var(--spacing-l);
  }

  .pv-l_l {
    padding-top: var(--spacing-l);
    padding-bottom: var(--spacing-l);
  }

  .m-l_l {
    margin: var(--spacing-l);
  }

  .ml-l_l {
    margin-left: var(--spacing-l);
  }

  .mr-l_l {
    margin-right: var(--spacing-l);
  }

  .mt-l_l {
    margin-top: var(--spacing-l);
  }

  .mb-l_l {
    margin-bottom: var(--spacing-l);
  }

  .mh-l_l {
    margin-left: var(--spacing-l);
    margin-right: var(--spacing-l);
  }

  .mv-l_l {
    margin-top: var(--spacing-l);
    margin-bottom: var(--spacing-l);
  }

  .p-m_l {
    padding: var(--spacing-m);
  }

  .pl-m_l {
    padding-left: var(--spacing-m);
  }

  .pr-m_l {
    padding-right: var(--spacing-m);
  }

  .pt-m_l {
    padding-top: var(--spacing-m);
  }

  .pb-m_l {
    padding-bottom: var(--spacing-m);
  }

  .ph-m_l {
    padding-left: var(--spacing-m);
    padding-right: var(--spacing-m);
  }

  .pv-m_l {
    padding-top: var(--spacing-m);
    padding-bottom: var(--spacing-m);
  }

  .m-m_l {
    margin: var(--spacing-m);
  }

  .ml-m_l {
    margin-left: var(--spacing-m);
  }

  .mr-m_l {
    margin-right: var(--spacing-m);
  }

  .mt-m_l {
    margin-top: var(--spacing-m);
  }

  .mb-m_l {
    margin-bottom: var(--spacing-m);
  }

  .mh-m_l {
    margin-left: var(--spacing-m);
    margin-right: var(--spacing-m);
  }

  .mv-m_l {
    margin-top: var(--spacing-m);
    margin-bottom: var(--spacing-m);
  }

  .p-s_l {
    padding: var(--spacing-s);
  }

  .pl-s_l {
    padding-left: var(--spacing-s);
  }

  .pr-s_l {
    padding-right: var(--spacing-s);
  }

  .pt-s_l {
    padding-top: var(--spacing-s);
  }

  .pb-s_l {
    padding-bottom: var(--spacing-s);
  }

  .ph-s_l {
    padding-left: var(--spacing-s);
    padding-right: var(--spacing-s);
  }

  .pv-s_l {
    padding-top: var(--spacing-s);
    padding-bottom: var(--spacing-s);
  }

  .m-s_l {
    margin: var(--spacing-s);
  }

  .ml-s_l {
    margin-left: var(--spacing-s);
  }

  .mr-s_l {
    margin-right: var(--spacing-s);
  }

  .mt-s_l {
    margin-top: var(--spacing-s);
  }

  .mb-s_l {
    margin-bottom: var(--spacing-s);
  }

  .mh-s_l {
    margin-left: var(--spacing-s);
    margin-right: var(--spacing-s);
  }

  .mv-s_l {
    margin-top: var(--spacing-s);
    margin-bottom: var(--spacing-s);
  }

  .p-xs_l {
    padding: var(--spacing-xs);
  }

  .pl-xs_l {
    padding-left: var(--spacing-xs);
  }

  .pr-xs_l {
    padding-right: var(--spacing-xs);
  }

  .pt-xs_l {
    padding-top: var(--spacing-xs);
  }

  .pb-xs_l {
    padding-bottom: var(--spacing-xs);
  }

  .ph-xs_l {
    padding-left: var(--spacing-xs);
    padding-right: var(--spacing-xs);
  }

  .pv-xs_l {
    padding-top: var(--spacing-xs);
    padding-bottom: var(--spacing-xs);
  }

  .m-xs_l {
    margin: var(--spacing-xs);
  }

  .ml-xs_l {
    margin-left: var(--spacing-xs);
  }

  .mr-xs_l {
    margin-right: var(--spacing-xs);
  }

  .mt-xs_l {
    margin-top: var(--spacing-xs);
  }

  .mb-xs_l {
    margin-bottom: var(--spacing-xs);
  }

  .mh-xs_l {
    margin-left: var(--spacing-xs);
    margin-right: var(--spacing-xs);
  }

  .mv-xs_l {
    margin-top: var(--spacing-xs);
    margin-bottom: var(--spacing-xs);
  }

  .p-xxs_l {
    padding: var(--spacing-xxs);
  }

  .pl-xxs_l {
    padding-left: var(--spacing-xxs);
  }

  .pr-xxs_l {
    padding-right: var(--spacing-xxs);
  }

  .pt-xxs_l {
    padding-top: var(--spacing-xxs);
  }

  .pb-xxs_l {
    padding-bottom: var(--spacing-xxs);
  }

  .ph-xxs_l {
    padding-left: var(--spacing-xxs);
    padding-right: var(--spacing-xxs);
  }

  .pv-xxs_l {
    padding-top: var(--spacing-xxs);
    padding-bottom: var(--spacing-xxs);
  }

  .m-xxs_l {
    margin: var(--spacing-xxs);
  }

  .ml-xxs_l {
    margin-left: var(--spacing-xxs);
  }

  .mr-xxs_l {
    margin-right: var(--spacing-xxs);
  }

  .mt-xxs_l {
    margin-top: var(--spacing-xxs);
  }

  .mb-xxs_l {
    margin-bottom: var(--spacing-xxs);
  }

  .mh-xxs_l {
    margin-left: var(--spacing-xxs);
    margin-right: var(--spacing-xxs);
  }

  .mv-xxs_l {
    margin-top: var(--spacing-xxs);
    margin-bottom: var(--spacing-xxs);
  }

  .p-none_l {
    padding: var(--spacing-none);
  }

  .pl-none_l {
    padding-left: var(--spacing-none);
  }

  .pr-none_l {
    padding-right: var(--spacing-none);
  }

  .pt-none_l {
    padding-top: var(--spacing-none);
  }

  .pb-none_l {
    padding-bottom: var(--spacing-none);
  }

  .ph-none_l {
    padding-left: var(--spacing-none);
    padding-right: var(--spacing-none);
  }

  .pv-none_l {
    padding-top: var(--spacing-none);
    padding-bottom: var(--spacing-none);
  }

  .m-none_l {
    margin: var(--spacing-none);
  }

  .ml-none_l {
    margin-left: var(--spacing-none);
  }

  .mr-none_l {
    margin-right: var(--spacing-none);
  }

  .mt-none_l {
    margin-top: var(--spacing-none);
  }

  .mb-none_l {
    margin-bottom: var(--spacing-none);
  }

  .mh-none_l {
    margin-left: var(--spacing-none);
    margin-right: var(--spacing-none);
  }

  .mv-none_l {
    margin-top: var(--spacing-none);
    margin-bottom: var(--spacing-none);
  }

  .d-b_l {
    display: block;
  }

  .d-ib_l {
    display: inline-block;
  }

  .d-n_l {
    display: none;
  }

  .d-tc_l {
    display: table-cell;
  }

  .d-f_l {
    display: flex;
  }

  .d-g_l {
    display: grid;
  }

  .bw-xxl_l {
    border-width: var(--border-width-xxl);
  }

  .blw-xxl_l {
    border-left-width: var(--border-width-xxl);
  }

  .brw-xxl_l {
    border-right-width: var(--border-width-xxl);
  }

  .btw-xxl_l {
    border-top-width: var(--border-width-xxl);
  }

  .bbw-xxl_l {
    border-bottom-width: var(--border-width-xxl);
  }

  .br-xxl_l {
    border-radius: var(--border-radius-xxl);
  }

  .brt-xxl_l {
    border-top-left-radius: var(--border-radius-xxl);
    border-top-right-radius: var(--border-radius-xxl);
  }

  .bw-xl_l {
    border-width: var(--border-width-xl);
  }

  .blw-xl_l {
    border-left-width: var(--border-width-xl);
  }

  .brw-xl_l {
    border-right-width: var(--border-width-xl);
  }

  .btw-xl_l {
    border-top-width: var(--border-width-xl);
  }

  .bbw-xl_l {
    border-bottom-width: var(--border-width-xl);
  }

  .br-xl_l {
    border-radius: var(--border-radius-xl);
  }

  .brt-xl_l {
    border-top-left-radius: var(--border-radius-xl);
    border-top-right-radius: var(--border-radius-xl);
  }

  .bw-l_l {
    border-width: var(--border-width-l);
  }

  .blw-l_l {
    border-left-width: var(--border-width-l);
  }

  .brw-l_l {
    border-right-width: var(--border-width-l);
  }

  .btw-l_l {
    border-top-width: var(--border-width-l);
  }

  .bbw-l_l {
    border-bottom-width: var(--border-width-l);
  }

  .br-l_l {
    border-radius: var(--border-radius-l);
  }

  .brt-l_l {
    border-top-left-radius: var(--border-radius-l);
    border-top-right-radius: var(--border-radius-l);
  }

  .bw-m_l {
    border-width: var(--border-width-m);
  }

  .blw-m_l {
    border-left-width: var(--border-width-m);
  }

  .brw-m_l {
    border-right-width: var(--border-width-m);
  }

  .btw-m_l {
    border-top-width: var(--border-width-m);
  }

  .bbw-m_l {
    border-bottom-width: var(--border-width-m);
  }

  .br-m_l {
    border-radius: var(--border-radius-m);
  }

  .brt-m_l {
    border-top-left-radius: var(--border-radius-m);
    border-top-right-radius: var(--border-radius-m);
  }

  .bw-s_l {
    border-width: var(--border-width-s);
  }

  .blw-s_l {
    border-left-width: var(--border-width-s);
  }

  .brw-s_l {
    border-right-width: var(--border-width-s);
  }

  .btw-s_l {
    border-top-width: var(--border-width-s);
  }

  .bbw-s_l {
    border-bottom-width: var(--border-width-s);
  }

  .br-s_l {
    border-radius: var(--border-radius-s);
  }

  .brt-s_l {
    border-top-left-radius: var(--border-radius-s);
    border-top-right-radius: var(--border-radius-s);
  }

  .bw-xs_l {
    border-width: var(--border-width-xs);
  }

  .blw-xs_l {
    border-left-width: var(--border-width-xs);
  }

  .brw-xs_l {
    border-right-width: var(--border-width-xs);
  }

  .btw-xs_l {
    border-top-width: var(--border-width-xs);
  }

  .bbw-xs_l {
    border-bottom-width: var(--border-width-xs);
  }

  .br-xs_l {
    border-radius: var(--border-radius-xs);
  }

  .brt-xs_l {
    border-top-left-radius: var(--border-radius-xs);
    border-top-right-radius: var(--border-radius-xs);
  }

  .bw-xxs_l {
    border-width: var(--border-width-xxs);
  }

  .blw-xxs_l {
    border-left-width: var(--border-width-xxs);
  }

  .brw-xxs_l {
    border-right-width: var(--border-width-xxs);
  }

  .btw-xxs_l {
    border-top-width: var(--border-width-xxs);
  }

  .bbw-xxs_l {
    border-bottom-width: var(--border-width-xxs);
  }

  .br-xxs_l {
    border-radius: var(--border-radius-xxs);
  }

  .brt-xxs_l {
    border-top-left-radius: var(--border-radius-xxs);
    border-top-right-radius: var(--border-radius-xxs);
  }

  .w-xxxl_l {
    width: var(--width-xxxl);
  }

  .maxw-xxxl_l {
    max-width: var(--width-xxxl);
  }

  .minw-xxxl_l {
    min-width: var(--width-xxxl);
  }

  .w-xxl_l {
    width: var(--width-xxl);
  }

  .maxw-xxl_l {
    max-width: var(--width-xxl);
  }

  .minw-xxl_l {
    min-width: var(--width-xxl);
  }

  .w-xl_l {
    width: var(--width-xl);
  }

  .maxw-xl_l {
    max-width: var(--width-xl);
  }

  .minw-xl_l {
    min-width: var(--width-xl);
  }

  .w-l_l {
    width: var(--width-l);
  }

  .maxw-l_l {
    max-width: var(--width-l);
  }

  .minw-l_l {
    min-width: var(--width-l);
  }

  .w-m_l {
    width: var(--width-m);
  }

  .maxw-m_l {
    max-width: var(--width-m);
  }

  .minw-m_l {
    min-width: var(--width-m);
  }

  .w-s_l {
    width: var(--width-s);
  }

  .maxw-s_l {
    max-width: var(--width-s);
  }

  .minw-s_l {
    min-width: var(--width-s);
  }

  .w-xs_l {
    width: var(--width-xs);
  }

  .maxw-xs_l {
    max-width: var(--width-xs);
  }

  .minw-xs_l {
    min-width: var(--width-xs);
  }

  .w-xxs_l {
    width: var(--width-xxs);
  }

  .maxw-xxs_l {
    max-width: var(--width-xxs);
  }

  .minw-xxs_l {
    min-width: var(--width-xxs);
  }

  .w-xxxs_l {
    width: var(--width-xxxs);
  }

  .maxw-xxxs_l {
    max-width: var(--width-xxxs);
  }

  .minw-xxxs_l {
    min-width: var(--width-xxxs);
  }
}
:root {
  --color-primary: var(--light-color-primary);
  --color-on-primary: var(--light-color-on-primary);
  --color-primary-container: var(--light-color-primary-container);
  --color-on-primary-container: var(--light-color-on-primary-container);
  --color-secondary: var(--light-color-secondary);
  --color-on-secondary: var(--light-color-on-secondary);
  --color-secondary-container: var(--light-color-secondary-container);
  --color-on-secondary-container: var(--light-color-on-secondary-container);
  --color-tertiary: var(--light-color-tertiary);
  --color-on-tertiary: var(--light-color-on-tertiary);
  --color-tertiary-container: var(--light-color-tertiary-container);
  --color-on-tertiary-container: var(--light-color-on-tertiary-container);
  --color-error: var(--light-color-error);
  --color-on-error: var(--light-color-on-error);
  --color-error-container: var(--light-color-error-container);
  --color-on-error-container: var(--light-color-on-error-container);
  --color-surface: var(--light-color-surface);
  --color-on-surface: var(--light-color-on-surface);
  --color-surface-variant: var(--light-color-surface-variant);
  --color-on-surface-variant: var(--light-color-on-surface-variant);
  --color-outline: var(--light-color-outline);
  --color-outline-variant: var(--light-color-outline-variant);
  --color-shadow: var(--light-color-shadow);
  --color-scrim: var(--light-color-scrim);
  --color-inverse-surface: var(--light-color-inverse-surface);
  --color-inverse-on-surface: var(--light-color-inverse-on-surface);
  --color-inverse-primary: var(--light-color-inverse-primary);
  --color-primary-fixed: var(--light-color-primary-fixed);
  --color-on-primary-fixed: var(--light-color-on-primary-fixed);
  --color-primary-fixed-dim: var(--light-color-primary-fixed-dim);
  --color-on-primary-fixed-variant: var(--light-color-on-primary-fixed-variant);
  --color-secondary-fixed: var(--light-color-secondary-fixed);
  --color-on-secondary-fixed: var(--light-color-on-secondary-fixed);
  --color-secondary-fixed-dim: var(--light-color-secondary-fixed-dim);
  --color-on-secondary-fixed-variant: var(--light-color-on-secondary-fixed-variant);
  --color-tertiary-fixed: var(--light-color-tertiary-fixed);
  --color-on-tertiary-fixed: var(--light-color-on-tertiary-fixed);
  --color-tertiary-fixed-dim: var(--light-color-tertiary-fixed-dim);
  --color-on-tertiary-fixed-variant: var(--light-color-on-tertiary-fixed-variant);
  --color-surface-dim: var(--light-color-surface-dim);
  --color-surface-bright: var(--light-color-surface-bright);
  --color-surface-container-lowest: var(--light-color-surface-container-lowest);
  --color-surface-container-low: var(--light-color-surface-container-low);
  --color-surface-container: var(--light-color-surface-container);
  --color-surface-container-high: var(--light-color-surface-container-high);
  --color-surface-container-highest: var(--light-color-surface-container-highest);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme=light]):not([data-theme=team-light]) {
    --color-primary: var(--dark-color-primary);
    --color-on-primary: var(--dark-color-on-primary);
    --color-primary-container: var(--dark-color-primary-container);
    --color-on-primary-container: var(--dark-color-on-primary-container);
    --color-secondary: var(--dark-color-secondary);
    --color-on-secondary: var(--dark-color-on-secondary);
    --color-secondary-container: var(--dark-color-secondary-container);
    --color-on-secondary-container: var(--dark-color-on-secondary-container);
    --color-tertiary: var(--dark-color-tertiary);
    --color-on-tertiary: var(--dark-color-on-tertiary);
    --color-tertiary-container: var(--dark-color-tertiary-container);
    --color-on-tertiary-container: var(--dark-color-on-tertiary-container);
    --color-error: var(--dark-color-error);
    --color-on-error: var(--dark-color-on-error);
    --color-error-container: var(--dark-color-error-container);
    --color-on-error-container: var(--dark-color-on-error-container);
    --color-surface: var(--dark-color-surface);
    --color-on-surface: var(--dark-color-on-surface);
    --color-surface-variant: var(--dark-color-surface-variant);
    --color-on-surface-variant: var(--dark-color-on-surface-variant);
    --color-outline: var(--dark-color-outline);
    --color-outline-variant: var(--dark-color-outline-variant);
    --color-shadow: var(--dark-color-shadow);
    --color-scrim: var(--dark-color-scrim);
    --color-inverse-surface: var(--dark-color-inverse-surface);
    --color-inverse-on-surface: var(--dark-color-inverse-on-surface);
    --color-inverse-primary: var(--dark-color-inverse-primary);
    --color-primary-fixed: var(--dark-color-primary-fixed);
    --color-on-primary-fixed: var(--dark-color-on-primary-fixed);
    --color-primary-fixed-dim: var(--dark-color-primary-fixed-dim);
    --color-on-primary-fixed-variant: var(--dark-color-on-primary-fixed-variant);
    --color-secondary-fixed: var(--dark-color-secondary-fixed);
    --color-on-secondary-fixed: var(--dark-color-on-secondary-fixed);
    --color-secondary-fixed-dim: var(--dark-color-secondary-fixed-dim);
    --color-on-secondary-fixed-variant: var(--dark-color-on-secondary-fixed-variant);
    --color-tertiary-fixed: var(--dark-color-tertiary-fixed);
    --color-on-tertiary-fixed: var(--dark-color-on-tertiary-fixed);
    --color-tertiary-fixed-dim: var(--dark-color-tertiary-fixed-dim);
    --color-on-tertiary-fixed-variant: var(--dark-color-on-tertiary-fixed-variant);
    --color-surface-dim: var(--dark-color-surface-dim);
    --color-surface-bright: var(--dark-color-surface-bright);
    --color-surface-container-lowest: var(--dark-color-surface-container-lowest);
    --color-surface-container-low: var(--dark-color-surface-container-low);
    --color-surface-container: var(--dark-color-surface-container);
    --color-surface-container-high: var(--dark-color-surface-container-high);
    --color-surface-container-highest: var(--dark-color-surface-container-highest);
  }
}
:root[data-theme=dark],
:root[data-theme=team-dark] {
  --color-primary: var(--dark-color-primary);
  --color-on-primary: var(--dark-color-on-primary);
  --color-primary-container: var(--dark-color-primary-container);
  --color-on-primary-container: var(--dark-color-on-primary-container);
  --color-secondary: var(--dark-color-secondary);
  --color-on-secondary: var(--dark-color-on-secondary);
  --color-secondary-container: var(--dark-color-secondary-container);
  --color-on-secondary-container: var(--dark-color-on-secondary-container);
  --color-tertiary: var(--dark-color-tertiary);
  --color-on-tertiary: var(--dark-color-on-tertiary);
  --color-tertiary-container: var(--dark-color-tertiary-container);
  --color-on-tertiary-container: var(--dark-color-on-tertiary-container);
  --color-error: var(--dark-color-error);
  --color-on-error: var(--dark-color-on-error);
  --color-error-container: var(--dark-color-error-container);
  --color-on-error-container: var(--dark-color-on-error-container);
  --color-surface: var(--dark-color-surface);
  --color-on-surface: var(--dark-color-on-surface);
  --color-surface-variant: var(--dark-color-surface-variant);
  --color-on-surface-variant: var(--dark-color-on-surface-variant);
  --color-outline: var(--dark-color-outline);
  --color-outline-variant: var(--dark-color-outline-variant);
  --color-shadow: var(--dark-color-shadow);
  --color-scrim: var(--dark-color-scrim);
  --color-inverse-surface: var(--dark-color-inverse-surface);
  --color-inverse-on-surface: var(--dark-color-inverse-on-surface);
  --color-inverse-primary: var(--dark-color-inverse-primary);
  --color-primary-fixed: var(--dark-color-primary-fixed);
  --color-on-primary-fixed: var(--dark-color-on-primary-fixed);
  --color-primary-fixed-dim: var(--dark-color-primary-fixed-dim);
  --color-on-primary-fixed-variant: var(--dark-color-on-primary-fixed-variant);
  --color-secondary-fixed: var(--dark-color-secondary-fixed);
  --color-on-secondary-fixed: var(--dark-color-on-secondary-fixed);
  --color-secondary-fixed-dim: var(--dark-color-secondary-fixed-dim);
  --color-on-secondary-fixed-variant: var(--dark-color-on-secondary-fixed-variant);
  --color-tertiary-fixed: var(--dark-color-tertiary-fixed);
  --color-on-tertiary-fixed: var(--dark-color-on-tertiary-fixed);
  --color-tertiary-fixed-dim: var(--dark-color-tertiary-fixed-dim);
  --color-on-tertiary-fixed-variant: var(--dark-color-on-tertiary-fixed-variant);
  --color-surface-dim: var(--dark-color-surface-dim);
  --color-surface-bright: var(--dark-color-surface-bright);
  --color-surface-container-lowest: var(--dark-color-surface-container-lowest);
  --color-surface-container-low: var(--dark-color-surface-container-low);
  --color-surface-container: var(--dark-color-surface-container);
  --color-surface-container-high: var(--dark-color-surface-container-high);
  --color-surface-container-highest: var(--dark-color-surface-container-highest);
}

@media (prefers-color-scheme: dark) {
  :root[data-theme=team-system] {
    --color-primary: var(--dark-color-primary);
    --color-on-primary: var(--dark-color-on-primary);
    --color-primary-container: var(--dark-color-primary-container);
    --color-on-primary-container: var(--dark-color-on-primary-container);
    --color-secondary: var(--dark-color-secondary);
    --color-on-secondary: var(--dark-color-on-secondary);
    --color-secondary-container: var(--dark-color-secondary-container);
    --color-on-secondary-container: var(--dark-color-on-secondary-container);
    --color-tertiary: var(--dark-color-tertiary);
    --color-on-tertiary: var(--dark-color-on-tertiary);
    --color-tertiary-container: var(--dark-color-tertiary-container);
    --color-on-tertiary-container: var(--dark-color-on-tertiary-container);
    --color-error: var(--dark-color-error);
    --color-on-error: var(--dark-color-on-error);
    --color-error-container: var(--dark-color-error-container);
    --color-on-error-container: var(--dark-color-on-error-container);
    --color-surface: var(--dark-color-surface);
    --color-on-surface: var(--dark-color-on-surface);
    --color-surface-variant: var(--dark-color-surface-variant);
    --color-on-surface-variant: var(--dark-color-on-surface-variant);
    --color-outline: var(--dark-color-outline);
    --color-outline-variant: var(--dark-color-outline-variant);
    --color-shadow: var(--dark-color-shadow);
    --color-scrim: var(--dark-color-scrim);
    --color-inverse-surface: var(--dark-color-inverse-surface);
    --color-inverse-on-surface: var(--dark-color-inverse-on-surface);
    --color-inverse-primary: var(--dark-color-inverse-primary);
    --color-primary-fixed: var(--dark-color-primary-fixed);
    --color-on-primary-fixed: var(--dark-color-on-primary-fixed);
    --color-primary-fixed-dim: var(--dark-color-primary-fixed-dim);
    --color-on-primary-fixed-variant: var(--dark-color-on-primary-fixed-variant);
    --color-secondary-fixed: var(--dark-color-secondary-fixed);
    --color-on-secondary-fixed: var(--dark-color-on-secondary-fixed);
    --color-secondary-fixed-dim: var(--dark-color-secondary-fixed-dim);
    --color-on-secondary-fixed-variant: var(--dark-color-on-secondary-fixed-variant);
    --color-tertiary-fixed: var(--dark-color-tertiary-fixed);
    --color-on-tertiary-fixed: var(--dark-color-on-tertiary-fixed);
    --color-tertiary-fixed-dim: var(--dark-color-tertiary-fixed-dim);
    --color-on-tertiary-fixed-variant: var(--dark-color-on-tertiary-fixed-variant);
    --color-surface-dim: var(--dark-color-surface-dim);
    --color-surface-bright: var(--dark-color-surface-bright);
    --color-surface-container-lowest: var(--dark-color-surface-container-lowest);
    --color-surface-container-low: var(--dark-color-surface-container-low);
    --color-surface-container: var(--dark-color-surface-container);
    --color-surface-container-high: var(--dark-color-surface-container-high);
    --color-surface-container-highest: var(--dark-color-surface-container-highest);
  }
}
/* Not small, meaning tablet or desktop (if not overriden as well) */
/* The values can be bigger */
:root {
  --font-size-xxl: var(--font-size-xxl-smallscreen);
  --font-size-xl: var(--font-size-xl-smallscreen);
  --font-size-l: var(--font-size-l-smallscreen);
  --font-size-m: var(--font-size-m-smallscreen);
  --font-size-s: var(--font-size-s-smallscreen);
  --font-size-xs: var(--font-size-xs-smallscreen);
  --font-size-xxs: var(--font-size-xxs-smallscreen);
  --spacing-xxxl: var(--spacing-xxxl-smallscreen);
  --spacing-xxl: var(--spacing-xxl-smallscreen);
  --spacing-xl: var(--spacing-xl-smallscreen);
  --spacing-l: var(--spacing-l-smallscreen);
  --spacing-m: var(--spacing-m-smallscreen);
  --spacing-s: var(--spacing-s-smallscreen);
  --spacing-xs: var(--spacing-xs-smallscreen);
  --spacing-xxs: var(--spacing-xxs-smallscreen);
  --spacing-xxxs: var(--spacing-xxxs-smallscreen);
  --spacing-none: var(--spacing-none-smallscreen);
}

@media screen and (min-width: 30em) {
  :root {
    --font-size-xxl: var(--font-size-xxl-bigscreen);
    --font-size-xl: var(--font-size-xl-bigscreen);
    --font-size-l: var(--font-size-l-bigscreen);
    --font-size-m: var(--font-size-m-bigscreen);
    --font-size-s: var(--font-size-s-bigscreen);
    --font-size-xs: var(--font-size-xs-bigscreen);
    --font-size-xxs: var(--font-size-xxs-bigscreen);
    --spacing-xxxl: var(--spacing-xxxl-bigscreen);
    --spacing-xxl: var(--spacing-xxl-bigscreen);
    --spacing-xl: var(--spacing-xl-bigscreen);
    --spacing-l: var(--spacing-l-bigscreen);
    --spacing-m: var(--spacing-m-bigscreen);
    --spacing-s: var(--spacing-s-bigscreen);
    --spacing-xs: var(--spacing-xs-bigscreen);
    --spacing-xxs: var(--spacing-xxs-bigscreen);
    --spacing-xxxs: var(--spacing-xxxs-bigscreen);
    --spacing-none: var(--spacing-none-bigscreen);
  }
}
/* ======================================================
   App shell / sidebar layout
   ====================================================== */
.fz-app-shell {
  display: flex;
  height: 100vh;
  overflow: hidden;
}

.fz-sidebar {
  width: 220px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  overflow-x: hidden;
  transition: width 0.2s ease;
}

.fz-sidebar-collapsed {
  width: 52px;
}

.fz-sidebar-collapsed .fz-sidebar-brand-name,
.fz-sidebar-collapsed .fz-sidebar-item-label {
  display: none;
}

.fz-sidebar-collapsed .fz-sidebar-section-label {
  font-size: 0;
  letter-spacing: 0;
  padding: 0;
  height: 1px;
  margin: var(--spacing-xxs) var(--spacing-s);
  background-color: var(--color-outline-variant);
  overflow: hidden;
}

.fz-sidebar-brand {
  flex-shrink: 0;
}

.fz-sidebar-collapsed .fz-sidebar-brand a {
  justify-content: center;
  width: 100%;
}

/* The toggle button rotates its icon when collapsed to point the other way */
.fz-sidebar-toggle i {
  transition: transform 0.2s ease;
}

.fz-sidebar-collapsed .fz-sidebar-toggle i {
  transform: rotate(180deg);
}

/* Bottom row — small icon-only buttons sharing one row */
.fz-sidebar-bottom-row {
  display: flex;
}

.fz-sidebar-bottom-row .fz-sidebar-item {
  flex: 1;
  width: auto;
  justify-content: center;
}

/* When collapsed, stack vertically so each button gets the full square
   hover area, matching the items above. */
.fz-sidebar-collapsed .fz-sidebar-bottom-row {
  flex-direction: column;
}

.fz-sidebar-collapsed .fz-sidebar-bottom-row .fz-sidebar-item {
  flex: initial;
  width: calc(100% - 2 * var(--spacing-xxs));
}

.fz-sidebar-nav {
  flex: 1;
  overflow-y: auto;
}

.fz-sidebar-footer {
  flex-shrink: 0;
}

.fz-sidebar-footer::before {
  content: "";
  display: block;
  height: 1px;
  background-color: var(--color-outline-variant);
  margin: 0 var(--spacing-s) var(--spacing-xs);
}

.fz-sidebar-section-label {
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 600;
}

.fz-sidebar-item {
  display: flex;
  align-items: center;
  gap: var(--spacing-xs);
  /* inset from sidebar edges so the active pill has breathing room */
  margin: 2px var(--spacing-xxs);
  width: calc(100% - 2 * var(--spacing-xxs));
  box-sizing: border-box;
  border-radius: var(--border-radius-l);
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
}

.fz-sidebar-collapsed .fz-sidebar-item {
  justify-content: center;
  padding-left: 0;
  padding-right: 0;
}

.fz-sidebar-item i {
  flex-shrink: 0;
  font-size: 18px;
}

/* Top toolbar inside a page — title on left, actions on right */
.fz-page-toolbar {
  display: flex;
  align-items: center;
  gap: var(--spacing-xxs);
  flex-shrink: 0;
}
.fz-page-toolbar h2 {
  font-family: var(--font-2);
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-xl);
}

.fz-page-toolbar-title-prefix {
  font-family: var(--font-2);
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-xl);
  white-space: nowrap;
}

.fz-page-toolbar-title-prefix::after {
  content: " |";
  opacity: 0.3;
  padding-right: var(--spacing-xxs);
}

.fz-page-toolbar-title-input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  padding: 0;
  margin: 0;
  font-family: var(--font-2);
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-xl);
  min-width: 0;
}

.fz-page-toolbar-title-input::placeholder {
  opacity: 0.5;
}

.fz-page-toolbar-title-input:focus {
  border-bottom: 1px solid var(--color-outline-variant);
}

.fz-page-toolbar h1,
.fz-page-toolbar h2,
.fz-page-toolbar h3 {
  margin: 0;
  flex: 1;
}

/* Row of `.fz-tabs` strips directly under a `.fz-page-toolbar`. No background
 * of its own — the page shows through, so the tabs read as a quiet heading for
 * the content rather than a second bar. Sits outside the page's scroll area, so
 * it stays put; goes immediately below the toolbar, or as the first child of
 * whatever does, when the tabs have to live inside a swap target (see the
 * Messages pane). */
.fz-toolbar-tabs {
  display: flex;
  align-items: flex-end;
  flex-wrap: wrap;
  flex-shrink: 0;
  gap: var(--spacing-xs);
  row-gap: var(--spacing-xxs);
}

/* Vertical tab pinned to the left edge of a right side-panel.
   writing-mode + rotate(180deg) makes text read bottom-to-top.
   border-radius rounds the free (left) side visually. */
.fz-side-tab {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  border: none;
  cursor: pointer;
  padding: var(--spacing-s) var(--spacing-xxs);
  border-radius: 0 var(--border-radius-l) var(--border-radius-l) 0;
  font-size: var(--font-size-xs);
  transition: var(--transition-all-fast);
  display: flex;
  align-items: center;
  gap: var(--spacing-xxs);
}

.fz-app-body {
  flex: 1;
  display: flex;
  min-height: 0;
  overflow: hidden;
}

.fz-main {
  flex: 1;
  /* Don't scroll here — pages manage their own internal scroll.
     This lets height:100% children anchor to a real constraint. */
  overflow: hidden;
  /* Same tinted background as the left sidebar */
}

/* Reusable right sidebar column.
   Add content inside; it won't need its own border. */
.fz-right-panel {
  width: 300px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.fz-logo-small {
  display: none;
}

.fz-sidebar-collapsed .fz-logo-full {
  display: none;
}

.fz-sidebar-collapsed .fz-logo-small {
  display: block;
}

/*
Panel

Used for things like lists of workouts, plans, etc.
*/
.fz-panel li {
  list-style: none;
}

.fz-panel-list li {
  list-style: none;
}

details.fz-panel-collapsible {
  border-bottom: 1px solid var(--color-outline-variant);
}

/* Rotating arrow used inside fz-panel-collapsible summaries */
.fz-expando-arrow {
  flex-shrink: 0;
  transition: transform 0.15s;
}

details.fz-panel-collapsible[open] > summary .fz-expando-arrow {
  transform: rotate(90deg);
}

/* Small square icon button for panel/section headers */
.fz-panel-icon-btn {
  width: 32px;
  height: 32px;
  border-radius: var(--border-radius-s);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  transition: background 0.15s, color 0.15s;
}

.fz-panel-header {
  min-height: 44px;
  box-sizing: border-box;
}

.fz-panel-header h3 {
  flex: 1;
}

.fz-panel-search-input {
  flex: 1;
  padding: 0;
  margin: 0;
  border: none;
  background: transparent;
  outline: none;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  color: inherit;
  min-width: 0;
}

.fz-panel-header-action {
  background: none;
  cursor: pointer;
}

.fz-panel-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-xxs);
  align-items: center;
  padding: var(--spacing-xxs) var(--spacing-xs);
  background-color: var(--color-surface-container);
  border-bottom: var(--border-width-xxs) solid var(--color-outline-variant);
  list-style: none;
}

.fz-panel-tabs li {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-xxxs);
  padding: 2px var(--spacing-xs);
  border-radius: 9999px;
  cursor: pointer;
  font-size: var(--font-size-xs);
  color: var(--color-on-surface-variant);
  border: var(--border-width-xxs) solid transparent;
  user-select: none;
  list-style: none;
}

.fz-panel-tabs li:empty {
  display: none;
}

.fz-panel-tabs li:hover {
  background-color: var(--color-surface-container-highest);
  color: var(--color-on-surface);
}

.fz-panel-tabs li.fz-panel-tab-selected {
  background-color: var(--color-primary-container);
  color: var(--color-on-primary-container);
  border-color: var(--color-primary);
}

.fz-panel-tabs li.fz-panel-tab-selected [class*=sport-] {
  color: var(--color-on-primary-container);
}

/* Panel section — a bordered block within a side panel (e.g. summary, stats) */
.fz-panel-section-body {
  flex-direction: column;
}

/* Alert cards in athlete panel */
.fz-alert {
  padding: var(--spacing-xs);
}

.fz-alert-header {
  justify-content: space-between;
}

.fz-alert-time {
  text-transform: uppercase;
}

.fz-alert-category {
  text-transform: uppercase;
  border-left: 3px solid currentColor;
}

.fz-alert-action {
  text-transform: uppercase;
  background: none;
  cursor: pointer;
}

.fz-alert-action:hover {
  text-decoration: underline;
}

.fz-alert-action-danger {
  justify-content: center;
  width: 100%;
  padding: var(--spacing-xs) var(--spacing-s);
  background-color: var(--color-danger);
  color: var(--color-danger-on);
  cursor: pointer;
  text-transform: uppercase;
}

.fz-alert-action-danger:hover {
  background-color: var(--color-danger-hover);
}

/* Flag type color utilities */
.c-flag-fatigue {
  color: var(--color-flag-fatigue);
}

.c-flag-injury {
  color: var(--color-flag-injury);
}

.c-flag-illness {
  color: var(--color-flag-illness);
}

.c-flag-life-stress {
  color: var(--color-flag-life-stress);
}

.c-flag-motivation {
  color: var(--color-flag-motivation);
}

.c-flag-question {
  color: var(--color-flag-question);
}

/* Stat row — a label/value pair in a panel section */
.fz-stat-row {
  justify-content: space-between;
}

/* Stat cards — side-by-side highlight metrics */
.fz-stat-card {
  flex: 1;
  flex-direction: column;
  gap: 2px;
}

/* Sport bar — icon + progress bar + metric */
.fz-sport-bar {
  flex: 1;
  height: var(--spacing-xxxs);
  overflow: hidden;
}

.fz-sport-bar-fill {
  height: 100%;
}

/* Per-sport color classes — kept in lockstep with `utils_widgets::Sport`
 * (Rust) and `components/sports-lib.js::SPORTS_PRIMARY` (JS). Add a new
 * sport in one place by extending `$sports`. */
.sport-swim-bg {
  background-color: var(--color-sport-swim);
}

.sport-swim {
  color: var(--color-sport-swim);
}

.sport-bike-bg {
  background-color: var(--color-sport-bike);
}

.sport-bike {
  color: var(--color-sport-bike);
}

.sport-run-bg {
  background-color: var(--color-sport-run);
}

.sport-run {
  color: var(--color-sport-run);
}

.sport-strength-bg {
  background-color: var(--color-sport-strength);
}

.sport-strength {
  color: var(--color-sport-strength);
}

/* Per-metric color classes — kept in lockstep with `utils_widgets::Metric`
 * (Rust). Same shape as the sport classes above: add a metric in one place by
 * extending `$metrics` and the Rust enum. */
.metric-hr-bg {
  background-color: var(--color-metric-hr);
}

.metric-hr {
  color: var(--color-metric-hr);
}

.metric-power-bg {
  background-color: var(--color-metric-power);
}

.metric-power {
  color: var(--color-metric-power);
}

.metric-speed-bg {
  background-color: var(--color-metric-speed);
}

.metric-speed {
  color: var(--color-metric-speed);
}

.metric-cadence-bg {
  background-color: var(--color-metric-cadence);
}

.metric-cadence {
  color: var(--color-metric-cadence);
}

.metric-elevation-bg {
  background-color: var(--color-metric-elevation);
}

.metric-elevation {
  color: var(--color-metric-elevation);
}

/* Calendar event chip */
.cal-event-chip, .cal-event-chip-done {
  padding: 3px var(--spacing-xxs);
  overflow: hidden;
  cursor: default;
}

/* Completed activity chip — same shape as `.cal-event-chip` with a
 * primary-tinted background + left accent to distinguish "done" from
 * "planned". */
.cal-event-chip-done {
  background: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface-container));
  border-left: 2px solid var(--color-primary);
}

.cal-event-chip-header {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.cal-event-chip-meta {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Annual plan event chip — race/event marker on the calendar */
.cal-ap-chip {
  padding: 2px var(--spacing-xxs);
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  font-size: var(--font-size-xxs);
  border-left: 2px solid currentColor;
  background: color-mix(in srgb, currentColor 10%, var(--color-surface-container));
}

.cal-ap-chip-a {
  color: var(--color-danger);
}

.cal-ap-chip-b {
  color: var(--color-secondary);
}

.cal-ap-chip-c {
  color: var(--color-on-surface-variant);
}

calendar-editor {
  user-select: none;
}

editor-toolbar {
  display: none;
  border-top: 1px solid var(--color-outline-variant);
  background: var(--color-surface-container);
  padding: var(--spacing-xxs) var(--spacing-s);
  align-items: center;
  gap: var(--spacing-s);
}

editor-toolbar.visible {
  display: flex;
}

.toolbar-sep {
  width: 1px;
  height: 1.5em;
  background: var(--color-outline-variant);
}

calendar-editor input,
calendar-editor textarea {
  user-select: text;
}

/* Calendar DnD — drop target and day selection */
.cal-day.drop-target {
  background-color: color-mix(in srgb, var(--color-primary) 12%, var(--color-surface-bright));
  outline: 2px solid var(--color-primary);
  outline-offset: -2px;
}

.cal-day.cal-day-selected {
  outline: 2px solid var(--color-secondary);
  outline-offset: -2px;
  background-color: color-mix(in srgb, var(--color-secondary) 8%, var(--color-surface-bright));
}

/* Dashed action placeholder — e.g. "New Workout" empty state, "Add weeks" */
.fz-dashed-action {
  justify-content: center;
  width: 100%;
  padding: var(--spacing-s);
  box-sizing: border-box;
  border-style: dashed;
}

.fz-dashed-action:hover {
  text-decoration: none;
}

.fz-empty-action {
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-s);
  padding: var(--spacing-xl);
  border-width: var(--border-width-l);
  font-size: var(--font-size-l);
  width: 60%;
  margin: var(--spacing-m) auto;
  position: relative;
  overflow: hidden;
}

.fz-empty-action-bg-icon {
  position: absolute;
  bottom: -0.5em;
  right: 0.3em;
  font-size: 16rem;
  pointer-events: none;
  transform: rotate(30deg);
  transform-origin: bottom right;
}

/* Training calendar */
#cal-table {
  border-collapse: separate;
  border-spacing: var(--spacing-xxxs);
  width: 100%;
  table-layout: fixed;
}

.cal-weekday-header {
  font-variant: small-caps;
}

.cal-day {
  border-width: var(--border-width-xxs);
  min-height: 72px;
  vertical-align: top;
}

.cal-day-today {
  border-width: var(--border-width-m);
}

.cal-day-add {
  opacity: 0;
}

.cal-day:hover .cal-day-add {
  opacity: 1;
}

.cal-day-num {
  text-transform: uppercase;
}

.cal-stats {
  vertical-align: top;
}

/* ── Weekly stats card ──────────────────────────────────────────────────────
 * Shared layout used by the plan editor's stats column and the athlete
 * calendar's right-hand stats cell. A "header" row with a "WEEK N:" label
 * (plus optional period <input>) sits above a "total hours" row, a stacked
 * sport-distribution bar, and a row of per-sport mini-cards. JS (plan
 * editor: week-stats.js; athlete calendar: server-rendered) fills the
 * values. */
.stats-week-header {
  padding: var(--spacing-xs) var(--spacing-xs) 0;
}

.stats-week-prefix {
  white-space: nowrap;
  text-transform: uppercase;
}

.stats-week-period {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  padding: 0;
  font: inherit;
  letter-spacing: inherit;
  color: var(--color-primary);
  text-transform: uppercase;
}

.stats-week-period::placeholder {
  color: var(--color-on-surface-variant);
  opacity: 0.5;
  text-transform: none;
  letter-spacing: normal;
}

.stats-week-period:focus {
  outline: none;
}

.stats-total-row {
  justify-content: space-between;
  padding: var(--spacing-s) var(--spacing-xs) var(--spacing-xxs);
}

/* Stacked sport bar — each fill's flex-grow is set per-week so widths
 * track the share of total time. */
.stats-sport-bar {
  height: 6px;
  margin: 0 var(--spacing-xs) var(--spacing-xs);
  overflow: hidden;
}

.stats-sport-bar-fill {
  flex: 0 0 0;
}

.stats-sport-cards {
  padding: 0 var(--spacing-xs) var(--spacing-xs);
}

.stats-sport-card {
  flex: 1 1 0;
  min-width: 0;
  flex-direction: column;
  gap: 2px;
}

/* Keep the card the same height even when distance is empty (e.g. strength). */
.stats-sport-dist:empty::before {
  content: " ";
}

/* Variants used by the athlete calendar: "done / planned" pairs where the
 * planned value follows after a slash in a muted tone. */
.stats-sport-planned {
  opacity: 0.7;
}

.stats-sport-planned::before {
  content: " / ";
}

/* Vertical year strip — Google-Photos-style timeline on the left edge of the calendar page.
 * One slim div per month, ~22 years total. Scrollable; scrollbar hidden.
 * Default: blends in — only thin year-boundary lines visible.
 * On hover: month pills fade in with their status colors. */
.cal-year-strip {
  width: 24px;
  flex-shrink: 0;
  overflow-y: auto;
  overflow-x: hidden;
  scrollbar-width: none;
  background: transparent;
  position: relative;
}

.cal-year-strip::-webkit-scrollbar {
  display: none;
}

.cal-yr-week {
  display: block;
  box-sizing: border-box;
  height: 5px;
  margin: 2px 6px;
  border-radius: 1px;
  /* Every pill carries a border so event-vs-non-event months are the same
   * size. By default the border colour matches the background, so it's
   * invisible; event months override `border-color` inline. */
  border: 1px solid var(--color-outline-variant);
  background: var(--color-outline-variant);
  opacity: 0;
  text-decoration: none;
  position: relative;
  transition: opacity 120ms, background-color 120ms, border-color 120ms, transform 80ms;
}

.cal-yr-week-month-start {
  margin-top: 4px;
}

/* Year boundary: at rest, the pill background is hidden and only the top
 * border shows — a thin horizontal line that blends in with the layout.
 * On hover, the border fades out and the pill background fades in, with no
 * geometry change so the strip's vertical layout stays stable. */
.cal-yr-week-year-start {
  opacity: 1;
  margin-top: 16px;
  background: transparent;
  /* Only the top edge marks the year boundary — drop the side/bottom
   * borders so the pill collapses to a thin horizontal line at rest. */
  border-color: transparent;
  border-top-color: var(--color-outline-variant);
}

/* Strip hover reveals all month pills at the same opacity — event months
 * are distinguished only by their inline priority-coloured border. */
.cal-year-strip:hover .cal-yr-week {
  opacity: 0.6;
}

.cal-year-strip:hover .cal-yr-week-year-start {
  background: var(--color-outline-variant);
  border-top-color: transparent;
}

/* In-view / today / direct-hover all change the background — match the
 * border to keep the "border = background unless event" invariant, so
 * we don't expose the default outline-variant border on top of these
 * coloured fills. Event months' inline `border-color` keeps overriding
 * because inline beats class. */
.cal-year-strip:hover .cal-yr-week-in-view {
  opacity: 0.9;
  background: var(--color-primary-container);
  border-color: var(--color-primary-container);
}

.cal-year-strip:hover .cal-yr-week-today {
  opacity: 1;
  background: var(--color-primary);
  border-color: var(--color-primary);
}

.cal-yr-week:hover {
  opacity: 1;
  background: var(--color-on-surface-variant);
  border-color: var(--color-on-surface-variant);
  transform: scaleX(1.4);
}

.cal-yr-label {
  position: absolute;
  left: 0;
  right: 0;
  top: -14px;
  text-align: center;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0;
  color: var(--color-on-surface-variant);
  pointer-events: none;
  line-height: 1;
  white-space: nowrap;
}

/* Workout tile in the right-panel list */
.fz-workout-tile:hover {
  text-decoration: none;
}

/* Static card — same visual as fz-workout-tile but no hover, for non-clickable containers. */
.fz-workout-tile-meta {
  margin-top: 2px;
  padding-left: calc(18px + var(--spacing-xxs));
}

/*

Icons

*/
.i16::before {
  width: 16px !important;
  height: 16px !important;
}

.i18::before, .icon-button i::before {
  width: 18px !important;
  height: 18px !important;
}

.i20::before {
  width: 20px !important;
  height: 20px !important;
}

.i24::before {
  width: 24px !important;
  height: 24px !important;
}

/* Sport colors live in panel.scss (alongside bg variants) */
button, .button, .icon-button {
  cursor: pointer;
  transition: var(--transition-all-fast);
  color: inherit;
}

.button:hover, .icon-button:hover,
a.button:hover {
  text-decoration: none;
}

.button-outline {
  border-style: solid;
}

button.c-primary,
button.link, .button.c-primary, a.button,
.button.link, .c-primary.icon-button, a.icon-button,
.icon-button.link {
  background-color: var(--color-primary);
  color: var(--color-on-primary);
  border-color: var(--color-on-primary);
}
button.c-primary:hover,
button.link:hover, .button.c-primary:hover, a.button:hover,
.button.link:hover, .c-primary.icon-button:hover, a.icon-button:hover,
.icon-button.link:hover {
  background-color: var(--color-primary-container);
  color: var(--color-on-primary-container);
}

.button-outline.c-primary, a.button-outline,
.button-outline.link {
  color: var(--color-primary);
  background-color: transparent;
  border-color: var(--color-outline);
}

button.c-secondary, .button.c-secondary, .c-secondary.icon-button {
  background-color: var(--color-secondary);
  color: var(--color-on-secondary);
  border-color: var(--color-on-secondary);
}
button.c-secondary:hover, .button.c-secondary:hover, .c-secondary.icon-button:hover {
  background-color: var(--color-secondary-container);
  color: var(--color-on-secondary-container);
}

.button-outline.c-secondary {
  color: var(--color-secondary);
  background-color: transparent;
  border-color: var(--color-outline);
}

button.c-tertiary, .button.c-tertiary, .c-tertiary.icon-button {
  background-color: var(--color-tertiary);
  color: var(--color-on-tertiary);
  border-color: var(--color-on-tertiary);
}
button.c-tertiary:hover, .button.c-tertiary:hover, .c-tertiary.icon-button:hover {
  background-color: var(--color-tertiary-container);
  color: var(--color-on-tertiary-container);
}

.button-outline.c-tertiary {
  color: var(--color-tertiary);
  background-color: transparent;
  border-color: var(--color-outline);
}

button.c-error, .button.c-error, .c-error.icon-button {
  background-color: var(--color-error);
  color: var(--color-on-error);
  border-color: var(--color-on-error);
}
button.c-error:hover, .button.c-error:hover, .c-error.icon-button:hover {
  background-color: var(--color-error-container);
  color: var(--color-on-error-container);
}

.button-outline.c-error {
  color: var(--color-error);
  background-color: transparent;
  border-color: var(--color-outline);
}

/* Tab strip — one of N mutually exclusive choices (a sport, a period, a
 * thread), marked by an underline rather than a box. No background and no
 * chrome of its own, so a page can carry two of these without either competing
 * with the content they select.
 *
 * Tabs sit flush against each other, so their thin muted underlines join into
 * one line beneath the strip and the group reads as a single control. The
 * selected tab replaces its stretch of that line with a thicker primary one.
 *
 * A tab is whatever the caller needs it to be — <a>, <button>, or a <label>
 * wrapping a radio input. Selection is marked by `aria-selected="true"` (the
 * right ARIA for a link or button acting as a tab, so it cannot drift from the
 * styling), or by the radio being checked.
 */
.fz-tabs {
  display: inline-flex;
  flex-wrap: wrap;
  max-width: 100%;
  min-width: 0;
  vertical-align: middle;
}

.fz-tabs > * {
  /* Stated, not inherited: a <label> arrives at `fw-l` from the form styles
   * and an <a> at the ambient weight, and one component must not have two
   * looks depending on which element a caller reached for. Selection is the
   * colour and the underline — weighting it too would reflow the text. */
  flex: 0 0 auto;
  justify-content: center;
  background: none;
  /* A <button> arrives rounded, which would round the ends of its stretch of
   * the underline and break the line into segments. */
  border-radius: 0;
  /* A tab owns its own box. Whatever element a caller reaches for may arrive
   * carrying margin from elsewhere — a <label> picks up the framework's
   * `mb-xs`, and most text elements have one from the UA — which would sit
   * under the underline and break the strip apart. */
  margin: 0;
  /* Contains the hidden radio below, which would otherwise be positioned
   * against whatever distant ancestor happens to be positioned. */
  position: relative;
  /* The selected tab's underline is thicker. The difference comes out of the
   * padding, so nothing shifts when the selection moves. */
  padding-bottom: calc(var(--spacing-xxs) + var(--border-width-m));
  cursor: pointer;
  user-select: none;
}

.fz-tabs > *:not([aria-selected=true]):not(:has(input:checked)):hover {
  text-decoration: none;
}

.fz-tabs > *:focus-visible {
  outline: var(--border-width-m) solid var(--color-primary);
  outline-offset: -2px;
}

.fz-tabs > *[aria-selected=true],
.fz-tabs > *:has(input:checked) {
  padding-bottom: var(--spacing-xxs);
}

/* A choice that leads to an empty page. Still offered — an absent tab is
 * indistinguishable from the option not existing — but visibly faded. */
.fz-tabs input[type=radio] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

input, textarea, select, .text-input {
  box-sizing: border-box;
  outline: none;
}
input:focus, textarea:focus, select:focus, .text-input:focus {
  outline: none;
  border-color: var(--color-primary);
}
@container (min-width: 300px) {
  .formgrid {
    grid-template-columns: auto 1fr;
    align-items: baseline;
    display: grid;
    gap: var(--spacing-xxs);
  }
}
/* `.fz-form-grid` — the two-column "label / input" grid used by every
 * workout-style editor (workout modal, planned-workout override, calendar
 * day editor). Right-aligns labels on non-small screens via the implicit
 * `ta-r_ns` on children. Replaces the inline-style soup
 * `class="d-g_ns ai-b gp-xxs" style="grid-template-columns: auto 1fr"`. */
.fz-form-grid {
  grid-template-columns: auto 1fr;
}

dialog::backdrop, .popover::backdrop {
  opacity: 0;
  animation: var(--animation-fade-out) forwards;
  background-color: var(--color-surface-dim);
  transition: opacity 0.2s allow-discrete;
}

dialog[open]::backdrop, .popover:popover-open::backdrop {
  opacity: 0.9;
  animation: var(--animation-fade-in) forwards;
}

dialog, .popover {
  padding: 0;
  border: none !important;
  background-color: var(--color-surface-container);
  color: var(--color-on-surface);
  transition: all 0.2s allow-discrete;
}

/* `.fz-modal`: standardised look for top-layer dialogs that host their
 * own content sizing (e.g. workout editor, planned-workout override).
 * Overrides the default surface-container backdrop with a brighter
 * `--color-surface`, adds the shadow we use across modal dialogs, and
 * drops the browser's default max-width/max-height so callers can size
 * the inner content directly via `width:min(…)` / `height:…`. */
dialog.fz-modal {
  background-color: var(--color-surface);
  border-radius: var(--border-radius-l);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.2);
  max-width: none;
  max-height: none;
}

/* Standard modal header bar — sits flush at the top of every modal
 * dialog (workout editor, planned-workout override, invite athlete/coach,
 * group editor, athlete switcher, calendar event dialogs, …). Title on
 * the left, optional primary action(s) on the right, then the close X.
 * Border runs all the way across, no tinted background — header inherits
 * the dialog's surface color. Build header content with
 * `utils_widgets::modal_header` or `modal_header_split`. */
.fz-modal-header {
  padding: var(--spacing-s);
  border-bottom: 1px solid var(--color-outline-variant);
  flex-shrink: 0;
}

/* Modal footer — same shape as the header, only used when there's a
 * secondary action that doesn't belong next to the primary save (e.g.
 * "Edit source workout", "Delete group", "Uncheck all"). The primary
 * Save/Apply action lives in the header. */
.fz-modal-footer {
  padding: var(--spacing-s);
  border-top: 1px solid var(--color-outline-variant);
  flex-shrink: 0;
}

/* `.fz-menu`: a popup menu hung under the button that opened it — a page
 * toolbar's overflow "⋮", or anything else that is a short list of actions
 * rather than a form to fill in. Built with `utils_widgets::menu`.
 *
 * A <dialog> rather than a `[popover]`: `showModal()` already gives us the
 * top layer, Escape, and focus handling in every browser, and the athlete
 * switcher has opened this way for a while. Placement is measured off the
 * trigger button in JS; CSS anchor positioning would be tidier and is not
 * somewhere we can rely on yet.
 *
 * The backdrop is transparent. A menu is not a modal moment, and dimming the
 * page behind a two-item list reads as a far bigger interruption than it is —
 * but clicking it still closes, which is what a menu should do. */
dialog.fz-menu {
  position: fixed;
  /* Position is not animated. The generic `dialog` rule above transitions
     `all`, and this menu is placed in two steps — shown, measured, then moved
     to whichever side of its button it fits on (see
     `utils_widgets::menu_button`). With `top` transitioning, that second step
     became a visible slide from wherever the first step left it, the length
     of the window. Opacity and the discrete display/overlay swap still
     transition, which is the part that is actually an animation. */
  transition-property: opacity, display, overlay;
  margin: 0;
  padding: var(--spacing-xxs);
  width: min(360px, 100vw - 2 * var(--spacing-s));
  max-width: none;
  /* The height is set in JS to whatever room there is on the side the menu
     landed on (see `utils_widgets::menu_button`), so a menu with more items
     than fit — a team with twenty message templates — scrolls rather than
     running off the top or bottom of the window. */
  max-height: none;
  overflow-y: auto;
  background-color: var(--color-surface-container-high);
  border-radius: var(--border-radius-m);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
}

dialog.fz-menu::backdrop {
  background: transparent;
}

/* Small-caps section label, for a menu that groups its items. */
.fz-menu-label {
  display: block;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* One action. Full-width and left-aligned, because a menu item is a row you
 * click rather than a button you aim at — and wide enough for the sentence
 * under the label, which is why these exist at all: "Bad data" and a bare
 * refresh glyph are both guessable, and both easy to guess wrong. */
/* Written out rather than assembled from utility `@extend`s: this is a
   <button>, and the global `button` rule already claims a radius and a padding
   through extends of its own. Two extend groups at equal specificity are
   settled by whichever lands later in the output, which is not a thing to hang
   a component's padding on. */
.fz-menu-item {
  display: flex;
  /* Top-aligned, not centred: an item is a label with a sentence under it,
     and centring puts the glyph beside the sentence rather than the label. */
  align-items: flex-start;
  gap: var(--spacing-xs);
  width: 100%;
  padding: var(--spacing-xs);
  border: none;
  border-radius: var(--border-radius-m);
  background: none;
  color: var(--color-on-surface);
  text-align: left;
  font-size: var(--font-size-s);
  cursor: pointer;
}

.fz-menu-item:hover {
  background-color: var(--color-surface-container-highest);
}

.fz-menu-item > i {
  flex-shrink: 0;
  line-height: 1.4;
}

/* The sentence under an item's label. */
.fz-menu-item-hint {
  display: block;
  margin-top: var(--spacing-xxxs);
}

.fz-menu-sep {
  height: 1px;
  margin: var(--spacing-xxs) var(--spacing-xs);
  background: var(--color-outline-variant);
}

/* Single-segment modal title (e.g. "Switch Athlete", "Invite Coach"). For
 * two-segment titles use `.fz-page-toolbar-title-prefix` + an `<h3>`.
 *
 * Intentionally just font styling — no `flex:1`. Headers built with the
 * `modal_header*` helpers use an explicit spacer to push the action +
 * close X to the right; custom headers (e.g. the athlete switcher, which
 * has a "1/5" badge between the title and the X) can keep their own
 * `margin-left:auto` pattern. Adding `flex:1` here would silently break
 * layouts that put a content-sized element after the title. */
dialog.middle, .popover.middle {
  width: var(--width-l);
  height: var(--width-l);
  margin: auto;
  max-width: 100vw;
  max-height: 100vh;
  padding: var(--spacing-s);
  animation: var(--animation-slide-out-bottom) forwards, var(--animation-fade-out) forwards;
}

dialog[open].middle, .popover:popover-open.middle {
  animation: var(--animation-slide-in-bottom) forwards, var(--animation-fade-in) forwards;
}

dialog.right {
  width: var(--width-l);
  height: 100vh;
  animation: var(--animation-slide-out-right) forwards;
  margin: 0 0 0 auto;
  max-width: 100vw;
  max-height: 100vh;
  padding: var(--spacing-s);
}

dialog[open].right {
  animation: var(--animation-slide-in-right) forwards;
}

@media (max-width: 30em) {
  dialog.right {
    width: 100vw;
    height: 80vh;
    animation: var(--animation-slide-out-bottom) forwards;
    margin: auto 0 0 0;
  }

  dialog[open].right {
    animation: var(--animation-slide-in-bottom) forwards;
  }
}
.search-filter {
  display: none;
}

.glass-background {
  background: radial-gradient(circle at 50% 50%, rgba(56, 105, 72, 0.05) 0%, rgba(247, 250, 244, 0) 70%);
}

a:hover, .link:hover {
  text-decoration: underline;
}

/* Answer option labels in program questionnaires */
.fz-answer-option {
  cursor: pointer;
}

/* Indent marker for nested program-editor components — a subtle left
 * border is far more readable (and takes less horizontal space) than
 * padding-only indentation, especially when the tree gets several
 * levels deep. Only renders the border/padding when at least one
 * direct child has content — for the `Now`/`Start` date variants
 * that carry no user-facing data, the indent collapses to nothing
 * so the parent row stays one line. */
.fz-prog-indent:has(> *:not(:empty)) {
  border-left: 2px solid var(--color-outline-variant);
  padding-left: var(--spacing-xs);
  margin-left: 1px;
}

/* Inline rows in the program editor: small horizontal gap, vertical
 * centering, optional wrap when content is too wide. Used in place of
 * stacked <div>s for things like "From: <date>" or "a + b". */
.fz-prog-row {
  /* Slightly tighter vertical rhythm than the default. */
  padding-top: var(--spacing-xxxs);
  padding-bottom: var(--spacing-xxxs);
}

/* Small section label inside the editor (e.g. "From:", "To:", "Dates:"). */
.fz-answer-option:hover:not(:has(input:checked)) {
  background-color: var(--color-surface-container-high);
}

.fz-answer-option:has(input:checked) {
  background-color: var(--color-primary-container);
  color: var(--color-on-primary-container);
  border-color: var(--color-primary);
}

/* Remember to add some padding on h1* parents, or their margin
 is collapsed with the parent and end up outside the parent. */
/* ====================================================== */
/* Rendered rich text: message bodies from <quill-editor>, and the assistant's
   markdown turns (which add .fz-md on top, below).
   The allowlist in fws/ui/utils/richtext.rs decides what can appear here:
   headings, lists, blockquote, pre/code, tables, hr, links, and Quill's
   ql-align-* / ql-indent-* classes. Block elements keep their browser default margins,
   which are far too airy inside a chat bubble — tighten them, and drop the
   leading/trailing margin so a bubble hugs its content. */
.fz-rich-text {
  /* Editor-only chrome Quill injects into list items. */
  /* ── Lists ──
     Quill 2 renders *every* list as <ol> and marks each item with
     data-list="bullet" or "ordered" (slab/quill#4438, intended behaviour). So
     the marker is a property of the item, not the container — and
     quill.snow.css only styles items inside a live `.ql-editor`, which a
     message bubble is not. Without the rules below every bulleted list a user
     writes renders as a numbered one. */
  /* A top-level item restarts the numbering of anything nested under it. */
  /* Quill flattens nesting into ql-indent-N on a single <ol> rather than
     nesting real lists, so each depth needs its own counter and marker
     style. The decimal → lower-alpha → lower-roman cycle matches the editor. */
  /* ── Code blocks ──
     Quill 2 emits a container div holding one div per line, where 1.x emitted
     a single <pre class="ql-syntax">. Both shapes are allowed by the
     sanitizer, so both are styled. */
  /* Long URLs shouldn't push a bubble past its max-width. */
  /* ── Inline code ──
     Quill has no inline-code format, so this only shows up in markdown, but it
     belongs with the other body styles. `pre > code` is excluded: the <pre>
     already carries the background, and doubling it looks like a nested box. */
  /* ── Tables ──
     A wide table must scroll rather than stretch its container: these sit in
     chat bubbles that are already capped at min(90%, 48rem). */
  /* Quill's alignment / indentation formats. */
}
.fz-rich-text p, .fz-rich-text h1, .fz-rich-text h2, .fz-rich-text h3, .fz-rich-text h4, .fz-rich-text h5, .fz-rich-text h6, .fz-rich-text ul, .fz-rich-text ol, .fz-rich-text blockquote, .fz-rich-text pre {
  margin: var(--spacing-xxs) 0;
}
.fz-rich-text > :first-child {
  margin-top: 0;
}
.fz-rich-text > :last-child {
  margin-bottom: 0;
}
.fz-rich-text ul, .fz-rich-text ol {
  padding-left: var(--spacing-m);
}
.fz-rich-text .ql-ui {
  display: none;
}
.fz-rich-text ol {
  counter-reset: fz-list-0 fz-list-1 fz-list-2 fz-list-3 fz-list-4 fz-list-5 fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list] {
  list-style-type: none;
  position: relative;
  padding-left: 1.4em;
}
.fz-rich-text li[data-list]::before {
  position: absolute;
  left: 0;
  width: 1.2em;
  text-align: right;
  white-space: nowrap;
  color: var(--color-on-surface-variant);
}
.fz-rich-text li[data-list=bullet]::before {
  content: "•";
}
.fz-rich-text li[data-list=ordered] {
  counter-increment: fz-list-0;
}
.fz-rich-text li[data-list=ordered]::before {
  content: counter(fz-list-0, decimal) ". ";
}
.fz-rich-text li[data-list]:not([class*=ql-indent-]) {
  counter-reset: fz-list-1 fz-list-2 fz-list-3 fz-list-4 fz-list-5 fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-1 {
  padding-left: 2.9em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-2 fz-list-3 fz-list-4 fz-list-5 fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-1::before {
  left: 1.5em;
}
.fz-rich-text li[data-list=ordered].ql-indent-1 {
  counter-increment: fz-list-1;
}
.fz-rich-text li[data-list=ordered].ql-indent-1::before {
  content: counter(fz-list-1, lower-alpha) ". ";
}
.fz-rich-text li[data-list].ql-indent-2 {
  padding-left: 4.4em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-3 fz-list-4 fz-list-5 fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-2::before {
  left: 3em;
}
.fz-rich-text li[data-list=ordered].ql-indent-2 {
  counter-increment: fz-list-2;
}
.fz-rich-text li[data-list=ordered].ql-indent-2::before {
  content: counter(fz-list-2, lower-roman) ". ";
}
.fz-rich-text li[data-list].ql-indent-3 {
  padding-left: 5.9em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-4 fz-list-5 fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-3::before {
  left: 4.5em;
}
.fz-rich-text li[data-list=ordered].ql-indent-3 {
  counter-increment: fz-list-3;
}
.fz-rich-text li[data-list=ordered].ql-indent-3::before {
  content: counter(fz-list-3, decimal) ". ";
}
.fz-rich-text li[data-list].ql-indent-4 {
  padding-left: 7.4em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-5 fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-4::before {
  left: 6em;
}
.fz-rich-text li[data-list=ordered].ql-indent-4 {
  counter-increment: fz-list-4;
}
.fz-rich-text li[data-list=ordered].ql-indent-4::before {
  content: counter(fz-list-4, lower-alpha) ". ";
}
.fz-rich-text li[data-list].ql-indent-5 {
  padding-left: 8.9em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-6 fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-5::before {
  left: 7.5em;
}
.fz-rich-text li[data-list=ordered].ql-indent-5 {
  counter-increment: fz-list-5;
}
.fz-rich-text li[data-list=ordered].ql-indent-5::before {
  content: counter(fz-list-5, lower-roman) ". ";
}
.fz-rich-text li[data-list].ql-indent-6 {
  padding-left: 10.4em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-7 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-6::before {
  left: 9em;
}
.fz-rich-text li[data-list=ordered].ql-indent-6 {
  counter-increment: fz-list-6;
}
.fz-rich-text li[data-list=ordered].ql-indent-6::before {
  content: counter(fz-list-6, decimal) ". ";
}
.fz-rich-text li[data-list].ql-indent-7 {
  padding-left: 11.9em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-7::before {
  left: 10.5em;
}
.fz-rich-text li[data-list=ordered].ql-indent-7 {
  counter-increment: fz-list-7;
}
.fz-rich-text li[data-list=ordered].ql-indent-7::before {
  content: counter(fz-list-7, lower-alpha) ". ";
}
.fz-rich-text li[data-list].ql-indent-8 {
  padding-left: 13.4em;
  /* Reset every counter deeper than this level. */
  counter-reset: fz-list-9 fz-list-8;
}
.fz-rich-text li[data-list].ql-indent-8::before {
  left: 12em;
}
.fz-rich-text li[data-list=ordered].ql-indent-8 {
  counter-increment: fz-list-8;
}
.fz-rich-text li[data-list=ordered].ql-indent-8::before {
  content: counter(fz-list-8, lower-roman) ". ";
}
.fz-rich-text .ql-code-block-container {
  background: var(--color-surface-container-highest);
  border-radius: var(--border-radius-xs);
  padding: var(--spacing-xxs) var(--spacing-xs);
  font-family: monospace;
  white-space: pre-wrap;
  word-break: break-word;
  tab-size: 4;
}
.fz-rich-text blockquote {
  border-left: var(--border-width-xs) solid var(--color-outline-variant);
  padding-left: var(--spacing-xs);
  color: var(--color-on-surface-variant);
}
.fz-rich-text pre {
  background: var(--color-surface-container-highest);
  border-radius: var(--border-radius-xs);
  padding: var(--spacing-xxs) var(--spacing-xs);
  white-space: pre-wrap;
  word-break: break-word;
}
.fz-rich-text a {
  word-break: break-word;
}
.fz-rich-text :not(pre) > code {
  background: var(--color-surface-container-highest);
  border-radius: var(--border-radius-xs);
  padding: 0 0.25em;
  font-family: monospace;
  word-break: break-word;
}
.fz-rich-text hr {
  border: 0;
  border-top: var(--border-width-xs) solid var(--color-outline-variant);
  margin: var(--spacing-xs) 0;
}
.fz-rich-text table {
  display: block;
  overflow-x: auto;
  max-width: 100%;
  border-collapse: collapse;
  margin: var(--spacing-xxs) 0;
}
.fz-rich-text th, .fz-rich-text td {
  border: var(--border-width-xs) solid var(--color-outline-variant);
  padding: var(--spacing-xxs) var(--spacing-xs);
  text-align: left;
}
.fz-rich-text th {
  background: var(--color-surface-container-highest);
  font-weight: bold;
}
.fz-rich-text .ql-align-center {
  text-align: center;
}
.fz-rich-text .ql-align-right {
  text-align: right;
}
.fz-rich-text .ql-align-justify {
  text-align: justify;
}
.fz-rich-text .ql-direction-rtl {
  direction: rtl;
}
.fz-rich-text .ql-indent-1 {
  padding-left: 1.5em;
}
.fz-rich-text .ql-indent-2 {
  padding-left: 3em;
}
.fz-rich-text .ql-indent-3 {
  padding-left: 4.5em;
}
.fz-rich-text .ql-indent-4 {
  padding-left: 6em;
}
.fz-rich-text .ql-indent-5 {
  padding-left: 7.5em;
}
.fz-rich-text .ql-indent-6 {
  padding-left: 9em;
}
.fz-rich-text .ql-indent-7 {
  padding-left: 10.5em;
}
.fz-rich-text .ql-indent-8 {
  padding-left: 12em;
}

/* ====================================================== */
/* Rendered markdown (the assistant's turns on the Messages page). Layered on
   top of .fz-rich-text, which does the block spacing, lists, code and tables.

   The one thing markdown needs that Quill does not: headings have to be
   reined in. A model writes "## Last week" freely, and h1/h2/h3 are xxl/xl/l
   globally — sizes meant for a page title, not for a line inside a chat
   bubble that is itself capped at 48rem. Scale them down and let weight,
   rather than size, carry the hierarchy. */
.fz-md {
  /* Deeper headings are already at body size, so they need something else to
     set them apart from the paragraph under them. */
}
.fz-md h1, .fz-md h2, .fz-md h3, .fz-md h4, .fz-md h5, .fz-md h6 {
  font-weight: bold;
  line-height: 1.3;
}
.fz-md h4, .fz-md h5, .fz-md h6 {
  color: var(--color-on-surface-variant);
}

/* ====================================================== */
/* Chat bubbles — the message thread, and the discussion on an activity.
 * Built with `ui_bubble::bubble`; see that module for what goes in one.
 *
 * The alignment carries the authorship. The reader's own words sit right in
 * the primary container, everyone else's sit left in a neutral one, and that
 * is why a bubble of your own wears no name: the side already said it. The
 * asymmetric corner points back at whoever is speaking, which is what keeps
 * two adjacent bubbles from the same person from reading as one long one.
 *
 * Deliberately not a `.fz-card`: a card is a region of the page, and a
 * conversation is a column of utterances. Giving each comment the same border
 * and radius as the panel around it made the discussion read as a stack of
 * little documents rather than as people talking. */
.fz-bubble-row {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
}

.fz-bubble-row-mine {
  align-items: flex-end;
}

.fz-bubble {
  padding: var(--spacing-xs) var(--spacing-s);
  /* Hugs its content up to a comfortable measure, and never wider than the
     column — the activity page puts these in 3fr of a two-column grid. */
  max-width: min(480px, 100%);
  background: var(--color-surface-container);
  color: var(--color-on-surface);
  border-radius: 0 var(--border-radius-l) var(--border-radius-l) var(--border-radius-l);
}

.fz-bubble-row-mine > .fz-bubble {
  background: var(--color-primary-container);
  color: var(--color-on-primary-container);
  border-radius: var(--border-radius-l) var(--border-radius-l) 0 var(--border-radius-l);
}

/* `Width::Wide` — a turn that is a document rather than a sentence, which is
   what an assistant's markdown answer is. Still capped: prose run to the full
   width of a desktop window is unreadable. */
.fz-bubble-wide > .fz-bubble {
  max-width: min(90%, 48rem);
}

/* `Width::Full` — an editor opened inside a bubble needs the room a sentence
   does not. */
.fz-bubble-full > .fz-bubble {
  max-width: none;
  width: 100%;
}

/* The line over a bubble: who said it, when, and what you can do about it.
 *
 * All on one row, above. The name and the timestamp belong together — split
 * across two lines they are two rows of grey chrome around a bubble that might
 * only say "ok" — and a name *under* the thing it labels reads as a signature
 * on whatever comes next.
 *
 * Flush with the bubble's outer edge rather than inset to meet the text inside
 * it: the header and the bubble then share one left rule (one right rule, on
 * your own side). An inset lines up with nothing — the bubble's own padding is
 * a step larger — so a header nudged in by less than that just looks nudged.
 *
 * Outside the bubble, not in it, so the action glyphs never sit on the primary
 * container, where an icon-sized stroke has no contrast to spare. */
.fz-bubble-header {
  margin-bottom: 2px;
  /* A long name plus a timestamp must not stretch the row past the bubble's
     own cap and drag the alignment with it. */
  max-width: 100%;
}

/* Who is speaking. A shade stronger than the timestamp beside it, so the two
   do not read as one run of grey. */
.fz-bubble-author {
  color: var(--color-on-surface);
}

/* ====================================================== */
/* Pulse animation (decorative blobs etc.) */
@keyframes fz-pulse {
  0%, 100% {
    opacity: 1;
  }
  50% {
    opacity: 0.5;
  }
}
.fz-pulse {
  animation: fz-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

/* ====================================================== */
/* HTMX spinner */
.on-htmx-request {
  opacity: 0;
}

.htmx-request .on-htmx-request {
  opacity: 100%;
  animation: rotation 2s infinite linear;
}

@keyframes rotation {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(359deg);
  }
}

/*# sourceMappingURL=components.css.map */
