/* ============================================================================
   Couch Party Design System — color, type, shape, motion, elevation tokens
   Built on Google Material Design 3 / Material 3 Expressive.
   Generated from tokens.json — do not hand-edit; edit gen.mjs / build.py.
   ========================================================================= */

/* Fonts: the design system specifies Roboto Flex, but this app ships with a
   strict CSP (default-src self) and deliberately loads no external fonts.
   The font-family tokens below fall back to local faces; the surface
   stylesheets override --cp-font-plain with the local rounded stack. */

:root {
  /* ---------- reference: tonal palettes ---------- */
  --cp-palette-primary-0: #000000;
  --cp-palette-primary-4: #260010;
  --cp-palette-primary-5: #2b0013;
  --cp-palette-primary-6: #2f0016;
  --cp-palette-primary-10: #3e001f;
  --cp-palette-primary-12: #460023;
  --cp-palette-primary-17: #59002e;
  --cp-palette-primary-20: #640035;
  --cp-palette-primary-22: #6b053a;
  --cp-palette-primary-24: #710c3e;
  --cp-palette-primary-30: #831d4c;
  --cp-palette-primary-40: #a23664;
  --cp-palette-primary-50: #c14f7d;
  --cp-palette-primary-60: #e06897;
  --cp-palette-primary-70: #ff83b2;
  --cp-palette-primary-80: #ffb0ca;
  --cp-palette-primary-87: #ffcddb;
  --cp-palette-primary-90: #ffd9e3;
  --cp-palette-primary-92: #ffe1e8;
  --cp-palette-primary-94: #ffe8ed;
  --cp-palette-primary-95: #ffecf0;
  --cp-palette-primary-96: #fff0f3;
  --cp-palette-primary-98: #fff8f8;
  --cp-palette-primary-99: #fffbff;
  --cp-palette-primary-100: #ffffff;
  --cp-palette-secondary-0: #000000;
  --cp-palette-secondary-4: #001114;
  --cp-palette-secondary-5: #001417;
  --cp-palette-secondary-6: #00161a;
  --cp-palette-secondary-10: #001f24;
  --cp-palette-secondary-12: #002429;
  --cp-palette-secondary-17: #002f36;
  --cp-palette-secondary-20: #00363d;
  --cp-palette-secondary-22: #003b43;
  --cp-palette-secondary-24: #004048;
  --cp-palette-secondary-30: #004f58;
  --cp-palette-secondary-40: #006875;
  --cp-palette-secondary-50: #008393;
  --cp-palette-secondary-60: #159fb1;
  --cp-palette-secondary-70: #43bacd;
  --cp-palette-secondary-80: #64d6e9;
  --cp-palette-secondary-87: #7aeafd;
  --cp-palette-secondary-90: #9cf0ff;
  --cp-palette-secondary-92: #b3f3ff;
  --cp-palette-secondary-94: #c8f6ff;
  --cp-palette-secondary-95: #d2f7ff;
  --cp-palette-secondary-96: #dbf9ff;
  --cp-palette-secondary-98: #eefcff;
  --cp-palette-secondary-99: #f6fdff;
  --cp-palette-secondary-100: #ffffff;
  --cp-palette-tertiary-0: #000000;
  --cp-palette-tertiary-4: #150d00;
  --cp-palette-tertiary-5: #181000;
  --cp-palette-tertiary-6: #1b1200;
  --cp-palette-tertiary-10: #251a00;
  --cp-palette-tertiary-12: #2a1e00;
  --cp-palette-tertiary-17: #372800;
  --cp-palette-tertiary-20: #3f2e00;
  --cp-palette-tertiary-22: #443200;
  --cp-palette-tertiary-24: #493600;
  --cp-palette-tertiary-30: #5a4300;
  --cp-palette-tertiary-40: #775a00;
  --cp-palette-tertiary-50: #967200;
  --cp-palette-tertiary-60: #b58a00;
  --cp-palette-tertiary-70: #d4a41b;
  --cp-palette-tertiary-80: #f2bf39;
  --cp-palette-tertiary-87: #ffd572;
  --cp-palette-tertiary-90: #ffdf99;
  --cp-palette-tertiary-92: #ffe5b1;
  --cp-palette-tertiary-94: #ffecc7;
  --cp-palette-tertiary-95: #ffefd2;
  --cp-palette-tertiary-96: #fff2dd;
  --cp-palette-tertiary-98: #fff8f2;
  --cp-palette-tertiary-99: #fffbff;
  --cp-palette-tertiary-100: #ffffff;
  --cp-palette-neutral-0: #000000;
  --cp-palette-neutral-4: #120826;
  --cp-palette-neutral-5: #150b29;
  --cp-palette-neutral-6: #180d2c;
  --cp-palette-neutral-10: #201634;
  --cp-palette-neutral-12: #241a39;
  --cp-palette-neutral-17: #2f2444;
  --cp-palette-neutral-20: #362b4b;
  --cp-palette-neutral-22: #3a2f4f;
  --cp-palette-neutral-24: #3f3454;
  --cp-palette-neutral-30: #4c4162;
  --cp-palette-neutral-40: #65597b;
  --cp-palette-neutral-50: #7e7195;
  --cp-palette-neutral-60: #988ab0;
  --cp-palette-neutral-70: #b3a5cc;
  --cp-palette-neutral-80: #cfc0e8;
  --cp-palette-neutral-87: #e3d3fc;
  --cp-palette-neutral-90: #ebddff;
  --cp-palette-neutral-92: #efe3ff;
  --cp-palette-neutral-94: #f4eaff;
  --cp-palette-neutral-95: #f7edff;
  --cp-palette-neutral-96: #f9f1ff;
  --cp-palette-neutral-98: #fef7ff;
  --cp-palette-neutral-99: #fffbff;
  --cp-palette-neutral-100: #ffffff;
  --cp-palette-neutral-variant-0: #000000;
  --cp-palette-neutral-variant-4: #140332;
  --cp-palette-neutral-variant-5: #170635;
  --cp-palette-neutral-variant-6: #190837;
  --cp-palette-neutral-variant-10: #221240;
  --cp-palette-neutral-variant-12: #261644;
  --cp-palette-neutral-variant-17: #31214f;
  --cp-palette-neutral-variant-20: #372856;
  --cp-palette-neutral-variant-22: #3c2c5b;
  --cp-palette-neutral-variant-24: #40315f;
  --cp-palette-neutral-variant-30: #4e3e6e;
  --cp-palette-neutral-variant-40: #675687;
  --cp-palette-neutral-variant-50: #806ea2;
  --cp-palette-neutral-variant-60: #9a88bd;
  --cp-palette-neutral-variant-70: #b5a2d9;
  --cp-palette-neutral-variant-80: #d1bdf6;
  --cp-palette-neutral-variant-87: #e3d3ff;
  --cp-palette-neutral-variant-90: #ebddff;
  --cp-palette-neutral-variant-92: #efe3ff;
  --cp-palette-neutral-variant-94: #f4eaff;
  --cp-palette-neutral-variant-95: #f7edff;
  --cp-palette-neutral-variant-96: #f9f1ff;
  --cp-palette-neutral-variant-98: #fef7ff;
  --cp-palette-neutral-variant-99: #fffbff;
  --cp-palette-neutral-variant-100: #ffffff;
  --cp-palette-error-0: #000000;
  --cp-palette-error-4: #280001;
  --cp-palette-error-5: #2d0001;
  --cp-palette-error-6: #310001;
  --cp-palette-error-10: #410002;
  --cp-palette-error-12: #490002;
  --cp-palette-error-17: #5c0004;
  --cp-palette-error-20: #690005;
  --cp-palette-error-22: #710005;
  --cp-palette-error-24: #790006;
  --cp-palette-error-30: #93000a;
  --cp-palette-error-40: #ba1a1a;
  --cp-palette-error-50: #de3730;
  --cp-palette-error-60: #ff5449;
  --cp-palette-error-70: #ff897d;
  --cp-palette-error-80: #ffb4ab;
  --cp-palette-error-87: #ffcfc9;
  --cp-palette-error-90: #ffdad6;
  --cp-palette-error-92: #ffe2de;
  --cp-palette-error-94: #ffe9e6;
  --cp-palette-error-95: #ffedea;
  --cp-palette-error-96: #fff0ee;
  --cp-palette-error-98: #fff8f7;
  --cp-palette-error-99: #fffbff;
  --cp-palette-error-100: #ffffff;

  /* ---------- system: color roles (light) ---------- */
  --cp-primary: #a23664;
  --cp-on-primary: #ffffff;
  --cp-primary-container: #ffd9e3;
  --cp-on-primary-container: #3e001f;
  --cp-secondary: #006875;
  --cp-on-secondary: #ffffff;
  --cp-secondary-container: #9cf0ff;
  --cp-on-secondary-container: #001f24;
  --cp-tertiary: #775a00;
  --cp-on-tertiary: #ffffff;
  --cp-tertiary-container: #ffdf99;
  --cp-on-tertiary-container: #251a00;
  --cp-error: #ba1a1a;
  --cp-on-error: #ffffff;
  --cp-error-container: #ffdad6;
  --cp-on-error-container: #410002;
  --cp-background: #fef7ff;
  --cp-on-background: #201634;
  --cp-surface: #fef7ff;
  --cp-on-surface: #201634;
  --cp-surface-variant: #ebddff;
  --cp-on-surface-variant: #4e3e6e;
  --cp-surface-dim: #e3d3fc;
  --cp-surface-bright: #fef7ff;
  --cp-surface-container-lowest: #ffffff;
  --cp-surface-container-low: #f9f1ff;
  --cp-surface-container: #f4eaff;
  --cp-surface-container-high: #efe3ff;
  --cp-surface-container-highest: #ebddff;
  --cp-surface-tint: #a23664;
  --cp-inverse-surface: #362b4b;
  --cp-inverse-on-surface: #f7edff;
  --cp-inverse-primary: #ffb0ca;
  --cp-outline: #806ea2;
  --cp-outline-variant: #d1bdf6;
  --cp-scrim: #000000;
  --cp-shadow: #000000;
  --cp-primary-fixed: #ffd9e3;
  --cp-primary-fixed-dim: #ffb0ca;
  --cp-on-primary-fixed: #3e001f;
  --cp-on-primary-fixed-variant: #831d4c;
  --cp-secondary-fixed: #9cf0ff;
  --cp-secondary-fixed-dim: #64d6e9;
  --cp-on-secondary-fixed: #001f24;
  --cp-on-secondary-fixed-variant: #004f58;
  --cp-tertiary-fixed: #ffdf99;
  --cp-tertiary-fixed-dim: #f2bf39;
  --cp-on-tertiary-fixed: #251a00;
  --cp-on-tertiary-fixed-variant: #5a4300;

  /* ---------- Couch Party: player identity colors (light) ---------- */
  --cp-player-p1: #74023f;
  --cp-on-player-p1: #ffffff;
  --cp-player-p1-container: #ffd9e3;
  --cp-on-player-p1-container: #3e001f;
  --cp-player-p2: #004a53;
  --cp-on-player-p2: #ffffff;
  --cp-player-p2-container: #9cf0ff;
  --cp-on-player-p2-container: #001f24;
  --cp-player-p3: #604800;
  --cp-on-player-p3: #ffffff;
  --cp-player-p3-container: #ffdf99;
  --cp-on-player-p3-container: #251a00;
  --cp-player-p4: #5737b2;
  --cp-on-player-p4: #ffffff;
  --cp-player-p4-container: #e8deff;
  --cp-on-player-p4-container: #20005f;
  --cp-player-p5: #006832;
  --cp-on-player-p5: #ffffff;
  --cp-player-p5-container: #7cfca0;
  --cp-on-player-p5-container: #00210b;
  --cp-player-p6: #a74500;
  --cp-on-player-p6: #ffffff;
  --cp-player-p6-container: #ffdbcb;
  --cp-on-player-p6-container: #341100;
  --cp-player-p7: #007097;
  --cp-on-player-p7: #ffffff;
  --cp-player-p7-container: #c3e8ff;
  --cp-on-player-p7-container: #001e2c;
  --cp-player-p8: #c3465c;
  --cp-on-player-p8: #ffffff;
  --cp-player-p8-container: #ffd9dc;
  --cp-on-player-p8-container: #400010;

  /* ---------- typography: families ---------- */
  --cp-font-brand: "Roboto Flex", "Roboto", system-ui, -apple-system, "Segoe UI", sans-serif;
  --cp-font-plain: "Roboto Flex", "Roboto", system-ui, -apple-system, "Segoe UI", sans-serif;
  --cp-font-mono: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, monospace;

  /* ---------- typography: phone / controller scale (M3 baseline) ---------- */
  --cp-display-large-size: 3.5625rem;
  --cp-display-large-line: 4.0000rem;
  --cp-display-large-tracking: -0.0035em;
  --cp-display-large-weight: 400;
  --cp-display-large-emphasized-weight: 500;
  --cp-display-large-emphasized-tracking: 0.0000em;
  --cp-display-medium-size: 2.8125rem;
  --cp-display-medium-line: 3.2500rem;
  --cp-display-medium-tracking: 0.0000em;
  --cp-display-medium-weight: 400;
  --cp-display-medium-emphasized-weight: 500;
  --cp-display-medium-emphasized-tracking: 0.0000em;
  --cp-display-small-size: 2.2500rem;
  --cp-display-small-line: 2.7500rem;
  --cp-display-small-tracking: 0.0000em;
  --cp-display-small-weight: 400;
  --cp-display-small-emphasized-weight: 500;
  --cp-display-small-emphasized-tracking: 0.0000em;
  --cp-headline-large-size: 2.0000rem;
  --cp-headline-large-line: 2.5000rem;
  --cp-headline-large-tracking: 0.0000em;
  --cp-headline-large-weight: 400;
  --cp-headline-large-emphasized-weight: 500;
  --cp-headline-large-emphasized-tracking: 0.0000em;
  --cp-headline-medium-size: 1.7500rem;
  --cp-headline-medium-line: 2.2500rem;
  --cp-headline-medium-tracking: 0.0000em;
  --cp-headline-medium-weight: 400;
  --cp-headline-medium-emphasized-weight: 500;
  --cp-headline-medium-emphasized-tracking: 0.0000em;
  --cp-headline-small-size: 1.5000rem;
  --cp-headline-small-line: 2.0000rem;
  --cp-headline-small-tracking: 0.0000em;
  --cp-headline-small-weight: 400;
  --cp-headline-small-emphasized-weight: 500;
  --cp-headline-small-emphasized-tracking: 0.0000em;
  --cp-title-large-size: 1.3750rem;
  --cp-title-large-line: 1.7500rem;
  --cp-title-large-tracking: 0.0000em;
  --cp-title-large-weight: 400;
  --cp-title-large-emphasized-weight: 500;
  --cp-title-large-emphasized-tracking: 0.0000em;
  --cp-title-medium-size: 1.0000rem;
  --cp-title-medium-line: 1.5000rem;
  --cp-title-medium-tracking: 0.0125em;
  --cp-title-medium-weight: 500;
  --cp-title-medium-emphasized-weight: 700;
  --cp-title-medium-emphasized-tracking: 0.0094em;
  --cp-title-small-size: 0.8750rem;
  --cp-title-small-line: 1.2500rem;
  --cp-title-small-tracking: 0.0071em;
  --cp-title-small-weight: 500;
  --cp-title-small-emphasized-weight: 700;
  --cp-title-small-emphasized-tracking: 0.0071em;
  --cp-body-large-size: 1.0000rem;
  --cp-body-large-line: 1.5000rem;
  --cp-body-large-tracking: 0.0313em;
  --cp-body-large-weight: 400;
  --cp-body-large-emphasized-weight: 500;
  --cp-body-large-emphasized-tracking: 0.0094em;
  --cp-body-medium-size: 0.8750rem;
  --cp-body-medium-line: 1.2500rem;
  --cp-body-medium-tracking: 0.0143em;
  --cp-body-medium-weight: 400;
  --cp-body-medium-emphasized-weight: 500;
  --cp-body-medium-emphasized-tracking: 0.0179em;
  --cp-body-small-size: 0.7500rem;
  --cp-body-small-line: 1.0000rem;
  --cp-body-small-tracking: 0.0333em;
  --cp-body-small-weight: 400;
  --cp-body-small-emphasized-weight: 500;
  --cp-body-small-emphasized-tracking: 0.0333em;
  --cp-label-large-size: 0.8750rem;
  --cp-label-large-line: 1.2500rem;
  --cp-label-large-tracking: 0.0071em;
  --cp-label-large-weight: 500;
  --cp-label-large-emphasized-weight: 700;
  --cp-label-large-emphasized-tracking: 0.0071em;
  --cp-label-medium-size: 0.7500rem;
  --cp-label-medium-line: 1.0000rem;
  --cp-label-medium-tracking: 0.0417em;
  --cp-label-medium-weight: 500;
  --cp-label-medium-emphasized-weight: 700;
  --cp-label-medium-emphasized-tracking: 0.0417em;
  --cp-label-small-size: 0.6875rem;
  --cp-label-small-line: 1.0000rem;
  --cp-label-small-tracking: 0.0455em;
  --cp-label-small-weight: 500;
  --cp-label-small-emphasized-weight: 700;
  --cp-label-small-emphasized-tracking: 0.0455em;

  /* ---------- typography: TV / host scale (fluid, ref 1920px) ---------- */
  --cp-tv-display-large-size: clamp(56px, 5.8333vw, 168px);
  --cp-tv-display-large-line: clamp(60px, 6.2500vw, 180px);
  --cp-tv-display-large-tracking: -0.01em;
  --cp-tv-display-large-weight: 800;
  --cp-tv-display-medium-size: clamp(44px, 4.5833vw, 132px);
  --cp-tv-display-medium-line: clamp(48px, 5.0000vw, 144px);
  --cp-tv-display-medium-tracking: -0.005em;
  --cp-tv-display-medium-weight: 800;
  --cp-tv-display-small-size: clamp(36px, 3.5417vw, 102px);
  --cp-tv-display-small-line: clamp(40px, 3.9583vw, 114px);
  --cp-tv-display-small-tracking: 0em;
  --cp-tv-display-small-weight: 700;
  --cp-tv-headline-large-size: clamp(30px, 2.9167vw, 84px);
  --cp-tv-headline-large-line: clamp(34px, 3.3333vw, 96px);
  --cp-tv-headline-large-tracking: 0em;
  --cp-tv-headline-large-weight: 700;
  --cp-tv-headline-medium-size: clamp(26px, 2.3958vw, 69px);
  --cp-tv-headline-medium-line: clamp(30px, 2.8125vw, 81px);
  --cp-tv-headline-medium-tracking: 0em;
  --cp-tv-headline-medium-weight: 700;
  --cp-tv-headline-small-size: clamp(22px, 1.9792vw, 57px);
  --cp-tv-headline-small-line: clamp(26px, 2.3958vw, 69px);
  --cp-tv-headline-small-tracking: 0em;
  --cp-tv-headline-small-weight: 600;
  --cp-tv-title-large-size: clamp(20px, 1.7708vw, 51px);
  --cp-tv-title-large-line: clamp(24px, 2.1875vw, 63px);
  --cp-tv-title-large-tracking: 0em;
  --cp-tv-title-large-weight: 600;
  --cp-tv-title-medium-size: clamp(18px, 1.4583vw, 42px);
  --cp-tv-title-medium-line: clamp(23px, 1.8750vw, 54px);
  --cp-tv-title-medium-tracking: 0.005em;
  --cp-tv-title-medium-weight: 600;
  --cp-tv-body-large-size: clamp(17px, 1.3542vw, 39px);
  --cp-tv-body-large-line: clamp(23px, 1.8750vw, 54px);
  --cp-tv-body-large-tracking: 0.01em;
  --cp-tv-body-large-weight: 400;
  --cp-tv-body-medium-size: clamp(15px, 1.1458vw, 33px);
  --cp-tv-body-medium-line: clamp(20px, 1.5625vw, 45px);
  --cp-tv-body-medium-tracking: 0.012em;
  --cp-tv-body-medium-weight: 400;
  --cp-tv-label-large-size: clamp(16px, 1.2500vw, 36px);
  --cp-tv-label-large-line: clamp(20px, 1.5625vw, 45px);
  --cp-tv-label-large-tracking: 0.03em;
  --cp-tv-label-large-weight: 700;

  /* ---------- shape ---------- */
  --cp-shape-none: 0px;
  --cp-shape-extra-small: 4px;
  --cp-shape-small: 8px;
  --cp-shape-medium: 12px;
  --cp-shape-large: 16px;
  --cp-shape-large-increased: 20px;
  --cp-shape-extra-large: 28px;
  --cp-shape-extra-large-increased: 32px;
  --cp-shape-extra-extra-large: 48px;
  --cp-shape-full: 9999px;
  /* M3E press-morph pairs: rest -> pressed */
  --cp-shape-button: var(--cp-shape-full);
  --cp-shape-button-pressed: var(--cp-shape-medium);
  --cp-shape-buzzer: var(--cp-shape-extra-extra-large);
  --cp-shape-buzzer-pressed: var(--cp-shape-extra-large);

  /* ---------- elevation ---------- */
  --cp-elevation-0: 0;
  --cp-shadow-0: none;
  --cp-elevation-1: 1px;
  --cp-shadow-1: 0 1px 2px 0 rgb(0 0 0 / .30), 0 1px 3px 1px rgb(0 0 0 / .15);
  --cp-elevation-2: 3px;
  --cp-shadow-2: 0 1px 2px 0 rgb(0 0 0 / .30), 0 2px 6px 2px rgb(0 0 0 / .15);
  --cp-elevation-3: 6px;
  --cp-shadow-3: 0 1px 3px 0 rgb(0 0 0 / .30), 0 4px 8px 3px rgb(0 0 0 / .15);
  --cp-elevation-4: 8px;
  --cp-shadow-4: 0 2px 3px 0 rgb(0 0 0 / .30), 0 6px 10px 4px rgb(0 0 0 / .15);
  --cp-elevation-5: 12px;
  --cp-shadow-5: 0 4px 4px 0 rgb(0 0 0 / .30), 0 8px 12px 6px rgb(0 0 0 / .15);

  /* ---------- state layers ---------- */
  --cp-state-hover-opacity: 0.08;
  --cp-state-focus-opacity: 0.1;
  --cp-state-pressed-opacity: 0.1;
  --cp-state-dragged-opacity: 0.16;
  --cp-state-disabled-content-opacity: 0.38;
  --cp-state-disabled-container-opacity: 0.1;

  /* ---------- motion: durations ---------- */
  --cp-duration-short1: 50ms;
  --cp-duration-short2: 100ms;
  --cp-duration-short3: 150ms;
  --cp-duration-short4: 200ms;
  --cp-duration-medium1: 250ms;
  --cp-duration-medium2: 300ms;
  --cp-duration-medium3: 350ms;
  --cp-duration-medium4: 400ms;
  --cp-duration-long1: 450ms;
  --cp-duration-long2: 500ms;
  --cp-duration-long3: 550ms;
  --cp-duration-long4: 600ms;
  --cp-duration-extra-long1: 700ms;
  --cp-duration-extra-long2: 800ms;
  --cp-duration-extra-long3: 900ms;
  --cp-duration-extra-long4: 1000ms;

  /* ---------- motion: easings ---------- */
  --cp-easing-emphasized: cubic-bezier(0.2, 0, 0, 1);
  --cp-easing-emphasized-decelerate: cubic-bezier(0.05, 0.7, 0.1, 1);
  --cp-easing-emphasized-accelerate: cubic-bezier(0.3, 0, 0.8, 0.15);
  --cp-easing-standard: cubic-bezier(0.2, 0, 0, 1);
  --cp-easing-standard-decelerate: cubic-bezier(0, 0, 0, 1);
  --cp-easing-standard-accelerate: cubic-bezier(0.3, 0, 1, 1);
  --cp-easing-linear: cubic-bezier(0, 0, 1, 1);

  /* ---------- motion: M3 Expressive springs (CSS linear() approximations) ---------- */
  /* damping 0.6, stiffness 800 */
  --cp-spring-spatial-fast-duration: 373ms;
  --cp-spring-spatial-fast: linear(0.0000, 0.0230, 0.0835, 0.1701, 0.2727, 0.3831, 0.4945, 0.6019, 0.7014, 0.7906, 0.8679, 0.9327, 0.9853, 1.0260, 1.0560, 1.0765, 1.0887, 1.0942, 1.0942, 1.0901, 1.0830, 1.0739, 1.0637, 1.0531, 1.0427, 1.0329, 1.0239, 1.0160, 1.0093, 1.0037, 0.9993, 0.9960, 0.9936, 0.9921, 0.9913, 0.9910, 0.9912, 0.9918, 0.9926, 0.9935, 0.9945, 0.9955, 0.9964, 0.9973, 0.9981, 0.9988, 0.9994, 1.0000);
  /* damping 0.8, stiffness 380 */
  --cp-spring-spatial-default-duration: 441ms;
  --cp-spring-spatial-default: linear(0.0000, 0.0152, 0.0550, 0.1120, 0.1803, 0.2549, 0.3322, 0.4091, 0.4837, 0.5542, 0.6198, 0.6797, 0.7337, 0.7817, 0.8238, 0.8603, 0.8916, 0.9181, 0.9403, 0.9585, 0.9733, 0.9852, 0.9944, 1.0015, 1.0067, 1.0104, 1.0129, 1.0144, 1.0151, 1.0151, 1.0147, 1.0140, 1.0131, 1.0120, 1.0109, 1.0097, 1.0085, 1.0074, 1.0064, 1.0054, 1.0045, 1.0038, 1.0031, 1.0025, 1.0019, 1.0015, 1.0011, 1.0000);
  /* damping 0.8, stiffness 200 */
  --cp-spring-spatial-slow-duration: 601ms;
  --cp-spring-spatial-slow: linear(0.0000, 0.0148, 0.0539, 0.1099, 0.1770, 0.2506, 0.3269, 0.4031, 0.4771, 0.5473, 0.6126, 0.6726, 0.7267, 0.7750, 0.8175, 0.8545, 0.8863, 0.9134, 0.9361, 0.9549, 0.9703, 0.9826, 0.9923, 0.9998, 1.0055, 1.0095, 1.0123, 1.0140, 1.0149, 1.0152, 1.0149, 1.0143, 1.0135, 1.0124, 1.0113, 1.0102, 1.0090, 1.0079, 1.0068, 1.0058, 1.0049, 1.0041, 1.0034, 1.0027, 1.0022, 1.0017, 1.0013, 1.0000);
  /* damping 1.0, stiffness 3800 */
  --cp-spring-effects-fast-duration: 162ms;
  --cp-spring-effects-fast: linear(0.0000, 0.0196, 0.0684, 0.1344, 0.2092, 0.2872, 0.3642, 0.4379, 0.5067, 0.5697, 0.6267, 0.6776, 0.7228, 0.7624, 0.7970, 0.8271, 0.8531, 0.8755, 0.8947, 0.9111, 0.9251, 0.9370, 0.9471, 0.9556, 0.9628, 0.9689, 0.9740, 0.9783, 0.9819, 0.9849, 0.9874, 0.9895, 0.9913, 0.9928, 0.9940, 0.9950, 0.9959, 0.9966, 0.9972, 0.9977, 0.9981, 0.9984, 0.9987, 0.9989, 0.9991, 0.9993, 0.9994, 1.0000);
  /* damping 1.0, stiffness 1600 */
  --cp-spring-effects-default-duration: 239ms;
  --cp-spring-effects-default: linear(0.0000, 0.0181, 0.0634, 0.1253, 0.1961, 0.2705, 0.3447, 0.4164, 0.4838, 0.5462, 0.6031, 0.6545, 0.7003, 0.7410, 0.7769, 0.8083, 0.8358, 0.8596, 0.8802, 0.8980, 0.9133, 0.9264, 0.9376, 0.9472, 0.9554, 0.9623, 0.9682, 0.9733, 0.9775, 0.9811, 0.9841, 0.9867, 0.9888, 0.9906, 0.9921, 0.9934, 0.9945, 0.9954, 0.9962, 0.9968, 0.9973, 0.9978, 0.9981, 0.9984, 0.9987, 0.9989, 0.9991, 1.0000);
  /* damping 1.0, stiffness 800 */
  --cp-spring-effects-slow-duration: 330ms;
  --cp-spring-effects-slow: linear(0.0000, 0.0173, 0.0608, 0.1205, 0.1892, 0.2617, 0.3343, 0.4048, 0.4714, 0.5334, 0.5902, 0.6416, 0.6879, 0.7291, 0.7655, 0.7977, 0.8258, 0.8504, 0.8718, 0.8903, 0.9063, 0.9201, 0.9320, 0.9422, 0.9509, 0.9584, 0.9647, 0.9702, 0.9748, 0.9787, 0.9820, 0.9848, 0.9872, 0.9892, 0.9909, 0.9924, 0.9936, 0.9946, 0.9955, 0.9962, 0.9968, 0.9973, 0.9978, 0.9981, 0.9984, 0.9987, 0.9989, 1.0000);

  /* ---------- spacing (4dp grid) ---------- */
  --cp-space-0: 0px;
  --cp-space-1: 4px;
  --cp-space-2: 8px;
  --cp-space-3: 12px;
  --cp-space-4: 16px;
  --cp-space-5: 20px;
  --cp-space-6: 24px;
  --cp-space-7: 28px;
  --cp-space-8: 32px;
  --cp-space-10: 40px;
  --cp-space-12: 48px;
  --cp-space-16: 64px;
  --cp-space-20: 80px;
  --cp-space-24: 96px;
  --cp-touch-target: 48px;
  --cp-touch-target-primary: 88px; /* Couch Party: thumb-zone primary action */
}

/* ===================== dark scheme ===================== */
[data-cp-theme="dark"] {
  --cp-primary: #ffb0ca;
  --cp-on-primary: #640035;
  --cp-primary-container: #831d4c;
  --cp-on-primary-container: #ffd9e3;
  --cp-secondary: #64d6e9;
  --cp-on-secondary: #00363d;
  --cp-secondary-container: #004f58;
  --cp-on-secondary-container: #9cf0ff;
  --cp-tertiary: #f2bf39;
  --cp-on-tertiary: #3f2e00;
  --cp-tertiary-container: #5a4300;
  --cp-on-tertiary-container: #ffdf99;
  --cp-error: #ffb4ab;
  --cp-on-error: #690005;
  --cp-error-container: #93000a;
  --cp-on-error-container: #ffdad6;
  --cp-background: #180d2c;
  --cp-on-background: #ebddff;
  --cp-surface: #180d2c;
  --cp-on-surface: #ebddff;
  --cp-surface-variant: #4e3e6e;
  --cp-on-surface-variant: #d1bdf6;
  --cp-surface-dim: #180d2c;
  --cp-surface-bright: #3f3454;
  --cp-surface-container-lowest: #120826;
  --cp-surface-container-low: #201634;
  --cp-surface-container: #241a39;
  --cp-surface-container-high: #2f2444;
  --cp-surface-container-highest: #3a2f4f;
  --cp-surface-tint: #ffb0ca;
  --cp-inverse-surface: #ebddff;
  --cp-inverse-on-surface: #362b4b;
  --cp-inverse-primary: #a23664;
  --cp-outline: #9a88bd;
  --cp-outline-variant: #4e3e6e;
  --cp-scrim: #000000;
  --cp-shadow: #000000;
  --cp-primary-fixed: #ffd9e3;
  --cp-primary-fixed-dim: #ffb0ca;
  --cp-on-primary-fixed: #3e001f;
  --cp-on-primary-fixed-variant: #831d4c;
  --cp-secondary-fixed: #9cf0ff;
  --cp-secondary-fixed-dim: #64d6e9;
  --cp-on-secondary-fixed: #001f24;
  --cp-on-secondary-fixed-variant: #004f58;
  --cp-tertiary-fixed: #ffdf99;
  --cp-tertiary-fixed-dim: #f2bf39;
  --cp-on-tertiary-fixed: #251a00;
  --cp-on-tertiary-fixed-variant: #5a4300;
  --cp-player-p1: #d85a8d;
  --cp-on-player-p1: #3e001f;
  --cp-player-p1-container: #86174d;
  --cp-on-player-p1-container: #ffd9e3;
  --cp-player-p2: #009fb2;
  --cp-on-player-p2: #001f24;
  --cp-player-p2-container: #004f58;
  --cp-on-player-p2-container: #9cf0ff;
  --cp-player-p3: #c29400;
  --cp-on-player-p3: #251a00;
  --cp-player-p3-container: #5a4300;
  --cp-on-player-p3-container: #ffdf99;
  --cp-player-p4: #b39cff;
  --cp-on-player-p4: #20005f;
  --cp-player-p4-container: #4e2ca8;
  --cp-on-player-p4-container: #e8deff;
  --cp-player-p5: #4ccd77;
  --cp-on-player-p5: #00210b;
  --cp-player-p5-container: #005226;
  --cp-on-player-p5-container: #7cfca0;
  --cp-player-p6: #ffb692;
  --cp-on-player-p6: #341100;
  --cp-player-p6-container: #7a3000;
  --cp-on-player-p6-container: #ffdbcb;
  --cp-player-p7: #9adaff;
  --cp-on-player-p7: #001e2c;
  --cp-player-p7-container: #004c69;
  --cp-on-player-p7-container: #c3e8ff;
  --cp-player-p8: #ffd9dc;
  --cp-on-player-p8: #400010;
  --cp-player-p8-container: #891934;
  --cp-on-player-p8-container: #ffd9dc;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-cp-theme="light"]) {
    --cp-primary: #ffb0ca;
    --cp-on-primary: #640035;
    --cp-primary-container: #831d4c;
    --cp-on-primary-container: #ffd9e3;
    --cp-secondary: #64d6e9;
    --cp-on-secondary: #00363d;
    --cp-secondary-container: #004f58;
    --cp-on-secondary-container: #9cf0ff;
    --cp-tertiary: #f2bf39;
    --cp-on-tertiary: #3f2e00;
    --cp-tertiary-container: #5a4300;
    --cp-on-tertiary-container: #ffdf99;
    --cp-error: #ffb4ab;
    --cp-on-error: #690005;
    --cp-error-container: #93000a;
    --cp-on-error-container: #ffdad6;
    --cp-background: #180d2c;
    --cp-on-background: #ebddff;
    --cp-surface: #180d2c;
    --cp-on-surface: #ebddff;
    --cp-surface-variant: #4e3e6e;
    --cp-on-surface-variant: #d1bdf6;
    --cp-surface-dim: #180d2c;
    --cp-surface-bright: #3f3454;
    --cp-surface-container-lowest: #120826;
    --cp-surface-container-low: #201634;
    --cp-surface-container: #241a39;
    --cp-surface-container-high: #2f2444;
    --cp-surface-container-highest: #3a2f4f;
    --cp-surface-tint: #ffb0ca;
    --cp-inverse-surface: #ebddff;
    --cp-inverse-on-surface: #362b4b;
    --cp-inverse-primary: #a23664;
    --cp-outline: #9a88bd;
    --cp-outline-variant: #4e3e6e;
    --cp-scrim: #000000;
    --cp-shadow: #000000;
    --cp-primary-fixed: #ffd9e3;
    --cp-primary-fixed-dim: #ffb0ca;
    --cp-on-primary-fixed: #3e001f;
    --cp-on-primary-fixed-variant: #831d4c;
    --cp-secondary-fixed: #9cf0ff;
    --cp-secondary-fixed-dim: #64d6e9;
    --cp-on-secondary-fixed: #001f24;
    --cp-on-secondary-fixed-variant: #004f58;
    --cp-tertiary-fixed: #ffdf99;
    --cp-tertiary-fixed-dim: #f2bf39;
    --cp-on-tertiary-fixed: #251a00;
    --cp-on-tertiary-fixed-variant: #5a4300;
    --cp-player-p1: #d85a8d;
    --cp-on-player-p1: #3e001f;
    --cp-player-p1-container: #86174d;
    --cp-on-player-p1-container: #ffd9e3;
    --cp-player-p2: #009fb2;
    --cp-on-player-p2: #001f24;
    --cp-player-p2-container: #004f58;
    --cp-on-player-p2-container: #9cf0ff;
    --cp-player-p3: #c29400;
    --cp-on-player-p3: #251a00;
    --cp-player-p3-container: #5a4300;
    --cp-on-player-p3-container: #ffdf99;
    --cp-player-p4: #b39cff;
    --cp-on-player-p4: #20005f;
    --cp-player-p4-container: #4e2ca8;
    --cp-on-player-p4-container: #e8deff;
    --cp-player-p5: #4ccd77;
    --cp-on-player-p5: #00210b;
    --cp-player-p5-container: #005226;
    --cp-on-player-p5-container: #7cfca0;
    --cp-player-p6: #ffb692;
    --cp-on-player-p6: #341100;
    --cp-player-p6-container: #7a3000;
    --cp-on-player-p6-container: #ffdbcb;
    --cp-player-p7: #9adaff;
    --cp-on-player-p7: #001e2c;
    --cp-player-p7-container: #004c69;
    --cp-on-player-p7-container: #c3e8ff;
    --cp-player-p8: #ffd9dc;
    --cp-on-player-p8: #400010;
    --cp-player-p8-container: #891934;
    --cp-on-player-p8-container: #ffd9dc;
  }
}

/* ===================== type utility classes ===================== */
.cp-display-large { font-family: var(--cp-font-plain); font-size: var(--cp-display-large-size); line-height: var(--cp-display-large-line); letter-spacing: var(--cp-display-large-tracking); font-weight: var(--cp-display-large-weight); }
.cp-display-large-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-display-large-size); line-height: var(--cp-display-large-line); letter-spacing: var(--cp-display-large-emphasized-tracking); font-weight: var(--cp-display-large-emphasized-weight); }
.cp-display-medium { font-family: var(--cp-font-plain); font-size: var(--cp-display-medium-size); line-height: var(--cp-display-medium-line); letter-spacing: var(--cp-display-medium-tracking); font-weight: var(--cp-display-medium-weight); }
.cp-display-medium-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-display-medium-size); line-height: var(--cp-display-medium-line); letter-spacing: var(--cp-display-medium-emphasized-tracking); font-weight: var(--cp-display-medium-emphasized-weight); }
.cp-display-small { font-family: var(--cp-font-plain); font-size: var(--cp-display-small-size); line-height: var(--cp-display-small-line); letter-spacing: var(--cp-display-small-tracking); font-weight: var(--cp-display-small-weight); }
.cp-display-small-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-display-small-size); line-height: var(--cp-display-small-line); letter-spacing: var(--cp-display-small-emphasized-tracking); font-weight: var(--cp-display-small-emphasized-weight); }
.cp-headline-large { font-family: var(--cp-font-plain); font-size: var(--cp-headline-large-size); line-height: var(--cp-headline-large-line); letter-spacing: var(--cp-headline-large-tracking); font-weight: var(--cp-headline-large-weight); }
.cp-headline-large-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-headline-large-size); line-height: var(--cp-headline-large-line); letter-spacing: var(--cp-headline-large-emphasized-tracking); font-weight: var(--cp-headline-large-emphasized-weight); }
.cp-headline-medium { font-family: var(--cp-font-plain); font-size: var(--cp-headline-medium-size); line-height: var(--cp-headline-medium-line); letter-spacing: var(--cp-headline-medium-tracking); font-weight: var(--cp-headline-medium-weight); }
.cp-headline-medium-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-headline-medium-size); line-height: var(--cp-headline-medium-line); letter-spacing: var(--cp-headline-medium-emphasized-tracking); font-weight: var(--cp-headline-medium-emphasized-weight); }
.cp-headline-small { font-family: var(--cp-font-plain); font-size: var(--cp-headline-small-size); line-height: var(--cp-headline-small-line); letter-spacing: var(--cp-headline-small-tracking); font-weight: var(--cp-headline-small-weight); }
.cp-headline-small-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-headline-small-size); line-height: var(--cp-headline-small-line); letter-spacing: var(--cp-headline-small-emphasized-tracking); font-weight: var(--cp-headline-small-emphasized-weight); }
.cp-title-large { font-family: var(--cp-font-plain); font-size: var(--cp-title-large-size); line-height: var(--cp-title-large-line); letter-spacing: var(--cp-title-large-tracking); font-weight: var(--cp-title-large-weight); }
.cp-title-large-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-title-large-size); line-height: var(--cp-title-large-line); letter-spacing: var(--cp-title-large-emphasized-tracking); font-weight: var(--cp-title-large-emphasized-weight); }
.cp-title-medium { font-family: var(--cp-font-plain); font-size: var(--cp-title-medium-size); line-height: var(--cp-title-medium-line); letter-spacing: var(--cp-title-medium-tracking); font-weight: var(--cp-title-medium-weight); }
.cp-title-medium-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-title-medium-size); line-height: var(--cp-title-medium-line); letter-spacing: var(--cp-title-medium-emphasized-tracking); font-weight: var(--cp-title-medium-emphasized-weight); }
.cp-title-small { font-family: var(--cp-font-plain); font-size: var(--cp-title-small-size); line-height: var(--cp-title-small-line); letter-spacing: var(--cp-title-small-tracking); font-weight: var(--cp-title-small-weight); }
.cp-title-small-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-title-small-size); line-height: var(--cp-title-small-line); letter-spacing: var(--cp-title-small-emphasized-tracking); font-weight: var(--cp-title-small-emphasized-weight); }
.cp-body-large { font-family: var(--cp-font-plain); font-size: var(--cp-body-large-size); line-height: var(--cp-body-large-line); letter-spacing: var(--cp-body-large-tracking); font-weight: var(--cp-body-large-weight); }
.cp-body-large-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-body-large-size); line-height: var(--cp-body-large-line); letter-spacing: var(--cp-body-large-emphasized-tracking); font-weight: var(--cp-body-large-emphasized-weight); }
.cp-body-medium { font-family: var(--cp-font-plain); font-size: var(--cp-body-medium-size); line-height: var(--cp-body-medium-line); letter-spacing: var(--cp-body-medium-tracking); font-weight: var(--cp-body-medium-weight); }
.cp-body-medium-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-body-medium-size); line-height: var(--cp-body-medium-line); letter-spacing: var(--cp-body-medium-emphasized-tracking); font-weight: var(--cp-body-medium-emphasized-weight); }
.cp-body-small { font-family: var(--cp-font-plain); font-size: var(--cp-body-small-size); line-height: var(--cp-body-small-line); letter-spacing: var(--cp-body-small-tracking); font-weight: var(--cp-body-small-weight); }
.cp-body-small-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-body-small-size); line-height: var(--cp-body-small-line); letter-spacing: var(--cp-body-small-emphasized-tracking); font-weight: var(--cp-body-small-emphasized-weight); }
.cp-label-large { font-family: var(--cp-font-plain); font-size: var(--cp-label-large-size); line-height: var(--cp-label-large-line); letter-spacing: var(--cp-label-large-tracking); font-weight: var(--cp-label-large-weight); }
.cp-label-large-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-label-large-size); line-height: var(--cp-label-large-line); letter-spacing: var(--cp-label-large-emphasized-tracking); font-weight: var(--cp-label-large-emphasized-weight); }
.cp-label-medium { font-family: var(--cp-font-plain); font-size: var(--cp-label-medium-size); line-height: var(--cp-label-medium-line); letter-spacing: var(--cp-label-medium-tracking); font-weight: var(--cp-label-medium-weight); }
.cp-label-medium-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-label-medium-size); line-height: var(--cp-label-medium-line); letter-spacing: var(--cp-label-medium-emphasized-tracking); font-weight: var(--cp-label-medium-emphasized-weight); }
.cp-label-small { font-family: var(--cp-font-plain); font-size: var(--cp-label-small-size); line-height: var(--cp-label-small-line); letter-spacing: var(--cp-label-small-tracking); font-weight: var(--cp-label-small-weight); }
.cp-label-small-emphasized { font-family: var(--cp-font-plain); font-size: var(--cp-label-small-size); line-height: var(--cp-label-small-line); letter-spacing: var(--cp-label-small-emphasized-tracking); font-weight: var(--cp-label-small-emphasized-weight); }
.cp-tv-display-large { font-family: var(--cp-font-plain); font-size: var(--cp-tv-display-large-size); line-height: var(--cp-tv-display-large-line); letter-spacing: var(--cp-tv-display-large-tracking); font-weight: var(--cp-tv-display-large-weight); }
.cp-tv-display-medium { font-family: var(--cp-font-plain); font-size: var(--cp-tv-display-medium-size); line-height: var(--cp-tv-display-medium-line); letter-spacing: var(--cp-tv-display-medium-tracking); font-weight: var(--cp-tv-display-medium-weight); }
.cp-tv-display-small { font-family: var(--cp-font-plain); font-size: var(--cp-tv-display-small-size); line-height: var(--cp-tv-display-small-line); letter-spacing: var(--cp-tv-display-small-tracking); font-weight: var(--cp-tv-display-small-weight); }
.cp-tv-headline-large { font-family: var(--cp-font-plain); font-size: var(--cp-tv-headline-large-size); line-height: var(--cp-tv-headline-large-line); letter-spacing: var(--cp-tv-headline-large-tracking); font-weight: var(--cp-tv-headline-large-weight); }
.cp-tv-headline-medium { font-family: var(--cp-font-plain); font-size: var(--cp-tv-headline-medium-size); line-height: var(--cp-tv-headline-medium-line); letter-spacing: var(--cp-tv-headline-medium-tracking); font-weight: var(--cp-tv-headline-medium-weight); }
.cp-tv-headline-small { font-family: var(--cp-font-plain); font-size: var(--cp-tv-headline-small-size); line-height: var(--cp-tv-headline-small-line); letter-spacing: var(--cp-tv-headline-small-tracking); font-weight: var(--cp-tv-headline-small-weight); }
.cp-tv-title-large { font-family: var(--cp-font-plain); font-size: var(--cp-tv-title-large-size); line-height: var(--cp-tv-title-large-line); letter-spacing: var(--cp-tv-title-large-tracking); font-weight: var(--cp-tv-title-large-weight); }
.cp-tv-title-medium { font-family: var(--cp-font-plain); font-size: var(--cp-tv-title-medium-size); line-height: var(--cp-tv-title-medium-line); letter-spacing: var(--cp-tv-title-medium-tracking); font-weight: var(--cp-tv-title-medium-weight); }
.cp-tv-body-large { font-family: var(--cp-font-plain); font-size: var(--cp-tv-body-large-size); line-height: var(--cp-tv-body-large-line); letter-spacing: var(--cp-tv-body-large-tracking); font-weight: var(--cp-tv-body-large-weight); }
.cp-tv-body-medium { font-family: var(--cp-font-plain); font-size: var(--cp-tv-body-medium-size); line-height: var(--cp-tv-body-medium-line); letter-spacing: var(--cp-tv-body-medium-tracking); font-weight: var(--cp-tv-body-medium-weight); }
.cp-tv-label-large { font-family: var(--cp-font-plain); font-size: var(--cp-tv-label-large-size); line-height: var(--cp-tv-label-large-line); letter-spacing: var(--cp-tv-label-large-tracking); font-weight: var(--cp-tv-label-large-weight); }
.cp-room-code { font-family: var(--cp-font-mono); font-weight: 700; letter-spacing: .12em; font-variant-numeric: tabular-nums; text-transform: uppercase; }

/* ===================== Couch Party app addition: seat identity =====================
   Not part of the generated token body. The 8 seat classes only set custom
   properties; `.cp-seat` applies the visual — a seat-color ring layered AROUND
   the player's avatar. The avatar remains the identity cue (with the name);
   the seat color is decoration, per the design system's seat rule. */
.cp-seat-1 { --cp-seat-color: var(--cp-player-p1); --cp-seat-container: var(--cp-player-p1-container); }
.cp-seat-2 { --cp-seat-color: var(--cp-player-p2); --cp-seat-container: var(--cp-player-p2-container); }
.cp-seat-3 { --cp-seat-color: var(--cp-player-p3); --cp-seat-container: var(--cp-player-p3-container); }
.cp-seat-4 { --cp-seat-color: var(--cp-player-p4); --cp-seat-container: var(--cp-player-p4-container); }
.cp-seat-5 { --cp-seat-color: var(--cp-player-p5); --cp-seat-container: var(--cp-player-p5-container); }
.cp-seat-6 { --cp-seat-color: var(--cp-player-p6); --cp-seat-container: var(--cp-player-p6-container); }
.cp-seat-7 { --cp-seat-color: var(--cp-player-p7); --cp-seat-container: var(--cp-player-p7-container); }
.cp-seat-8 { --cp-seat-color: var(--cp-player-p8); --cp-seat-container: var(--cp-player-p8-container); }
.cp-seat { display: inline-flex; align-items: center; justify-content: center; line-height: 1;
  border-radius: 50%; padding: .12em;
  background: var(--cp-seat-container, transparent);
  box-shadow: 0 0 0 .09em var(--cp-seat-color, var(--cp-outline-variant)); }

/* ===================== reduced motion ===================== */
@media (prefers-reduced-motion: reduce) {
  :root {
    --cp-spring-spatial-fast-duration: 1ms;
    --cp-spring-spatial-fast: linear;
    --cp-spring-spatial-default-duration: 1ms;
    --cp-spring-spatial-default: linear;
    --cp-spring-spatial-slow-duration: 1ms;
    --cp-spring-spatial-slow: linear;
    --cp-spring-effects-fast-duration: 1ms;
    --cp-spring-effects-fast: linear;
    --cp-spring-effects-default-duration: 1ms;
    --cp-spring-effects-default: linear;
    --cp-spring-effects-slow-duration: 1ms;
    --cp-spring-effects-slow: linear;
    --cp-duration-short1: 1ms;
    --cp-duration-short2: 1ms;
    --cp-duration-short3: 1ms;
    --cp-duration-short4: 1ms;
    --cp-duration-medium1: 1ms;
    --cp-duration-medium2: 1ms;
    --cp-duration-medium3: 1ms;
    --cp-duration-medium4: 1ms;
    --cp-duration-long1: 1ms;
    --cp-duration-long2: 1ms;
    --cp-duration-long3: 1ms;
    --cp-duration-long4: 1ms;
    --cp-duration-extra-long1: 1ms;
    --cp-duration-extra-long2: 1ms;
    --cp-duration-extra-long3: 1ms;
    --cp-duration-extra-long4: 1ms;
  }
  *, *::before, *::after { animation-iteration-count: 1 !important; }
}
