/* ── system/reset.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Reset                                       */
/*  Minimal, opinionated reset for consistent cross-browser rendering  */
/* ================================================================== */

*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; padding: 0; }

html { hanging-punctuation: first last; }

body {
  min-height: 100vh;
  font-family: var(--font-sans, 'Inter', system-ui, -apple-system, sans-serif);
  line-height: 1.5;
  font-weight: var(--font-regular, 400);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img, picture, svg, video { display: block; max-width: 100%; }

h1, h2, h3, h4, h5, h6 {
  text-wrap: balance;
  font-family: var(--font-sans, 'Inter', system-ui, -apple-system, sans-serif);
}

p { max-width: 75ch; text-wrap: pretty; }

button { font: inherit; cursor: pointer; border: none; background: none; }
input  { font: inherit; border: none; background: none; }
a      { text-decoration: none; color: inherit; }

/* Screen reader only utility class for accessibility */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border-width: 0;
}


/* ── system/tokens/colors.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Color Tokens                                */
/*  Source: Radix Colors (dark default, light override)                */
/*  Generated by build-tokens.js, do not edit by hand                */
/* ================================================================== */

/* ================================================================== */
/*  Dark theme (default)                                               */
/* ================================================================== */

:root {

  /* tomato */
  --tomato-1: #181111;
  --tomato-2: #1f1513;
  --tomato-3: #391714;
  --tomato-4: #4e1511;
  --tomato-5: #5e1c16;
  --tomato-6: #6e2920;
  --tomato-7: #853a2d;
  --tomato-8: #ac4d39;
  --tomato-9: #e54d2e;
  --tomato-10: #ec6142;
  --tomato-11: #ff977d;
  --tomato-12: #fbd3cb;
  --tomato-a1: #f1121208;
  --tomato-a2: #ff55330f;
  --tomato-a3: #ff35232b;
  --tomato-a4: #fd201142;
  --tomato-a5: #fe332153;
  --tomato-a6: #ff4f3864;
  --tomato-a7: #fd644a7d;
  --tomato-a8: #fe6d4ea7;
  --tomato-a9: #fe5431e4;
  --tomato-a10: #ff6847eb;
  --tomato-a11: #ff977d;
  --tomato-a12: #ffd6cefb;

  /* red */
  --red-1: #191111;
  --red-2: #201314;
  --red-3: #3b1219;
  --red-4: #500f1c;
  --red-5: #611623;
  --red-6: #72232d;
  --red-7: #8c333a;
  --red-8: #b54548;
  --red-9: #e5484d;
  --red-10: #ec5d5e;
  --red-11: #ff9592;
  --red-12: #ffd1d9;
  --red-a1: #f4121209;
  --red-a2: #f22f3e11;
  --red-a3: #ff173f2d;
  --red-a4: #fe0a3b44;
  --red-a5: #ff204756;
  --red-a6: #ff3e5668;
  --red-a7: #ff536184;
  --red-a8: #ff5d61b0;
  --red-a9: #fe4e54e4;
  --red-a10: #ff6465eb;
  --red-a11: #ff9592;
  --red-a12: #ffd1d9;

  /* crimson */
  --crimson-1: #191114;
  --crimson-2: #201318;
  --crimson-3: #381525;
  --crimson-4: #4d122f;
  --crimson-5: #5c1839;
  --crimson-6: #6d2545;
  --crimson-7: #873356;
  --crimson-8: #b0436e;
  --crimson-9: #e93d82;
  --crimson-10: #ee518a;
  --crimson-11: #ff92ad;
  --crimson-12: #fdd3e8;
  --crimson-a1: #f4126709;
  --crimson-a2: #f22f7a11;
  --crimson-a3: #fe2a8b2a;
  --crimson-a4: #fd158741;
  --crimson-a5: #fd278f51;
  --crimson-a6: #fe459763;
  --crimson-a7: #fd559b7f;
  --crimson-a8: #fe5b9bab;
  --crimson-a9: #fe418de8;
  --crimson-a10: #ff5693ed;
  --crimson-a11: #ff92ad;
  --crimson-a12: #ffd5eafd;

  /* pink */
  --pink-1: #191117;
  --pink-2: #21121d;
  --pink-3: #37172f;
  --pink-4: #4b143d;
  --pink-5: #591c47;
  --pink-6: #692955;
  --pink-7: #833869;
  --pink-8: #a84885;
  --pink-9: #d6409f;
  --pink-10: #de51a8;
  --pink-11: #ff8dcc;
  --pink-12: #fdd1ea;
  --pink-a1: #f412bc09;
  --pink-a2: #f420bb12;
  --pink-a3: #fe37cc29;
  --pink-a4: #fc1ec43f;
  --pink-a5: #fd35c24e;
  --pink-a6: #fd51c75f;
  --pink-a7: #fd62c87b;
  --pink-a8: #ff68c8a2;
  --pink-a9: #fe49bcd4;
  --pink-a10: #ff5cc0dc;
  --pink-a11: #ff8dcc;
  --pink-a12: #ffd3ecfd;

  /* plum */
  --plum-1: #181118;
  --plum-2: #201320;
  --plum-3: #351a35;
  --plum-4: #451d47;
  --plum-5: #512454;
  --plum-6: #5e3061;
  --plum-7: #734079;
  --plum-8: #92549c;
  --plum-9: #ab4aba;
  --plum-10: #b658c4;
  --plum-11: #e796f3;
  --plum-12: #f4d4f4;
  --plum-a1: #f112f108;
  --plum-a2: #f22ff211;
  --plum-a3: #fd4cfd27;
  --plum-a4: #f646ff3a;
  --plum-a5: #f455ff48;
  --plum-a6: #f66dff56;
  --plum-a7: #f07cfd70;
  --plum-a8: #ee84ff95;
  --plum-a9: #e961feb6;
  --plum-a10: #ed70ffc0;
  --plum-a11: #f19cfef3;
  --plum-a12: #feddfef4;

  /* purple */
  --purple-1: #18111b;
  --purple-2: #1e1523;
  --purple-3: #301c3b;
  --purple-4: #3d224e;
  --purple-5: #48295c;
  --purple-6: #54346b;
  --purple-7: #664282;
  --purple-8: #8457aa;
  --purple-9: #8e4ec6;
  --purple-10: #9a5cd0;
  --purple-11: #d19dff;
  --purple-12: #ecd9fa;
  --purple-a1: #b412f90b;
  --purple-a2: #b744f714;
  --purple-a3: #c150ff2d;
  --purple-a4: #bb53fd42;
  --purple-a5: #be5cfd51;
  --purple-a6: #c16dfd61;
  --purple-a7: #c378fd7a;
  --purple-a8: #c47effa4;
  --purple-a9: #b661ffc2;
  --purple-a10: #bc6fffcd;
  --purple-a11: #d19dff;
  --purple-a12: #f1ddfffa;

  /* violet */
  --violet-1: #14121f;
  --violet-2: #1b1525;
  --violet-3: #291f43;
  --violet-4: #33255b;
  --violet-5: #3c2e69;
  --violet-6: #473876;
  --violet-7: #56468b;
  --violet-8: #6958ad;
  --violet-9: #6e56cf;
  --violet-10: #7d66d9;
  --violet-11: #baa7ff;
  --violet-12: #e2ddfe;
  --violet-a1: #4422ff0f;
  --violet-a2: #853ff916;
  --violet-a3: #8354fe36;
  --violet-a4: #7d51fd50;
  --violet-a5: #845ffd5f;
  --violet-a6: #8f6cfd6d;
  --violet-a7: #9879ff83;
  --violet-a8: #977dfea8;
  --violet-a9: #8668ffcc;
  --violet-a10: #9176fed7;
  --violet-a11: #baa7ff;
  --violet-a12: #e3defffe;

  /* indigo */
  --indigo-1: #11131f;
  --indigo-2: #141726;
  --indigo-3: #182449;
  --indigo-4: #1d2e62;
  --indigo-5: #253974;
  --indigo-6: #304384;
  --indigo-7: #3a4f97;
  --indigo-8: #435db1;
  --indigo-9: #3e63dd;
  --indigo-10: #5472e4;
  --indigo-11: #9eb1ff;
  --indigo-12: #d6e1ff;
  --indigo-a1: #1133ff0f;
  --indigo-a2: #3354fa17;
  --indigo-a3: #2f62ff3c;
  --indigo-a4: #3566ff57;
  --indigo-a5: #4171fd6b;
  --indigo-a6: #5178fd7c;
  --indigo-a7: #5a7fff90;
  --indigo-a8: #5b81feac;
  --indigo-a9: #4671ffdb;
  --indigo-a10: #5c7efee3;
  --indigo-a11: #9eb1ff;
  --indigo-a12: #d6e1ff;

  /* blue */
  --blue-1: #0d1520;
  --blue-2: #111927;
  --blue-3: #0d2847;
  --blue-4: #003362;
  --blue-5: #004074;
  --blue-6: #104d87;
  --blue-7: #205d9e;
  --blue-8: #2870bd;
  --blue-9: #0090ff;
  --blue-10: #3b9eff;
  --blue-11: #70b8ff;
  --blue-12: #c2e6ff;
  --blue-a1: #004df211;
  --blue-a2: #1166fb18;
  --blue-a3: #0077ff3a;
  --blue-a4: #0075ff57;
  --blue-a5: #0081fd6b;
  --blue-a6: #0f89fd7f;
  --blue-a7: #2a91fe98;
  --blue-a8: #3094feb9;
  --blue-a9: #0090ff;
  --blue-a10: #3b9eff;
  --blue-a11: #70b8ff;
  --blue-a12: #c2e6ff;

  /* cyan */
  --cyan-1: #0b161a;
  --cyan-2: #101b20;
  --cyan-3: #082c36;
  --cyan-4: #003848;
  --cyan-5: #004558;
  --cyan-6: #045468;
  --cyan-7: #12677e;
  --cyan-8: #11809c;
  --cyan-9: #00a2c7;
  --cyan-10: #23afd0;
  --cyan-11: #4ccce6;
  --cyan-12: #b6ecf7;
  --cyan-a1: #0091f70a;
  --cyan-a2: #02a7f211;
  --cyan-a3: #00befd28;
  --cyan-a4: #00baff3b;
  --cyan-a5: #00befd4d;
  --cyan-a6: #00c7fd5e;
  --cyan-a7: #14cdff75;
  --cyan-a8: #11cfff95;
  --cyan-a9: #00cfffc3;
  --cyan-a10: #28d6ffcd;
  --cyan-a11: #52e1fee5;
  --cyan-a12: #bbf3fef7;

  /* teal */
  --teal-1: #0d1514;
  --teal-2: #111c1b;
  --teal-3: #0d2d2a;
  --teal-4: #023b37;
  --teal-5: #084843;
  --teal-6: #145750;
  --teal-7: #1c6961;
  --teal-8: #207e73;
  --teal-9: #12a594;
  --teal-10: #0eb39e;
  --teal-11: #0bd8b6;
  --teal-12: #adf0dd;
  --teal-a1: #00deab05;
  --teal-a2: #12fbe60c;
  --teal-a3: #00ffe61e;
  --teal-a4: #00ffe92d;
  --teal-a5: #00ffea3b;
  --teal-a6: #1cffe84b;
  --teal-a7: #2efde85f;
  --teal-a8: #32ffe775;
  --teal-a9: #13ffe49f;
  --teal-a10: #0dffe0ae;
  --teal-a11: #0afed5d6;
  --teal-a12: #b8ffebef;

  /* green */
  --green-1: #0e1512;
  --green-2: #121b17;
  --green-3: #132d21;
  --green-4: #113b29;
  --green-5: #174933;
  --green-6: #20573e;
  --green-7: #28684a;
  --green-8: #2f7c57;
  --green-9: #30a46c;
  --green-10: #33b074;
  --green-11: #3dd68c;
  --green-12: #b1f1cb;
  --green-a1: #00de4505;
  --green-a2: #29f99d0b;
  --green-a3: #22ff991e;
  --green-a4: #11ff992d;
  --green-a5: #2bffa23c;
  --green-a6: #44ffaa4b;
  --green-a7: #50fdac5e;
  --green-a8: #54ffad73;
  --green-a9: #44ffa49e;
  --green-a10: #43fea4ab;
  --green-a11: #46fea5d4;
  --green-a12: #bbffd7f0;

  /* grass */
  --grass-1: #0e1511;
  --grass-2: #141a15;
  --grass-3: #1b2a1e;
  --grass-4: #1d3a24;
  --grass-5: #25482d;
  --grass-6: #2d5736;
  --grass-7: #366740;
  --grass-8: #3e7949;
  --grass-9: #46a758;
  --grass-10: #53b365;
  --grass-11: #71d083;
  --grass-12: #c2f0c2;
  --grass-a1: #00de1205;
  --grass-a2: #5ef7780a;
  --grass-a3: #70fe8c1b;
  --grass-a4: #57ff802c;
  --grass-a5: #68ff8b3b;
  --grass-a6: #71ff8f4b;
  --grass-a7: #77fd925d;
  --grass-a8: #77fd9070;
  --grass-a9: #65ff82a1;
  --grass-a10: #72ff8dae;
  --grass-a11: #89ff9fcd;
  --grass-a12: #ceffceef;

  /* orange */
  --orange-1: #17120e;
  --orange-2: #1e160f;
  --orange-3: #331e0b;
  --orange-4: #462100;
  --orange-5: #562800;
  --orange-6: #66350c;
  --orange-7: #7e451d;
  --orange-8: #a35829;
  --orange-9: #f76b15;
  --orange-10: #ff801f;
  --orange-11: #ffa057;
  --orange-12: #ffe0c2;
  --orange-a1: #ec360007;
  --orange-a2: #fe6d000e;
  --orange-a3: #fb6a0025;
  --orange-a4: #ff590039;
  --orange-a5: #ff61004a;
  --orange-a6: #fd75045c;
  --orange-a7: #ff832c75;
  --orange-a8: #fe84389d;
  --orange-a9: #fe6d15f7;
  --orange-a10: #ff801f;
  --orange-a11: #ffa057;
  --orange-a12: #ffe0c2;

  /* brown */
  --brown-1: #12110f;
  --brown-2: #1c1816;
  --brown-3: #28211d;
  --brown-4: #322922;
  --brown-5: #3e3128;
  --brown-6: #4d3c2f;
  --brown-7: #614a39;
  --brown-8: #7c5f46;
  --brown-9: #ad7f58;
  --brown-10: #b88c67;
  --brown-11: #dbb594;
  --brown-12: #f2e1ca;
  --brown-a1: #91110002;
  --brown-a2: #fba67c0c;
  --brown-a3: #fcb58c19;
  --brown-a4: #fbbb8a24;
  --brown-a5: #fcb88931;
  --brown-a6: #fdba8741;
  --brown-a7: #ffbb8856;
  --brown-a8: #ffbe8773;
  --brown-a9: #feb87da8;
  --brown-a10: #ffc18cb3;
  --brown-a11: #fed1aad9;
  --brown-a12: #feecd4f2;

  /* sky */
  --sky-1: #0d141f;
  --sky-2: #111a27;
  --sky-3: #112840;
  --sky-4: #113555;
  --sky-5: #154467;
  --sky-6: #1b537b;
  --sky-7: #1f6692;
  --sky-8: #197cae;
  --sky-9: #7ce2fe;
  --sky-10: #a8eeff;
  --sky-11: #75c7f0;
  --sky-12: #c2f3ff;
  --sky-a1: #0044ff0f;
  --sky-a2: #1171fb18;
  --sky-a3: #1184fc33;
  --sky-a4: #128fff49;
  --sky-a5: #1c9dfd5d;
  --sky-a6: #28a5ff72;
  --sky-a7: #2badfe8b;
  --sky-a8: #1db2fea9;
  --sky-a9: #7ce3fffe;
  --sky-a10: #a8eeff;
  --sky-a11: #7cd3ffef;
  --sky-a12: #c2f3ff;

  /* mint */
  --mint-1: #0e1515;
  --mint-2: #0f1b1b;
  --mint-3: #092c2b;
  --mint-4: #003a38;
  --mint-5: #004744;
  --mint-6: #105650;
  --mint-7: #1e685f;
  --mint-8: #277f70;
  --mint-9: #86ead4;
  --mint-10: #a8f5e5;
  --mint-11: #58d5ba;
  --mint-12: #c4f5e1;
  --mint-a1: #00dede05;
  --mint-a2: #00f9f90b;
  --mint-a3: #00fff61d;
  --mint-a4: #00fff42c;
  --mint-a5: #00fff23a;
  --mint-a6: #0effeb4a;
  --mint-a7: #34fde55e;
  --mint-a8: #41ffdf76;
  --mint-a9: #92ffe7e9;
  --mint-a10: #aefeedf5;
  --mint-a11: #67ffded2;
  --mint-a12: #cbfee9f5;

  /* lime */
  --lime-1: #11130c;
  --lime-2: #151a10;
  --lime-3: #1f2917;
  --lime-4: #29371d;
  --lime-5: #334423;
  --lime-6: #3d522a;
  --lime-7: #496231;
  --lime-8: #577538;
  --lime-9: #bdee63;
  --lime-10: #d4ff70;
  --lime-11: #bde56c;
  --lime-12: #e3f7ba;
  --lime-a1: #11bb0003;
  --lime-a2: #78f7000a;
  --lime-a3: #9bfd4c1a;
  --lime-a4: #a7fe5c29;
  --lime-a5: #affe6537;
  --lime-a6: #b2fe6d46;
  --lime-a7: #b6ff6f57;
  --lime-a8: #b6fd6d6c;
  --lime-a9: #caff69ed;
  --lime-a10: #d4ff70;
  --lime-a11: #d1fe77e4;
  --lime-a12: #e9febff7;

  /* yellow */
  --yellow-1: #14120b;
  --yellow-2: #1b180f;
  --yellow-3: #2d2305;
  --yellow-4: #362b00;
  --yellow-5: #433500;
  --yellow-6: #524202;
  --yellow-7: #665417;
  --yellow-8: #836a21;
  --yellow-9: #ffe629;
  --yellow-10: #ffff57;
  --yellow-11: #f5e147;
  --yellow-12: #f6eeb4;
  --yellow-a1: #d1510004;
  --yellow-a2: #f9b4000b;
  --yellow-a3: #ffaa001e;
  --yellow-a4: #fdb70028;
  --yellow-a5: #febb0036;
  --yellow-a6: #fec40046;
  --yellow-a7: #fdcb225c;
  --yellow-a8: #fdca327b;
  --yellow-a9: #ffe629;
  --yellow-a10: #ffff57;
  --yellow-a11: #fee949f5;
  --yellow-a12: #fef6baf6;

  /* amber */
  --amber-1: #16120c;
  --amber-2: #1d180f;
  --amber-3: #302008;
  --amber-4: #3f2700;
  --amber-5: #4d3000;
  --amber-6: #5c3d05;
  --amber-7: #714f19;
  --amber-8: #8f6424;
  --amber-9: #ffc53d;
  --amber-10: #ffd60a;
  --amber-11: #ffca16;
  --amber-12: #ffe7b3;
  --amber-a1: #e63c0006;
  --amber-a2: #fd9b000d;
  --amber-a3: #fa820022;
  --amber-a4: #fc820032;
  --amber-a5: #fd8b0041;
  --amber-a6: #fd9b0051;
  --amber-a7: #ffab2567;
  --amber-a8: #ffae3587;
  --amber-a9: #ffc53d;
  --amber-a10: #ffd60a;
  --amber-a11: #ffca16;
  --amber-a12: #ffe7b3;

  /* gray */
  --gray-1: #111111;
  --gray-2: #191919;
  --gray-3: #222222;
  --gray-4: #2a2a2a;
  --gray-5: #313131;
  --gray-6: #3a3a3a;
  --gray-7: #484848;
  --gray-8: #606060;
  --gray-9: #6e6e6e;
  --gray-10: #7b7b7b;
  --gray-11: #b4b4b4;
  --gray-12: #eeeeee;
  --gray-a1: #00000000;
  --gray-a2: #ffffff09;
  --gray-a3: #ffffff12;
  --gray-a4: #ffffff1b;
  --gray-a5: #ffffff22;
  --gray-a6: #ffffff2c;
  --gray-a7: #ffffff3b;
  --gray-a8: #ffffff55;
  --gray-a9: #ffffff64;
  --gray-a10: #ffffff72;
  --gray-a11: #ffffffaf;
  --gray-a12: #ffffffed;

  /* mauve */
  --mauve-1: #121113;
  --mauve-2: #1a191b;
  --mauve-3: #232225;
  --mauve-4: #2b292d;
  --mauve-5: #323035;
  --mauve-6: #3c393f;
  --mauve-7: #49474e;
  --mauve-8: #625f69;
  --mauve-9: #6f6d78;
  --mauve-10: #7c7a85;
  --mauve-11: #b5b2bc;
  --mauve-12: #eeeef0;
  --mauve-a1: #00000000;
  --mauve-a2: #f5f4f609;
  --mauve-a3: #ebeaf814;
  --mauve-a4: #eee5f81d;
  --mauve-a5: #efe6fe25;
  --mauve-a6: #f1e6fd30;
  --mauve-a7: #eee9ff40;
  --mauve-a8: #eee7ff5d;
  --mauve-a9: #eae6fd6e;
  --mauve-a10: #ece9fd7c;
  --mauve-a11: #f5f1ffb7;
  --mauve-a12: #fdfdffef;

  /* slate */
  --slate-1: #111113;
  --slate-2: #18191b;
  --slate-3: #212225;
  --slate-4: #272a2d;
  --slate-5: #2e3135;
  --slate-6: #363a3f;
  --slate-7: #43484e;
  --slate-8: #5a6169;
  --slate-9: #696e77;
  --slate-10: #777b84;
  --slate-11: #b0b4ba;
  --slate-12: #edeef0;
  --slate-a1: #00000000;
  --slate-a2: #d8f4f609;
  --slate-a3: #ddeaf814;
  --slate-a4: #d3edf81d;
  --slate-a5: #d9edfe25;
  --slate-a6: #d6ebfd30;
  --slate-a7: #d9edff40;
  --slate-a8: #d9edff5d;
  --slate-a9: #dfebfd6d;
  --slate-a10: #e5edfd7b;
  --slate-a11: #f1f7feb5;
  --slate-a12: #fcfdffef;

  /* sage */
  --sage-1: #101211;
  --sage-2: #171918;
  --sage-3: #202221;
  --sage-4: #272a29;
  --sage-5: #2e3130;
  --sage-6: #373b39;
  --sage-7: #444947;
  --sage-8: #5b625f;
  --sage-9: #63706b;
  --sage-10: #717d79;
  --sage-11: #adb5b2;
  --sage-12: #eceeed;
  --sage-a1: #00000000;
  --sage-a2: #f0f2f108;
  --sage-a3: #f3f5f412;
  --sage-a4: #f2fefd1a;
  --sage-a5: #f1fbfa22;
  --sage-a6: #edfbf42d;
  --sage-a7: #edfcf73c;
  --sage-a8: #ebfdf657;
  --sage-a9: #dffdf266;
  --sage-a10: #e5fdf674;
  --sage-a11: #f4fefbb0;
  --sage-a12: #fdfffeed;

  /* olive */
  --olive-1: #111210;
  --olive-2: #181917;
  --olive-3: #212220;
  --olive-4: #282a27;
  --olive-5: #2f312e;
  --olive-6: #383a36;
  --olive-7: #454843;
  --olive-8: #5c625b;
  --olive-9: #687066;
  --olive-10: #767d74;
  --olive-11: #afb5ad;
  --olive-12: #eceeec;
  --olive-a1: #00000000;
  --olive-a2: #f1f2f008;
  --olive-a3: #f4f5f312;
  --olive-a4: #f3fef21a;
  --olive-a5: #f2fbf122;
  --olive-a6: #f4faed2c;
  --olive-a7: #f2fced3b;
  --olive-a8: #edfdeb57;
  --olive-a9: #ebfde766;
  --olive-a10: #f0fdec74;
  --olive-a11: #f6fef4b0;
  --olive-a12: #fdfffded;

  /* sand */
  --sand-1: #111110;
  --sand-2: #191918;
  --sand-3: #222221;
  --sand-4: #2a2a28;
  --sand-5: #31312e;
  --sand-6: #3b3a37;
  --sand-7: #494844;
  --sand-8: #62605b;
  --sand-9: #6f6d66;
  --sand-10: #7c7b74;
  --sand-11: #b5b3ad;
  --sand-12: #eeeeec;
  --sand-a1: #00000000;
  --sand-a2: #f4f4f309;
  --sand-a3: #f6f6f513;
  --sand-a4: #fefef31b;
  --sand-a5: #fbfbeb23;
  --sand-a6: #fffaed2d;
  --sand-a7: #fffbed3c;
  --sand-a8: #fff9eb57;
  --sand-a9: #fffae965;
  --sand-a10: #fffdee73;
  --sand-a11: #fffcf4b0;
  --sand-a12: #fffffded;

  /* gold */
  --gold-1: #121211;
  --gold-2: #1b1a17;
  --gold-3: #24231f;
  --gold-4: #2d2b26;
  --gold-5: #38352e;
  --gold-6: #444039;
  --gold-7: #544f46;
  --gold-8: #696256;
  --gold-9: #978365;
  --gold-10: #a39073;
  --gold-11: #cbb99f;
  --gold-12: #e8e2d9;
  --gold-a1: #91911102;
  --gold-a2: #f9e29d0b;
  --gold-a3: #f8ecbb15;
  --gold-a4: #ffeec41e;
  --gold-a5: #feecc22a;
  --gold-a6: #feebcb37;
  --gold-a7: #ffedcd48;
  --gold-a8: #fdeaca5f;
  --gold-a9: #ffdba690;
  --gold-a10: #fedfb09d;
  --gold-a11: #fee7c6c8;
  --gold-a12: #fef7ede7;

  /* bronze */
  --bronze-1: #141110;
  --bronze-2: #1c1917;
  --bronze-3: #262220;
  --bronze-4: #302a27;
  --bronze-5: #3b3330;
  --bronze-6: #493e3a;
  --bronze-7: #5a4c47;
  --bronze-8: #6f5f58;
  --bronze-9: #a18072;
  --bronze-10: #ae8c7e;
  --bronze-11: #d4b3a5;
  --bronze-12: #ede0d9;
  --bronze-a1: #d1110004;
  --bronze-a2: #fbbc910c;
  --bronze-a3: #faceb817;
  --bronze-a4: #facdb622;
  --bronze-a5: #ffd2c12d;
  --bronze-a6: #ffd1c03c;
  --bronze-a7: #fdd0c04f;
  --bronze-a8: #ffd6c565;
  --bronze-a9: #fec7b09b;
  --bronze-a10: #fecab5a9;
  --bronze-a11: #ffd7c6d1;
  --bronze-a12: #fff1e9ec;

  /* black-alpha */
  --black-a1: rgba(0, 0, 0, 0.05);
  --black-a2: rgba(0, 0, 0, 0.1);
  --black-a3: rgba(0, 0, 0, 0.15);
  --black-a4: rgba(0, 0, 0, 0.2);
  --black-a5: rgba(0, 0, 0, 0.3);
  --black-a6: rgba(0, 0, 0, 0.4);
  --black-a7: rgba(0, 0, 0, 0.5);
  --black-a8: rgba(0, 0, 0, 0.6);
  --black-a9: rgba(0, 0, 0, 0.7);
  --black-a10: rgba(0, 0, 0, 0.8);
  --black-a11: rgba(0, 0, 0, 0.9);
  --black-a12: rgba(0, 0, 0, 0.95);

  /* white-alpha */
  --white-a1: rgba(255, 255, 255, 0.05);
  --white-a2: rgba(255, 255, 255, 0.1);
  --white-a3: rgba(255, 255, 255, 0.15);
  --white-a4: rgba(255, 255, 255, 0.2);
  --white-a5: rgba(255, 255, 255, 0.3);
  --white-a6: rgba(255, 255, 255, 0.4);
  --white-a7: rgba(255, 255, 255, 0.5);
  --white-a8: rgba(255, 255, 255, 0.6);
  --white-a9: rgba(255, 255, 255, 0.7);
  --white-a10: rgba(255, 255, 255, 0.8);
  --white-a11: rgba(255, 255, 255, 0.9);
  --white-a12: rgba(255, 255, 255, 0.95);
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    :root {

    /* tomato */
    --tomato-1: color(display-p3 0.09 0.068 0.067);
    --tomato-2: color(display-p3 0.115 0.084 0.076);
    --tomato-3: color(display-p3 0.205 0.097 0.083);
    --tomato-4: color(display-p3 0.282 0.099 0.077);
    --tomato-5: color(display-p3 0.339 0.129 0.101);
    --tomato-6: color(display-p3 0.398 0.179 0.141);
    --tomato-7: color(display-p3 0.487 0.245 0.194);
    --tomato-8: color(display-p3 0.629 0.322 0.248);
    --tomato-9: color(display-p3 0.831 0.345 0.231);
    --tomato-10: color(display-p3 0.862 0.415 0.298);
    --tomato-11: color(display-p3 1 0.585 0.455);
    --tomato-12: color(display-p3 0.959 0.833 0.802);
    --tomato-a1: color(display-p3 0.973 0.071 0.071 / 0.026);
    --tomato-a2: color(display-p3 0.992 0.376 0.224 / 0.051);
    --tomato-a3: color(display-p3 0.996 0.282 0.176 / 0.148);
    --tomato-a4: color(display-p3 1 0.204 0.118 / 0.232);
    --tomato-a5: color(display-p3 1 0.286 0.192 / 0.29);
    --tomato-a6: color(display-p3 1 0.392 0.278 / 0.353);
    --tomato-a7: color(display-p3 1 0.459 0.349 / 0.45);
    --tomato-a8: color(display-p3 1 0.49 0.369 / 0.601);
    --tomato-a9: color(display-p3 1 0.408 0.267 / 0.82);
    --tomato-a10: color(display-p3 1 0.478 0.341 / 0.853);
    --tomato-a11: color(display-p3 1 0.585 0.455);
    --tomato-a12: color(display-p3 0.959 0.833 0.802);

    /* red */
    --red-1: color(display-p3 0.093 0.068 0.067);
    --red-2: color(display-p3 0.118 0.077 0.079);
    --red-3: color(display-p3 0.211 0.081 0.099);
    --red-4: color(display-p3 0.287 0.079 0.113);
    --red-5: color(display-p3 0.348 0.11 0.142);
    --red-6: color(display-p3 0.414 0.16 0.183);
    --red-7: color(display-p3 0.508 0.224 0.236);
    --red-8: color(display-p3 0.659 0.298 0.297);
    --red-9: color(display-p3 0.83 0.329 0.324);
    --red-10: color(display-p3 0.861 0.403 0.387);
    --red-11: color(display-p3 1 0.57 0.55);
    --red-12: color(display-p3 0.971 0.826 0.852);
    --red-a1: color(display-p3 0.984 0.071 0.071 / 0.03);
    --red-a2: color(display-p3 0.996 0.282 0.282 / 0.055);
    --red-a3: color(display-p3 1 0.169 0.271 / 0.156);
    --red-a4: color(display-p3 1 0.118 0.267 / 0.236);
    --red-a5: color(display-p3 1 0.212 0.314 / 0.303);
    --red-a6: color(display-p3 1 0.318 0.38 / 0.374);
    --red-a7: color(display-p3 1 0.4 0.424 / 0.475);
    --red-a8: color(display-p3 1 0.431 0.431 / 0.635);
    --red-a9: color(display-p3 1 0.388 0.384 / 0.82);
    --red-a10: color(display-p3 1 0.463 0.447 / 0.853);
    --red-a11: color(display-p3 1 0.57 0.55);
    --red-a12: color(display-p3 0.971 0.826 0.852);

    /* crimson */
    --crimson-1: color(display-p3 0.093 0.068 0.078);
    --crimson-2: color(display-p3 0.117 0.078 0.095);
    --crimson-3: color(display-p3 0.203 0.091 0.143);
    --crimson-4: color(display-p3 0.277 0.087 0.182);
    --crimson-5: color(display-p3 0.332 0.115 0.22);
    --crimson-6: color(display-p3 0.394 0.162 0.268);
    --crimson-7: color(display-p3 0.489 0.222 0.336);
    --crimson-8: color(display-p3 0.638 0.289 0.429);
    --crimson-9: color(display-p3 0.843 0.298 0.507);
    --crimson-10: color(display-p3 0.864 0.364 0.539);
    --crimson-11: color(display-p3 1 0.56 0.66);
    --crimson-12: color(display-p3 0.966 0.834 0.906);
    --crimson-a1: color(display-p3 0.984 0.071 0.463 / 0.03);
    --crimson-a2: color(display-p3 0.996 0.282 0.569 / 0.055);
    --crimson-a3: color(display-p3 0.996 0.227 0.573 / 0.148);
    --crimson-a4: color(display-p3 1 0.157 0.569 / 0.227);
    --crimson-a5: color(display-p3 1 0.231 0.604 / 0.286);
    --crimson-a6: color(display-p3 1 0.337 0.643 / 0.349);
    --crimson-a7: color(display-p3 1 0.416 0.663 / 0.454);
    --crimson-a8: color(display-p3 0.996 0.427 0.651 / 0.614);
    --crimson-a9: color(display-p3 1 0.345 0.596 / 0.832);
    --crimson-a10: color(display-p3 1 0.42 0.62 / 0.853);
    --crimson-a11: color(display-p3 1 0.56 0.66);
    --crimson-a12: color(display-p3 0.966 0.834 0.906);

    /* pink */
    --pink-1: color(display-p3 0.093 0.068 0.089);
    --pink-2: color(display-p3 0.121 0.073 0.11);
    --pink-3: color(display-p3 0.198 0.098 0.179);
    --pink-4: color(display-p3 0.271 0.095 0.231);
    --pink-5: color(display-p3 0.32 0.127 0.273);
    --pink-6: color(display-p3 0.382 0.177 0.326);
    --pink-7: color(display-p3 0.477 0.238 0.405);
    --pink-8: color(display-p3 0.612 0.304 0.51);
    --pink-9: color(display-p3 0.775 0.297 0.61);
    --pink-10: color(display-p3 0.808 0.356 0.645);
    --pink-11: color(display-p3 1 0.535 0.78);
    --pink-12: color(display-p3 0.964 0.826 0.912);
    --pink-a1: color(display-p3 0.984 0.071 0.855 / 0.03);
    --pink-a2: color(display-p3 1 0.2 0.8 / 0.059);
    --pink-a3: color(display-p3 1 0.294 0.886 / 0.139);
    --pink-a4: color(display-p3 1 0.192 0.82 / 0.219);
    --pink-a5: color(display-p3 1 0.282 0.827 / 0.274);
    --pink-a6: color(display-p3 1 0.396 0.835 / 0.337);
    --pink-a7: color(display-p3 1 0.459 0.831 / 0.442);
    --pink-a8: color(display-p3 1 0.478 0.827 / 0.585);
    --pink-a9: color(display-p3 1 0.373 0.784 / 0.761);
    --pink-a10: color(display-p3 1 0.435 0.792 / 0.795);
    --pink-a11: color(display-p3 1 0.535 0.78);
    --pink-a12: color(display-p3 0.964 0.826 0.912);

    /* plum */
    --plum-1: color(display-p3 0.09 0.068 0.092);
    --plum-2: color(display-p3 0.118 0.077 0.121);
    --plum-3: color(display-p3 0.192 0.105 0.202);
    --plum-4: color(display-p3 0.25 0.121 0.271);
    --plum-5: color(display-p3 0.293 0.152 0.319);
    --plum-6: color(display-p3 0.343 0.198 0.372);
    --plum-7: color(display-p3 0.424 0.262 0.461);
    --plum-8: color(display-p3 0.54 0.341 0.595);
    --plum-9: color(display-p3 0.624 0.313 0.708);
    --plum-10: color(display-p3 0.666 0.365 0.748);
    --plum-11: color(display-p3 0.86 0.602 0.933);
    --plum-12: color(display-p3 0.936 0.836 0.949);
    --plum-a1: color(display-p3 0.973 0.071 0.973 / 0.026);
    --plum-a2: color(display-p3 0.933 0.267 1 / 0.059);
    --plum-a3: color(display-p3 0.918 0.333 0.996 / 0.148);
    --plum-a4: color(display-p3 0.91 0.318 1 / 0.219);
    --plum-a5: color(display-p3 0.914 0.388 1 / 0.269);
    --plum-a6: color(display-p3 0.906 0.463 1 / 0.328);
    --plum-a7: color(display-p3 0.906 0.529 1 / 0.425);
    --plum-a8: color(display-p3 0.906 0.553 1 / 0.568);
    --plum-a9: color(display-p3 0.875 0.427 1 / 0.69);
    --plum-a10: color(display-p3 0.886 0.471 0.996 / 0.732);
    --plum-a11: color(display-p3 0.86 0.602 0.933);
    --plum-a12: color(display-p3 0.936 0.836 0.949);

    /* purple */
    --purple-1: color(display-p3 0.09 0.068 0.103);
    --purple-2: color(display-p3 0.113 0.082 0.134);
    --purple-3: color(display-p3 0.175 0.112 0.224);
    --purple-4: color(display-p3 0.224 0.137 0.297);
    --purple-5: color(display-p3 0.264 0.167 0.349);
    --purple-6: color(display-p3 0.311 0.208 0.406);
    --purple-7: color(display-p3 0.381 0.266 0.496);
    --purple-8: color(display-p3 0.49 0.349 0.649);
    --purple-9: color(display-p3 0.523 0.318 0.751);
    --purple-10: color(display-p3 0.57 0.373 0.791);
    --purple-11: color(display-p3 0.8 0.62 1);
    --purple-12: color(display-p3 0.913 0.854 0.971);
    --purple-a1: color(display-p3 0.686 0.071 0.996 / 0.038);
    --purple-a2: color(display-p3 0.722 0.286 0.996 / 0.072);
    --purple-a3: color(display-p3 0.718 0.349 0.996 / 0.169);
    --purple-a4: color(display-p3 0.702 0.353 1 / 0.248);
    --purple-a5: color(display-p3 0.718 0.404 1 / 0.303);
    --purple-a6: color(display-p3 0.733 0.455 1 / 0.366);
    --purple-a7: color(display-p3 0.753 0.506 1 / 0.458);
    --purple-a8: color(display-p3 0.749 0.522 1 / 0.622);
    --purple-a9: color(display-p3 0.686 0.408 1 / 0.736);
    --purple-a10: color(display-p3 0.71 0.459 1 / 0.778);
    --purple-a11: color(display-p3 0.8 0.62 1);
    --purple-a12: color(display-p3 0.913 0.854 0.971);

    /* violet */
    --violet-1: color(display-p3 0.077 0.071 0.118);
    --violet-2: color(display-p3 0.101 0.084 0.141);
    --violet-3: color(display-p3 0.154 0.123 0.256);
    --violet-4: color(display-p3 0.191 0.148 0.345);
    --violet-5: color(display-p3 0.226 0.182 0.396);
    --violet-6: color(display-p3 0.269 0.223 0.449);
    --violet-7: color(display-p3 0.326 0.277 0.53);
    --violet-8: color(display-p3 0.399 0.346 0.656);
    --violet-9: color(display-p3 0.417 0.341 0.784);
    --violet-10: color(display-p3 0.477 0.402 0.823);
    --violet-11: color(display-p3 0.72 0.65 1);
    --violet-12: color(display-p3 0.883 0.867 0.986);
    --violet-a1: color(display-p3 0.282 0.141 0.996 / 0.055);
    --violet-a2: color(display-p3 0.51 0.263 1 / 0.08);
    --violet-a3: color(display-p3 0.494 0.337 0.996 / 0.202);
    --violet-a4: color(display-p3 0.49 0.345 1 / 0.299);
    --violet-a5: color(display-p3 0.525 0.392 1 / 0.353);
    --violet-a6: color(display-p3 0.569 0.455 1 / 0.408);
    --violet-a7: color(display-p3 0.588 0.494 1 / 0.496);
    --violet-a8: color(display-p3 0.596 0.51 1 / 0.631);
    --violet-a9: color(display-p3 0.522 0.424 1 / 0.769);
    --violet-a10: color(display-p3 0.576 0.482 1 / 0.811);
    --violet-a11: color(display-p3 0.72 0.65 1);
    --violet-a12: color(display-p3 0.883 0.867 0.986);

    /* indigo */
    --indigo-1: color(display-p3 0.068 0.074 0.118);
    --indigo-2: color(display-p3 0.081 0.089 0.144);
    --indigo-3: color(display-p3 0.105 0.141 0.275);
    --indigo-4: color(display-p3 0.129 0.18 0.369);
    --indigo-5: color(display-p3 0.163 0.22 0.439);
    --indigo-6: color(display-p3 0.203 0.262 0.5);
    --indigo-7: color(display-p3 0.245 0.309 0.575);
    --indigo-8: color(display-p3 0.285 0.362 0.674);
    --indigo-9: color(display-p3 0.276 0.384 0.837);
    --indigo-10: color(display-p3 0.354 0.445 0.866);
    --indigo-11: color(display-p3 0.63 0.69 1);
    --indigo-12: color(display-p3 0.848 0.881 0.99);
    --indigo-a1: color(display-p3 0.071 0.212 0.996 / 0.055);
    --indigo-a2: color(display-p3 0.251 0.345 0.988 / 0.085);
    --indigo-a3: color(display-p3 0.243 0.404 1 / 0.223);
    --indigo-a4: color(display-p3 0.263 0.42 1 / 0.324);
    --indigo-a5: color(display-p3 0.314 0.451 1 / 0.4);
    --indigo-a6: color(display-p3 0.361 0.49 1 / 0.467);
    --indigo-a7: color(display-p3 0.388 0.51 1 / 0.547);
    --indigo-a8: color(display-p3 0.404 0.518 1 / 0.652);
    --indigo-a9: color(display-p3 0.318 0.451 1 / 0.824);
    --indigo-a10: color(display-p3 0.404 0.506 1 / 0.858);
    --indigo-a11: color(display-p3 0.63 0.69 1);
    --indigo-a12: color(display-p3 0.848 0.881 0.99);

    /* blue */
    --blue-1: color(display-p3 0.057 0.081 0.122);
    --blue-2: color(display-p3 0.072 0.098 0.147);
    --blue-3: color(display-p3 0.078 0.154 0.27);
    --blue-4: color(display-p3 0.033 0.197 0.37);
    --blue-5: color(display-p3 0.08 0.245 0.441);
    --blue-6: color(display-p3 0.14 0.298 0.511);
    --blue-7: color(display-p3 0.195 0.361 0.6);
    --blue-8: color(display-p3 0.239 0.434 0.72);
    --blue-9: color(display-p3 0.247 0.556 0.969);
    --blue-10: color(display-p3 0.344 0.612 0.973);
    --blue-11: color(display-p3 0.49 0.72 1);
    --blue-12: color(display-p3 0.788 0.898 0.99);
    --blue-a1: color(display-p3 0 0.333 1 / 0.059);
    --blue-a2: color(display-p3 0.114 0.435 0.988 / 0.085);
    --blue-a3: color(display-p3 0.122 0.463 1 / 0.219);
    --blue-a4: color(display-p3 0 0.467 1 / 0.324);
    --blue-a5: color(display-p3 0.098 0.51 1 / 0.4);
    --blue-a6: color(display-p3 0.224 0.557 1 / 0.475);
    --blue-a7: color(display-p3 0.294 0.584 1 / 0.572);
    --blue-a8: color(display-p3 0.314 0.592 1 / 0.702);
    --blue-a9: color(display-p3 0.251 0.573 0.996 / 0.967);
    --blue-a10: color(display-p3 0.357 0.631 1 / 0.971);
    --blue-a11: color(display-p3 0.49 0.72 1);
    --blue-a12: color(display-p3 0.788 0.898 0.99);

    /* cyan */
    --cyan-1: color(display-p3 0.053 0.085 0.098);
    --cyan-2: color(display-p3 0.072 0.105 0.122);
    --cyan-3: color(display-p3 0.073 0.168 0.209);
    --cyan-4: color(display-p3 0.063 0.216 0.277);
    --cyan-5: color(display-p3 0.091 0.267 0.336);
    --cyan-6: color(display-p3 0.137 0.324 0.4);
    --cyan-7: color(display-p3 0.186 0.398 0.484);
    --cyan-8: color(display-p3 0.23 0.496 0.6);
    --cyan-9: color(display-p3 0.282 0.627 0.765);
    --cyan-10: color(display-p3 0.331 0.675 0.801);
    --cyan-11: color(display-p3 0.446 0.79 0.887);
    --cyan-12: color(display-p3 0.757 0.919 0.962);
    --cyan-a1: color(display-p3 0 0.647 0.992 / 0.034);
    --cyan-a2: color(display-p3 0.133 0.733 1 / 0.059);
    --cyan-a3: color(display-p3 0.122 0.741 0.996 / 0.152);
    --cyan-a4: color(display-p3 0.051 0.725 1 / 0.227);
    --cyan-a5: color(display-p3 0.149 0.757 1 / 0.29);
    --cyan-a6: color(display-p3 0.267 0.792 1 / 0.358);
    --cyan-a7: color(display-p3 0.333 0.808 1 / 0.446);
    --cyan-a8: color(display-p3 0.357 0.816 1 / 0.572);
    --cyan-a9: color(display-p3 0.357 0.82 1 / 0.748);
    --cyan-a10: color(display-p3 0.4 0.839 1 / 0.786);
    --cyan-a11: color(display-p3 0.446 0.79 0.887);
    --cyan-a12: color(display-p3 0.757 0.919 0.962);

    /* teal */
    --teal-1: color(display-p3 0.059 0.083 0.079);
    --teal-2: color(display-p3 0.075 0.11 0.107);
    --teal-3: color(display-p3 0.087 0.175 0.165);
    --teal-4: color(display-p3 0.087 0.227 0.214);
    --teal-5: color(display-p3 0.12 0.277 0.261);
    --teal-6: color(display-p3 0.162 0.335 0.314);
    --teal-7: color(display-p3 0.205 0.406 0.379);
    --teal-8: color(display-p3 0.245 0.489 0.453);
    --teal-9: color(display-p3 0.297 0.637 0.581);
    --teal-10: color(display-p3 0.319 0.69 0.62);
    --teal-11: color(display-p3 0.388 0.835 0.719);
    --teal-12: color(display-p3 0.734 0.934 0.87);
    --teal-a1: color(display-p3 0 0.992 0.761 / 0.017);
    --teal-a2: color(display-p3 0.235 0.988 0.902 / 0.047);
    --teal-a3: color(display-p3 0.235 1 0.898 / 0.118);
    --teal-a4: color(display-p3 0.18 0.996 0.929 / 0.173);
    --teal-a5: color(display-p3 0.31 1 0.933 / 0.227);
    --teal-a6: color(display-p3 0.396 1 0.933 / 0.286);
    --teal-a7: color(display-p3 0.443 1 0.925 / 0.366);
    --teal-a8: color(display-p3 0.459 1 0.925 / 0.454);
    --teal-a9: color(display-p3 0.443 0.996 0.906 / 0.61);
    --teal-a10: color(display-p3 0.439 0.996 0.89 / 0.669);
    --teal-a11: color(display-p3 0.388 0.835 0.719);
    --teal-a12: color(display-p3 0.734 0.934 0.87);

    /* green */
    --green-1: color(display-p3 0.062 0.083 0.071);
    --green-2: color(display-p3 0.079 0.106 0.09);
    --green-3: color(display-p3 0.1 0.173 0.133);
    --green-4: color(display-p3 0.115 0.229 0.166);
    --green-5: color(display-p3 0.147 0.282 0.206);
    --green-6: color(display-p3 0.185 0.338 0.25);
    --green-7: color(display-p3 0.227 0.403 0.298);
    --green-8: color(display-p3 0.27 0.479 0.351);
    --green-9: color(display-p3 0.332 0.634 0.442);
    --green-10: color(display-p3 0.357 0.682 0.474);
    --green-11: color(display-p3 0.434 0.828 0.573);
    --green-12: color(display-p3 0.747 0.938 0.807);
    --green-a1: color(display-p3 0 0.992 0.298 / 0.017);
    --green-a2: color(display-p3 0.341 0.98 0.616 / 0.043);
    --green-a3: color(display-p3 0.376 0.996 0.655 / 0.114);
    --green-a4: color(display-p3 0.341 0.996 0.635 / 0.173);
    --green-a5: color(display-p3 0.408 1 0.678 / 0.232);
    --green-a6: color(display-p3 0.475 1 0.706 / 0.29);
    --green-a7: color(display-p3 0.514 1 0.706 / 0.362);
    --green-a8: color(display-p3 0.529 1 0.718 / 0.442);
    --green-a9: color(display-p3 0.502 0.996 0.682 / 0.61);
    --green-a10: color(display-p3 0.506 1 0.682 / 0.66);
    --green-a11: color(display-p3 0.434 0.828 0.573);
    --green-a12: color(display-p3 0.747 0.938 0.807);

    /* grass */
    --grass-1: color(display-p3 0.062 0.083 0.067);
    --grass-2: color(display-p3 0.083 0.103 0.085);
    --grass-3: color(display-p3 0.118 0.163 0.122);
    --grass-4: color(display-p3 0.142 0.225 0.15);
    --grass-5: color(display-p3 0.178 0.279 0.186);
    --grass-6: color(display-p3 0.217 0.337 0.224);
    --grass-7: color(display-p3 0.258 0.4 0.264);
    --grass-8: color(display-p3 0.302 0.47 0.305);
    --grass-9: color(display-p3 0.38 0.647 0.378);
    --grass-10: color(display-p3 0.426 0.694 0.426);
    --grass-11: color(display-p3 0.535 0.807 0.542);
    --grass-12: color(display-p3 0.797 0.936 0.776);
    --grass-a1: color(display-p3 0 0.992 0.071 / 0.017);
    --grass-a2: color(display-p3 0.482 0.996 0.584 / 0.038);
    --grass-a3: color(display-p3 0.549 0.992 0.588 / 0.106);
    --grass-a4: color(display-p3 0.51 0.996 0.557 / 0.169);
    --grass-a5: color(display-p3 0.553 1 0.588 / 0.227);
    --grass-a6: color(display-p3 0.584 1 0.608 / 0.29);
    --grass-a7: color(display-p3 0.604 1 0.616 / 0.358);
    --grass-a8: color(display-p3 0.608 1 0.62 / 0.433);
    --grass-a9: color(display-p3 0.573 1 0.569 / 0.622);
    --grass-a10: color(display-p3 0.6 0.996 0.6 / 0.673);
    --grass-a11: color(display-p3 0.535 0.807 0.542);
    --grass-a12: color(display-p3 0.797 0.936 0.776);

    /* orange */
    --orange-1: color(display-p3 0.088 0.07 0.057);
    --orange-2: color(display-p3 0.113 0.089 0.061);
    --orange-3: color(display-p3 0.189 0.12 0.056);
    --orange-4: color(display-p3 0.262 0.132 0);
    --orange-5: color(display-p3 0.315 0.168 0.016);
    --orange-6: color(display-p3 0.376 0.219 0.088);
    --orange-7: color(display-p3 0.465 0.283 0.147);
    --orange-8: color(display-p3 0.601 0.359 0.201);
    --orange-9: color(display-p3 0.9 0.45 0.2);
    --orange-10: color(display-p3 0.98 0.51 0.23);
    --orange-11: color(display-p3 1 0.63 0.38);
    --orange-12: color(display-p3 0.98 0.883 0.775);
    --orange-a1: color(display-p3 0.961 0.247 0 / 0.022);
    --orange-a2: color(display-p3 0.992 0.529 0 / 0.051);
    --orange-a3: color(display-p3 0.996 0.486 0 / 0.131);
    --orange-a4: color(display-p3 0.996 0.384 0 / 0.211);
    --orange-a5: color(display-p3 1 0.455 0 / 0.265);
    --orange-a6: color(display-p3 1 0.529 0.129 / 0.332);
    --orange-a7: color(display-p3 1 0.569 0.251 / 0.429);
    --orange-a8: color(display-p3 1 0.584 0.302 / 0.572);
    --orange-a9: color(display-p3 1 0.494 0.216 / 0.895);
    --orange-a10: color(display-p3 1 0.522 0.235 / 0.979);
    --orange-a11: color(display-p3 1 0.63 0.38);
    --orange-a12: color(display-p3 0.98 0.883 0.775);

    /* brown */
    --brown-1: color(display-p3 0.071 0.067 0.059);
    --brown-2: color(display-p3 0.107 0.095 0.087);
    --brown-3: color(display-p3 0.151 0.13 0.115);
    --brown-4: color(display-p3 0.191 0.161 0.138);
    --brown-5: color(display-p3 0.235 0.194 0.162);
    --brown-6: color(display-p3 0.291 0.237 0.192);
    --brown-7: color(display-p3 0.365 0.295 0.232);
    --brown-8: color(display-p3 0.469 0.377 0.287);
    --brown-9: color(display-p3 0.651 0.505 0.368);
    --brown-10: color(display-p3 0.697 0.557 0.423);
    --brown-11: color(display-p3 0.835 0.715 0.597);
    --brown-12: color(display-p3 0.938 0.885 0.802);
    --brown-a1: color(display-p3 0.855 0.071 0 / 0.005);
    --brown-a2: color(display-p3 0.98 0.706 0.525 / 0.043);
    --brown-a3: color(display-p3 0.996 0.745 0.576 / 0.093);
    --brown-a4: color(display-p3 1 0.765 0.592 / 0.135);
    --brown-a5: color(display-p3 1 0.761 0.588 / 0.181);
    --brown-a6: color(display-p3 1 0.773 0.592 / 0.24);
    --brown-a7: color(display-p3 0.996 0.776 0.58 / 0.32);
    --brown-a8: color(display-p3 1 0.78 0.573 / 0.433);
    --brown-a9: color(display-p3 1 0.769 0.549 / 0.627);
    --brown-a10: color(display-p3 1 0.792 0.596 / 0.677);
    --brown-a11: color(display-p3 0.835 0.715 0.597);
    --brown-a12: color(display-p3 0.938 0.885 0.802);

    /* sky */
    --sky-1: color(display-p3 0.056 0.078 0.116);
    --sky-2: color(display-p3 0.075 0.101 0.149);
    --sky-3: color(display-p3 0.089 0.154 0.244);
    --sky-4: color(display-p3 0.106 0.207 0.323);
    --sky-5: color(display-p3 0.135 0.261 0.394);
    --sky-6: color(display-p3 0.17 0.322 0.469);
    --sky-7: color(display-p3 0.205 0.394 0.557);
    --sky-8: color(display-p3 0.232 0.48 0.665);
    --sky-9: color(display-p3 0.585 0.877 0.983);
    --sky-10: color(display-p3 0.718 0.925 0.991);
    --sky-11: color(display-p3 0.536 0.772 0.924);
    --sky-12: color(display-p3 0.799 0.947 0.993);
    --sky-a1: color(display-p3 0 0.282 0.996 / 0.055);
    --sky-a2: color(display-p3 0.157 0.467 0.992 / 0.089);
    --sky-a3: color(display-p3 0.192 0.522 0.996 / 0.19);
    --sky-a4: color(display-p3 0.212 0.584 1 / 0.274);
    --sky-a5: color(display-p3 0.259 0.631 1 / 0.349);
    --sky-a6: color(display-p3 0.302 0.655 1 / 0.433);
    --sky-a7: color(display-p3 0.329 0.686 1 / 0.526);
    --sky-a8: color(display-p3 0.325 0.71 1 / 0.643);
    --sky-a9: color(display-p3 0.592 0.894 1 / 0.984);
    --sky-a10: color(display-p3 0.722 0.933 1 / 0.992);
    --sky-a11: color(display-p3 0.536 0.772 0.924);
    --sky-a12: color(display-p3 0.799 0.947 0.993);

    /* mint */
    --mint-1: color(display-p3 0.059 0.082 0.081);
    --mint-2: color(display-p3 0.068 0.104 0.105);
    --mint-3: color(display-p3 0.077 0.17 0.168);
    --mint-4: color(display-p3 0.068 0.224 0.22);
    --mint-5: color(display-p3 0.104 0.275 0.264);
    --mint-6: color(display-p3 0.154 0.332 0.313);
    --mint-7: color(display-p3 0.207 0.403 0.373);
    --mint-8: color(display-p3 0.258 0.49 0.441);
    --mint-9: color(display-p3 0.62 0.908 0.834);
    --mint-10: color(display-p3 0.725 0.954 0.898);
    --mint-11: color(display-p3 0.482 0.825 0.733);
    --mint-12: color(display-p3 0.807 0.955 0.887);
    --mint-a1: color(display-p3 0 0.992 0.992 / 0.017);
    --mint-a2: color(display-p3 0.071 0.98 0.98 / 0.043);
    --mint-a3: color(display-p3 0.176 0.996 0.996 / 0.11);
    --mint-a4: color(display-p3 0.071 0.996 0.973 / 0.169);
    --mint-a5: color(display-p3 0.243 1 0.949 / 0.223);
    --mint-a6: color(display-p3 0.369 1 0.933 / 0.286);
    --mint-a7: color(display-p3 0.459 1 0.914 / 0.362);
    --mint-a8: color(display-p3 0.49 1 0.89 / 0.454);
    --mint-a9: color(display-p3 0.678 0.996 0.914 / 0.904);
    --mint-a10: color(display-p3 0.761 1 0.941 / 0.95);
    --mint-a11: color(display-p3 0.482 0.825 0.733);
    --mint-a12: color(display-p3 0.807 0.955 0.887);

    /* lime */
    --lime-1: color(display-p3 0.067 0.073 0.048);
    --lime-2: color(display-p3 0.086 0.1 0.067);
    --lime-3: color(display-p3 0.13 0.16 0.099);
    --lime-4: color(display-p3 0.172 0.214 0.126);
    --lime-5: color(display-p3 0.213 0.266 0.153);
    --lime-6: color(display-p3 0.257 0.321 0.182);
    --lime-7: color(display-p3 0.307 0.383 0.215);
    --lime-8: color(display-p3 0.365 0.456 0.25);
    --lime-9: color(display-p3 0.78 0.928 0.466);
    --lime-10: color(display-p3 0.865 0.995 0.519);
    --lime-11: color(display-p3 0.771 0.893 0.485);
    --lime-12: color(display-p3 0.905 0.966 0.753);
    --lime-a1: color(display-p3 0.067 0.941 0 / 0.009);
    --lime-a2: color(display-p3 0.584 0.996 0.071 / 0.038);
    --lime-a3: color(display-p3 0.69 1 0.38 / 0.101);
    --lime-a4: color(display-p3 0.729 1 0.435 / 0.16);
    --lime-a5: color(display-p3 0.745 1 0.471 / 0.215);
    --lime-a6: color(display-p3 0.769 1 0.482 / 0.274);
    --lime-a7: color(display-p3 0.769 1 0.506 / 0.341);
    --lime-a8: color(display-p3 0.784 1 0.51 / 0.416);
    --lime-a9: color(display-p3 0.839 1 0.502 / 0.925);
    --lime-a10: color(display-p3 0.871 1 0.522 / 0.996);
    --lime-a11: color(display-p3 0.771 0.893 0.485);
    --lime-a12: color(display-p3 0.905 0.966 0.753);

    /* yellow */
    --yellow-1: color(display-p3 0.078 0.069 0.047);
    --yellow-2: color(display-p3 0.103 0.094 0.063);
    --yellow-3: color(display-p3 0.168 0.137 0.039);
    --yellow-4: color(display-p3 0.209 0.169 0);
    --yellow-5: color(display-p3 0.255 0.209 0);
    --yellow-6: color(display-p3 0.31 0.261 0.07);
    --yellow-7: color(display-p3 0.389 0.331 0.135);
    --yellow-8: color(display-p3 0.497 0.42 0.182);
    --yellow-9: color(display-p3 1 0.92 0.22);
    --yellow-10: color(display-p3 1 1 0.456);
    --yellow-11: color(display-p3 0.948 0.885 0.392);
    --yellow-12: color(display-p3 0.959 0.934 0.731);
    --yellow-a1: color(display-p3 0.973 0.369 0 / 0.013);
    --yellow-a2: color(display-p3 0.996 0.792 0 / 0.038);
    --yellow-a3: color(display-p3 0.996 0.71 0 / 0.11);
    --yellow-a4: color(display-p3 0.996 0.741 0 / 0.152);
    --yellow-a5: color(display-p3 0.996 0.765 0 / 0.202);
    --yellow-a6: color(display-p3 0.996 0.816 0.082 / 0.261);
    --yellow-a7: color(display-p3 1 0.831 0.263 / 0.345);
    --yellow-a8: color(display-p3 1 0.831 0.314 / 0.463);
    --yellow-a9: color(display-p3 1 0.922 0.22);
    --yellow-a10: color(display-p3 1 1 0.455);
    --yellow-a11: color(display-p3 0.948 0.885 0.392);
    --yellow-a12: color(display-p3 0.959 0.934 0.731);

    /* amber */
    --amber-1: color(display-p3 0.082 0.07 0.05);
    --amber-2: color(display-p3 0.111 0.094 0.064);
    --amber-3: color(display-p3 0.178 0.128 0.049);
    --amber-4: color(display-p3 0.239 0.156 0);
    --amber-5: color(display-p3 0.29 0.193 0);
    --amber-6: color(display-p3 0.344 0.245 0.076);
    --amber-7: color(display-p3 0.422 0.314 0.141);
    --amber-8: color(display-p3 0.535 0.399 0.189);
    --amber-9: color(display-p3 1 0.77 0.26);
    --amber-10: color(display-p3 1 0.87 0.15);
    --amber-11: color(display-p3 1 0.8 0.29);
    --amber-12: color(display-p3 0.984 0.909 0.726);
    --amber-a1: color(display-p3 0.992 0.298 0 / 0.017);
    --amber-a2: color(display-p3 0.988 0.651 0 / 0.047);
    --amber-a3: color(display-p3 1 0.6 0 / 0.118);
    --amber-a4: color(display-p3 1 0.557 0 / 0.185);
    --amber-a5: color(display-p3 1 0.592 0 / 0.24);
    --amber-a6: color(display-p3 1 0.659 0.094 / 0.299);
    --amber-a7: color(display-p3 1 0.714 0.263 / 0.383);
    --amber-a8: color(display-p3 0.996 0.729 0.306 / 0.5);
    --amber-a9: color(display-p3 1 0.769 0.259);
    --amber-a10: color(display-p3 1 0.871 0.149);
    --amber-a11: color(display-p3 1 0.8 0.29);
    --amber-a12: color(display-p3 0.984 0.909 0.726);

    /* gray */
    --gray-1: color(display-p3 0.067 0.067 0.067);
    --gray-2: color(display-p3 0.098 0.098 0.098);
    --gray-3: color(display-p3 0.135 0.135 0.135);
    --gray-4: color(display-p3 0.163 0.163 0.163);
    --gray-5: color(display-p3 0.192 0.192 0.192);
    --gray-6: color(display-p3 0.228 0.228 0.228);
    --gray-7: color(display-p3 0.283 0.283 0.283);
    --gray-8: color(display-p3 0.375 0.375 0.375);
    --gray-9: color(display-p3 0.431 0.431 0.431);
    --gray-10: color(display-p3 0.484 0.484 0.484);
    --gray-11: color(display-p3 0.706 0.706 0.706);
    --gray-12: color(display-p3 0.933 0.933 0.933);
    --gray-a1: color(display-p3 0 0 0 / 0);
    --gray-a2: color(display-p3 1 1 1 / 0.034);
    --gray-a3: color(display-p3 1 1 1 / 0.071);
    --gray-a4: color(display-p3 1 1 1 / 0.105);
    --gray-a5: color(display-p3 1 1 1 / 0.134);
    --gray-a6: color(display-p3 1 1 1 / 0.172);
    --gray-a7: color(display-p3 1 1 1 / 0.231);
    --gray-a8: color(display-p3 1 1 1 / 0.332);
    --gray-a9: color(display-p3 1 1 1 / 0.391);
    --gray-a10: color(display-p3 1 1 1 / 0.445);
    --gray-a11: color(display-p3 1 1 1 / 0.685);
    --gray-a12: color(display-p3 1 1 1 / 0.929);

    /* mauve */
    --mauve-1: color(display-p3 0.07 0.067 0.074);
    --mauve-2: color(display-p3 0.101 0.098 0.105);
    --mauve-3: color(display-p3 0.138 0.134 0.144);
    --mauve-4: color(display-p3 0.167 0.161 0.175);
    --mauve-5: color(display-p3 0.196 0.189 0.206);
    --mauve-6: color(display-p3 0.232 0.225 0.245);
    --mauve-7: color(display-p3 0.286 0.277 0.302);
    --mauve-8: color(display-p3 0.383 0.373 0.408);
    --mauve-9: color(display-p3 0.434 0.428 0.467);
    --mauve-10: color(display-p3 0.487 0.48 0.519);
    --mauve-11: color(display-p3 0.707 0.7 0.735);
    --mauve-12: color(display-p3 0.933 0.933 0.94);
    --mauve-a1: color(display-p3 0 0 0 / 0);
    --mauve-a2: color(display-p3 0.996 0.992 1 / 0.034);
    --mauve-a3: color(display-p3 0.937 0.933 0.992 / 0.077);
    --mauve-a4: color(display-p3 0.957 0.918 0.996 / 0.111);
    --mauve-a5: color(display-p3 0.937 0.906 0.996 / 0.145);
    --mauve-a6: color(display-p3 0.953 0.925 0.996 / 0.183);
    --mauve-a7: color(display-p3 0.945 0.929 1 / 0.246);
    --mauve-a8: color(display-p3 0.937 0.918 1 / 0.361);
    --mauve-a9: color(display-p3 0.933 0.918 1 / 0.424);
    --mauve-a10: color(display-p3 0.941 0.925 1 / 0.479);
    --mauve-a11: color(display-p3 0.965 0.961 1 / 0.712);
    --mauve-a12: color(display-p3 0.992 0.992 1 / 0.937);

    /* slate */
    --slate-1: color(display-p3 0.067 0.067 0.074);
    --slate-2: color(display-p3 0.095 0.098 0.105);
    --slate-3: color(display-p3 0.13 0.135 0.145);
    --slate-4: color(display-p3 0.156 0.163 0.176);
    --slate-5: color(display-p3 0.183 0.191 0.206);
    --slate-6: color(display-p3 0.215 0.226 0.244);
    --slate-7: color(display-p3 0.265 0.28 0.302);
    --slate-8: color(display-p3 0.357 0.381 0.409);
    --slate-9: color(display-p3 0.415 0.431 0.463);
    --slate-10: color(display-p3 0.469 0.483 0.514);
    --slate-11: color(display-p3 0.692 0.704 0.728);
    --slate-12: color(display-p3 0.93 0.933 0.94);
    --slate-a1: color(display-p3 0 0 0 / 0);
    --slate-a2: color(display-p3 0.875 0.992 1 / 0.034);
    --slate-a3: color(display-p3 0.882 0.933 0.992 / 0.077);
    --slate-a4: color(display-p3 0.882 0.953 0.996 / 0.111);
    --slate-a5: color(display-p3 0.878 0.929 0.996 / 0.145);
    --slate-a6: color(display-p3 0.882 0.949 0.996 / 0.183);
    --slate-a7: color(display-p3 0.882 0.929 1 / 0.246);
    --slate-a8: color(display-p3 0.871 0.937 1 / 0.361);
    --slate-a9: color(display-p3 0.898 0.937 1 / 0.42);
    --slate-a10: color(display-p3 0.918 0.945 1 / 0.475);
    --slate-a11: color(display-p3 0.949 0.969 0.996 / 0.708);
    --slate-a12: color(display-p3 0.988 0.992 1 / 0.937);

    /* sage */
    --sage-1: color(display-p3 0.064 0.07 0.067);
    --sage-2: color(display-p3 0.092 0.098 0.094);
    --sage-3: color(display-p3 0.128 0.135 0.131);
    --sage-4: color(display-p3 0.155 0.164 0.159);
    --sage-5: color(display-p3 0.183 0.193 0.188);
    --sage-6: color(display-p3 0.218 0.23 0.224);
    --sage-7: color(display-p3 0.269 0.285 0.277);
    --sage-8: color(display-p3 0.362 0.382 0.373);
    --sage-9: color(display-p3 0.398 0.438 0.421);
    --sage-10: color(display-p3 0.453 0.49 0.474);
    --sage-11: color(display-p3 0.685 0.709 0.697);
    --sage-12: color(display-p3 0.927 0.933 0.93);
    --sage-a1: color(display-p3 0 0 0 / 0);
    --sage-a2: color(display-p3 0.976 0.988 0.984 / 0.03);
    --sage-a3: color(display-p3 0.992 0.945 0.941 / 0.072);
    --sage-a4: color(display-p3 0.988 0.996 0.992 / 0.102);
    --sage-a5: color(display-p3 0.992 1 0.996 / 0.131);
    --sage-a6: color(display-p3 0.973 1 0.976 / 0.173);
    --sage-a7: color(display-p3 0.957 1 0.976 / 0.233);
    --sage-a8: color(display-p3 0.957 1 0.984 / 0.334);
    --sage-a9: color(display-p3 0.902 1 0.957 / 0.397);
    --sage-a10: color(display-p3 0.929 1 0.973 / 0.452);
    --sage-a11: color(display-p3 0.969 1 0.988 / 0.688);
    --sage-a12: color(display-p3 0.992 1 0.996 / 0.929);

    /* olive */
    --olive-1: color(display-p3 0.067 0.07 0.063);
    --olive-2: color(display-p3 0.095 0.098 0.091);
    --olive-3: color(display-p3 0.131 0.135 0.126);
    --olive-4: color(display-p3 0.158 0.163 0.153);
    --olive-5: color(display-p3 0.186 0.192 0.18);
    --olive-6: color(display-p3 0.221 0.229 0.215);
    --olive-7: color(display-p3 0.273 0.284 0.266);
    --olive-8: color(display-p3 0.365 0.382 0.359);
    --olive-9: color(display-p3 0.414 0.438 0.404);
    --olive-10: color(display-p3 0.467 0.49 0.458);
    --olive-11: color(display-p3 0.69 0.709 0.682);
    --olive-12: color(display-p3 0.927 0.933 0.926);
    --olive-a1: color(display-p3 0 0 0 / 0);
    --olive-a2: color(display-p3 0.984 0.988 0.976 / 0.03);
    --olive-a3: color(display-p3 0.992 0.996 0.988 / 0.068);
    --olive-a4: color(display-p3 0.953 0.996 0.949 / 0.102);
    --olive-a5: color(display-p3 0.969 1 0.965 / 0.131);
    --olive-a6: color(display-p3 0.973 1 0.969 / 0.169);
    --olive-a7: color(display-p3 0.98 1 0.961 / 0.228);
    --olive-a8: color(display-p3 0.961 1 0.957 / 0.334);
    --olive-a9: color(display-p3 0.949 1 0.922 / 0.397);
    --olive-a10: color(display-p3 0.953 1 0.941 / 0.452);
    --olive-a11: color(display-p3 0.976 1 0.965 / 0.688);
    --olive-a12: color(display-p3 0.992 1 0.992 / 0.929);

    /* sand */
    --sand-1: color(display-p3 0.067 0.067 0.063);
    --sand-2: color(display-p3 0.098 0.098 0.094);
    --sand-3: color(display-p3 0.135 0.135 0.129);
    --sand-4: color(display-p3 0.164 0.163 0.156);
    --sand-5: color(display-p3 0.193 0.192 0.183);
    --sand-6: color(display-p3 0.23 0.229 0.217);
    --sand-7: color(display-p3 0.285 0.282 0.267);
    --sand-8: color(display-p3 0.384 0.378 0.357);
    --sand-9: color(display-p3 0.434 0.428 0.403);
    --sand-10: color(display-p3 0.487 0.481 0.456);
    --sand-11: color(display-p3 0.707 0.703 0.68);
    --sand-12: color(display-p3 0.933 0.933 0.926);
    --sand-a1: color(display-p3 0 0 0 / 0);
    --sand-a2: color(display-p3 0.992 0.992 0.988 / 0.034);
    --sand-a3: color(display-p3 0.996 0.996 0.992 / 0.072);
    --sand-a4: color(display-p3 0.992 0.992 0.953 / 0.106);
    --sand-a5: color(display-p3 1 1 0.965 / 0.135);
    --sand-a6: color(display-p3 1 0.976 0.929 / 0.177);
    --sand-a7: color(display-p3 1 0.984 0.929 / 0.236);
    --sand-a8: color(display-p3 1 0.976 0.925 / 0.341);
    --sand-a9: color(display-p3 1 0.98 0.925 / 0.395);
    --sand-a10: color(display-p3 1 0.992 0.933 / 0.45);
    --sand-a11: color(display-p3 1 0.996 0.961 / 0.685);
    --sand-a12: color(display-p3 1 1 0.992 / 0.929);

    /* gold */
    --gold-1: color(display-p3 0.071 0.071 0.067);
    --gold-2: color(display-p3 0.104 0.101 0.09);
    --gold-3: color(display-p3 0.141 0.136 0.122);
    --gold-4: color(display-p3 0.177 0.17 0.152);
    --gold-5: color(display-p3 0.217 0.207 0.185);
    --gold-6: color(display-p3 0.265 0.252 0.225);
    --gold-7: color(display-p3 0.327 0.31 0.277);
    --gold-8: color(display-p3 0.407 0.384 0.342);
    --gold-9: color(display-p3 0.579 0.517 0.41);
    --gold-10: color(display-p3 0.628 0.566 0.463);
    --gold-11: color(display-p3 0.784 0.728 0.635);
    --gold-12: color(display-p3 0.906 0.887 0.855);
    --gold-a1: color(display-p3 0.855 0.855 0.071 / 0.005);
    --gold-a2: color(display-p3 0.98 0.89 0.616 / 0.043);
    --gold-a3: color(display-p3 1 0.949 0.753 / 0.08);
    --gold-a4: color(display-p3 1 0.933 0.8 / 0.118);
    --gold-a5: color(display-p3 1 0.949 0.804 / 0.16);
    --gold-a6: color(display-p3 1 0.925 0.8 / 0.215);
    --gold-a7: color(display-p3 1 0.945 0.831 / 0.278);
    --gold-a8: color(display-p3 1 0.937 0.82 / 0.366);
    --gold-a9: color(display-p3 0.996 0.882 0.69 / 0.551);
    --gold-a10: color(display-p3 1 0.894 0.725 / 0.601);
    --gold-a11: color(display-p3 0.784 0.728 0.635);
    --gold-a12: color(display-p3 0.906 0.887 0.855);

    /* bronze */
    --bronze-1: color(display-p3 0.076 0.067 0.063);
    --bronze-2: color(display-p3 0.106 0.097 0.093);
    --bronze-3: color(display-p3 0.147 0.132 0.125);
    --bronze-4: color(display-p3 0.185 0.166 0.156);
    --bronze-5: color(display-p3 0.227 0.202 0.19);
    --bronze-6: color(display-p3 0.278 0.246 0.23);
    --bronze-7: color(display-p3 0.343 0.302 0.281);
    --bronze-8: color(display-p3 0.426 0.374 0.347);
    --bronze-9: color(display-p3 0.611 0.507 0.455);
    --bronze-10: color(display-p3 0.66 0.556 0.504);
    --bronze-11: color(display-p3 0.81 0.707 0.655);
    --bronze-12: color(display-p3 0.921 0.88 0.854);
    --bronze-a1: color(display-p3 0.941 0.067 0 / 0.009);
    --bronze-a2: color(display-p3 0.98 0.8 0.706 / 0.043);
    --bronze-a3: color(display-p3 0.988 0.851 0.761 / 0.085);
    --bronze-a4: color(display-p3 0.996 0.839 0.78 / 0.127);
    --bronze-a5: color(display-p3 0.996 0.863 0.773 / 0.173);
    --bronze-a6: color(display-p3 1 0.863 0.796 / 0.227);
    --bronze-a7: color(display-p3 1 0.867 0.8 / 0.295);
    --bronze-a8: color(display-p3 1 0.859 0.788 / 0.387);
    --bronze-a9: color(display-p3 1 0.82 0.733 / 0.585);
    --bronze-a10: color(display-p3 1 0.839 0.761 / 0.635);
    --bronze-a11: color(display-p3 0.81 0.707 0.655);
    --bronze-a12: color(display-p3 0.921 0.88 0.854);

    /* black-alpha */
    --black-a1: color(display-p3 0 0 0 / 0.05);
    --black-a2: color(display-p3 0 0 0 / 0.1);
    --black-a3: color(display-p3 0 0 0 / 0.15);
    --black-a4: color(display-p3 0 0 0 / 0.2);
    --black-a5: color(display-p3 0 0 0 / 0.3);
    --black-a6: color(display-p3 0 0 0 / 0.4);
    --black-a7: color(display-p3 0 0 0 / 0.5);
    --black-a8: color(display-p3 0 0 0 / 0.6);
    --black-a9: color(display-p3 0 0 0 / 0.7);
    --black-a10: color(display-p3 0 0 0 / 0.8);
    --black-a11: color(display-p3 0 0 0 / 0.9);
    --black-a12: color(display-p3 0 0 0 / 0.95);

    /* white-alpha */
    --white-a1: color(display-p3 1 1 1 / 0.05);
    --white-a2: color(display-p3 1 1 1 / 0.1);
    --white-a3: color(display-p3 1 1 1 / 0.15);
    --white-a4: color(display-p3 1 1 1 / 0.2);
    --white-a5: color(display-p3 1 1 1 / 0.3);
    --white-a6: color(display-p3 1 1 1 / 0.4);
    --white-a7: color(display-p3 1 1 1 / 0.5);
    --white-a8: color(display-p3 1 1 1 / 0.6);
    --white-a9: color(display-p3 1 1 1 / 0.7);
    --white-a10: color(display-p3 1 1 1 / 0.8);
    --white-a11: color(display-p3 1 1 1 / 0.9);
    --white-a12: color(display-p3 1 1 1 / 0.95);
    }
  }
}

/* ================================================================== */
/*  Light theme                                                        */
/* ================================================================== */

:root.light {

  /* tomato */
  --tomato-1: #fffcfc;
  --tomato-2: #fff8f7;
  --tomato-3: #feebe7;
  --tomato-4: #ffdcd3;
  --tomato-5: #ffcdc2;
  --tomato-6: #fdbdaf;
  --tomato-7: #f5a898;
  --tomato-8: #ec8e7b;
  --tomato-9: #e54d2e;
  --tomato-10: #dd4425;
  --tomato-11: #d13415;
  --tomato-12: #5c271f;
  --tomato-a1: #ff000003;
  --tomato-a2: #ff200008;
  --tomato-a3: #f52b0018;
  --tomato-a4: #ff35002c;
  --tomato-a5: #ff2e003d;
  --tomato-a6: #f92d0050;
  --tomato-a7: #e7280067;
  --tomato-a8: #db250084;
  --tomato-a9: #df2600d1;
  --tomato-a10: #d72400da;
  --tomato-a11: #cd2200ea;
  --tomato-a12: #460900e0;

  /* red */
  --red-1: #fffcfc;
  --red-2: #fff7f7;
  --red-3: #feebec;
  --red-4: #ffdbdc;
  --red-5: #ffcdce;
  --red-6: #fdbdbe;
  --red-7: #f4a9aa;
  --red-8: #eb8e90;
  --red-9: #e5484d;
  --red-10: #dc3e42;
  --red-11: #ce2c31;
  --red-12: #641723;
  --red-a1: #ff000003;
  --red-a2: #ff000008;
  --red-a3: #f3000d14;
  --red-a4: #ff000824;
  --red-a5: #ff000632;
  --red-a6: #f8000442;
  --red-a7: #df000356;
  --red-a8: #d2000571;
  --red-a9: #db0007b7;
  --red-a10: #d10005c1;
  --red-a11: #c40006d3;
  --red-a12: #55000de8;

  /* crimson */
  --crimson-1: #fffcfd;
  --crimson-2: #fef7f9;
  --crimson-3: #ffe9f0;
  --crimson-4: #fedce7;
  --crimson-5: #facedd;
  --crimson-6: #f3bed1;
  --crimson-7: #eaacc3;
  --crimson-8: #e093b2;
  --crimson-9: #e93d82;
  --crimson-10: #df3478;
  --crimson-11: #cb1d63;
  --crimson-12: #621639;
  --crimson-a1: #ff005503;
  --crimson-a2: #e0004008;
  --crimson-a3: #ff005216;
  --crimson-a4: #f8005123;
  --crimson-a5: #e5004f31;
  --crimson-a6: #d0004b41;
  --crimson-a7: #bf004753;
  --crimson-a8: #b6004a6c;
  --crimson-a9: #e2005bc2;
  --crimson-a10: #d70056cb;
  --crimson-a11: #c4004fe2;
  --crimson-a12: #530026e9;

  /* pink */
  --pink-1: #fffcfe;
  --pink-2: #fef7fb;
  --pink-3: #fee9f5;
  --pink-4: #fbdcef;
  --pink-5: #f6cee7;
  --pink-6: #efbfdd;
  --pink-7: #e7acd0;
  --pink-8: #dd93c2;
  --pink-9: #d6409f;
  --pink-10: #cf3897;
  --pink-11: #c2298a;
  --pink-12: #651249;
  --pink-a1: #ff00aa03;
  --pink-a2: #e0008008;
  --pink-a3: #f4008c16;
  --pink-a4: #e2008b23;
  --pink-a5: #d1008331;
  --pink-a6: #c0007840;
  --pink-a7: #b6006f53;
  --pink-a8: #af006f6c;
  --pink-a9: #c8007fbf;
  --pink-a10: #c2007ac7;
  --pink-a11: #b60074d6;
  --pink-a12: #59003bed;

  /* plum */
  --plum-1: #fefcff;
  --plum-2: #fdf7fd;
  --plum-3: #fbebfb;
  --plum-4: #f7def8;
  --plum-5: #f2d1f3;
  --plum-6: #e9c2ec;
  --plum-7: #deade3;
  --plum-8: #cf91d8;
  --plum-9: #ab4aba;
  --plum-10: #a144af;
  --plum-11: #953ea3;
  --plum-12: #53195d;
  --plum-a1: #aa00ff03;
  --plum-a2: #c000c008;
  --plum-a3: #cc00cc14;
  --plum-a4: #c200c921;
  --plum-a5: #b700bd2e;
  --plum-a6: #a400b03d;
  --plum-a7: #9900a852;
  --plum-a8: #9000a56e;
  --plum-a9: #89009eb5;
  --plum-a10: #7f0092bb;
  --plum-a11: #730086c1;
  --plum-a12: #40004be6;

  /* purple */
  --purple-1: #fefcfe;
  --purple-2: #fbf7fe;
  --purple-3: #f7edfe;
  --purple-4: #f2e2fc;
  --purple-5: #ead5f9;
  --purple-6: #e0c4f4;
  --purple-7: #d1afec;
  --purple-8: #be93e4;
  --purple-9: #8e4ec6;
  --purple-10: #8347b9;
  --purple-11: #8145b5;
  --purple-12: #402060;
  --purple-a1: #aa00aa03;
  --purple-a2: #8000e008;
  --purple-a3: #8e00f112;
  --purple-a4: #8d00e51d;
  --purple-a5: #8000db2a;
  --purple-a6: #7a01d03b;
  --purple-a7: #6d00c350;
  --purple-a8: #6600c06c;
  --purple-a9: #5c00adb1;
  --purple-a10: #53009eb8;
  --purple-a11: #52009aba;
  --purple-a12: #250049df;

  /* violet */
  --violet-1: #fdfcfe;
  --violet-2: #faf8ff;
  --violet-3: #f4f0fe;
  --violet-4: #ebe4ff;
  --violet-5: #e1d9ff;
  --violet-6: #d4cafe;
  --violet-7: #c2b5f5;
  --violet-8: #aa99ec;
  --violet-9: #6e56cf;
  --violet-10: #654dc4;
  --violet-11: #6550b9;
  --violet-12: #2f265f;
  --violet-a1: #5500aa03;
  --violet-a2: #4900ff07;
  --violet-a3: #4400ee0f;
  --violet-a4: #4300ff1b;
  --violet-a5: #3600ff26;
  --violet-a6: #3100fb35;
  --violet-a7: #2d01dd4a;
  --violet-a8: #2b00d066;
  --violet-a9: #2400b7a9;
  --violet-a10: #2300abb2;
  --violet-a11: #1f0099af;
  --violet-a12: #0b0043d9;

  /* indigo */
  --indigo-1: #fdfdfe;
  --indigo-2: #f7f9ff;
  --indigo-3: #edf2fe;
  --indigo-4: #e1e9ff;
  --indigo-5: #d2deff;
  --indigo-6: #c1d0ff;
  --indigo-7: #abbdf9;
  --indigo-8: #8da4ef;
  --indigo-9: #3e63dd;
  --indigo-10: #3358d4;
  --indigo-11: #3a5bc7;
  --indigo-12: #1f2d5c;
  --indigo-a1: #00008002;
  --indigo-a2: #0040ff08;
  --indigo-a3: #0047f112;
  --indigo-a4: #0044ff1e;
  --indigo-a5: #0044ff2d;
  --indigo-a6: #003eff3e;
  --indigo-a7: #0037ed54;
  --indigo-a8: #0034dc72;
  --indigo-a9: #0031d2c1;
  --indigo-a10: #002ec9cc;
  --indigo-a11: #002bb7c5;
  --indigo-a12: #001046e0;

  /* blue */
  --blue-1: #fbfdff;
  --blue-2: #f4faff;
  --blue-3: #e6f4fe;
  --blue-4: #d5efff;
  --blue-5: #c2e5ff;
  --blue-6: #acd8fc;
  --blue-7: #8ec8f6;
  --blue-8: #5eb1ef;
  --blue-9: #0090ff;
  --blue-10: #0588f0;
  --blue-11: #0d74ce;
  --blue-12: #113264;
  --blue-a1: #0080ff04;
  --blue-a2: #008cff0b;
  --blue-a3: #008ff519;
  --blue-a4: #009eff2a;
  --blue-a5: #0093ff3d;
  --blue-a6: #0088f653;
  --blue-a7: #0083eb71;
  --blue-a8: #0084e6a1;
  --blue-a9: #0090ff;
  --blue-a10: #0086f0fa;
  --blue-a11: #006dcbf2;
  --blue-a12: #002359ee;

  /* cyan */
  --cyan-1: #fafdfe;
  --cyan-2: #f2fafb;
  --cyan-3: #def7f9;
  --cyan-4: #caf1f6;
  --cyan-5: #b5e9f0;
  --cyan-6: #9ddde7;
  --cyan-7: #7dcedc;
  --cyan-8: #3db9cf;
  --cyan-9: #00a2c7;
  --cyan-10: #0797b9;
  --cyan-11: #107d98;
  --cyan-12: #0d3c48;
  --cyan-a1: #0099cc05;
  --cyan-a2: #009db10d;
  --cyan-a3: #00c2d121;
  --cyan-a4: #00bcd435;
  --cyan-a5: #01b4cc4a;
  --cyan-a6: #00a7c162;
  --cyan-a7: #009fbb82;
  --cyan-a8: #00a3c0c2;
  --cyan-a9: #00a2c7;
  --cyan-a10: #0094b7f8;
  --cyan-a11: #007491ef;
  --cyan-a12: #00323ef2;

  /* teal */
  --teal-1: #fafefd;
  --teal-2: #f3fbf9;
  --teal-3: #e0f8f3;
  --teal-4: #ccf3ea;
  --teal-5: #b8eae0;
  --teal-6: #a1ded2;
  --teal-7: #83cdc1;
  --teal-8: #53b9ab;
  --teal-9: #12a594;
  --teal-10: #0d9b8a;
  --teal-11: #008573;
  --teal-12: #0d3d38;
  --teal-a1: #00cc9905;
  --teal-a2: #00aa800c;
  --teal-a3: #00c69d1f;
  --teal-a4: #00c39633;
  --teal-a5: #00b49047;
  --teal-a6: #00a6855e;
  --teal-a7: #0099807c;
  --teal-a8: #009783ac;
  --teal-a9: #009e8ced;
  --teal-a10: #009684f2;
  --teal-a11: #008573;
  --teal-a12: #00332df2;

  /* green */
  --green-1: #fbfefc;
  --green-2: #f4fbf6;
  --green-3: #e6f6eb;
  --green-4: #d6f1df;
  --green-5: #c4e8d1;
  --green-6: #adddc0;
  --green-7: #8eceaa;
  --green-8: #5bb98b;
  --green-9: #30a46c;
  --green-10: #2b9a66;
  --green-11: #218358;
  --green-12: #193b2d;
  --green-a1: #00c04004;
  --green-a2: #00a32f0b;
  --green-a3: #00a43319;
  --green-a4: #00a83829;
  --green-a5: #019c393b;
  --green-a6: #00963c52;
  --green-a7: #00914071;
  --green-a8: #00924ba4;
  --green-a9: #008f4acf;
  --green-a10: #008647d4;
  --green-a11: #00713fde;
  --green-a12: #002616e6;

  /* grass */
  --grass-1: #fbfefb;
  --grass-2: #f5fbf5;
  --grass-3: #e9f6e9;
  --grass-4: #daf1db;
  --grass-5: #c9e8ca;
  --grass-6: #b2ddb5;
  --grass-7: #94ce9a;
  --grass-8: #65ba74;
  --grass-9: #46a758;
  --grass-10: #3e9b4f;
  --grass-11: #2a7e3b;
  --grass-12: #203c25;
  --grass-a1: #00c00004;
  --grass-a2: #0099000a;
  --grass-a3: #00970016;
  --grass-a4: #009f0725;
  --grass-a5: #00930536;
  --grass-a6: #008f0a4d;
  --grass-a7: #018b0f6b;
  --grass-a8: #008d199a;
  --grass-a9: #008619b9;
  --grass-a10: #007b17c1;
  --grass-a11: #006514d5;
  --grass-a12: #002006df;

  /* orange */
  --orange-1: #fefcfb;
  --orange-2: #fff7ed;
  --orange-3: #ffefd6;
  --orange-4: #ffdfb5;
  --orange-5: #ffd19a;
  --orange-6: #ffc182;
  --orange-7: #f5ae73;
  --orange-8: #ec9455;
  --orange-9: #f76b15;
  --orange-10: #ef5f00;
  --orange-11: #cc4e00;
  --orange-12: #582d1d;
  --orange-a1: #c0400004;
  --orange-a2: #ff8e0012;
  --orange-a3: #ff9c0029;
  --orange-a4: #ff91014a;
  --orange-a5: #ff8b0065;
  --orange-a6: #ff81007d;
  --orange-a7: #ed6c008c;
  --orange-a8: #e35f00aa;
  --orange-a9: #f65e00ea;
  --orange-a10: #ef5f00;
  --orange-a11: #cc4e00;
  --orange-a12: #431200e2;

  /* brown */
  --brown-1: #fefdfc;
  --brown-2: #fcf9f6;
  --brown-3: #f6eee7;
  --brown-4: #f0e4d9;
  --brown-5: #ebdaca;
  --brown-6: #e4cdb7;
  --brown-7: #dcbc9f;
  --brown-8: #cea37e;
  --brown-9: #ad7f58;
  --brown-10: #a07553;
  --brown-11: #815e46;
  --brown-12: #3e332e;
  --brown-a1: #aa550003;
  --brown-a2: #aa550009;
  --brown-a3: #a04b0018;
  --brown-a4: #9b4a0026;
  --brown-a5: #9f4d0035;
  --brown-a6: #a04e0048;
  --brown-a7: #a34e0060;
  --brown-a8: #9f4a0081;
  --brown-a9: #823c00a7;
  --brown-a10: #723300ac;
  --brown-a11: #522100b9;
  --brown-a12: #140600d1;

  /* sky */
  --sky-1: #f9feff;
  --sky-2: #f1fafd;
  --sky-3: #e1f6fd;
  --sky-4: #d1f0fa;
  --sky-5: #bee7f5;
  --sky-6: #a9daed;
  --sky-7: #8dcae3;
  --sky-8: #60b3d7;
  --sky-9: #7ce2fe;
  --sky-10: #74daf8;
  --sky-11: #00749e;
  --sky-12: #1d3e56;
  --sky-a1: #00d5ff06;
  --sky-a2: #00a4db0e;
  --sky-a3: #00b3ee1e;
  --sky-a4: #00ace42e;
  --sky-a5: #00a1d841;
  --sky-a6: #0092ca56;
  --sky-a7: #0089c172;
  --sky-a8: #0085bf9f;
  --sky-a9: #00c7fe83;
  --sky-a10: #00bcf38b;
  --sky-a11: #00749e;
  --sky-a12: #002540e2;

  /* mint */
  --mint-1: #f9fefd;
  --mint-2: #f2fbf9;
  --mint-3: #ddf9f2;
  --mint-4: #c8f4e9;
  --mint-5: #b3ecde;
  --mint-6: #9ce0d0;
  --mint-7: #7ecfbd;
  --mint-8: #4cbba5;
  --mint-9: #86ead4;
  --mint-10: #7de0cb;
  --mint-11: #027864;
  --mint-12: #16433c;
  --mint-a1: #00d5aa06;
  --mint-a2: #00b18a0d;
  --mint-a3: #00d29e22;
  --mint-a4: #00cc9937;
  --mint-a5: #00c0914c;
  --mint-a6: #00b08663;
  --mint-a7: #00a17d81;
  --mint-a8: #009e7fb3;
  --mint-a9: #00d3a579;
  --mint-a10: #00c39982;
  --mint-a11: #007763fd;
  --mint-a12: #00312ae9;

  /* lime */
  --lime-1: #fcfdfa;
  --lime-2: #f8faf3;
  --lime-3: #eef6d6;
  --lime-4: #e2f0bd;
  --lime-5: #d3e7a6;
  --lime-6: #c2da91;
  --lime-7: #abc978;
  --lime-8: #8db654;
  --lime-9: #bdee63;
  --lime-10: #b0e64c;
  --lime-11: #5c7c2f;
  --lime-12: #37401c;
  --lime-a1: #66990005;
  --lime-a2: #6b95000c;
  --lime-a3: #96c80029;
  --lime-a4: #8fc60042;
  --lime-a5: #81bb0059;
  --lime-a6: #72aa006e;
  --lime-a7: #61990087;
  --lime-a8: #559200ab;
  --lime-a9: #93e4009c;
  --lime-a10: #8fdc00b3;
  --lime-a11: #375f00d0;
  --lime-a12: #1e2900e3;

  /* yellow */
  --yellow-1: #fdfdf9;
  --yellow-2: #fefce9;
  --yellow-3: #fffab8;
  --yellow-4: #fff394;
  --yellow-5: #ffe770;
  --yellow-6: #f3d768;
  --yellow-7: #e4c767;
  --yellow-8: #d5ae39;
  --yellow-9: #ffe629;
  --yellow-10: #ffdc00;
  --yellow-11: #9e6c00;
  --yellow-12: #473b1f;
  --yellow-a1: #aaaa0006;
  --yellow-a2: #f4dd0016;
  --yellow-a3: #ffee0047;
  --yellow-a4: #ffe3016b;
  --yellow-a5: #ffd5008f;
  --yellow-a6: #ebbc0097;
  --yellow-a7: #d2a10098;
  --yellow-a8: #c99700c6;
  --yellow-a9: #ffe100d6;
  --yellow-a10: #ffdc00;
  --yellow-a11: #9e6c00;
  --yellow-a12: #2e2000e0;

  /* amber */
  --amber-1: #fefdfb;
  --amber-2: #fefbe9;
  --amber-3: #fff7c2;
  --amber-4: #ffee9c;
  --amber-5: #fbe577;
  --amber-6: #f3d673;
  --amber-7: #e9c162;
  --amber-8: #e2a336;
  --amber-9: #ffc53d;
  --amber-10: #ffba18;
  --amber-11: #ab6400;
  --amber-12: #4f3422;
  --amber-a1: #c0800004;
  --amber-a2: #f4d10016;
  --amber-a3: #ffde003d;
  --amber-a4: #ffd40063;
  --amber-a5: #f8cf0088;
  --amber-a6: #eab5008c;
  --amber-a7: #dc9b009d;
  --amber-a8: #da8a00c9;
  --amber-a9: #ffb300c2;
  --amber-a10: #ffb300e7;
  --amber-a11: #ab6400;
  --amber-a12: #341500dd;

  /* gray */
  --gray-1: #fcfcfc;
  --gray-2: #f9f9f9;
  --gray-3: #f0f0f0;
  --gray-4: #e8e8e8;
  --gray-5: #e0e0e0;
  --gray-6: #d9d9d9;
  --gray-7: #cecece;
  --gray-8: #bbbbbb;
  --gray-9: #8d8d8d;
  --gray-10: #838383;
  --gray-11: #646464;
  --gray-12: #202020;
  --gray-a1: #00000003;
  --gray-a2: #00000006;
  --gray-a3: #0000000f;
  --gray-a4: #00000017;
  --gray-a5: #0000001f;
  --gray-a6: #00000026;
  --gray-a7: #00000031;
  --gray-a8: #00000044;
  --gray-a9: #00000072;
  --gray-a10: #0000007c;
  --gray-a11: #0000009b;
  --gray-a12: #000000df;

  /* mauve */
  --mauve-1: #fdfcfd;
  --mauve-2: #faf9fb;
  --mauve-3: #f2eff3;
  --mauve-4: #eae7ec;
  --mauve-5: #e3dfe6;
  --mauve-6: #dbd8e0;
  --mauve-7: #d0cdd7;
  --mauve-8: #bcbac7;
  --mauve-9: #8e8c99;
  --mauve-10: #84828e;
  --mauve-11: #65636d;
  --mauve-12: #211f26;
  --mauve-a1: #55005503;
  --mauve-a2: #2b005506;
  --mauve-a3: #30004010;
  --mauve-a4: #20003618;
  --mauve-a5: #20003820;
  --mauve-a6: #14003527;
  --mauve-a7: #10003332;
  --mauve-a8: #08003145;
  --mauve-a9: #05001d73;
  --mauve-a10: #0500197d;
  --mauve-a11: #0400119c;
  --mauve-a12: #020008e0;

  /* slate */
  --slate-1: #fcfcfd;
  --slate-2: #f9f9fb;
  --slate-3: #f0f0f3;
  --slate-4: #e8e8ec;
  --slate-5: #e0e1e6;
  --slate-6: #d9d9e0;
  --slate-7: #cdced6;
  --slate-8: #b9bbc6;
  --slate-9: #8b8d98;
  --slate-10: #80838d;
  --slate-11: #60646c;
  --slate-12: #1c2024;
  --slate-a1: #00005503;
  --slate-a2: #00005506;
  --slate-a3: #0000330f;
  --slate-a4: #00002d17;
  --slate-a5: #0009321f;
  --slate-a6: #00002f26;
  --slate-a7: #00062e32;
  --slate-a8: #00083046;
  --slate-a9: #00051d74;
  --slate-a10: #00071b7f;
  --slate-a11: #0007149f;
  --slate-a12: #000509e3;

  /* sage */
  --sage-1: #fbfdfc;
  --sage-2: #f7f9f8;
  --sage-3: #eef1f0;
  --sage-4: #e6e9e8;
  --sage-5: #dfe2e0;
  --sage-6: #d7dad9;
  --sage-7: #cbcfcd;
  --sage-8: #b8bcba;
  --sage-9: #868e8b;
  --sage-10: #7c8481;
  --sage-11: #5f6563;
  --sage-12: #1a211e;
  --sage-a1: #00804004;
  --sage-a2: #00402008;
  --sage-a3: #002d1e11;
  --sage-a4: #001f1519;
  --sage-a5: #00180820;
  --sage-a6: #00140d28;
  --sage-a7: #00140a34;
  --sage-a8: #000f0847;
  --sage-a9: #00110b79;
  --sage-a10: #00100a83;
  --sage-a11: #000a07a0;
  --sage-a12: #000805e5;

  /* olive */
  --olive-1: #fcfdfc;
  --olive-2: #f8faf8;
  --olive-3: #eff1ef;
  --olive-4: #e7e9e7;
  --olive-5: #dfe2df;
  --olive-6: #d7dad7;
  --olive-7: #cccfcc;
  --olive-8: #b9bcb8;
  --olive-9: #898e87;
  --olive-10: #7f847d;
  --olive-11: #60655f;
  --olive-12: #1d211c;
  --olive-a1: #00550003;
  --olive-a2: #00490007;
  --olive-a3: #00200010;
  --olive-a4: #00160018;
  --olive-a5: #00180020;
  --olive-a6: #00140028;
  --olive-a7: #000f0033;
  --olive-a8: #040f0047;
  --olive-a9: #050f0078;
  --olive-a10: #040e0082;
  --olive-a11: #020a00a0;
  --olive-a12: #010600e3;

  /* sand */
  --sand-1: #fdfdfc;
  --sand-2: #f9f9f8;
  --sand-3: #f1f0ef;
  --sand-4: #e9e8e6;
  --sand-5: #e2e1de;
  --sand-6: #dad9d6;
  --sand-7: #cfceca;
  --sand-8: #bcbbb5;
  --sand-9: #8d8d86;
  --sand-10: #82827c;
  --sand-11: #63635e;
  --sand-12: #21201c;
  --sand-a1: #55550003;
  --sand-a2: #25250007;
  --sand-a3: #20100010;
  --sand-a4: #1f150019;
  --sand-a5: #1f180021;
  --sand-a6: #19130029;
  --sand-a7: #19140035;
  --sand-a8: #1915014a;
  --sand-a9: #0f0f0079;
  --sand-a10: #0c0c0083;
  --sand-a11: #080800a1;
  --sand-a12: #060500e3;

  /* gold */
  --gold-1: #fdfdfc;
  --gold-2: #faf9f2;
  --gold-3: #f2f0e7;
  --gold-4: #eae6db;
  --gold-5: #e1dccf;
  --gold-6: #d8d0bf;
  --gold-7: #cbc0aa;
  --gold-8: #b9a88d;
  --gold-9: #978365;
  --gold-10: #8c7a5e;
  --gold-11: #71624b;
  --gold-12: #3b352b;
  --gold-a1: #55550003;
  --gold-a2: #9d8a000d;
  --gold-a3: #75600018;
  --gold-a4: #6b4e0024;
  --gold-a5: #60460030;
  --gold-a6: #64440040;
  --gold-a7: #63420055;
  --gold-a8: #633d0072;
  --gold-a9: #5332009a;
  --gold-a10: #492d00a1;
  --gold-a11: #362100b4;
  --gold-a12: #130c00d4;

  /* bronze */
  --bronze-1: #fdfcfc;
  --bronze-2: #fdf7f5;
  --bronze-3: #f6edea;
  --bronze-4: #efe4df;
  --bronze-5: #e7d9d3;
  --bronze-6: #dfcdc5;
  --bronze-7: #d3bcb3;
  --bronze-8: #c2a499;
  --bronze-9: #a18072;
  --bronze-10: #957468;
  --bronze-11: #7d5e54;
  --bronze-12: #43302b;
  --bronze-a1: #55000003;
  --bronze-a2: #cc33000a;
  --bronze-a3: #92250015;
  --bronze-a4: #80280020;
  --bronze-a5: #7423002c;
  --bronze-a6: #7324003a;
  --bronze-a7: #6c1f004c;
  --bronze-a8: #671c0066;
  --bronze-a9: #551a008d;
  --bronze-a10: #4c150097;
  --bronze-a11: #3d0f00ab;
  --bronze-a12: #1d0600d4;

  /* black-alpha */
  --black-a1: rgba(0, 0, 0, 0.05);
  --black-a2: rgba(0, 0, 0, 0.1);
  --black-a3: rgba(0, 0, 0, 0.15);
  --black-a4: rgba(0, 0, 0, 0.2);
  --black-a5: rgba(0, 0, 0, 0.3);
  --black-a6: rgba(0, 0, 0, 0.4);
  --black-a7: rgba(0, 0, 0, 0.5);
  --black-a8: rgba(0, 0, 0, 0.6);
  --black-a9: rgba(0, 0, 0, 0.7);
  --black-a10: rgba(0, 0, 0, 0.8);
  --black-a11: rgba(0, 0, 0, 0.9);
  --black-a12: rgba(0, 0, 0, 0.95);

  /* white-alpha */
  --white-a1: rgba(255, 255, 255, 0.05);
  --white-a2: rgba(255, 255, 255, 0.1);
  --white-a3: rgba(255, 255, 255, 0.15);
  --white-a4: rgba(255, 255, 255, 0.2);
  --white-a5: rgba(255, 255, 255, 0.3);
  --white-a6: rgba(255, 255, 255, 0.4);
  --white-a7: rgba(255, 255, 255, 0.5);
  --white-a8: rgba(255, 255, 255, 0.6);
  --white-a9: rgba(255, 255, 255, 0.7);
  --white-a10: rgba(255, 255, 255, 0.8);
  --white-a11: rgba(255, 255, 255, 0.9);
  --white-a12: rgba(255, 255, 255, 0.95);
}

@supports (color: color(display-p3 1 1 1)) {
  @media (color-gamut: p3) {
    :root.light {

    /* tomato */
    --tomato-1: color(display-p3 0.998 0.989 0.988);
    --tomato-2: color(display-p3 0.994 0.974 0.969);
    --tomato-3: color(display-p3 0.985 0.924 0.909);
    --tomato-4: color(display-p3 0.996 0.868 0.835);
    --tomato-5: color(display-p3 0.98 0.812 0.77);
    --tomato-6: color(display-p3 0.953 0.75 0.698);
    --tomato-7: color(display-p3 0.917 0.673 0.611);
    --tomato-8: color(display-p3 0.875 0.575 0.502);
    --tomato-9: color(display-p3 0.831 0.345 0.231);
    --tomato-10: color(display-p3 0.802 0.313 0.2);
    --tomato-11: color(display-p3 0.755 0.259 0.152);
    --tomato-12: color(display-p3 0.335 0.165 0.132);
    --tomato-a1: color(display-p3 0.675 0.024 0.024 / 0.012);
    --tomato-a2: color(display-p3 0.757 0.145 0.02 / 0.032);
    --tomato-a3: color(display-p3 0.831 0.184 0.012 / 0.091);
    --tomato-a4: color(display-p3 0.976 0.192 0.004 / 0.165);
    --tomato-a5: color(display-p3 0.918 0.192 0.004 / 0.232);
    --tomato-a6: color(display-p3 0.847 0.173 0.004 / 0.302);
    --tomato-a7: color(display-p3 0.788 0.165 0.004 / 0.389);
    --tomato-a8: color(display-p3 0.749 0.153 0.004 / 0.499);
    --tomato-a9: color(display-p3 0.78 0.149 0 / 0.769);
    --tomato-a10: color(display-p3 0.757 0.141 0 / 0.8);
    --tomato-a11: color(display-p3 0.755 0.259 0.152);
    --tomato-a12: color(display-p3 0.335 0.165 0.132);

    /* red */
    --red-1: color(display-p3 0.998 0.989 0.988);
    --red-2: color(display-p3 0.995 0.971 0.971);
    --red-3: color(display-p3 0.985 0.925 0.925);
    --red-4: color(display-p3 0.999 0.866 0.866);
    --red-5: color(display-p3 0.984 0.812 0.811);
    --red-6: color(display-p3 0.955 0.751 0.749);
    --red-7: color(display-p3 0.915 0.675 0.672);
    --red-8: color(display-p3 0.872 0.575 0.572);
    --red-9: color(display-p3 0.83 0.329 0.324);
    --red-10: color(display-p3 0.798 0.294 0.285);
    --red-11: color(display-p3 0.744 0.234 0.222);
    --red-12: color(display-p3 0.36 0.115 0.143);
    --red-a1: color(display-p3 0.675 0.024 0.024 / 0.012);
    --red-a2: color(display-p3 0.863 0.024 0.024 / 0.028);
    --red-a3: color(display-p3 0.792 0.008 0.008 / 0.075);
    --red-a4: color(display-p3 1 0.008 0.008 / 0.134);
    --red-a5: color(display-p3 0.918 0.008 0.008 / 0.189);
    --red-a6: color(display-p3 0.831 0.02 0.004 / 0.251);
    --red-a7: color(display-p3 0.741 0.016 0.004 / 0.33);
    --red-a8: color(display-p3 0.698 0.012 0.004 / 0.428);
    --red-a9: color(display-p3 0.749 0.008 0 / 0.675);
    --red-a10: color(display-p3 0.714 0.012 0 / 0.714);
    --red-a11: color(display-p3 0.744 0.234 0.222);
    --red-a12: color(display-p3 0.36 0.115 0.143);

    /* crimson */
    --crimson-1: color(display-p3 0.998 0.989 0.992);
    --crimson-2: color(display-p3 0.991 0.969 0.976);
    --crimson-3: color(display-p3 0.987 0.917 0.941);
    --crimson-4: color(display-p3 0.975 0.866 0.904);
    --crimson-5: color(display-p3 0.953 0.813 0.864);
    --crimson-6: color(display-p3 0.921 0.755 0.817);
    --crimson-7: color(display-p3 0.88 0.683 0.761);
    --crimson-8: color(display-p3 0.834 0.592 0.694);
    --crimson-9: color(display-p3 0.843 0.298 0.507);
    --crimson-10: color(display-p3 0.807 0.266 0.468);
    --crimson-11: color(display-p3 0.731 0.195 0.388);
    --crimson-12: color(display-p3 0.352 0.111 0.221);
    --crimson-a1: color(display-p3 0.675 0.024 0.349 / 0.012);
    --crimson-a2: color(display-p3 0.757 0.02 0.267 / 0.032);
    --crimson-a3: color(display-p3 0.859 0.008 0.294 / 0.083);
    --crimson-a4: color(display-p3 0.827 0.008 0.298 / 0.134);
    --crimson-a5: color(display-p3 0.753 0.008 0.275 / 0.189);
    --crimson-a6: color(display-p3 0.682 0.004 0.247 / 0.244);
    --crimson-a7: color(display-p3 0.62 0.004 0.251 / 0.318);
    --crimson-a8: color(display-p3 0.6 0.004 0.251 / 0.408);
    --crimson-a9: color(display-p3 0.776 0 0.298 / 0.702);
    --crimson-a10: color(display-p3 0.737 0 0.275 / 0.734);
    --crimson-a11: color(display-p3 0.731 0.195 0.388);
    --crimson-a12: color(display-p3 0.352 0.111 0.221);

    /* pink */
    --pink-1: color(display-p3 0.998 0.989 0.996);
    --pink-2: color(display-p3 0.992 0.97 0.985);
    --pink-3: color(display-p3 0.981 0.917 0.96);
    --pink-4: color(display-p3 0.963 0.867 0.932);
    --pink-5: color(display-p3 0.939 0.815 0.899);
    --pink-6: color(display-p3 0.907 0.756 0.859);
    --pink-7: color(display-p3 0.869 0.683 0.81);
    --pink-8: color(display-p3 0.825 0.59 0.751);
    --pink-9: color(display-p3 0.775 0.297 0.61);
    --pink-10: color(display-p3 0.748 0.27 0.581);
    --pink-11: color(display-p3 0.698 0.219 0.528);
    --pink-12: color(display-p3 0.363 0.101 0.279);
    --pink-a1: color(display-p3 0.675 0.024 0.675 / 0.012);
    --pink-a2: color(display-p3 0.757 0.02 0.51 / 0.032);
    --pink-a3: color(display-p3 0.765 0.008 0.529 / 0.083);
    --pink-a4: color(display-p3 0.737 0.008 0.506 / 0.134);
    --pink-a5: color(display-p3 0.663 0.004 0.451 / 0.185);
    --pink-a6: color(display-p3 0.616 0.004 0.424 / 0.244);
    --pink-a7: color(display-p3 0.596 0.004 0.412 / 0.318);
    --pink-a8: color(display-p3 0.573 0.004 0.404 / 0.412);
    --pink-a9: color(display-p3 0.682 0 0.447 / 0.702);
    --pink-a10: color(display-p3 0.655 0 0.424 / 0.73);
    --pink-a11: color(display-p3 0.698 0.219 0.528);
    --pink-a12: color(display-p3 0.363 0.101 0.279);

    /* plum */
    --plum-1: color(display-p3 0.995 0.988 0.999);
    --plum-2: color(display-p3 0.988 0.971 0.99);
    --plum-3: color(display-p3 0.973 0.923 0.98);
    --plum-4: color(display-p3 0.953 0.875 0.966);
    --plum-5: color(display-p3 0.926 0.825 0.945);
    --plum-6: color(display-p3 0.89 0.765 0.916);
    --plum-7: color(display-p3 0.84 0.686 0.877);
    --plum-8: color(display-p3 0.775 0.58 0.832);
    --plum-9: color(display-p3 0.624 0.313 0.708);
    --plum-10: color(display-p3 0.587 0.29 0.667);
    --plum-11: color(display-p3 0.543 0.263 0.619);
    --plum-12: color(display-p3 0.299 0.114 0.352);
    --plum-a1: color(display-p3 0.675 0.024 1 / 0.012);
    --plum-a2: color(display-p3 0.58 0.024 0.58 / 0.028);
    --plum-a3: color(display-p3 0.655 0.008 0.753 / 0.079);
    --plum-a4: color(display-p3 0.627 0.008 0.722 / 0.126);
    --plum-a5: color(display-p3 0.58 0.004 0.69 / 0.177);
    --plum-a6: color(display-p3 0.537 0.004 0.655 / 0.236);
    --plum-a7: color(display-p3 0.49 0.004 0.616 / 0.314);
    --plum-a8: color(display-p3 0.471 0.004 0.6 / 0.42);
    --plum-a9: color(display-p3 0.451 0 0.576 / 0.687);
    --plum-a10: color(display-p3 0.42 0 0.529 / 0.71);
    --plum-a11: color(display-p3 0.543 0.263 0.619);
    --plum-a12: color(display-p3 0.299 0.114 0.352);

    /* purple */
    --purple-1: color(display-p3 0.995 0.988 0.996);
    --purple-2: color(display-p3 0.983 0.971 0.993);
    --purple-3: color(display-p3 0.963 0.931 0.989);
    --purple-4: color(display-p3 0.937 0.888 0.981);
    --purple-5: color(display-p3 0.904 0.837 0.966);
    --purple-6: color(display-p3 0.86 0.774 0.942);
    --purple-7: color(display-p3 0.799 0.69 0.91);
    --purple-8: color(display-p3 0.719 0.583 0.874);
    --purple-9: color(display-p3 0.523 0.318 0.751);
    --purple-10: color(display-p3 0.483 0.289 0.7);
    --purple-11: color(display-p3 0.473 0.281 0.687);
    --purple-12: color(display-p3 0.234 0.132 0.363);
    --purple-a1: color(display-p3 0.675 0.024 0.675 / 0.012);
    --purple-a2: color(display-p3 0.443 0.024 0.722 / 0.028);
    --purple-a3: color(display-p3 0.506 0.008 0.835 / 0.071);
    --purple-a4: color(display-p3 0.451 0.004 0.831 / 0.114);
    --purple-a5: color(display-p3 0.431 0.004 0.788 / 0.165);
    --purple-a6: color(display-p3 0.384 0.004 0.745 / 0.228);
    --purple-a7: color(display-p3 0.357 0.004 0.71 / 0.31);
    --purple-a8: color(display-p3 0.322 0.004 0.702 / 0.416);
    --purple-a9: color(display-p3 0.298 0 0.639 / 0.683);
    --purple-a10: color(display-p3 0.271 0 0.58 / 0.71);
    --purple-a11: color(display-p3 0.473 0.281 0.687);
    --purple-a12: color(display-p3 0.234 0.132 0.363);

    /* violet */
    --violet-1: color(display-p3 0.991 0.988 0.995);
    --violet-2: color(display-p3 0.978 0.974 0.998);
    --violet-3: color(display-p3 0.953 0.943 0.993);
    --violet-4: color(display-p3 0.916 0.897 1);
    --violet-5: color(display-p3 0.876 0.851 1);
    --violet-6: color(display-p3 0.825 0.793 0.981);
    --violet-7: color(display-p3 0.752 0.712 0.943);
    --violet-8: color(display-p3 0.654 0.602 0.902);
    --violet-9: color(display-p3 0.417 0.341 0.784);
    --violet-10: color(display-p3 0.381 0.306 0.741);
    --violet-11: color(display-p3 0.383 0.317 0.702);
    --violet-12: color(display-p3 0.179 0.15 0.359);
    --violet-a1: color(display-p3 0.349 0.024 0.675 / 0.012);
    --violet-a2: color(display-p3 0.161 0.024 0.863 / 0.028);
    --violet-a3: color(display-p3 0.204 0.004 0.871 / 0.059);
    --violet-a4: color(display-p3 0.196 0.004 1 / 0.102);
    --violet-a5: color(display-p3 0.165 0.008 1 / 0.15);
    --violet-a6: color(display-p3 0.153 0.004 0.906 / 0.208);
    --violet-a7: color(display-p3 0.141 0.004 0.796 / 0.287);
    --violet-a8: color(display-p3 0.133 0.004 0.753 / 0.397);
    --violet-a9: color(display-p3 0.114 0 0.675 / 0.659);
    --violet-a10: color(display-p3 0.11 0 0.627 / 0.695);
    --violet-a11: color(display-p3 0.383 0.317 0.702);
    --violet-a12: color(display-p3 0.179 0.15 0.359);

    /* indigo */
    --indigo-1: color(display-p3 0.992 0.992 0.996);
    --indigo-2: color(display-p3 0.971 0.977 0.998);
    --indigo-3: color(display-p3 0.933 0.948 0.992);
    --indigo-4: color(display-p3 0.885 0.914 1);
    --indigo-5: color(display-p3 0.831 0.87 1);
    --indigo-6: color(display-p3 0.767 0.814 0.995);
    --indigo-7: color(display-p3 0.685 0.74 0.957);
    --indigo-8: color(display-p3 0.569 0.639 0.916);
    --indigo-9: color(display-p3 0.276 0.384 0.837);
    --indigo-10: color(display-p3 0.234 0.343 0.801);
    --indigo-11: color(display-p3 0.256 0.354 0.755);
    --indigo-12: color(display-p3 0.133 0.175 0.348);
    --indigo-a1: color(display-p3 0.02 0.02 0.51 / 0.008);
    --indigo-a2: color(display-p3 0.024 0.161 0.863 / 0.028);
    --indigo-a3: color(display-p3 0.008 0.239 0.886 / 0.067);
    --indigo-a4: color(display-p3 0.004 0.247 1 / 0.114);
    --indigo-a5: color(display-p3 0.004 0.235 1 / 0.169);
    --indigo-a6: color(display-p3 0.004 0.208 0.984 / 0.232);
    --indigo-a7: color(display-p3 0.004 0.176 0.863 / 0.314);
    --indigo-a8: color(display-p3 0.004 0.165 0.812 / 0.432);
    --indigo-a9: color(display-p3 0 0.153 0.773 / 0.726);
    --indigo-a10: color(display-p3 0 0.137 0.737 / 0.765);
    --indigo-a11: color(display-p3 0.256 0.354 0.755);
    --indigo-a12: color(display-p3 0.133 0.175 0.348);

    /* blue */
    --blue-1: color(display-p3 0.986 0.992 0.999);
    --blue-2: color(display-p3 0.96 0.979 0.998);
    --blue-3: color(display-p3 0.912 0.956 0.991);
    --blue-4: color(display-p3 0.853 0.932 1);
    --blue-5: color(display-p3 0.788 0.894 0.998);
    --blue-6: color(display-p3 0.709 0.843 0.976);
    --blue-7: color(display-p3 0.606 0.777 0.947);
    --blue-8: color(display-p3 0.451 0.688 0.917);
    --blue-9: color(display-p3 0.247 0.556 0.969);
    --blue-10: color(display-p3 0.234 0.523 0.912);
    --blue-11: color(display-p3 0.15 0.44 0.84);
    --blue-12: color(display-p3 0.102 0.193 0.379);
    --blue-a1: color(display-p3 0.024 0.514 1 / 0.016);
    --blue-a2: color(display-p3 0.024 0.514 0.906 / 0.04);
    --blue-a3: color(display-p3 0.012 0.506 0.914 / 0.087);
    --blue-a4: color(display-p3 0.008 0.545 1 / 0.146);
    --blue-a5: color(display-p3 0.004 0.502 0.984 / 0.212);
    --blue-a6: color(display-p3 0.004 0.463 0.922 / 0.291);
    --blue-a7: color(display-p3 0.004 0.431 0.863 / 0.393);
    --blue-a8: color(display-p3 0 0.427 0.851 / 0.55);
    --blue-a9: color(display-p3 0 0.412 0.961 / 0.753);
    --blue-a10: color(display-p3 0 0.376 0.886 / 0.765);
    --blue-a11: color(display-p3 0.15 0.44 0.84);
    --blue-a12: color(display-p3 0.102 0.193 0.379);

    /* cyan */
    --cyan-1: color(display-p3 0.982 0.992 0.996);
    --cyan-2: color(display-p3 0.955 0.981 0.984);
    --cyan-3: color(display-p3 0.888 0.965 0.975);
    --cyan-4: color(display-p3 0.821 0.941 0.959);
    --cyan-5: color(display-p3 0.751 0.907 0.935);
    --cyan-6: color(display-p3 0.671 0.862 0.9);
    --cyan-7: color(display-p3 0.564 0.8 0.854);
    --cyan-8: color(display-p3 0.388 0.715 0.798);
    --cyan-9: color(display-p3 0.282 0.627 0.765);
    --cyan-10: color(display-p3 0.264 0.583 0.71);
    --cyan-11: color(display-p3 0.08 0.48 0.63);
    --cyan-12: color(display-p3 0.108 0.232 0.277);
    --cyan-a1: color(display-p3 0.02 0.608 0.804 / 0.02);
    --cyan-a2: color(display-p3 0.02 0.557 0.647 / 0.044);
    --cyan-a3: color(display-p3 0.004 0.694 0.796 / 0.114);
    --cyan-a4: color(display-p3 0.004 0.678 0.784 / 0.181);
    --cyan-a5: color(display-p3 0.004 0.624 0.733 / 0.248);
    --cyan-a6: color(display-p3 0.004 0.584 0.706 / 0.33);
    --cyan-a7: color(display-p3 0.004 0.541 0.667 / 0.436);
    --cyan-a8: color(display-p3 0 0.533 0.667 / 0.612);
    --cyan-a9: color(display-p3 0 0.482 0.675 / 0.718);
    --cyan-a10: color(display-p3 0 0.435 0.608 / 0.738);
    --cyan-a11: color(display-p3 0.08 0.48 0.63);
    --cyan-a12: color(display-p3 0.108 0.232 0.277);

    /* teal */
    --teal-1: color(display-p3 0.983 0.996 0.992);
    --teal-2: color(display-p3 0.958 0.983 0.976);
    --teal-3: color(display-p3 0.895 0.971 0.952);
    --teal-4: color(display-p3 0.831 0.949 0.92);
    --teal-5: color(display-p3 0.761 0.914 0.878);
    --teal-6: color(display-p3 0.682 0.864 0.825);
    --teal-7: color(display-p3 0.581 0.798 0.756);
    --teal-8: color(display-p3 0.433 0.716 0.671);
    --teal-9: color(display-p3 0.297 0.637 0.581);
    --teal-10: color(display-p3 0.275 0.599 0.542);
    --teal-11: color(display-p3 0.08 0.5 0.43);
    --teal-12: color(display-p3 0.11 0.235 0.219);
    --teal-a1: color(display-p3 0.024 0.757 0.514 / 0.016);
    --teal-a2: color(display-p3 0.02 0.647 0.467 / 0.044);
    --teal-a3: color(display-p3 0.004 0.741 0.557 / 0.106);
    --teal-a4: color(display-p3 0.004 0.702 0.537 / 0.169);
    --teal-a5: color(display-p3 0.004 0.643 0.494 / 0.24);
    --teal-a6: color(display-p3 0.004 0.569 0.447 / 0.318);
    --teal-a7: color(display-p3 0.004 0.518 0.424 / 0.42);
    --teal-a8: color(display-p3 0 0.506 0.424 / 0.569);
    --teal-a9: color(display-p3 0 0.482 0.404 / 0.702);
    --teal-a10: color(display-p3 0 0.451 0.369 / 0.726);
    --teal-a11: color(display-p3 0.08 0.5 0.43);
    --teal-a12: color(display-p3 0.11 0.235 0.219);

    /* green */
    --green-1: color(display-p3 0.986 0.996 0.989);
    --green-2: color(display-p3 0.963 0.983 0.967);
    --green-3: color(display-p3 0.913 0.964 0.925);
    --green-4: color(display-p3 0.859 0.94 0.879);
    --green-5: color(display-p3 0.796 0.907 0.826);
    --green-6: color(display-p3 0.718 0.863 0.761);
    --green-7: color(display-p3 0.61 0.801 0.675);
    --green-8: color(display-p3 0.451 0.715 0.559);
    --green-9: color(display-p3 0.332 0.634 0.442);
    --green-10: color(display-p3 0.308 0.595 0.417);
    --green-11: color(display-p3 0.19 0.5 0.32);
    --green-12: color(display-p3 0.132 0.228 0.18);
    --green-a1: color(display-p3 0.024 0.757 0.267 / 0.016);
    --green-a2: color(display-p3 0.024 0.565 0.129 / 0.036);
    --green-a3: color(display-p3 0.012 0.596 0.145 / 0.087);
    --green-a4: color(display-p3 0.008 0.588 0.145 / 0.142);
    --green-a5: color(display-p3 0.004 0.541 0.157 / 0.204);
    --green-a6: color(display-p3 0.004 0.518 0.157 / 0.283);
    --green-a7: color(display-p3 0.004 0.486 0.165 / 0.389);
    --green-a8: color(display-p3 0 0.478 0.2 / 0.55);
    --green-a9: color(display-p3 0 0.455 0.165 / 0.667);
    --green-a10: color(display-p3 0 0.416 0.153 / 0.691);
    --green-a11: color(display-p3 0.19 0.5 0.32);
    --green-a12: color(display-p3 0.132 0.228 0.18);

    /* grass */
    --grass-1: color(display-p3 0.986 0.996 0.985);
    --grass-2: color(display-p3 0.966 0.983 0.964);
    --grass-3: color(display-p3 0.923 0.965 0.917);
    --grass-4: color(display-p3 0.872 0.94 0.865);
    --grass-5: color(display-p3 0.811 0.908 0.802);
    --grass-6: color(display-p3 0.733 0.864 0.724);
    --grass-7: color(display-p3 0.628 0.803 0.622);
    --grass-8: color(display-p3 0.477 0.72 0.482);
    --grass-9: color(display-p3 0.38 0.647 0.378);
    --grass-10: color(display-p3 0.344 0.598 0.342);
    --grass-11: color(display-p3 0.263 0.488 0.261);
    --grass-12: color(display-p3 0.151 0.233 0.153);
    --grass-a1: color(display-p3 0.024 0.757 0.024 / 0.016);
    --grass-a2: color(display-p3 0.024 0.565 0.024 / 0.036);
    --grass-a3: color(display-p3 0.059 0.576 0.008 / 0.083);
    --grass-a4: color(display-p3 0.035 0.565 0.008 / 0.134);
    --grass-a5: color(display-p3 0.047 0.545 0.008 / 0.197);
    --grass-a6: color(display-p3 0.031 0.502 0.004 / 0.275);
    --grass-a7: color(display-p3 0.012 0.482 0.004 / 0.377);
    --grass-a8: color(display-p3 0 0.467 0.008 / 0.522);
    --grass-a9: color(display-p3 0.008 0.435 0 / 0.624);
    --grass-a10: color(display-p3 0.008 0.388 0 / 0.659);
    --grass-a11: color(display-p3 0.263 0.488 0.261);
    --grass-a12: color(display-p3 0.151 0.233 0.153);

    /* orange */
    --orange-1: color(display-p3 0.995 0.988 0.985);
    --orange-2: color(display-p3 0.994 0.968 0.934);
    --orange-3: color(display-p3 0.989 0.938 0.85);
    --orange-4: color(display-p3 1 0.874 0.687);
    --orange-5: color(display-p3 1 0.821 0.583);
    --orange-6: color(display-p3 0.975 0.767 0.545);
    --orange-7: color(display-p3 0.919 0.693 0.486);
    --orange-8: color(display-p3 0.877 0.597 0.379);
    --orange-9: color(display-p3 0.9 0.45 0.2);
    --orange-10: color(display-p3 0.87 0.409 0.164);
    --orange-11: color(display-p3 0.76 0.34 0);
    --orange-12: color(display-p3 0.323 0.185 0.127);
    --orange-a1: color(display-p3 0.757 0.267 0.024 / 0.016);
    --orange-a2: color(display-p3 0.886 0.533 0.008 / 0.067);
    --orange-a3: color(display-p3 0.922 0.584 0.008 / 0.15);
    --orange-a4: color(display-p3 1 0.604 0.004 / 0.314);
    --orange-a5: color(display-p3 1 0.569 0.004 / 0.416);
    --orange-a6: color(display-p3 0.949 0.494 0.004 / 0.455);
    --orange-a7: color(display-p3 0.839 0.408 0 / 0.514);
    --orange-a8: color(display-p3 0.804 0.349 0 / 0.62);
    --orange-a9: color(display-p3 0.878 0.314 0 / 0.8);
    --orange-a10: color(display-p3 0.843 0.29 0 / 0.836);
    --orange-a11: color(display-p3 0.76 0.34 0);
    --orange-a12: color(display-p3 0.323 0.185 0.127);

    /* brown */
    --brown-1: color(display-p3 0.995 0.992 0.989);
    --brown-2: color(display-p3 0.987 0.976 0.964);
    --brown-3: color(display-p3 0.959 0.936 0.909);
    --brown-4: color(display-p3 0.934 0.897 0.855);
    --brown-5: color(display-p3 0.909 0.856 0.798);
    --brown-6: color(display-p3 0.88 0.808 0.73);
    --brown-7: color(display-p3 0.841 0.742 0.639);
    --brown-8: color(display-p3 0.782 0.647 0.514);
    --brown-9: color(display-p3 0.651 0.505 0.368);
    --brown-10: color(display-p3 0.601 0.465 0.344);
    --brown-11: color(display-p3 0.485 0.374 0.288);
    --brown-12: color(display-p3 0.236 0.202 0.183);
    --brown-a1: color(display-p3 0.675 0.349 0.024 / 0.012);
    --brown-a2: color(display-p3 0.675 0.349 0.024 / 0.036);
    --brown-a3: color(display-p3 0.573 0.314 0.012 / 0.091);
    --brown-a4: color(display-p3 0.545 0.302 0.008 / 0.146);
    --brown-a5: color(display-p3 0.561 0.29 0.004 / 0.204);
    --brown-a6: color(display-p3 0.553 0.294 0.004 / 0.271);
    --brown-a7: color(display-p3 0.557 0.286 0.004 / 0.361);
    --brown-a8: color(display-p3 0.549 0.275 0.004 / 0.487);
    --brown-a9: color(display-p3 0.447 0.22 0 / 0.632);
    --brown-a10: color(display-p3 0.388 0.188 0 / 0.655);
    --brown-a11: color(display-p3 0.485 0.374 0.288);
    --brown-a12: color(display-p3 0.236 0.202 0.183);

    /* sky */
    --sky-1: color(display-p3 0.98 0.995 0.999);
    --sky-2: color(display-p3 0.953 0.98 0.99);
    --sky-3: color(display-p3 0.899 0.963 0.989);
    --sky-4: color(display-p3 0.842 0.937 0.977);
    --sky-5: color(display-p3 0.777 0.9 0.954);
    --sky-6: color(display-p3 0.701 0.851 0.921);
    --sky-7: color(display-p3 0.604 0.785 0.879);
    --sky-8: color(display-p3 0.457 0.696 0.829);
    --sky-9: color(display-p3 0.585 0.877 0.983);
    --sky-10: color(display-p3 0.555 0.845 0.959);
    --sky-11: color(display-p3 0.193 0.448 0.605);
    --sky-12: color(display-p3 0.145 0.241 0.329);
    --sky-a1: color(display-p3 0.02 0.804 1 / 0.02);
    --sky-a2: color(display-p3 0.024 0.592 0.757 / 0.048);
    --sky-a3: color(display-p3 0.004 0.655 0.886 / 0.102);
    --sky-a4: color(display-p3 0.004 0.604 0.851 / 0.157);
    --sky-a5: color(display-p3 0.004 0.565 0.792 / 0.224);
    --sky-a6: color(display-p3 0.004 0.502 0.737 / 0.299);
    --sky-a7: color(display-p3 0.004 0.459 0.694 / 0.397);
    --sky-a8: color(display-p3 0 0.435 0.682 / 0.542);
    --sky-a9: color(display-p3 0.004 0.71 0.965 / 0.416);
    --sky-a10: color(display-p3 0.004 0.647 0.914 / 0.444);
    --sky-a11: color(display-p3 0.193 0.448 0.605);
    --sky-a12: color(display-p3 0.145 0.241 0.329);

    /* mint */
    --mint-1: color(display-p3 0.98 0.995 0.992);
    --mint-2: color(display-p3 0.957 0.985 0.977);
    --mint-3: color(display-p3 0.888 0.972 0.95);
    --mint-4: color(display-p3 0.819 0.951 0.916);
    --mint-5: color(display-p3 0.747 0.918 0.873);
    --mint-6: color(display-p3 0.668 0.87 0.818);
    --mint-7: color(display-p3 0.567 0.805 0.744);
    --mint-8: color(display-p3 0.42 0.724 0.649);
    --mint-9: color(display-p3 0.62 0.908 0.834);
    --mint-10: color(display-p3 0.585 0.871 0.797);
    --mint-11: color(display-p3 0.203 0.463 0.397);
    --mint-12: color(display-p3 0.136 0.259 0.236);
    --mint-a1: color(display-p3 0.02 0.804 0.608 / 0.02);
    --mint-a2: color(display-p3 0.02 0.647 0.467 / 0.044);
    --mint-a3: color(display-p3 0.004 0.761 0.553 / 0.114);
    --mint-a4: color(display-p3 0.004 0.741 0.545 / 0.181);
    --mint-a5: color(display-p3 0.004 0.678 0.51 / 0.255);
    --mint-a6: color(display-p3 0.004 0.616 0.463 / 0.334);
    --mint-a7: color(display-p3 0.004 0.549 0.412 / 0.432);
    --mint-a8: color(display-p3 0 0.529 0.392 / 0.581);
    --mint-a9: color(display-p3 0.004 0.765 0.569 / 0.381);
    --mint-a10: color(display-p3 0.004 0.69 0.51 / 0.416);
    --mint-a11: color(display-p3 0.203 0.463 0.397);
    --mint-a12: color(display-p3 0.136 0.259 0.236);

    /* lime */
    --lime-1: color(display-p3 0.989 0.992 0.981);
    --lime-2: color(display-p3 0.975 0.98 0.954);
    --lime-3: color(display-p3 0.939 0.965 0.851);
    --lime-4: color(display-p3 0.896 0.94 0.76);
    --lime-5: color(display-p3 0.843 0.903 0.678);
    --lime-6: color(display-p3 0.778 0.852 0.599);
    --lime-7: color(display-p3 0.694 0.784 0.508);
    --lime-8: color(display-p3 0.585 0.707 0.378);
    --lime-9: color(display-p3 0.78 0.928 0.466);
    --lime-10: color(display-p3 0.734 0.896 0.397);
    --lime-11: color(display-p3 0.386 0.482 0.227);
    --lime-12: color(display-p3 0.222 0.25 0.128);
    --lime-a1: color(display-p3 0.412 0.608 0.02 / 0.02);
    --lime-a2: color(display-p3 0.514 0.592 0.024 / 0.048);
    --lime-a3: color(display-p3 0.584 0.765 0.008 / 0.15);
    --lime-a4: color(display-p3 0.561 0.757 0.004 / 0.24);
    --lime-a5: color(display-p3 0.514 0.698 0.004 / 0.322);
    --lime-a6: color(display-p3 0.443 0.627 0 / 0.4);
    --lime-a7: color(display-p3 0.376 0.561 0.004 / 0.491);
    --lime-a8: color(display-p3 0.333 0.529 0 / 0.624);
    --lime-a9: color(display-p3 0.588 0.867 0 / 0.534);
    --lime-a10: color(display-p3 0.561 0.827 0 / 0.604);
    --lime-a11: color(display-p3 0.386 0.482 0.227);
    --lime-a12: color(display-p3 0.222 0.25 0.128);

    /* yellow */
    --yellow-1: color(display-p3 0.992 0.992 0.978);
    --yellow-2: color(display-p3 0.995 0.99 0.922);
    --yellow-3: color(display-p3 0.997 0.982 0.749);
    --yellow-4: color(display-p3 0.992 0.953 0.627);
    --yellow-5: color(display-p3 0.984 0.91 0.51);
    --yellow-6: color(display-p3 0.934 0.847 0.474);
    --yellow-7: color(display-p3 0.876 0.785 0.46);
    --yellow-8: color(display-p3 0.811 0.689 0.313);
    --yellow-9: color(display-p3 1 0.92 0.22);
    --yellow-10: color(display-p3 0.977 0.868 0.291);
    --yellow-11: color(display-p3 0.6 0.44 0);
    --yellow-12: color(display-p3 0.271 0.233 0.137);
    --yellow-a1: color(display-p3 0.675 0.675 0.024 / 0.024);
    --yellow-a2: color(display-p3 0.953 0.855 0.008 / 0.079);
    --yellow-a3: color(display-p3 0.988 0.925 0.004 / 0.251);
    --yellow-a4: color(display-p3 0.98 0.875 0.004 / 0.373);
    --yellow-a5: color(display-p3 0.969 0.816 0.004 / 0.491);
    --yellow-a6: color(display-p3 0.875 0.71 0 / 0.526);
    --yellow-a7: color(display-p3 0.769 0.604 0 / 0.542);
    --yellow-a8: color(display-p3 0.725 0.549 0 / 0.687);
    --yellow-a9: color(display-p3 1 0.898 0 / 0.781);
    --yellow-a10: color(display-p3 0.969 0.812 0 / 0.71);
    --yellow-a11: color(display-p3 0.6 0.44 0);
    --yellow-a12: color(display-p3 0.271 0.233 0.137);

    /* amber */
    --amber-1: color(display-p3 0.995 0.992 0.985);
    --amber-2: color(display-p3 0.994 0.986 0.921);
    --amber-3: color(display-p3 0.994 0.969 0.782);
    --amber-4: color(display-p3 0.989 0.937 0.65);
    --amber-5: color(display-p3 0.97 0.902 0.527);
    --amber-6: color(display-p3 0.936 0.844 0.506);
    --amber-7: color(display-p3 0.89 0.762 0.443);
    --amber-8: color(display-p3 0.85 0.65 0.3);
    --amber-9: color(display-p3 1 0.77 0.26);
    --amber-10: color(display-p3 0.959 0.741 0.274);
    --amber-11: color(display-p3 0.64 0.4 0);
    --amber-12: color(display-p3 0.294 0.208 0.145);
    --amber-a1: color(display-p3 0.757 0.514 0.024 / 0.016);
    --amber-a2: color(display-p3 0.902 0.804 0.008 / 0.079);
    --amber-a3: color(display-p3 0.965 0.859 0.004 / 0.22);
    --amber-a4: color(display-p3 0.969 0.82 0.004 / 0.35);
    --amber-a5: color(display-p3 0.933 0.796 0.004 / 0.475);
    --amber-a6: color(display-p3 0.875 0.682 0.004 / 0.495);
    --amber-a7: color(display-p3 0.804 0.573 0 / 0.557);
    --amber-a8: color(display-p3 0.788 0.502 0 / 0.699);
    --amber-a9: color(display-p3 1 0.686 0 / 0.742);
    --amber-a10: color(display-p3 0.945 0.643 0 / 0.726);
    --amber-a11: color(display-p3 0.64 0.4 0);
    --amber-a12: color(display-p3 0.294 0.208 0.145);

    /* gray */
    --gray-1: color(display-p3 0.988 0.988 0.988);
    --gray-2: color(display-p3 0.975 0.975 0.975);
    --gray-3: color(display-p3 0.939 0.939 0.939);
    --gray-4: color(display-p3 0.908 0.908 0.908);
    --gray-5: color(display-p3 0.88 0.88 0.88);
    --gray-6: color(display-p3 0.849 0.849 0.849);
    --gray-7: color(display-p3 0.807 0.807 0.807);
    --gray-8: color(display-p3 0.732 0.732 0.732);
    --gray-9: color(display-p3 0.553 0.553 0.553);
    --gray-10: color(display-p3 0.512 0.512 0.512);
    --gray-11: color(display-p3 0.392 0.392 0.392);
    --gray-12: color(display-p3 0.125 0.125 0.125);
    --gray-a1: color(display-p3 0 0 0 / 0.012);
    --gray-a2: color(display-p3 0 0 0 / 0.024);
    --gray-a3: color(display-p3 0 0 0 / 0.063);
    --gray-a4: color(display-p3 0 0 0 / 0.09);
    --gray-a5: color(display-p3 0 0 0 / 0.122);
    --gray-a6: color(display-p3 0 0 0 / 0.153);
    --gray-a7: color(display-p3 0 0 0 / 0.192);
    --gray-a8: color(display-p3 0 0 0 / 0.267);
    --gray-a9: color(display-p3 0 0 0 / 0.447);
    --gray-a10: color(display-p3 0 0 0 / 0.486);
    --gray-a11: color(display-p3 0 0 0 / 0.608);
    --gray-a12: color(display-p3 0 0 0 / 0.875);

    /* mauve */
    --mauve-1: color(display-p3 0.991 0.988 0.992);
    --mauve-2: color(display-p3 0.98 0.976 0.984);
    --mauve-3: color(display-p3 0.946 0.938 0.952);
    --mauve-4: color(display-p3 0.915 0.906 0.925);
    --mauve-5: color(display-p3 0.886 0.876 0.901);
    --mauve-6: color(display-p3 0.856 0.846 0.875);
    --mauve-7: color(display-p3 0.814 0.804 0.84);
    --mauve-8: color(display-p3 0.735 0.728 0.777);
    --mauve-9: color(display-p3 0.555 0.549 0.596);
    --mauve-10: color(display-p3 0.514 0.508 0.552);
    --mauve-11: color(display-p3 0.395 0.388 0.424);
    --mauve-12: color(display-p3 0.128 0.122 0.147);
    --mauve-a1: color(display-p3 0.349 0.024 0.349 / 0.012);
    --mauve-a2: color(display-p3 0.184 0.024 0.349 / 0.024);
    --mauve-a3: color(display-p3 0.129 0.008 0.255 / 0.063);
    --mauve-a4: color(display-p3 0.094 0.012 0.216 / 0.095);
    --mauve-a5: color(display-p3 0.098 0.008 0.224 / 0.126);
    --mauve-a6: color(display-p3 0.055 0.004 0.18 / 0.153);
    --mauve-a7: color(display-p3 0.067 0.008 0.184 / 0.197);
    --mauve-a8: color(display-p3 0.02 0.004 0.176 / 0.271);
    --mauve-a9: color(display-p3 0.02 0.004 0.106 / 0.451);
    --mauve-a10: color(display-p3 0.012 0.004 0.09 / 0.491);
    --mauve-a11: color(display-p3 0.016 0 0.059 / 0.612);
    --mauve-a12: color(display-p3 0.008 0 0.027 / 0.879);

    /* slate */
    --slate-1: color(display-p3 0.988 0.988 0.992);
    --slate-2: color(display-p3 0.976 0.976 0.984);
    --slate-3: color(display-p3 0.94 0.941 0.953);
    --slate-4: color(display-p3 0.908 0.909 0.925);
    --slate-5: color(display-p3 0.88 0.881 0.901);
    --slate-6: color(display-p3 0.85 0.852 0.876);
    --slate-7: color(display-p3 0.805 0.808 0.838);
    --slate-8: color(display-p3 0.727 0.733 0.773);
    --slate-9: color(display-p3 0.547 0.553 0.592);
    --slate-10: color(display-p3 0.503 0.512 0.549);
    --slate-11: color(display-p3 0.379 0.392 0.421);
    --slate-12: color(display-p3 0.113 0.125 0.14);
    --slate-a1: color(display-p3 0.024 0.024 0.349 / 0.012);
    --slate-a2: color(display-p3 0.024 0.024 0.349 / 0.024);
    --slate-a3: color(display-p3 0.004 0.004 0.204 / 0.059);
    --slate-a4: color(display-p3 0.012 0.012 0.184 / 0.091);
    --slate-a5: color(display-p3 0.004 0.039 0.2 / 0.122);
    --slate-a6: color(display-p3 0.008 0.008 0.165 / 0.15);
    --slate-a7: color(display-p3 0.008 0.027 0.184 / 0.197);
    --slate-a8: color(display-p3 0.004 0.031 0.176 / 0.275);
    --slate-a9: color(display-p3 0.004 0.02 0.106 / 0.455);
    --slate-a10: color(display-p3 0.004 0.027 0.098 / 0.499);
    --slate-a11: color(display-p3 0 0.02 0.063 / 0.62);
    --slate-a12: color(display-p3 0 0.012 0.031 / 0.887);

    /* sage */
    --sage-1: color(display-p3 0.986 0.992 0.988);
    --sage-2: color(display-p3 0.97 0.977 0.974);
    --sage-3: color(display-p3 0.935 0.944 0.94);
    --sage-4: color(display-p3 0.904 0.913 0.909);
    --sage-5: color(display-p3 0.875 0.885 0.88);
    --sage-6: color(display-p3 0.844 0.854 0.849);
    --sage-7: color(display-p3 0.8 0.811 0.806);
    --sage-8: color(display-p3 0.725 0.738 0.732);
    --sage-9: color(display-p3 0.531 0.556 0.546);
    --sage-10: color(display-p3 0.492 0.515 0.506);
    --sage-11: color(display-p3 0.377 0.395 0.389);
    --sage-12: color(display-p3 0.107 0.129 0.118);
    --sage-a1: color(display-p3 0.024 0.514 0.267 / 0.016);
    --sage-a2: color(display-p3 0.02 0.267 0.145 / 0.032);
    --sage-a3: color(display-p3 0.008 0.184 0.125 / 0.067);
    --sage-a4: color(display-p3 0.012 0.094 0.051 / 0.095);
    --sage-a5: color(display-p3 0.008 0.098 0.035 / 0.126);
    --sage-a6: color(display-p3 0.004 0.078 0.027 / 0.157);
    --sage-a7: color(display-p3 0 0.059 0.039 / 0.2);
    --sage-a8: color(display-p3 0.004 0.047 0.031 / 0.275);
    --sage-a9: color(display-p3 0.004 0.059 0.035 / 0.471);
    --sage-a10: color(display-p3 0 0.047 0.031 / 0.51);
    --sage-a11: color(display-p3 0 0.031 0.02 / 0.624);
    --sage-a12: color(display-p3 0 0.027 0.012 / 0.895);

    /* olive */
    --olive-1: color(display-p3 0.989 0.992 0.989);
    --olive-2: color(display-p3 0.974 0.98 0.973);
    --olive-3: color(display-p3 0.939 0.945 0.937);
    --olive-4: color(display-p3 0.907 0.914 0.905);
    --olive-5: color(display-p3 0.878 0.885 0.875);
    --olive-6: color(display-p3 0.846 0.855 0.843);
    --olive-7: color(display-p3 0.803 0.812 0.8);
    --olive-8: color(display-p3 0.727 0.738 0.723);
    --olive-9: color(display-p3 0.541 0.556 0.532);
    --olive-10: color(display-p3 0.5 0.515 0.491);
    --olive-11: color(display-p3 0.38 0.395 0.374);
    --olive-12: color(display-p3 0.117 0.129 0.111);
    --olive-a1: color(display-p3 0.024 0.349 0.024 / 0.012);
    --olive-a2: color(display-p3 0.024 0.302 0.024 / 0.028);
    --olive-a3: color(display-p3 0.008 0.129 0.008 / 0.063);
    --olive-a4: color(display-p3 0.012 0.094 0.012 / 0.095);
    --olive-a5: color(display-p3 0.035 0.098 0.008 / 0.126);
    --olive-a6: color(display-p3 0.027 0.078 0.004 / 0.157);
    --olive-a7: color(display-p3 0.02 0.059 0 / 0.2);
    --olive-a8: color(display-p3 0.02 0.059 0.004 / 0.279);
    --olive-a9: color(display-p3 0.02 0.051 0.004 / 0.467);
    --olive-a10: color(display-p3 0.024 0.047 0 / 0.51);
    --olive-a11: color(display-p3 0.012 0.039 0 / 0.628);
    --olive-a12: color(display-p3 0.008 0.024 0 / 0.891);

    /* sand */
    --sand-1: color(display-p3 0.992 0.992 0.989);
    --sand-2: color(display-p3 0.977 0.977 0.973);
    --sand-3: color(display-p3 0.943 0.942 0.936);
    --sand-4: color(display-p3 0.913 0.912 0.903);
    --sand-5: color(display-p3 0.885 0.883 0.873);
    --sand-6: color(display-p3 0.854 0.852 0.839);
    --sand-7: color(display-p3 0.813 0.81 0.794);
    --sand-8: color(display-p3 0.738 0.734 0.713);
    --sand-9: color(display-p3 0.553 0.553 0.528);
    --sand-10: color(display-p3 0.511 0.511 0.488);
    --sand-11: color(display-p3 0.388 0.388 0.37);
    --sand-12: color(display-p3 0.129 0.126 0.111);
    --sand-a1: color(display-p3 0.349 0.349 0.024 / 0.012);
    --sand-a2: color(display-p3 0.161 0.161 0.024 / 0.028);
    --sand-a3: color(display-p3 0.067 0.067 0.008 / 0.063);
    --sand-a4: color(display-p3 0.129 0.129 0.012 / 0.099);
    --sand-a5: color(display-p3 0.098 0.067 0.008 / 0.126);
    --sand-a6: color(display-p3 0.102 0.075 0.004 / 0.161);
    --sand-a7: color(display-p3 0.098 0.098 0.004 / 0.208);
    --sand-a8: color(display-p3 0.086 0.075 0.004 / 0.287);
    --sand-a9: color(display-p3 0.051 0.051 0.004 / 0.471);
    --sand-a10: color(display-p3 0.047 0.047 0 / 0.514);
    --sand-a11: color(display-p3 0.031 0.031 0 / 0.632);
    --sand-a12: color(display-p3 0.024 0.02 0 / 0.891);

    /* gold */
    --gold-1: color(display-p3 0.992 0.992 0.989);
    --gold-2: color(display-p3 0.98 0.976 0.953);
    --gold-3: color(display-p3 0.947 0.94 0.909);
    --gold-4: color(display-p3 0.914 0.904 0.865);
    --gold-5: color(display-p3 0.88 0.865 0.816);
    --gold-6: color(display-p3 0.84 0.818 0.756);
    --gold-7: color(display-p3 0.788 0.753 0.677);
    --gold-8: color(display-p3 0.715 0.66 0.565);
    --gold-9: color(display-p3 0.579 0.517 0.41);
    --gold-10: color(display-p3 0.538 0.479 0.38);
    --gold-11: color(display-p3 0.433 0.386 0.305);
    --gold-12: color(display-p3 0.227 0.209 0.173);
    --gold-a1: color(display-p3 0.349 0.349 0.024 / 0.012);
    --gold-a2: color(display-p3 0.592 0.514 0.024 / 0.048);
    --gold-a3: color(display-p3 0.4 0.357 0.012 / 0.091);
    --gold-a4: color(display-p3 0.357 0.298 0.008 / 0.134);
    --gold-a5: color(display-p3 0.345 0.282 0.004 / 0.185);
    --gold-a6: color(display-p3 0.341 0.263 0.004 / 0.244);
    --gold-a7: color(display-p3 0.345 0.235 0.004 / 0.322);
    --gold-a8: color(display-p3 0.345 0.22 0.004 / 0.436);
    --gold-a9: color(display-p3 0.286 0.18 0 / 0.589);
    --gold-a10: color(display-p3 0.255 0.161 0 / 0.62);
    --gold-a11: color(display-p3 0.433 0.386 0.305);
    --gold-a12: color(display-p3 0.227 0.209 0.173);

    /* bronze */
    --bronze-1: color(display-p3 0.991 0.988 0.988);
    --bronze-2: color(display-p3 0.989 0.97 0.961);
    --bronze-3: color(display-p3 0.958 0.932 0.919);
    --bronze-4: color(display-p3 0.929 0.894 0.877);
    --bronze-5: color(display-p3 0.898 0.853 0.832);
    --bronze-6: color(display-p3 0.861 0.805 0.778);
    --bronze-7: color(display-p3 0.812 0.739 0.706);
    --bronze-8: color(display-p3 0.741 0.647 0.606);
    --bronze-9: color(display-p3 0.611 0.507 0.455);
    --bronze-10: color(display-p3 0.563 0.461 0.414);
    --bronze-11: color(display-p3 0.471 0.373 0.336);
    --bronze-12: color(display-p3 0.251 0.191 0.172);
    --bronze-a1: color(display-p3 0.349 0.024 0.024 / 0.012);
    --bronze-a2: color(display-p3 0.71 0.22 0.024 / 0.04);
    --bronze-a3: color(display-p3 0.482 0.2 0.008 / 0.083);
    --bronze-a4: color(display-p3 0.424 0.133 0.004 / 0.122);
    --bronze-a5: color(display-p3 0.4 0.145 0.004 / 0.169);
    --bronze-a6: color(display-p3 0.388 0.125 0.004 / 0.224);
    --bronze-a7: color(display-p3 0.365 0.11 0.004 / 0.295);
    --bronze-a8: color(display-p3 0.341 0.102 0.004 / 0.393);
    --bronze-a9: color(display-p3 0.29 0.094 0 / 0.546);
    --bronze-a10: color(display-p3 0.255 0.082 0 / 0.585);
    --bronze-a11: color(display-p3 0.471 0.373 0.336);
    --bronze-a12: color(display-p3 0.251 0.191 0.172);

    /* black-alpha */
    --black-a1: color(display-p3 0 0 0 / 0.05);
    --black-a2: color(display-p3 0 0 0 / 0.1);
    --black-a3: color(display-p3 0 0 0 / 0.15);
    --black-a4: color(display-p3 0 0 0 / 0.2);
    --black-a5: color(display-p3 0 0 0 / 0.3);
    --black-a6: color(display-p3 0 0 0 / 0.4);
    --black-a7: color(display-p3 0 0 0 / 0.5);
    --black-a8: color(display-p3 0 0 0 / 0.6);
    --black-a9: color(display-p3 0 0 0 / 0.7);
    --black-a10: color(display-p3 0 0 0 / 0.8);
    --black-a11: color(display-p3 0 0 0 / 0.9);
    --black-a12: color(display-p3 0 0 0 / 0.95);

    /* white-alpha */
    --white-a1: color(display-p3 1 1 1 / 0.05);
    --white-a2: color(display-p3 1 1 1 / 0.1);
    --white-a3: color(display-p3 1 1 1 / 0.15);
    --white-a4: color(display-p3 1 1 1 / 0.2);
    --white-a5: color(display-p3 1 1 1 / 0.3);
    --white-a6: color(display-p3 1 1 1 / 0.4);
    --white-a7: color(display-p3 1 1 1 / 0.5);
    --white-a8: color(display-p3 1 1 1 / 0.6);
    --white-a9: color(display-p3 1 1 1 / 0.7);
    --white-a10: color(display-p3 1 1 1 / 0.8);
    --white-a11: color(display-p3 1 1 1 / 0.9);
    --white-a12: color(display-p3 1 1 1 / 0.95);
    }
  }
}


/* ── system/tokens/typography.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Typography Tokens                           */
/*  Font: Inter  |  Source: Figma UI Kit type specimen                 */
/* ================================================================== */

:root {
  /* ---- Font family ---- */
  --font-sans: 'Inter', system-ui, -apple-system, sans-serif;

  /* ---- Font weights ---- */
  --font-regular: 400;
  --font-medium: 500;
  --font-semibold: 600;
  --font-bold: 700;
  --font-black: 900;

  /* ---- Type scale ---- */
  /* Each step defines size, line-height, and letter-spacing.          */
  /* Naming follows Tailwind conventions (xs … 7xl).                   */

  /* font-7xl: 72px / 4.5rem */
  --font-size-7xl: 4.5rem;
  --line-height-7xl: 5rem;
  --tracking-7xl: -0.01em;

  /* font-6xl: 60px / 3.75rem */
  --font-size-6xl: 3.75rem;
  --line-height-6xl: 4.5rem;
  --tracking-6xl: -0.01em;

  /* font-5xl: 48px / 3rem */
  --font-size-5xl: 3rem;
  --line-height-5xl: 3.75rem;
  --tracking-5xl: -0.005em;

  /* font-4xl: 36px / 2.25rem */
  --font-size-4xl: 2.25rem;
  --line-height-4xl: 2.75rem;
  --tracking-4xl: -0.005em;

  /* font-3xl: 30px / 1.875rem */
  --font-size-3xl: 1.875rem;
  --line-height-3xl: 2.375rem;
  --tracking-3xl: -0.0025em;

  /* font-2xl: 24px / 1.5rem */
  --font-size-2xl: 1.5rem;
  --line-height-2xl: 2rem;
  --tracking-2xl: 0em;

  /* font-xl: 20px / 1.25rem */
  --font-size-xl: 1.25rem;
  --line-height-xl: 1.75rem;
  --tracking-xl: 0em;

  /* font-lg: 18px / 1.125rem */
  --font-size-lg: 1.125rem;
  --line-height-lg: 1.75rem;
  --tracking-lg: 0em;

  /* font-base: 16px / 1rem */
  --font-size-base: 1rem;
  --line-height-base: 1.5rem;
  --tracking-base: 0em;

  /* font-sm: 14px / 0.875rem */
  --font-size-sm: 0.875rem;
  --line-height-sm: 1.25rem;
  --tracking-sm: 0em;

  /* font-xs: 12px / 0.75rem */
  --font-size-xs: 0.75rem;
  --line-height-xs: 1rem;
  --tracking-xs: 0em;
}


/* ── system/tokens/spacing.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Spacing Tokens                              */
/*  Source: Figma spacing system guides (Tailwind-based)               */
/* ================================================================== */

:root {
  /* ---- Spacing scale ---- */
  --space-0: 0px;
  --space-px: 1px;
  --space-0-5: 0.125rem;   /*   2px */
  --space-1: 0.25rem;      /*   4px */
  --space-1-5: 0.375rem;   /*   6px */
  --space-2: 0.5rem;       /*   8px */
  --space-2-5: 0.625rem;   /*  10px */
  --space-3: 0.75rem;      /*  12px */
  --space-3-5: 0.875rem;   /*  14px */
  --space-4: 1rem;         /*  16px */
  --space-4-5: 1.125rem;   /*  18px */
  --space-5: 1.25rem;      /*  20px */
  --space-6: 1.5rem;       /*  24px */
  --space-7: 1.75rem;      /*  28px */
  --space-8: 2rem;         /*  32px */
  --space-9: 2.25rem;      /*  36px */
  --space-10: 2.5rem;      /*  40px */
  --space-11: 2.75rem;     /*  44px */
  --space-12: 3rem;        /*  48px */
  --space-14: 3.5rem;      /*  56px */
  --space-15: 3.75rem;     /*  60px */
  --space-16: 4rem;        /*  64px */
  --space-20: 5rem;        /*  80px */
  --space-24: 6rem;        /*  96px */
  --space-28: 7rem;        /* 112px */
  --space-32: 8rem;        /* 128px */
  --space-36: 9rem;        /* 144px */
  --space-40: 10rem;       /* 160px */
  --space-44: 11rem;       /* 176px */
  --space-48: 12rem;       /* 192px */
  --space-52: 13rem;       /* 208px */
  --space-56: 14rem;       /* 224px */
  --space-60: 15rem;       /* 240px */
  --space-64: 16rem;       /* 256px */
  --space-72: 18rem;       /* 288px */
  --space-80: 20rem;       /* 320px */
  --space-96: 24rem;       /* 384px */

  /* ---- Container max-widths ---- */
  --container-xs: 20rem;   /*  320px */
  --container-sm: 24rem;   /*  384px */
  --container-md: 28rem;   /*  448px */
  --container-lg: 32rem;   /*  512px */
  --container-xl: 36rem;   /*  576px */
  --container-2xl: 40rem;  /*  640px */
  --container-3xl: 44rem;  /*  704px */
  --container-4xl: 48rem;  /*  768px */
  --container-5xl: 52rem;  /*  832px */
  --container-6xl: 56rem;  /*  896px */
  --container-7xl: 60rem;  /*  960px */
  --container-8xl: 64rem;  /* 1024px */
  --container-9xl: 80rem;  /* 1280px */
}


/* ── system/tokens/radius.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Border Radius Tokens                        */
/* ================================================================== */

:root {
  --radius-none: 0px;
  --radius-sm: 0.125rem;   /*  2px */
  --radius: 0.25rem;       /*  4px */
  --radius-md: 0.375rem;   /*  6px */
  --radius-lg: 0.5rem;     /*  8px */
  --radius-xl: 0.75rem;    /* 12px */
  --radius-2xl: 1rem;      /* 16px */
  --radius-3xl: 1.5rem;    /* 24px */
  --radius-full: 9999px;
}


/* ── system/tokens/effects.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Effect Tokens                               */
/*  Shadows, elevation, backdrop blur, focus rings                     */
/* ================================================================== */

/* ================================================================== */
/*  Dark theme (default)                                               */
/* ================================================================== */

:root {
  /* ---- Tailwind shadows ---- */
  --shadow-none: 0 0 #0000;
  --shadow-xs:   0 1px 2px 0 rgb(0 0 0 / 0.04);
  --shadow-sm:   0 1px 2px 0 rgb(0 0 0 / 0.05);
  --shadow:      0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --shadow-md:   0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
  --shadow-lg:   0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
  --shadow-xl:   0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1);
  --shadow-2xl:  0 25px 50px -12px rgb(0 0 0 / 0.25);

  /* ---- Elevation background colors ---- */
  /* Negative = recessed (darker), 0 = base surface, positive = raised (lighter) */
  --elevation-n30: #000000;
  --elevation-n20: #151718;
  --elevation-n10: #1a1d1e;
  --elevation-0:   #202425;
  --elevation-10:  #26292b;
  --elevation-20:  #2b2f31;
  --elevation-30:  #313538;
  --elevation-40:  #3a3f42;
  --elevation-50:  #4c5155;

  /* ---- Elevation shadow layers ---- */
  /* Combined outer drop-shadow + inset edge lighting for each level.   */
  /* Apply to box-shadow alongside the matching --elevation-* bg color. */

  /* Recessed surfaces — inset shadows only (pressed/sunken feel) */
  --elevation-shadow-n30:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.40),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.16),
    inset 0px 8px 8px 0px rgba(0, 0, 0, 0.08);

  --elevation-shadow-n20:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.24),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px 4px 4px 0px rgba(0, 0, 0, 0.08);

  --elevation-shadow-n10:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.16),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.08),
    inset 0px 2px 2px 0px rgba(0, 0, 0, 0.16);

  /* Neutral baseline — no shadow */
  --elevation-shadow-0: none;

  /* Raised surfaces — drop shadow + inset edge lighting (lifted feel) */
  --elevation-shadow-10:
    0px 2px 2px 0px rgba(0, 0, 0, 0.16),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.04),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.12);

  --elevation-shadow-20:
    0px 4px 7px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.08),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);

  --elevation-shadow-30:
    0px 8px 12px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.40);

  --elevation-shadow-40:
    0px 16px 20px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.16),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.40);

  --elevation-shadow-50:
    0px 22px 30px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.20),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.40);

  /* ---- Backdrop blur ---- */
  --blur-none: 0;
  --blur-sm:   4px;
  --blur:      8px;
  --blur-md:   12px;
  --blur-lg:   16px;
  --blur-xl:   24px;
  --blur-2xl:  40px;
  --blur-3xl:  64px;

  /* ---- Focus rings ---- */
  --ring-offset: 2px;
  --ring-width:  2px;

  --ring-color-accent:        var(--teal-9);
  --ring-color-accent-subtle: var(--teal-7);
  --ring-color-gray:          var(--gray-8);
  --ring-color-gray-subtle:   var(--gray-6);
  --ring-color-error:         var(--red-9);
  --ring-color-error-subtle:  var(--red-7);
}

/* ================================================================== */
/*  Light theme                                                        */
/* ================================================================== */

:root.light {
  /* ---- Tailwind shadows (more subtle on light backgrounds) ---- */
  --shadow-xs:  0 1px 2px 0 rgb(0 0 0 / 0.03);
  --shadow-sm:  0 1px 2px 0 rgb(0 0 0 / 0.04);
  --shadow:     0 1px 3px 0 rgb(0 0 0 / 0.06), 0 1px 2px -1px rgb(0 0 0 / 0.06);
  --shadow-md:  0 4px 6px -1px rgb(0 0 0 / 0.06), 0 2px 4px -2px rgb(0 0 0 / 0.06);
  --shadow-lg:  0 10px 15px -3px rgb(0 0 0 / 0.06), 0 4px 6px -4px rgb(0 0 0 / 0.06);
  --shadow-xl:  0 20px 25px -5px rgb(0 0 0 / 0.06), 0 8px 10px -6px rgb(0 0 0 / 0.06);
  --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.15);

  /* ---- Elevation background colors (light: darker = lower, lighter = higher) ---- */
  --elevation-n30: #e8e8e8;
  --elevation-n20: #efefef;
  --elevation-n10: #f5f5f5;
  --elevation-0:   #ffffff;
  --elevation-10:  #ffffff;
  --elevation-20:  #ffffff;
  --elevation-30:  #ffffff;
  --elevation-40:  #ffffff;
  --elevation-50:  #ffffff;

  /* ---- Elevation shadow layers (light) ---- */
  --elevation-shadow-n30:
    inset 0px 1px 2px 0px rgba(0, 0, 0, 0.14),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.04),
    inset 0px 8px 8px 0px rgba(0, 0, 0, 0.06);

  --elevation-shadow-n20:
    inset 0px 1px 2px 0px rgba(0, 0, 0, 0.10),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.03),
    inset 0px 4px 4px 0px rgba(0, 0, 0, 0.05);

  --elevation-shadow-n10:
    inset 0px 1px 2px 0px rgba(0, 0, 0, 0.08),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.02),
    inset 0px 2px 2px 0px rgba(0, 0, 0, 0.05);

  --elevation-shadow-0: none;

  --elevation-shadow-10:
    0px 2px 4px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.80),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.06);

  --elevation-shadow-20:
    0px 4px 8px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.80),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.08);

  --elevation-shadow-30:
    0px 8px 16px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.80),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.08);

  --elevation-shadow-40:
    0px 16px 24px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.80),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.08);

  --elevation-shadow-50:
    0px 22px 32px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.80),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.08);

  --ring-color-accent:        var(--teal-9);
  --ring-color-accent-subtle: var(--teal-7);
  --ring-color-gray:          var(--gray-7);
  --ring-color-gray-subtle:   var(--gray-5);
  --ring-color-error:         var(--red-9);
  --ring-color-error-subtle:  var(--red-7);
}


/* ── system/theme.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Theme (semantic aliases + utilities)         */
/*  Maps Radix color scales to semantic tokens for app-level use       */
/* ================================================================== */

/* ================================================================== */
/*  Semantic color aliases, Dark (default)                            */
/*  These preserve the original hand-tuned brand values.               */
/*  New components should reference Radix scales directly.             */
/* ================================================================== */

:root {
  --bg: #0A0A0A;
  --bg-secondary: #111111;
  --surface: #161616;
  --surface-hover: #1E1E1E;
  --border: #2A2A2A;
  --border-subtle: #1E1E1E;
  --text-primary: #EDEDED;
  --text-secondary: #888888;
  --text-muted: #7A7A7A;
  --accent: #38F9B7;
  --accent-hover: #2CDEA3;
  --accent-fg: #0A0A0A;
  --accent-glow: rgba(56, 249, 183, 0.10);
  --input-bg: #141414;
  --header-bg: rgba(10, 10, 10, 0.85);
  --dot-color: rgba(255, 255, 255, 0.04);

  /* Toggle / Checkbox / Radio component tokens */
  --toggle-bg: rgba(223, 239, 254, 0.14);
  --toggle-bg-hover: rgba(229, 242, 254, 0.26);
  --toggle-checked-bg: #0c6d62;
  --toggle-checked-hover-bg: #12a594;
  --toggle-disabled-bg: rgba(226, 240, 253, 0.08);
  --toggle-border-color: rgba(255, 255, 255, 0.08);
  --toggle-ring: 0 0 0 4px rgba(17, 255, 231, 0.37);
  --toggle-top-highlight: inset 0 1px 0 0 rgba(255, 255, 255, 0.45);
  --switch-checked-bg: #10b3a3;
}

/* ================================================================== */
/*  Semantic color aliases, Light                                     */
/* ================================================================== */

:root.light {
  --bg: #FAFAFA;
  --bg-secondary: #F2F2F0;
  --surface: #FFFFFF;
  --surface-hover: #F5F5F3;
  --border: #E2E0DC;
  --border-subtle: #EDEBE8;
  --text-primary: #1A1A1A;
  --text-secondary: #6B6B6B;
  --text-muted: #737373;
  --accent: #08805F;
  --accent-hover: #066E51;
  --accent-fg: #FFFFFF;
  --accent-glow: rgba(13, 163, 122, 0.08);
  --input-bg: #F2F2F0;
  --header-bg: rgba(250, 250, 250, 0.85);
  --dot-color: rgba(0, 0, 0, 0.04);

  /* Toggle / Checkbox / Radio component tokens */
  --toggle-bg: rgba(0, 0, 0, 0.06);
  --toggle-bg-hover: rgba(0, 0, 0, 0.1);
  --toggle-checked-bg: #0c6d62;
  --toggle-checked-hover-bg: #12a594;
  --toggle-disabled-bg: rgba(0, 0, 0, 0.05);
  --toggle-border-color: rgba(0, 0, 0, 0.08);
  --toggle-ring: 0 0 0 4px rgba(17, 255, 231, 0.37);
  --toggle-top-highlight: inset 0 1px 0 0 rgba(255, 255, 255, 0.6);
  --switch-checked-bg: #10b3a3;
}

/* ================================================================== */
/*  Apply theme to body                                                */
/* ================================================================== */

body {
  background: var(--bg);
  color: var(--text-primary);
}

/* ================================================================== */
/*  Theme transition (applied only during toggle via JS)               */
/* ================================================================== */

html.theme-transition,
html.theme-transition *,
html.theme-transition *::before,
html.theme-transition *::after {
  transition: background-color 0.45s ease,
              background 0.45s ease,
              color 0.45s ease,
              border-color 0.45s ease,
              fill 0.45s ease,
              stroke 0.45s ease,
              box-shadow 0.45s ease !important;
}

/* ================================================================== */
/*  Common animations                                                  */
/* ================================================================== */

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ================================================================== */
/*  Background texture (noise + dot grid)                              */
/* ================================================================== */

body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.045;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-repeat: repeat;
  background-size: 256px 256px;
}

:root.light body::before {
  opacity: 0.06;
}

body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-image: radial-gradient(circle, var(--dot-color) 1px, transparent 1px);
  background-size: 24px 24px;
}


/* ── shared/base.css ── */
/* ================================================================== */
/*  MooooM, Shared base styles                                       */
/*  Imported by both the landing page and the icons app                */
/*  Foundation tokens + reset + theme are loaded via /system/index.css */
/* ================================================================== */

/* ================================================================== */
/*  <mom-icon> element                                                 */
/* ================================================================== */

mom-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1em;
  height: 1em;
  flex-shrink: 0;
  color: inherit;
}

mom-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* ================================================================== */
/*  Theme toggle button                                                */
/* ================================================================== */

.theme-toggle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 8px;
  background: var(--input-bg);
  border: 1px solid var(--border);
  color: var(--text-secondary);
  transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
  flex-shrink: 0;
}

.theme-toggle:hover {
  background: var(--surface-hover);
  color: var(--accent);
}

.theme-toggle svg {
  width: 16px;
  height: 16px;
}

/* ================================================================== */
/*  View Transitions                                                   */
/* ================================================================== */

@view-transition {
  navigation: auto;
}

/* ================================================================== */
/*  Shared navigation                                                  */
/* ================================================================== */

.nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  background: var(--header-bg);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border-bottom: 1px solid var(--border);
  view-transition-name: main-nav;
  font-family: var(--font-sans, 'Inter', system-ui, -apple-system, sans-serif);
}

.nav-progress {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 2px;
  background: var(--accent);
  transform-origin: left;
  transform: scaleX(0);
  z-index: 101;
  pointer-events: none;
  will-change: transform;
}

.nav-inner {
  max-width: 1200px;
  margin: 0 auto;
  padding: 0 24px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.nav-logo {
  display: flex;
  align-items: center;
  gap: 2px;
  color: var(--text-primary);
  position: relative;
  z-index: 1;
}

.logo-center {
  position: relative;
  width: 24px;
  height: 24px;
  display: flex;
  transition: width 0.5s cubic-bezier(0.22, 1, 0.36, 1);
}

.nav-logo:hover .logo-center,
.footer-logo:hover .logo-center {
  width: 72px;
}

.logo-line {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 12px;
  right: 12px;
  background: var(--accent);
  z-index: 1;
}

.logo-o {
  position: absolute;
  top: 0;
  width: 24px;
  height: 24px;
  z-index: 2;
  color: var(--text-primary);
}

.logo-o-left {
  left: 0;
}

.logo-o-right {
  right: 0;
}

.logo-m {
  width: 24px;
  height: 24px;
  flex-shrink: 0;
  color: var(--text-primary);
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 8px;
  position: relative;
  z-index: 1;
}

.nav-link {
  padding: 6px 14px;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--text-secondary);
  background: var(--input-bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  transition: color 0.2s ease, background 0.2s ease, border-color 0.2s ease;
}

.nav-link:hover {
  color: var(--text-primary);
  background: var(--surface-hover);
  border-color: color-mix(in srgb, var(--border) 80%, var(--accent) 20%);
}

.nav-link--active {
  color: var(--text-primary);
  background: var(--surface);
  border-color: var(--border);
  font-weight: 500;
}

.nav-link--icon {
  display: flex;
  align-items: center;
  gap: 6px;
}

.nav-link--icon svg {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

.nav-link--accent {
  color: var(--accent-fg);
  background: var(--accent);
  border: 1px solid transparent;
  font-weight: 600;
  box-shadow:
    rgba(16, 24, 40, 0.05) 0px 1px 2px 0px,
    rgba(0, 0, 0, 0.4) 0px -2px 0px 0px inset,
    rgba(255, 255, 255, 0.15) 0px 1px 0px 0px inset;
}

.nav-link--accent:hover {
  background: var(--accent-hover);
  color: var(--accent-fg);
}

.nav-link--accent:active {
  box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 2px 0px inset;
  transform: scale(0.97);
}

.nav-links .theme-toggle {
  margin-left: 4px;
}

@media (max-width: 640px) {
  /* Hide non-essential nav links on mobile, keep logo and buy button */
  .nav-link:not(.nav-link--accent) {
    display: none;
  }

  .nav-link {
    padding: var(--space-1-5) var(--space-2-5);
    font-size: var(--font-size-xs);
  }

  /* Smaller logo on mobile */
  .nav-logo {
    font-size: 1.1rem;
  }

  /* Compact navbar */
  .nav-inner {
    height: 48px;
    padding: 0 var(--space-4);
  }

  /* Smaller theme toggle */
  .theme-toggle {
    width: 30px;
    height: 30px;
  }
}


/* ── system/components/accordion/accordion.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Accordion Component                           */
/*  Collapsible content sections with animated expand/collapse        */
/*  Requirements: Active state, Composition, Toggle transition, A11y   */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  --accordion-bg: var(--surface);
  --accordion-bg-hover: var(--surface-hover);
  --accordion-border: var(--border);
  --accordion-radius: var(--radius-xl);
  --accordion-shadow: var(--shadow-sm);
  --accordion-trigger-color: var(--text-primary);
  --accordion-trigger-color-hover: var(--text-primary);
  --accordion-content-color: var(--text-secondary);
  --accordion-icon-color: var(--text-muted);
  --accordion-icon-color-hover: var(--text-primary);
  --accordion-transition: var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

/* ================================================================== */
/*  Base - Accordion container                                         */
/* ================================================================== */

.mom-accordion {
  display: flex;
  flex-direction: column;
  width: 100%;
  border: 1px solid var(--accordion-border);
  border-radius: var(--accordion-radius);
  background: var(--accordion-bg);
  box-shadow: var(--accordion-shadow);
  overflow: hidden;
}

/* ================================================================== */
/*  Accordion Item                                                     */
/* ================================================================== */

.mom-accordion__item {
  display: flex;
  flex-direction: column;
  border-bottom: 1px solid var(--accordion-border);
}

.mom-accordion__item:last-child {
  border-bottom: none;
}

/* ================================================================== */
/*  Trigger (header button)                                            */
/* ================================================================== */

.mom-accordion__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-3);
  width: 100%;
  padding: var(--space-3) var(--space-4);
  background: transparent;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-base);
  color: var(--accordion-trigger-color);
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
  outline: none;
}

.mom-accordion__trigger:hover {
  background: var(--accordion-bg-hover);
  color: var(--accordion-trigger-color-hover);
}

.mom-accordion__trigger:active {
  transform: scale(0.995);
}

.mom-accordion__trigger:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: -2px;
}

/* Active/Expanded state - visual indicator on trigger */
.mom-accordion__item--open .mom-accordion__trigger {
  background: var(--accordion-bg-hover);
}

/* ================================================================== */
/*  Trigger content layout                                             */
/* ================================================================== */

.mom-accordion__trigger-content {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex: 1;
  min-width: 0;
}

/* Icon on the left of trigger */
.mom-accordion__trigger-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-5);
  height: var(--space-5);
  color: var(--accordion-icon-color);
}

.mom-accordion__trigger-icon svg {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-accordion__trigger:hover .mom-accordion__trigger-icon {
  color: var(--accordion-icon-color-hover);
}

/* Trigger text */
.mom-accordion__trigger-text {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ================================================================== */
/*  Chevron (expand/collapse indicator)                                */
/* ================================================================== */

.mom-accordion__chevron {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-5);
  height: var(--space-5);
  color: var(--accordion-icon-color);
  transition: transform var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

.mom-accordion__chevron svg {
  width: var(--space-4);
  height: var(--space-4);
  transition: transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

/* Rotate chevron when open with bounce */
.mom-accordion__item--open .mom-accordion__chevron {
  transform: rotate(180deg);
}

.mom-accordion__item--open .mom-accordion__chevron svg {
  animation: mom-accordion-chevron-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-accordion-chevron-bounce {
  0% { transform: scale(1) rotate(0); }
  50% { transform: scale(1.2) rotate(10deg); }
  100% { transform: scale(1) rotate(0); }
}

.mom-accordion__trigger:hover .mom-accordion__chevron {
  color: var(--accordion-icon-color-hover);
}

/* ================================================================== */
/*  Content panel                                                      */
/* ================================================================== */

.mom-accordion__content {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

.mom-accordion__item--open .mom-accordion__content {
  grid-template-rows: 1fr;
}

/* Inner wrapper for content animation */
.mom-accordion__content-inner {
  overflow: hidden;
  min-height: 0;
}

/* Content body with staggered children animation */
.mom-accordion__content-body {
  padding: 0 var(--space-4) var(--space-4) var(--space-4);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--accordion-content-color);
  opacity: 0;
  transform: translateY(-8px);
  transition:
    opacity var(--duration-normal, 0.25s) var(--ease-out-expo, ease),
    transform var(--duration-normal, 0.25s) var(--ease-out-expo, ease);
}

.mom-accordion__item--open .mom-accordion__content-body {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger animation for content children */
.mom-accordion__item--open .mom-accordion__content-body > * {
  opacity: 0;
  transform: translateY(6px);
  animation: mom-accordion-content-reveal var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
}

.mom-accordion__item--open .mom-accordion__content-body > *:nth-child(1) { animation-delay: 0.05s; }
.mom-accordion__item--open .mom-accordion__content-body > *:nth-child(2) { animation-delay: 0.1s; }
.mom-accordion__item--open .mom-accordion__content-body > *:nth-child(3) { animation-delay: 0.15s; }
.mom-accordion__item--open .mom-accordion__content-body > *:nth-child(4) { animation-delay: 0.2s; }
.mom-accordion__item--open .mom-accordion__content-body > *:nth-child(5) { animation-delay: 0.25s; }

@keyframes mom-accordion-content-reveal {
  0% {
    opacity: 0;
    transform: translateY(6px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* When trigger has icon, indent content to align */
.mom-accordion__trigger:has(.mom-accordion__trigger-icon) + .mom-accordion__content .mom-accordion__content-body {
  padding-left: calc(var(--space-4) + var(--space-5) + var(--space-3));
}

/* ================================================================== */
/*  Disabled state                                                     */
/* ================================================================== */

.mom-accordion__item--disabled .mom-accordion__trigger {
  cursor: not-allowed;
  opacity: 0.5;
  pointer-events: none;
}

.mom-accordion__item--disabled .mom-accordion__content-body {
  opacity: 0.5;
}

/* ================================================================== */
/*  Size variants                                                      */
/* ================================================================== */

.mom-accordion--sm .mom-accordion__trigger {
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-sm);
}

.mom-accordion--sm .mom-accordion__content-body {
  padding: 0 var(--space-3) var(--space-3) var(--space-3);
  font-size: var(--font-size-xs);
}

.mom-accordion--lg .mom-accordion__trigger {
  padding: var(--space-4) var(--space-5);
  font-size: var(--font-size-lg);
}

.mom-accordion--lg .mom-accordion__content-body {
  padding: 0 var(--space-5) var(--space-5) var(--space-5);
  font-size: var(--font-size-base);
}

/* ================================================================== */
/*  Variant: Bordered (separate items)                                */
/* ================================================================== */

.mom-accordion--bordered {
  gap: var(--space-2);
  padding: var(--space-2);
  background: transparent;
  border: none;
  box-shadow: none;
}

.mom-accordion--bordered .mom-accordion__item {
  border: 1px solid var(--accordion-border);
  border-radius: var(--radius-lg);
  background: var(--accordion-bg);
  box-shadow: var(--accordion-shadow);
  overflow: hidden;
}

/* ================================================================== */
/*  Variant: Ghost (minimal)                                          */
/* ================================================================== */

.mom-accordion--ghost {
  background: transparent;
  border: none;
  box-shadow: none;
}

.mom-accordion--ghost .mom-accordion__item {
  border-bottom-color: var(--border-subtle);
}

.mom-accordion--ghost .mom-accordion__trigger:hover {
  background: transparent;
}

/* ================================================================== */
/*  Reduced motion support                                            */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .mom-accordion__content,
  .mom-accordion__content-body,
  .mom-accordion__chevron {
    transition: none;
  }
  
  .mom-accordion__item--open .mom-accordion__content {
    grid-template-rows: 1fr;
  }
  
  .mom-accordion__item--open .mom-accordion__content-body {
    opacity: 1;
    transform: none;
  }
}


/* ── system/components/alert/alert.css ── */
/* ================================================================== */
/*  Mo~oM Design System — Notification Component                      */
/*  Floating card notification / toast                                 */
/*  Replaces the old border-left alert pattern                         */
/*  Radix-based color system — any color scale supported               */
/* ================================================================== */

/* ================================================================== */
/*  Color context                                                       */
/*                                                                      */
/*  Add a color class to activate the accent variant's palette.        */
/*  --nc-1  : card background (scale step 1 — near-black in dark)     */
/*  --nc-3  : glow orb fill (scale step 3)                            */
/*  --nc-a4 : border (alpha step 4)                                    */
/*  --nc-11 : text / icon (scale step 11)                              */
/*  --nc-a10: muted / timestamp (alpha step 10)                        */
/* ================================================================== */

.mom-notification--teal    { --nc-1:var(--teal-1);    --nc-3:var(--teal-3);    --nc-a4:var(--teal-a4);    --nc-11:var(--teal-11);    --nc-a10:var(--teal-a10);    }
.mom-notification--cyan    { --nc-1:var(--cyan-1);    --nc-3:var(--cyan-3);    --nc-a4:var(--cyan-a4);    --nc-11:var(--cyan-11);    --nc-a10:var(--cyan-a10);    }
.mom-notification--blue    { --nc-1:var(--blue-1);    --nc-3:var(--blue-3);    --nc-a4:var(--blue-a4);    --nc-11:var(--blue-11);    --nc-a10:var(--blue-a10);    }
.mom-notification--indigo  { --nc-1:var(--indigo-1);  --nc-3:var(--indigo-3);  --nc-a4:var(--indigo-a4);  --nc-11:var(--indigo-11);  --nc-a10:var(--indigo-a10);  }
.mom-notification--violet  { --nc-1:var(--violet-1);  --nc-3:var(--violet-3);  --nc-a4:var(--violet-a4);  --nc-11:var(--violet-11);  --nc-a10:var(--violet-a10);  }
.mom-notification--purple  { --nc-1:var(--purple-1);  --nc-3:var(--purple-3);  --nc-a4:var(--purple-a4);  --nc-11:var(--purple-11);  --nc-a10:var(--purple-a10);  }
.mom-notification--plum    { --nc-1:var(--plum-1);    --nc-3:var(--plum-3);    --nc-a4:var(--plum-a4);    --nc-11:var(--plum-11);    --nc-a10:var(--plum-a10);    }
.mom-notification--pink    { --nc-1:var(--pink-1);    --nc-3:var(--pink-3);    --nc-a4:var(--pink-a4);    --nc-11:var(--pink-11);    --nc-a10:var(--pink-a10);    }
.mom-notification--crimson { --nc-1:var(--crimson-1); --nc-3:var(--crimson-3); --nc-a4:var(--crimson-a4); --nc-11:var(--crimson-11); --nc-a10:var(--crimson-a10); }
.mom-notification--red     { --nc-1:var(--red-1);     --nc-3:var(--red-3);     --nc-a4:var(--red-a4);     --nc-11:var(--red-11);     --nc-a10:var(--red-a10);     }
.mom-notification--tomato  { --nc-1:var(--tomato-1);  --nc-3:var(--tomato-3);  --nc-a4:var(--tomato-a4);  --nc-11:var(--tomato-11);  --nc-a10:var(--tomato-a10);  }
.mom-notification--orange  { --nc-1:var(--orange-1);  --nc-3:var(--orange-3);  --nc-a4:var(--orange-a4);  --nc-11:var(--orange-11);  --nc-a10:var(--orange-a10);  }
.mom-notification--amber   { --nc-1:var(--amber-1);   --nc-3:var(--amber-3);   --nc-a4:var(--amber-a4);   --nc-11:var(--amber-11);   --nc-a10:var(--amber-a10);   }
.mom-notification--yellow  { --nc-1:var(--yellow-1);  --nc-3:var(--yellow-3);  --nc-a4:var(--yellow-a4);  --nc-11:var(--yellow-11);  --nc-a10:var(--yellow-a10);  }
.mom-notification--green   { --nc-1:var(--green-1);   --nc-3:var(--green-3);   --nc-a4:var(--green-a4);   --nc-11:var(--green-11);   --nc-a10:var(--green-a10);   }
.mom-notification--grass   { --nc-1:var(--grass-1);   --nc-3:var(--grass-3);   --nc-a4:var(--grass-a4);   --nc-11:var(--grass-11);   --nc-a10:var(--grass-a10);   }
.mom-notification--brown   { --nc-1:var(--brown-1);   --nc-3:var(--brown-3);   --nc-a4:var(--brown-a4);   --nc-11:var(--brown-11);   --nc-a10:var(--brown-a10);   }
.mom-notification--gray    { --nc-1:var(--gray-1);    --nc-3:var(--gray-3);    --nc-a4:var(--gray-a4);    --nc-11:var(--gray-11);    --nc-a10:var(--gray-a10);    }
.mom-notification--slate   { --nc-1:var(--slate-1);   --nc-3:var(--slate-3);   --nc-a4:var(--slate-a4);   --nc-11:var(--slate-11);   --nc-a10:var(--slate-a10);   }

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-notification {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-lg);
  border: 1px solid var(--slate-a4);
  background: var(--slate-1);
  font-family: var(--font-sans);
  box-shadow: var(--shadow-sm);
  width: 100%;
  max-width: 360px;
  opacity: 0;
  transform: translateX(20px);
  animation: mom-notification-enter var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
  transition:
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

@keyframes mom-notification-enter {
  0% {
    opacity: 0;
    transform: translateX(20px);
  }
  60% {
    transform: translateX(-4px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

.mom-notification:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}

/* Gloss + depth via inset shadow overlay */
.mom-notification::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow:
    inset 0  1px 0 rgba(255, 255, 255, 0.12),
    inset 0 -1px 0 rgba(0, 0, 0, 0.40);
}

:root.light .mom-notification::after {
  box-shadow:
    inset 0  1px 0 rgba(255, 255, 255, 0.80),
    inset 0 -1px 0 rgba(0, 0, 0, 0.06);
}

/* ── Icon ──────────────────────────────────────────────────────── */

.mom-notification__icon {
  flex-shrink: 0;
  width: var(--space-6);
  height: var(--space-6);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-secondary);
  position: relative;
  z-index: 1;
}

.mom-notification__icon svg {
  width: var(--space-6);
  height: var(--space-6);
}

/* ── Content ────────────────────────────────────────────────────── */

.mom-notification__content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  position: relative;
  z-index: 1;
}

.mom-notification__title {
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--slate-12);
  margin: 0;
}

.mom-notification__body {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--slate-11);
  margin: 0;
}

.mom-notification__time {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  line-height: var(--line-height-xs);
  color: var(--slate-a10);
  margin: 0;
}

/* ── Actions ────────────────────────────────────────────────────── */

.mom-notification__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  padding-bottom: var(--space-2);
}

.mom-notification__action {
  display: inline-flex;
  align-items: center;
  overflow: hidden;
  height: var(--space-5);
  gap: var(--space-2);
  font-family: inherit;
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  line-height: var(--line-height-sm);
  text-decoration: underline;
  text-decoration-skip-ink: none;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: var(--slate-12);
  transition: opacity var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
              transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-notification__action:hover {
  opacity: 0.75;
  transform: translateX(2px);
}

.mom-notification__action:active {
  transform: translateX(2px) scale(0.98);
}

.mom-notification__action--primary { color: var(--teal-11); }

.mom-notification__action svg {
  width: var(--space-6);
  height: var(--space-6);
  flex-shrink: 0;
}

/* ── Close ──────────────────────────────────────────────────────── */

.mom-notification__close {
  flex-shrink: 0;
  width: var(--space-6);
  height: var(--space-6);
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: var(--text-muted);
  border-radius: var(--radius);
  position: relative;
  z-index: 1;
  transition:
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-notification__close:hover {
  color: var(--text-primary);
  background: var(--surface-hover);
  transform: scale(1.1) rotate(90deg);
}

.mom-notification__close:active {
  transform: scale(0.95) rotate(90deg);
}

.mom-notification__close svg {
  width: var(--space-4);
  height: var(--space-4);
}

/* ================================================================== */
/*  Compact variant — title row only                                   */
/* ================================================================== */

.mom-notification--compact .mom-notification__body,
.mom-notification--compact .mom-notification__time,
.mom-notification--compact .mom-notification__actions {
  display: none;
}

/* ================================================================== */
/*  Accent variant — color-filled background                           */
/*  Requires a color class (e.g. --teal) to supply --nc-* vars        */
/* ================================================================== */

.mom-notification--accent {
  background:   var(--nc-1);
  border-color: var(--nc-a4);
}

.mom-notification--accent .mom-notification__icon  { color: var(--nc-11); }
.mom-notification--accent .mom-notification__title { color: var(--nc-11); }
.mom-notification--accent .mom-notification__body  { color: var(--nc-11); }
.mom-notification--accent .mom-notification__time  { color: var(--nc-a10); }

.mom-notification--accent .mom-notification__action         { color: var(--slate-12); }
.mom-notification--accent .mom-notification__action--primary { color: var(--nc-11); }

.mom-notification--accent .mom-notification__close {
  color: var(--nc-11);
  opacity: 0.6;
}
.mom-notification--accent .mom-notification__close:hover {
  opacity: 1;
  background: var(--nc-a4);
}

/* ================================================================== */
/*  Glow decoration — decorative orb for accent variant               */
/*  Requires a <div class="mom-notification__glow"> as first child    */
/* ================================================================== */

.mom-notification--glow { overflow: hidden; }

.mom-notification__glow {
  position: absolute;
  inset: -1px;
  overflow: hidden;
  pointer-events: none;
  border-radius: inherit;
}

.mom-notification__glow-orb {
  position: absolute;
  width: 240px;
  height: 240px;
  border-radius: 160px;
  background: var(--nc-3);
  top: -111px;
  right: -32px;
}

.mom-notification__glow-blur {
  position: absolute;
  inset: 0;
  bottom: -1px;
  backdrop-filter: blur(var(--blur-3xl));
  background: rgba(255, 255, 255, 0.01);
}

/* ================================================================== */
/*  Legacy aliases — mom-alert maps to mom-notification               */
/* ================================================================== */

.mom-alert                  { }
.mom-alert--info            { --nc-1:var(--blue-1);  --nc-a4:var(--blue-a4);  --nc-11:var(--blue-11);  --nc-a10:var(--blue-a10);  }
.mom-alert--success         { --nc-1:var(--teal-1);  --nc-a4:var(--teal-a4);  --nc-11:var(--teal-11);  --nc-a10:var(--teal-a10);  }
.mom-alert--warning         { --nc-1:var(--amber-1); --nc-a4:var(--amber-a4); --nc-11:var(--amber-11); --nc-a10:var(--amber-a10); }
.mom-alert--error           { --nc-1:var(--red-1);   --nc-a4:var(--red-a4);   --nc-11:var(--red-11);   --nc-a10:var(--red-a10);   }


/* ── system/components/avatar/avatar.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Avatar Component                             */
/*  User photo, initials, or icon with optional status dot             */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-avatar {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: var(--radius-full);
  font-family: var(--font-sans);
  font-weight: var(--font-semibold);
  color: white;
  background: var(--gray-9);
  /* Note: overflow is NOT hidden to allow badges/overlays to extend beyond container */
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-avatar--xs {
  width: var(--space-6);
  height: var(--space-6);
  font-size: 10px;
}

.mom-avatar--sm {
  width: var(--space-8);
  height: var(--space-8);
  font-size: var(--font-size-xs);
}

.mom-avatar--md {
  width: var(--space-10);
  height: var(--space-10);
  font-size: var(--font-size-sm);
}

.mom-avatar--lg {
  width: var(--space-12);
  height: var(--space-12);
  font-size: var(--font-size-lg);
}

.mom-avatar--xl {
  width: var(--space-16);
  height: var(--space-16);
  font-size: var(--font-size-2xl);
}

/* ================================================================== */
/*  Square variant                                                     */
/* ================================================================== */

.mom-avatar--square {
  border-radius: var(--radius-lg);
}

/* ================================================================== */
/*  Colors                                                             */
/* ================================================================== */

.mom-avatar--teal   { background: var(--teal-9); }
.mom-avatar--red    { background: var(--red-9); }
.mom-avatar--pink   { background: var(--pink-9); }
.mom-avatar--purple { background: var(--purple-9); }
.mom-avatar--blue   { background: var(--blue-9); }
.mom-avatar--gold   { background: var(--gold-9); }
.mom-avatar--gray   { background: var(--gray-9); }

/* ================================================================== */
/*  Inner elements                                                     */
/* ================================================================== */

.mom-avatar__icon {
  width: 50%;
  height: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 0;
}

.mom-avatar__icon svg {
  width: 100%;
  height: 100%;
  stroke: currentColor;
}

.mom-avatar__text {
  line-height: 1;
  text-transform: uppercase;
  z-index: 0;
}

.mom-avatar__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
}

/* ================================================================== */
/*  Status dot                                                         */
/* ================================================================== */

.mom-avatar__status {
  position: absolute;
  bottom: 0;
  right: 0;
  width: 25%;
  height: 25%;
  min-width: var(--space-1-5);
  min-height: var(--space-1-5);
  border-radius: var(--radius-full);
  border: var(--space-0-5) solid var(--bg);
  z-index: 1;
}

.mom-avatar__status--online  { background: var(--green-9); }
.mom-avatar__status--offline { background: var(--gray-8); }
.mom-avatar__status--away    { background: var(--orange-9); }
.mom-avatar__status--busy    { background: var(--red-9); }


/* ── system/components/badge-group/badge-group.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Badge Group Component                        */
/*  Maps to Figma: Components > Badge group                           */
/*  Composite element: badge + text + optional icon                   */
/* ================================================================== */

/* ================================================================== */
/*  Color tokens (inherited from badge component)                     */
/* ================================================================== */

.mom-badge-group--teal    { --badge-c-bg:var(--teal-a4);    --badge-c-hover:var(--teal-a2);    --badge-c-ring:var(--teal-a7);    --badge-c-1:var(--teal-1);    --badge-c-7:var(--teal-7);    --badge-c-9:var(--teal-9);    --badge-c-12:var(--teal-12);    --badge-c-11:var(--teal-11);    }
.mom-badge-group--cyan    { --badge-c-bg:var(--cyan-a4);    --badge-c-hover:var(--cyan-a2);    --badge-c-ring:var(--cyan-a7);    --badge-c-1:var(--cyan-1);    --badge-c-7:var(--cyan-7);    --badge-c-9:var(--cyan-9);    --badge-c-12:var(--cyan-12);    --badge-c-11:var(--cyan-11);    }
.mom-badge-group--blue    { --badge-c-bg:var(--blue-a4);    --badge-c-hover:var(--blue-a2);    --badge-c-ring:var(--blue-a7);    --badge-c-1:var(--blue-1);    --badge-c-7:var(--blue-7);    --badge-c-9:var(--blue-9);    --badge-c-12:var(--blue-12);    --badge-c-11:var(--blue-11);    }
.mom-badge-group--indigo  { --badge-c-bg:var(--indigo-a4);  --badge-c-hover:var(--indigo-a2);  --badge-c-ring:var(--indigo-a7);  --badge-c-1:var(--indigo-1);  --badge-c-7:var(--indigo-7);  --badge-c-9:var(--indigo-9);  --badge-c-12:var(--indigo-12);  --badge-c-11:var(--indigo-11);  }
.mom-badge-group--violet  { --badge-c-bg:var(--violet-a4);  --badge-c-hover:var(--violet-a2);  --badge-c-ring:var(--violet-a7);  --badge-c-1:var(--violet-1);  --badge-c-7:var(--violet-7);  --badge-c-9:var(--violet-9);  --badge-c-12:var(--violet-12);  --badge-c-11:var(--violet-11);  }
.mom-badge-group--purple  { --badge-c-bg:var(--purple-a4);  --badge-c-hover:var(--purple-a2);  --badge-c-ring:var(--purple-a7);  --badge-c-1:var(--purple-1);  --badge-c-7:var(--purple-7);  --badge-c-9:var(--purple-9);  --badge-c-12:var(--purple-12);  --badge-c-11:var(--purple-11);  }
.mom-badge-group--plum    { --badge-c-bg:var(--plum-a4);    --badge-c-hover:var(--plum-a2);    --badge-c-ring:var(--plum-a7);    --badge-c-1:var(--plum-1);    --badge-c-7:var(--plum-7);    --badge-c-9:var(--plum-9);    --badge-c-12:var(--plum-12);    --badge-c-11:var(--plum-11);    }
.mom-badge-group--pink    { --badge-c-bg:var(--pink-a4);    --badge-c-hover:var(--pink-a2);    --badge-c-ring:var(--pink-a7);    --badge-c-1:var(--pink-1);    --badge-c-7:var(--pink-7);    --badge-c-9:var(--pink-9);    --badge-c-12:var(--pink-12);    --badge-c-11:var(--pink-11);    }
.mom-badge-group--crimson { --badge-c-bg:var(--crimson-a4); --badge-c-hover:var(--crimson-a2); --badge-c-ring:var(--crimson-a7); --badge-c-1:var(--crimson-1); --badge-c-7:var(--crimson-7); --badge-c-9:var(--crimson-9); --badge-c-12:var(--crimson-12); --badge-c-11:var(--crimson-11); }
.mom-badge-group--red     { --badge-c-bg:var(--red-a4);     --badge-c-hover:var(--red-a2);     --badge-c-ring:var(--red-a7);     --badge-c-1:var(--red-1);     --badge-c-7:var(--red-7);     --badge-c-9:var(--red-9);     --badge-c-12:var(--red-12);     --badge-c-11:var(--red-11);     }
.mom-badge-group--tomato  { --badge-c-bg:var(--tomato-a4);  --badge-c-hover:var(--tomato-a2);  --badge-c-ring:var(--tomato-a7);  --badge-c-1:var(--tomato-1);  --badge-c-7:var(--tomato-7);  --badge-c-9:var(--tomato-9);  --badge-c-12:var(--tomato-12);  --badge-c-11:var(--tomato-11);  }
.mom-badge-group--orange  { --badge-c-bg:var(--orange-a4);  --badge-c-hover:var(--orange-a2);  --badge-c-ring:var(--orange-a7);  --badge-c-1:var(--orange-1);  --badge-c-7:var(--orange-7);  --badge-c-9:var(--orange-9);  --badge-c-12:var(--orange-12);  --badge-c-11:var(--orange-11);  }
.mom-badge-group--amber   { --badge-c-bg:var(--amber-a4);   --badge-c-hover:var(--amber-a2);   --badge-c-ring:var(--amber-a7);   --badge-c-1:var(--amber-1);   --badge-c-7:var(--amber-7);   --badge-c-9:var(--amber-9);   --badge-c-12:var(--amber-12);   --badge-c-11:var(--amber-11);   }
.mom-badge-group--yellow  { --badge-c-bg:var(--yellow-a4);  --badge-c-hover:var(--yellow-a2);  --badge-c-ring:var(--yellow-a7);  --badge-c-1:var(--yellow-1);  --badge-c-7:var(--yellow-7);  --badge-c-9:var(--yellow-9);  --badge-c-12:var(--yellow-12);  --badge-c-11:var(--yellow-11);  }
.mom-badge-group--green   { --badge-c-bg:var(--green-a4);   --badge-c-hover:var(--green-a2);   --badge-c-ring:var(--green-a7);   --badge-c-1:var(--green-1);   --badge-c-7:var(--green-7);   --badge-c-9:var(--green-9);   --badge-c-12:var(--green-12);   --badge-c-11:var(--green-11);   }
.mom-badge-group--grass   { --badge-c-bg:var(--grass-a4);   --badge-c-hover:var(--grass-a2);   --badge-c-ring:var(--grass-a7);   --badge-c-1:var(--grass-1);   --badge-c-7:var(--grass-7);   --badge-c-9:var(--grass-9);   --badge-c-12:var(--grass-12);   --badge-c-11:var(--grass-11);   }
.mom-badge-group--brown   { --badge-c-bg:var(--brown-a4);   --badge-c-hover:var(--brown-a2);   --badge-c-ring:var(--brown-a7);   --badge-c-1:var(--brown-1);   --badge-c-7:var(--brown-7);   --badge-c-9:var(--brown-9);   --badge-c-12:var(--brown-12);   --badge-c-11:var(--brown-11);   }
.mom-badge-group--gray    { --badge-c-bg:var(--gray-a4);    --badge-c-hover:var(--gray-a2);    --badge-c-ring:var(--gray-a7);    --badge-c-1:var(--gray-1);    --badge-c-7:var(--gray-7);    --badge-c-9:var(--gray-9);    --badge-c-12:var(--gray-12);    --badge-c-11:var(--gray-11);    }
.mom-badge-group--slate   { --badge-c-bg:var(--slate-a4);   --badge-c-hover:var(--slate-a2);   --badge-c-ring:var(--slate-a7);   --badge-c-1:var(--slate-1);   --badge-c-7:var(--slate-7);   --badge-c-9:var(--slate-9);   --badge-c-12:var(--slate-12);   --badge-c-11:var(--slate-11);   }

/* ================================================================== */
/*  Badge Group                                                        */
/* ================================================================== */

.mom-badge-group {
  display: inline-flex;
  align-items: center;
  border-radius: var(--radius-full);
  white-space: nowrap;
  flex-shrink: 0;
  padding-top: var(--space-1);
  padding-bottom: var(--space-1);
  cursor: pointer;
}

/* Dark */
.mom-badge-group--ghost   { background: var(--badge-c-bg); color: var(--badge-c-12); }
.mom-badge-group--solid   { background: var(--badge-c-9);  color: white; }
.mom-badge-group--outline { background: transparent; border: 1px solid var(--badge-c-7); color: var(--badge-c-12); }

/* Light */
:root.light .mom-badge-group--ghost   { color: var(--badge-c-11); }
:root.light .mom-badge-group--outline { color: var(--badge-c-11); }

/* Solid variant with badge on left: inner badge uses page background (black/white) */
.mom-badge-group--solid.mom-badge-group--badge-left .mom-badge { background: var(--bg); color: var(--badge-c-11); }
:root.light .mom-badge-group--solid.mom-badge-group--badge-left .mom-badge { color: var(--badge-c-11); }

.mom-badge-group__text { font-family: var(--font-sans); font-weight: var(--font-medium); flex-shrink: 0; }
.mom-badge-group__icon { display: flex; align-items: center; justify-content: center; width: var(--space-6); height: var(--space-6); flex-shrink: 0; }
.mom-badge-group__icon svg { width: 100%; height: 100%; }

/* md — inner sm badge  font:12px/18px  gap:8px */
.mom-badge-group--md { gap: var(--space-2); }
.mom-badge-group--md.mom-badge-group--badge-left  { padding-left: var(--space-1);  padding-right: 10px; }
.mom-badge-group--md.mom-badge-group--badge-right { padding-left: var(--space-3); padding-right: var(--space-1); }
.mom-badge-group--md .mom-badge-group__text { font-size: var(--font-size-xs); line-height: var(--line-height-sm); }

/* lg — inner md badge  font:14px/20px  gap:12px */
.mom-badge-group--lg { gap: var(--space-3); }
.mom-badge-group--lg.mom-badge-group--badge-left  { padding-left: var(--space-1);  padding-right: 10px; }
.mom-badge-group--lg.mom-badge-group--badge-right { padding-left: var(--space-3-5); padding-right: var(--space-1); }
.mom-badge-group--lg .mom-badge-group__text { font-size: var(--font-size-sm); line-height: var(--line-height-sm); }


/* ── system/components/badge/badge.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Badge Component                              */
/*  Sizes:    sm (22px) · md (24px) · lg (28px)                       */
/*  Variants: ghost · solid · outline                                  */
/*  Colors:   full Radix color palette                                 */
/* ================================================================== */

/* ================================================================== */
/*  Color context                                                      */
/*                                                                     */
/*  Each color modifier sets concrete Radix scale references.          */
/*  Variant rules then pick which scale level to use.                  */
/*                                                                     */
/*  --badge-c-bg     = a4   ghost background (all modes)              */
/*  --badge-c-hover  = a2   tag x-close hover                         */
/*  --badge-c-ring   = a7   tag x-close focus ring                    */
/*  --badge-c-7      = -7   outline border                            */
/*  --badge-c-9      = -9   solid background (all modes)              */
/*  --badge-c-12     = -12  ghost/outline dark fg                     */
/*  --badge-c-11     = -11  ghost/outline light fg                    */
/* ================================================================== */

.mom-badge--teal,    .mom-badge-group--teal,    .mom-tag-xclose--teal    { --badge-c-bg:var(--teal-a4);    --badge-c-hover:var(--teal-a2);    --badge-c-ring:var(--teal-a7);    --badge-c-7:var(--teal-7);    --badge-c-9:var(--teal-9);    --badge-c-12:var(--teal-12);    --badge-c-11:var(--teal-11);    }
.mom-badge--cyan,    .mom-badge-group--cyan,    .mom-tag-xclose--cyan    { --badge-c-bg:var(--cyan-a4);    --badge-c-hover:var(--cyan-a2);    --badge-c-ring:var(--cyan-a7);    --badge-c-7:var(--cyan-7);    --badge-c-9:var(--cyan-9);    --badge-c-12:var(--cyan-12);    --badge-c-11:var(--cyan-11);    }
.mom-badge--blue,    .mom-badge-group--blue,    .mom-tag-xclose--blue    { --badge-c-bg:var(--blue-a4);    --badge-c-hover:var(--blue-a2);    --badge-c-ring:var(--blue-a7);    --badge-c-7:var(--blue-7);    --badge-c-9:var(--blue-9);    --badge-c-12:var(--blue-12);    --badge-c-11:var(--blue-11);    }
.mom-badge--indigo,  .mom-badge-group--indigo,  .mom-tag-xclose--indigo  { --badge-c-bg:var(--indigo-a4);  --badge-c-hover:var(--indigo-a2);  --badge-c-ring:var(--indigo-a7);  --badge-c-7:var(--indigo-7);  --badge-c-9:var(--indigo-9);  --badge-c-12:var(--indigo-12);  --badge-c-11:var(--indigo-11);  }
.mom-badge--violet,  .mom-badge-group--violet,  .mom-tag-xclose--violet  { --badge-c-bg:var(--violet-a4);  --badge-c-hover:var(--violet-a2);  --badge-c-ring:var(--violet-a7);  --badge-c-7:var(--violet-7);  --badge-c-9:var(--violet-9);  --badge-c-12:var(--violet-12);  --badge-c-11:var(--violet-11);  }
.mom-badge--purple,  .mom-badge-group--purple,  .mom-tag-xclose--purple  { --badge-c-bg:var(--purple-a4);  --badge-c-hover:var(--purple-a2);  --badge-c-ring:var(--purple-a7);  --badge-c-7:var(--purple-7);  --badge-c-9:var(--purple-9);  --badge-c-12:var(--purple-12);  --badge-c-11:var(--purple-11);  }
.mom-badge--plum,    .mom-badge-group--plum,    .mom-tag-xclose--plum    { --badge-c-bg:var(--plum-a4);    --badge-c-hover:var(--plum-a2);    --badge-c-ring:var(--plum-a7);    --badge-c-7:var(--plum-7);    --badge-c-9:var(--plum-9);    --badge-c-12:var(--plum-12);    --badge-c-11:var(--plum-11);    }
.mom-badge--pink,    .mom-badge-group--pink,    .mom-tag-xclose--pink    { --badge-c-bg:var(--pink-a4);    --badge-c-hover:var(--pink-a2);    --badge-c-ring:var(--pink-a7);    --badge-c-7:var(--pink-7);    --badge-c-9:var(--pink-9);    --badge-c-12:var(--pink-12);    --badge-c-11:var(--pink-11);    }
.mom-badge--crimson, .mom-badge-group--crimson, .mom-tag-xclose--crimson { --badge-c-bg:var(--crimson-a4); --badge-c-hover:var(--crimson-a2); --badge-c-ring:var(--crimson-a7); --badge-c-7:var(--crimson-7); --badge-c-9:var(--crimson-9); --badge-c-12:var(--crimson-12); --badge-c-11:var(--crimson-11); }
.mom-badge--red,     .mom-badge-group--red,     .mom-tag-xclose--red     { --badge-c-bg:var(--red-a4);     --badge-c-hover:var(--red-a2);     --badge-c-ring:var(--red-a7);     --badge-c-7:var(--red-7);     --badge-c-9:var(--red-9);     --badge-c-12:var(--red-12);     --badge-c-11:var(--red-11);     }
.mom-badge--tomato,  .mom-badge-group--tomato,  .mom-tag-xclose--tomato  { --badge-c-bg:var(--tomato-a4);  --badge-c-hover:var(--tomato-a2);  --badge-c-ring:var(--tomato-a7);  --badge-c-7:var(--tomato-7);  --badge-c-9:var(--tomato-9);  --badge-c-12:var(--tomato-12);  --badge-c-11:var(--tomato-11);  }
.mom-badge--orange,  .mom-badge-group--orange,  .mom-tag-xclose--orange  { --badge-c-bg:var(--orange-a4);  --badge-c-hover:var(--orange-a2);  --badge-c-ring:var(--orange-a7);  --badge-c-7:var(--orange-7);  --badge-c-9:var(--orange-9);  --badge-c-12:var(--orange-12);  --badge-c-11:var(--orange-11);  }
.mom-badge--amber,   .mom-badge-group--amber,   .mom-tag-xclose--amber   { --badge-c-bg:var(--amber-a4);   --badge-c-hover:var(--amber-a2);   --badge-c-ring:var(--amber-a7);   --badge-c-7:var(--amber-7);   --badge-c-9:var(--amber-9);   --badge-c-12:var(--amber-12);   --badge-c-11:var(--amber-11);   }
.mom-badge--yellow,  .mom-badge-group--yellow,  .mom-tag-xclose--yellow  { --badge-c-bg:var(--yellow-a4);  --badge-c-hover:var(--yellow-a2);  --badge-c-ring:var(--yellow-a7);  --badge-c-7:var(--yellow-7);  --badge-c-9:var(--yellow-9);  --badge-c-12:var(--yellow-12);  --badge-c-11:var(--yellow-11);  }
.mom-badge--green,   .mom-badge-group--green,   .mom-tag-xclose--green   { --badge-c-bg:var(--green-a4);   --badge-c-hover:var(--green-a2);   --badge-c-ring:var(--green-a7);   --badge-c-7:var(--green-7);   --badge-c-9:var(--green-9);   --badge-c-12:var(--green-12);   --badge-c-11:var(--green-11);   }
.mom-badge--grass,   .mom-badge-group--grass,   .mom-tag-xclose--grass   { --badge-c-bg:var(--grass-a4);   --badge-c-hover:var(--grass-a2);   --badge-c-ring:var(--grass-a7);   --badge-c-7:var(--grass-7);   --badge-c-9:var(--grass-9);   --badge-c-12:var(--grass-12);   --badge-c-11:var(--grass-11);   }
.mom-badge--brown,   .mom-badge-group--brown,   .mom-tag-xclose--brown   { --badge-c-bg:var(--brown-a4);   --badge-c-hover:var(--brown-a2);   --badge-c-ring:var(--brown-a7);   --badge-c-7:var(--brown-7);   --badge-c-9:var(--brown-9);   --badge-c-12:var(--brown-12);   --badge-c-11:var(--brown-11);   }
.mom-badge--gray,    .mom-badge-group--gray,    .mom-tag-xclose--gray    { --badge-c-bg:var(--gray-a4);    --badge-c-hover:var(--gray-a2);    --badge-c-ring:var(--gray-a7);    --badge-c-7:var(--gray-7);    --badge-c-9:var(--gray-9);    --badge-c-12:var(--gray-12);    --badge-c-11:var(--gray-11);    }
.mom-badge--slate,   .mom-badge-group--slate,   .mom-tag-xclose--slate   { --badge-c-bg:var(--slate-a4);   --badge-c-hover:var(--slate-a2);   --badge-c-ring:var(--slate-a7);   --badge-c-7:var(--slate-7);   --badge-c-9:var(--slate-9);   --badge-c-12:var(--slate-12);   --badge-c-11:var(--slate-11);   }

/* ================================================================== */
/*  Badge — base                                                      */
/* ================================================================== */

.mom-badge {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-sans);
  font-weight: var(--font-medium);
  border-radius: var(--radius-full);
  white-space: nowrap;
  overflow: hidden;
  flex-shrink: 0;
  transition:
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

/* Hover lift effect */
.mom-badge:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

/* Pulse animation for updates */
.mom-badge--pulse {
  animation: mom-badge-pulse var(--duration-slower, 0.6s) var(--ease-out-quart, ease) 2;
}

@keyframes mom-badge-pulse {
  0%, 100% {
    box-shadow: 0 0 0 0 var(--badge-c-bg, rgba(20, 184, 166, 0.4));
  }
  50% {
    box-shadow: 0 0 0 8px transparent;
  }
}

/* Pop-in animation for new badges */
.mom-badge--new {
  animation: mom-badge-pop-in var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-badge-pop-in {
  0% {
    opacity: 0;
    transform: scale(0) translateY(10px);
  }
  60% {
    transform: scale(1.1) translateY(-2px);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

/* Icon slot (clipped to badge height) */
.mom-badge__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  flex-shrink: 0;
}

.mom-badge__icon svg { width: 100%; height: 100%; }

.mom-badge__label { flex-shrink: 0; }

/* Dot indicator */
.mom-badge__dot {
  border-radius: var(--radius-full);
  flex-shrink: 0;
  background: currentColor;
  opacity: 0.7;
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-badge--sm { height: 22px; padding: var(--space-0-5) var(--space-1); font-size: var(--font-size-xs); line-height: var(--line-height-sm); }
.mom-badge--sm .mom-badge__label { padding: 0 var(--space-1); }
.mom-badge--sm .mom-badge__dot   { width: var(--space-1); height: var(--space-1); margin: 0 var(--space-0-5); }

.mom-badge--md { height: 24px; padding: var(--space-0-5) var(--space-1-5); font-size: var(--font-size-sm); line-height: var(--line-height-sm); }
.mom-badge--md .mom-badge__label { padding: 0 var(--space-1-5); }
.mom-badge--md .mom-badge__dot   { width: var(--space-1-5); height: var(--space-1-5); margin: 0 var(--space-0-5); }

.mom-badge--lg { height: 28px; padding: var(--space-1) var(--space-1-5); font-size: var(--font-size-sm); line-height: var(--line-height-sm); }
.mom-badge--lg .mom-badge__label { padding: 0 var(--space-2); }
.mom-badge--lg .mom-badge__dot   { width: var(--space-1-5); height: var(--space-1-5); margin: 0 var(--space-0-5); }

/* Icon-only mode */
.mom-badge--icon-only { height: auto; width: auto; }
.mom-badge--icon-only.mom-badge--sm { padding: var(--space-0-5); }
.mom-badge--icon-only.mom-badge--md { padding: var(--space-1); }
.mom-badge--icon-only.mom-badge--lg { padding: var(--space-1-5); }

/* ================================================================== */
/*  Variants — dark mode (default)                                     */
/*                                                                     */
/*  ghost:   bg=a4    fg=-12                                           */
/*  solid:   bg=-9    fg=white (all modes)                             */
/*  outline: bg=none  border=-7  fg=-12                               */
/* ================================================================== */

.mom-badge--ghost   { background: var(--badge-c-bg); color: var(--badge-c-12); }
.mom-badge--solid   { background: var(--badge-c-9);  color: white; }
.mom-badge--outline { background: transparent; border: 1px solid var(--badge-c-7); color: var(--badge-c-12); }

/* ================================================================== */
/*  Variants — light mode overrides                                    */
/*                                                                     */
/*  ghost:   fg=-11   (bg stays a4)                                   */
/*  outline: fg=-11   (border stays -7)                               */
/* ================================================================== */

:root.light .mom-badge--ghost   { color: var(--badge-c-11); }
:root.light .mom-badge--outline { color: var(--badge-c-11); }

/* ================================================================== */
/*  Badge Group                                                        */
/* ================================================================== */

.mom-badge-group {
  display: inline-flex;
  align-items: center;
  border-radius: var(--radius-full);
  white-space: nowrap;
  flex-shrink: 0;
  padding-top: var(--space-1);
  padding-bottom: var(--space-1);
  cursor: pointer;
}

/* Dark */
.mom-badge-group--ghost   { background: var(--badge-c-bg); color: var(--badge-c-12); }
.mom-badge-group--solid   { background: var(--badge-c-9);  color: white; }
.mom-badge-group--outline { background: transparent; border: 1px solid var(--badge-c-7); color: var(--badge-c-12); }

/* Light */
:root.light .mom-badge-group--ghost   { color: var(--badge-c-11); }
:root.light .mom-badge-group--outline { color: var(--badge-c-11); }

.mom-badge-group__text { font-family: var(--font-sans); font-weight: var(--font-medium); flex-shrink: 0; }
.mom-badge-group__icon { display: flex; align-items: center; justify-content: center; width: var(--space-6); height: var(--space-6); flex-shrink: 0; }
.mom-badge-group__icon svg { width: 100%; height: 100%; }

/* md — inner sm badge  font:12px/18px  gap:8px */
.mom-badge-group--md { gap: var(--space-2); }
.mom-badge-group--md.mom-badge-group--badge-left  { padding-left: var(--space-1);  padding-right: 10px; }
.mom-badge-group--md.mom-badge-group--badge-right { padding-left: var(--space-3); padding-right: var(--space-1); }
.mom-badge-group--md .mom-badge-group__text { font-size: var(--font-size-xs); line-height: var(--line-height-sm); }

/* lg — inner md badge  font:14px/20px  gap:12px */
.mom-badge-group--lg { gap: var(--space-3); }
.mom-badge-group--lg.mom-badge-group--badge-left  { padding-left: var(--space-1);  padding-right: 10px; }
.mom-badge-group--lg.mom-badge-group--badge-right { padding-left: var(--space-3-5); padding-right: var(--space-1); }
.mom-badge-group--lg .mom-badge-group__text { font-size: var(--font-size-sm); line-height: var(--line-height-sm); }

/* ================================================================== */
/*  Tag X-Close                                                        */
/*  sm/md: p=2px + 24px icon = 28px  ·  lg: p=3px + 24px = 30px      */
/* ================================================================== */

.mom-tag-xclose {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  cursor: pointer;
  border-radius: var(--radius-sm);
  color: var(--badge-c-12);
  padding: 0;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
  flex-shrink: 0;
}

:root.light .mom-tag-xclose { color: var(--badge-c-11); }

.mom-tag-xclose:hover,
.mom-tag-xclose.force-hover {
  background: var(--badge-c-hover);
  transform: scale(1.1) rotate(90deg);
}

.mom-tag-xclose:active {
  transform: scale(0.95) rotate(90deg);
}

.mom-tag-xclose:focus,
.mom-tag-xclose:focus-visible,
.mom-tag-xclose.force-focus {
  outline: none;
  background: var(--badge-c-bg);
  box-shadow: 0 0 0 2px var(--badge-c-ring);
  animation: mom-tag-xclose-focus var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

@keyframes mom-tag-xclose-focus {
  0% { box-shadow: 0 0 0 0 var(--badge-c-ring); }
  50% { box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.2); }
  100% { box-shadow: 0 0 0 2px var(--badge-c-ring); }
}

.mom-tag-xclose__icon { display: flex; align-items: center; justify-content: center; }
.mom-tag-xclose__icon svg { width: 100%; height: 100%; }

.mom-tag-xclose--sm { padding: var(--space-0-5); }
.mom-tag-xclose--sm .mom-tag-xclose__icon { width: var(--space-6); height: var(--space-6); }

.mom-tag-xclose--md { padding: var(--space-0-5); }
.mom-tag-xclose--md .mom-tag-xclose__icon { width: var(--space-6); height: var(--space-6); }

.mom-tag-xclose--lg { padding: var(--space-0-5); }
.mom-tag-xclose--lg .mom-tag-xclose__icon { width: var(--space-6); height: var(--space-6); }


/* ── system/components/breadcrumb/breadcrumb.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Breadcrumb Component                         */
/*  Navigation path with configurable separator                       */
/* ================================================================== */

.mom-breadcrumb {
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
}

.mom-breadcrumb ol {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-1);
  list-style: none;
  margin: 0;
  padding: 0;
}

.mom-breadcrumb__item {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.mom-breadcrumb__item:not(:last-child)::after {
  content: attr(data-sep);
  color: var(--text-muted);
  font-weight: var(--font-regular);
  margin: var(--space-1);
}

.mom-breadcrumb__item a {
  color: var(--text-muted);
  text-decoration: none;
  transition: color 0.15s;
}

.mom-breadcrumb__item a:hover {
  color: var(--text-primary);
}

.mom-breadcrumb__item span {
  color: var(--text-primary);
  font-weight: var(--font-semibold);
}

/* Separator variants (data-sep on parent or item) */
.mom-breadcrumb--slash .mom-breadcrumb__item:not(:last-child)::after { content: '/'; }
.mom-breadcrumb--chevron .mom-breadcrumb__item:not(:last-child)::after { content: '›'; }
.mom-breadcrumb--dot .mom-breadcrumb__item:not(:last-child)::after { content: '·'; }


/* ── system/components/button-group/button-group.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Button Group Component                       */
/*  Maps to Figma: Components > Button group                          */
/*  States: Default, Hover, Focused, Disabled, Active (Current)       */
/*  Modes:  Icon + Text, Icon-only                                    */
/*  Positions: First, Middle, Last, Single                            */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens (from Figma Variables: Components > Buttons)      */
/* ================================================================== */

:root {
  --btn-group-bg: var(--elevation-40);
  --btn-group-bg-hover: var(--elevation-50);
  --btn-group-bg-active: var(--elevation-n10);
  --btn-group-bg-active-hover: var(--elevation-0);
  --btn-group-border: var(--slate-a4);
  --btn-group-fg: var(--slate-12);
  --btn-group-fg-hover: var(--slate-12);
}

:root.light {
  --btn-group-fg: var(--slate-11);
  --btn-group-fg-hover: var(--slate-12);
  --btn-group-bg-hover: var(--elevation-20);
}

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-btn-group {
  display: inline-flex;
  border-radius: var(--radius-lg);
  border: 1px solid var(--btn-group-border);
  overflow: clip;
  isolation: isolate;
  box-shadow: var(--shadow-sm);
  position: relative;
}

.mom-btn-group::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  box-shadow:
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.04),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.12);
}

/* ================================================================== */
/*  Item (button)                                                      */
/* ================================================================== */

.mom-btn-group__item {
  all: unset;
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: 0 var(--space-2-5);
  height: var(--space-9);
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--btn-group-fg);
  background: var(--btn-group-bg);
  border-right: 1px solid var(--btn-group-border);
  cursor: pointer;
  user-select: none;
  white-space: nowrap;
  flex-shrink: 0;
  position: relative;
  transition: background 120ms ease, color 120ms ease;
}

/* ================================================================== */
/*  Position modifiers                                                 */
/* ================================================================== */

.mom-btn-group__item--first {
  border-top-left-radius: var(--radius-lg);
  border-bottom-left-radius: var(--radius-lg);
}

.mom-btn-group__item--last {
  border-right: none;
  border-top-right-radius: var(--radius-lg);
  border-bottom-right-radius: var(--radius-lg);
}

.mom-btn-group__item--single {
  border-right: none;
  border-radius: var(--radius-lg);
}

/* Middle items have no border-radius (default) */
.mom-btn-group__item--middle {
  border-radius: 0;
}

/* ================================================================== */
/*  Shadow effects (per-item pseudo-element)                          */
/* ================================================================== */

.mom-btn-group__item::after {
  content: '';
  position: absolute;
  inset: 0 -0.5px 0 0;
  pointer-events: none;
  border-radius: inherit;
  box-shadow: 
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.16),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.4);
}

/* Focused state shadow */
.mom-btn-group__item:focus-visible::after {
  box-shadow:
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.4);
}

/* Active (current) state shadow */
.mom-btn-group__item--active::after {
  box-shadow:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.16),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.08),
    inset 0px 2px 2px 0px rgba(0, 0, 0, 0.16);
}

/* Active + hover has no shadow */
.mom-btn-group__item--active:hover::after {
  box-shadow: none;
}

/* Disabled has no shadow */
.mom-btn-group__item:disabled::after,
.mom-btn-group__item--disabled::after {
  box-shadow: none;
}

/* ================================================================== */
/*  States                                                             */
/* ================================================================== */

/* Hover (non-active items) */
.mom-btn-group__item:hover:not(:disabled):not(.mom-btn-group__item--active) {
  background: var(--btn-group-bg-hover);
  color: var(--btn-group-fg-hover);
}

/* Focus (keyboard) */
.mom-btn-group__item:focus-visible {
  overflow: clip;
  background: var(--btn-group-bg-hover);
  outline: none;
  box-shadow: inset 0 0 0 2px var(--focus-ring);
  z-index: 1;
}

/* Active (selected/current) */
.mom-btn-group__item--active {
  background: var(--btn-group-bg-active);
  color: var(--btn-group-fg);
}

/* Active + hover */
.mom-btn-group__item--active:hover {
  background: var(--btn-group-bg-active-hover);
}

/* Disabled */
.mom-btn-group__item:disabled,
.mom-btn-group__item--disabled {
  opacity: 0.24;
  cursor: not-allowed;
}

/* ================================================================== */
/*  Icon & Label                                                       */
/* ================================================================== */

.mom-btn-group__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  flex-shrink: 0;
  color: currentColor;
}

.mom-btn-group__icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

.mom-btn-group__label {
  flex-shrink: 0;
}

/* Icon-only mode */
.mom-btn-group__item--icon-only {
  padding: 0 var(--space-2-5);
}


/* ── system/components/button/button.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Button Component                            */
/*  Maps to Figma: Components > Button                                */
/*  Variants: Primary, Secondary, Secondary Color, Tertiary,         */
/*            Tertiary Color, Link, Link Color, Destructive          */
/*  Sizes:    sm, md, lg, xl, 2xl                                     */
/*  Icons:    Left, Right, Icon-only                                  */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens (from Figma Variables: Components > Buttons)      */
/* ================================================================== */

:root {
  /* Primary — Accent/Solid → Teal/Solid (dark) */
  --btn-primary-bg: var(--teal-9);           /* Accent/Solid/9  */
  --btn-primary-bg-hover: var(--teal-8);     /* Accent/Solid/8  */
  --btn-primary-bg-active: var(--teal-6);    /* Accent/Solid/6  */
  --btn-primary-border: var(--teal-3);       /* Accent/Solid/3  */
  --btn-primary-fg: white;

  /* Secondary Gray — Slate/Solid (dark) */
  --btn-secondary-bg: var(--slate-5);        /* Slate/Solid/5   */
  --btn-secondary-bg-hover: var(--slate-3);  /* Slate/Solid/3   */
  --btn-secondary-bg-active: var(--slate-1); /* Slate/Solid/1   */
  --btn-secondary-border: var(--slate-3);    /* Slate/Solid/3   */
  --btn-secondary-border-hover: var(--slate-2);  /* Slate/Solid/2 */
  --btn-secondary-border-active: black;       /* Core.Dark       */
  --btn-secondary-fg: var(--slate-12);       /* Slate/Solid/12  */
  --btn-secondary-fg-hover: var(--slate-12); /* Slate/Solid/12  */

  /* Secondary Color — Accent/Alpha + Accent/Solid (dark) */
  --btn-secondary-color-bg: var(--teal-a2);         /* Accent/Alpha/2  */
  --btn-secondary-color-bg-hover: var(--teal-a5);   /* Accent/Alpha/5  */
  --btn-secondary-color-bg-active: var(--teal-a7);  /* Accent/Alpha/7  */
  --btn-secondary-color-fg: var(--teal-10);          /* Accent/Solid/10 */
  --btn-secondary-color-fg-hover: var(--teal-11);    /* Accent/Solid/11 */
  --btn-secondary-color-fg-active: var(--teal-12);   /* Accent/Solid/12 */

  /* Tertiary Gray (dark) */
  --btn-tertiary-bg-hover: var(--slate-a5);          /* Slate/Alpha/5  */
  --btn-tertiary-bg-active: var(--slate-a8);         /* Slate/Alpha/8  */
  --btn-tertiary-fg: var(--slate-12);                /* Slate/Solid/12 */

  /* Tertiary Color (dark) */
  --btn-tertiary-color-bg-hover: var(--teal-a4);     /* Accent/Alpha/4  */
  --btn-tertiary-color-bg-active: var(--teal-a6);    /* Accent/Alpha/6  */
  --btn-tertiary-color-fg: var(--teal-11);           /* Accent/Solid/11 */
  --btn-tertiary-color-fg-hover: var(--teal-12);     /* Accent/Solid/12 */
  --btn-tertiary-color-fg-active: var(--teal-12);    /* Accent/Solid/12 */

  /* Link Gray (dark) */
  --btn-link-fg: var(--slate-12);                    /* Slate/Solid/12 */
  --btn-link-fg-hover: rgba(255, 255, 255, 0.92);   /* OverlayWhiteAlpha/12 */

  /* Link Color (dark) */
  --btn-link-color-fg: var(--teal-11);               /* Accent/Solid/11 */
  --btn-link-color-fg-hover: var(--teal-10);         /* Accent/Solid/10 */
  --btn-link-color-fg-active: var(--teal-12);        /* Accent/Solid/12 */

  /* Destructive — Error/Solid → Red/Solid (dark) */
  --btn-destructive-bg: var(--red-9);                /* Error/Solid/9   */
  --btn-destructive-bg-hover: var(--red-8);          /* Error/Solid/8   */
  --btn-destructive-bg-active: var(--red-6);         /* Error/Solid/6   */
  --btn-destructive-border: var(--red-3);            /* Error/Solid/3   */
  --btn-destructive-fg: white;

  /* Ghost Destructive (tertiary style + destructive color) */
  --btn-ghost-destructive-fg: var(--red-9);           /* Error/Solid/9   */
  --btn-ghost-destructive-fg-hover: var(--red-8);     /* Error/Solid/8   */
  --btn-ghost-destructive-fg-active: var(--red-7);    /* Error/Solid/7   */
  --btn-ghost-destructive-bg-hover: var(--red-a3);   /* Error/Alpha/3   */
  --btn-ghost-destructive-bg-active: var(--red-a5);    /* Error/Alpha/5   */
}

:root.light {
  /* Primary — Accent/Solid → Teal/Solid (light) */
  --btn-primary-bg: var(--teal-10);          /* Accent/Solid/10 */
  --btn-primary-bg-hover: var(--teal-11);    /* Accent/Solid/11 */
  --btn-primary-bg-active: var(--teal-12);   /* Accent/Solid/12 */
  --btn-primary-border: var(--teal-12);      /* Accent/Solid/12 */
  --btn-primary-fg: white;

  /* Secondary Gray — Slate/Solid (light) */
  --btn-secondary-bg: var(--slate-1);        /* Slate/Solid/1   */
  --btn-secondary-bg-hover: var(--slate-3);  /* Slate/Solid/3   */
  --btn-secondary-bg-active: var(--slate-5); /* Slate/Solid/5   */
  --btn-secondary-border: var(--slate-7);    /* Slate/Solid/7   */
  --btn-secondary-border-hover: var(--slate-8);  /* Slate/Solid/8 */
  --btn-secondary-border-active: var(--slate-9); /* Slate/Solid/9 */
  --btn-secondary-fg: var(--slate-11);       /* Slate/Solid/11  */
  --btn-secondary-fg-hover: var(--slate-12); /* Slate/Solid/12  */

  /* Secondary Color — same token steps as dark; no override needed */

  /* Tertiary Gray (light) */
  --btn-tertiary-bg-hover: var(--slate-a3);          /* Slate/Alpha/3  */
  --btn-tertiary-bg-active: var(--slate-a5);         /* Slate/Alpha/5  */
  --btn-tertiary-fg: var(--slate-11);                /* Slate/Solid/11 */

  /* Tertiary Color (light) */
  --btn-tertiary-color-bg-active: var(--teal-a7);    /* Accent/Alpha/7  */
  --btn-tertiary-color-fg-hover: var(--teal-11);     /* Accent/Solid/11 */

  /* Link Gray (light) */
  --btn-link-fg-hover: rgba(0, 0, 0, 0.93);         /* OverlayBlackAlpha/12 */

  /* Link Color (light) */
  --btn-link-color-fg: var(--teal-10);               /* Accent/Solid/10 */
  --btn-link-color-fg-hover: var(--teal-11);         /* Accent/Solid/11 */

  /* Destructive — Error/Solid → Red/Solid (light) */
  --btn-destructive-bg: var(--red-10);               /* Error/Solid/10  */
  --btn-destructive-bg-hover: var(--red-11);         /* Error/Solid/11  */
  --btn-destructive-bg-active: var(--red-12);        /* Error/Solid/12  */
  --btn-destructive-border: var(--red-12);           /* Error/Solid/12  */
  --btn-destructive-fg: white;

  /* Ghost Destructive (tertiary style + destructive color) */
  --btn-ghost-destructive-fg: var(--red-10);           /* Error/Solid/10  */
  --btn-ghost-destructive-fg-hover: var(--red-11);    /* Error/Solid/11  */
  --btn-ghost-destructive-fg-active: var(--red-12);   /* Error/Solid/12  */
  --btn-ghost-destructive-bg-hover: var(--red-a3);   /* Error/Alpha/3   */
  --btn-ghost-destructive-bg-active: var(--red-a4);   /* Error/Alpha/4   */
}

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  font-family: var(--font-sans);
  font-weight: var(--font-semibold);
  white-space: nowrap;
  cursor: pointer;
  border: 1px solid transparent;
  outline: none;
  position: relative;
  user-select: none;
  text-decoration: none;
  vertical-align: middle;
  transition:
    background 0.15s ease,
    color 0.15s ease,
    border-color 0.15s ease,
    box-shadow 0.15s ease,
    transform 0.1s ease,
    opacity 0.15s ease;
}

.mom-btn:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-btn--sm {
  height: var(--space-8);
  padding: 0 var(--space-3);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
  border-radius: var(--radius-lg);
}

.mom-btn--md {
  height: var(--space-10);
  padding: 0 var(--space-4);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
  border-radius: var(--radius-lg);
}

.mom-btn--lg {
  height: var(--space-11);
  padding: 0 var(--space-4-5);
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
  border-radius: var(--radius-xl);
}

.mom-btn--xl {
  height: var(--space-12);
  padding: 0 var(--space-5);
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
  border-radius: var(--radius-xl);
}

.mom-btn--2xl {
  height: var(--space-15);
  padding: 0 var(--space-7);
  font-size: var(--font-size-lg);
  line-height: var(--line-height-lg);
  border-radius: var(--radius-xl);
  gap: var(--space-3);
}

/* ================================================================== */
/*  Icon-only                                                          */
/* ================================================================== */

.mom-btn--icon-only.mom-btn--sm {
  width: var(--space-8);
  padding: var(--space-1-5);
}

.mom-btn--icon-only.mom-btn--md {
  width: var(--space-10);
  padding: var(--space-2-5);
}

.mom-btn--icon-only.mom-btn--lg {
  width: var(--space-11);
  padding: var(--space-2-5);
}

.mom-btn--icon-only.mom-btn--xl {
  width: var(--space-12);
  padding: var(--space-3);
}

.mom-btn--icon-only.mom-btn--2xl {
  width: var(--space-15);
  padding: var(--space-4-5);
}

/* ================================================================== */
/*  Icon element                                                       */
/* ================================================================== */

.mom-btn__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-5);
  height: var(--space-5);
}

.mom-btn--2xl .mom-btn__icon {
  width: var(--space-6);
  height: var(--space-6);
}

.mom-btn--icon-only.mom-btn--lg .mom-btn__icon,
.mom-btn--icon-only.mom-btn--xl .mom-btn__icon,
.mom-btn--icon-only.mom-btn--2xl .mom-btn__icon {
  width: var(--space-6);
  height: var(--space-6);
}

.mom-btn__icon svg {
  width: 100%;
  height: 100%;
}

/* ================================================================== */
/*  Loading state                                                      */
/* ================================================================== */

.mom-btn--loading {
  pointer-events: none;
}

.mom-btn--loading .mom-btn__icon {
  animation: mom-btn-spin 1s linear infinite;
}

@keyframes mom-btn-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* ================================================================== */
/*  Variant: Primary                                                   */
/* ================================================================== */

.mom-btn--primary {
  background:
    linear-gradient(to bottom, rgba(255, 255, 255, 0.24), rgba(255, 255, 255, 0)),
    var(--btn-primary-bg);
  color: var(--btn-primary-fg);
  border-color: var(--btn-primary-border);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.32),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
}

.mom-btn--primary:hover {
  background:
    linear-gradient(to bottom, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0)),
    var(--btn-primary-bg-hover);
  border-color: var(--btn-primary-border);
}

.mom-btn--primary:active {
  background:
    linear-gradient(to bottom, rgba(0, 0, 0, 0.24), rgba(0, 0, 0, 0)),
    var(--btn-primary-bg-active);
  transform: scale(0.97);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.32),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
}

.mom-btn--primary:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.32),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
}

/* ================================================================== */
/*  Variant: Secondary (Gray)                                          */
/* ================================================================== */

.mom-btn--secondary {
  background: var(--btn-secondary-bg);
  color: var(--btn-secondary-fg);
  border-color: var(--btn-secondary-border);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4),
    inset 0px -1px 0px 0px rgba(71, 84, 103, 0.16);
}

.mom-btn--secondary:hover {
  background: var(--btn-secondary-bg-hover);
  color: var(--btn-secondary-fg-hover);
  border-color: var(--btn-secondary-border-hover);
}

.mom-btn--secondary:active {
  background: var(--btn-secondary-bg-active);
  border-color: var(--btn-secondary-border-active);
  transform: scale(0.97);
}

.mom-btn--secondary:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-gray);
  outline-offset: var(--ring-offset);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.4),
    inset 0px -1px 0px 0px rgba(71, 84, 103, 0.16);
}

/* ================================================================== */
/*  Variant: Secondary Color                                           */
/* ================================================================== */

.mom-btn--secondary-color {
  background: var(--btn-secondary-color-bg);
  color: var(--btn-secondary-color-fg);
  border-color: transparent;
  box-shadow:
    0px 1px 1px 0px rgba(255, 255, 255, 0.64),
    inset 0px 1px 2px 0px rgba(0, 0, 0, 0.32);
}

.mom-btn--secondary-color:hover {
  background: var(--btn-secondary-color-bg-hover);
  color: var(--btn-secondary-color-fg-hover);
}

.mom-btn--secondary-color:active {
  background: var(--btn-secondary-color-bg-active);
  color: var(--btn-secondary-color-fg-active);
  transform: scale(0.97);
}

.mom-btn--secondary-color:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
  box-shadow:
    0px 1px 1px 0px rgba(255, 255, 255, 0.64),
    inset 0px 1px 2px 0px rgba(0, 0, 0, 0.32);
}

/* ================================================================== */
/*  Variant: Tertiary (Gray)                                           */
/* ================================================================== */

.mom-btn--tertiary {
  background: transparent;
  color: var(--btn-tertiary-fg);
  border-color: transparent;
  box-shadow: none;
}

.mom-btn--tertiary:hover {
  background: var(--btn-tertiary-bg-hover);
}

.mom-btn--tertiary:active {
  background: var(--btn-tertiary-bg-active);
  transform: scale(0.97);
}

.mom-btn--tertiary:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Variant: Tertiary Color                                            */
/* ================================================================== */

.mom-btn--tertiary-color {
  background: transparent;
  color: var(--btn-tertiary-color-fg);
  border-color: transparent;
  box-shadow: none;
}

.mom-btn--tertiary-color:hover {
  background: var(--btn-tertiary-color-bg-hover);
  color: var(--btn-tertiary-color-fg-hover);
}

.mom-btn--tertiary-color:active {
  background: var(--btn-tertiary-color-bg-active);
  color: var(--btn-tertiary-color-fg-active);
  transform: scale(0.97);
}

.mom-btn--tertiary-color:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Variant: Link (Gray)                                               */
/* ================================================================== */

.mom-btn--link {
  background: transparent;
  color: var(--btn-link-fg);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  font-weight: var(--font-medium);
  text-decoration: underline;
  height: auto;
  padding: 0;
}

.mom-btn--link:hover {
  color: var(--btn-link-fg-hover);
}

.mom-btn--link:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Variant: Link Color                                                */
/* ================================================================== */

.mom-btn--link-color {
  background: transparent;
  color: var(--btn-link-color-fg);
  border: 0;
  border-radius: 0;
  box-shadow: none;
  font-weight: var(--font-medium);
  text-decoration: underline;
  height: auto;
  padding: 0;
}

.mom-btn--link-color:hover {
  color: var(--btn-link-color-fg-hover);
}

.mom-btn--link-color:active {
  color: var(--btn-link-color-fg-active);
}

.mom-btn--link-color:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Variant: Destructive (mirrors Primary, swaps accent → error)       */
/* ================================================================== */

.mom-btn--destructive {
  background:
    linear-gradient(to bottom, rgba(255, 255, 255, 0.24), rgba(255, 255, 255, 0)),
    var(--btn-destructive-bg);
  color: var(--btn-destructive-fg);
  border-color: var(--btn-destructive-border);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.32),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
}

.mom-btn--destructive:hover {
  background:
    linear-gradient(to bottom, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0)),
    var(--btn-destructive-bg-hover);
  border-color: var(--btn-destructive-border);
}

.mom-btn--destructive:active {
  background:
    linear-gradient(to bottom, rgba(0, 0, 0, 0.24), rgba(0, 0, 0, 0)),
    var(--btn-destructive-bg-active);
  transform: scale(0.97);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.32),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
}

.mom-btn--destructive:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-error);
  outline-offset: var(--ring-offset);
  box-shadow:
    0px 1px 2px 0px rgba(16, 24, 40, 0.05),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.32),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
}

/* ================================================================== */
/*  Variant: Ghost Destructive (Tertiary style + Destructive color)  */
/* ================================================================== */

.mom-btn--ghost-destructive {
  background: transparent;
  color: var(--btn-ghost-destructive-fg);
  border-color: transparent;
  box-shadow: none;
}

.mom-btn--ghost-destructive:hover {
  background: var(--btn-ghost-destructive-bg-hover);
  color: var(--btn-ghost-destructive-fg-hover);
}

.mom-btn--ghost-destructive:active {
  background: var(--btn-ghost-destructive-bg-active);
  color: var(--btn-ghost-destructive-fg-active);
  transform: scale(0.97);
}

.mom-btn--ghost-destructive:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-error);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Disabled state                                                     */
/* ================================================================== */

.mom-btn:disabled,
.mom-btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* ================================================================== */
/*  Docs viewer — force-state overrides (variant grid previews)        */
/* ================================================================== */

.mom-btn--primary.force-hover {
  background: linear-gradient(to bottom, rgba(255,255,255,0.16), rgba(255,255,255,0)), var(--btn-primary-bg-hover);
  border-color: var(--btn-primary-border);
}
.mom-btn--secondary.force-hover {
  background: var(--btn-secondary-bg-hover);
  color: var(--btn-secondary-fg-hover);
  border-color: var(--btn-secondary-border-hover);
}
.mom-btn--secondary-color.force-hover {
  background: var(--btn-secondary-color-bg-hover);
  color: var(--btn-secondary-color-fg-hover);
}
.mom-btn--tertiary.force-hover { background: var(--btn-tertiary-bg-hover); }
.mom-btn--tertiary-color.force-hover {
  background: var(--btn-tertiary-color-bg-hover);
  color: var(--btn-tertiary-color-fg-hover);
}
.mom-btn--link.force-hover { color: var(--btn-link-fg-hover); }
.mom-btn--link-color.force-hover { color: var(--btn-link-color-fg-hover); }
.mom-btn--destructive.force-hover {
  background: linear-gradient(to bottom, rgba(255,255,255,0.16), rgba(255,255,255,0)), var(--btn-destructive-bg-hover);
  border-color: var(--btn-destructive-border);
}
.mom-btn--ghost-destructive.force-hover {
  background: var(--btn-ghost-destructive-bg-hover);
  color: var(--btn-ghost-destructive-fg-hover);
}

.mom-btn.force-active { transform: scale(0.97); }
.mom-btn--primary.force-active {
  background: linear-gradient(to bottom, rgba(0,0,0,0.24), rgba(0,0,0,0)), var(--btn-primary-bg-active);
  box-shadow: 0px 1px 2px 0px rgba(16,24,40,0.05), inset 0px 2px 0px 0px rgba(255,255,255,0.32), inset 0px -2px 0px 0px rgba(0,0,0,0.24);
}
.mom-btn--secondary.force-active {
  background: var(--btn-secondary-bg-active);
  border-color: var(--btn-secondary-border-active);
}
.mom-btn--secondary-color.force-active {
  background: var(--btn-secondary-color-bg-active);
  color: var(--btn-secondary-color-fg-active);
}
.mom-btn--tertiary.force-active { background: var(--btn-tertiary-bg-active); }
.mom-btn--tertiary-color.force-active {
  background: var(--btn-tertiary-color-bg-active);
  color: var(--btn-tertiary-color-fg-active);
}
.mom-btn--link-color.force-active { color: var(--btn-link-color-fg-active); }
.mom-btn--destructive.force-active {
  background: linear-gradient(to bottom, rgba(0,0,0,0.24), rgba(0,0,0,0)), var(--btn-destructive-bg-active);
  box-shadow: 0px 1px 2px 0px rgba(16,24,40,0.05), inset 0px 1px 0px 0px rgba(255,255,255,0.32), inset 0px -1px 0px 0px rgba(0,0,0,0.24);
}
.mom-btn--ghost-destructive.force-active {
  background: var(--btn-ghost-destructive-bg-active);
  color: var(--btn-ghost-destructive-fg-active);
}

.mom-btn-group__item.force-hover {
  background: var(--btn-group-bg-hover);
  color: var(--btn-group-fg-hover);
}
.mom-btn-group__item.force-hover::after {
  box-shadow: inset 0px 1px 0px 0px rgba(255,255,255,0.12), inset 0px -1px 0px 0px rgba(0,0,0,0.4);
}
.mom-btn-group__item.force-active { background: var(--btn-group-bg-active); }
.mom-btn-group__item.force-active::after {
  box-shadow: inset 0px 1px 0px 0px rgba(0,0,0,0.16), inset 0px -1px 0px 0px rgba(255,255,255,0.08), inset 0px 2px 2px 0px rgba(0,0,0,0.16);
}


/* ── system/components/card/card.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Card Component                              */
/*  Content container with variants and optional header/footer       */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-card {
  font-family: var(--font-sans);
  border-radius: var(--radius-2xl);
  overflow: hidden;
}

/* ================================================================== */
/*  Variants                                                            */
/* ================================================================== */

.mom-card--default {
  background: var(--surface);
  border: 1px solid var(--border);
  transition:
    transform var(--duration-normal, 0.25s) var(--ease-spring-subtle, cubic-bezier(0.175, 0.885, 0.32, 1.275)),
    box-shadow var(--duration-normal, 0.25s) var(--ease-out-quart, ease),
    border-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

.mom-card--default:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  border-color: rgba(255, 255, 255, 0.15);
}

.mom-card--default:active {
  transform: translateY(0) scale(0.995);
  transition-duration: var(--duration-instant, 0.08s);
}

.mom-card--elevated {
  background: var(--surface);
  box-shadow: var(--shadow-lg);
  border: none;
  transition:
    transform var(--duration-normal, 0.25s) var(--ease-spring-subtle, cubic-bezier(0.175, 0.885, 0.32, 1.275)),
    box-shadow var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

.mom-card--elevated:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-xl);
}

.mom-card--elevated:active {
  transform: translateY(-2px) scale(0.995);
  transition-duration: var(--duration-instant, 0.08s);
}

.mom-card--ghost {
  background: transparent;
  border: none;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-normal, 0.25s) var(--ease-spring-subtle, cubic-bezier(0.175, 0.885, 0.32, 1.275));
}

.mom-card--ghost:hover {
  background: rgba(255, 255, 255, 0.03);
  transform: translateY(-2px);
}

.mom-card--ghost:active {
  transform: translateY(0);
  transition-duration: var(--duration-instant, 0.08s);
}

/* Card content stagger animation for lists inside cards */
.mom-card .mom-list__item {
  opacity: 0;
  animation: mom-card-item-in var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
}

.mom-card .mom-list__item:nth-child(1) { animation-delay: 0.05s; }
.mom-card .mom-list__item:nth-child(2) { animation-delay: 0.1s; }
.mom-card .mom-list__item:nth-child(3) { animation-delay: 0.15s; }
.mom-card .mom-list__item:nth-child(4) { animation-delay: 0.2s; }
.mom-card .mom-list__item:nth-child(5) { animation-delay: 0.25s; }

@keyframes mom-card-item-in {
  0% {
    opacity: 0;
    transform: translateX(-8px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

/* ================================================================== */
/*  Padding                                                             */
/* ================================================================== */

.mom-card--sm {
  padding: var(--space-3);
}

.mom-card--md {
  padding: var(--space-4);
}

.mom-card--lg {
  padding: var(--space-6);
}

/* ================================================================== */
/*  Sections                                                             */
/* ================================================================== */

.mom-card__header {
  padding-bottom: var(--space-4);
  margin-bottom: var(--space-4);
  border-bottom: 1px solid var(--border);
}

.mom-card__header:empty {
  display: none;
}

.mom-card__body {
  color: var(--text-primary);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

.mom-card__footer {
  padding-top: var(--space-4);
  margin-top: var(--space-4);
  border-top: 1px solid var(--border);
}

.mom-card__footer:empty {
  display: none;
}


/* ── system/components/carousel/carousel.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Carousel Component                            */
/*  Horizontal scrollable content with navigation controls              */
/*  Requirements: Navigation, Touch, Item composition, Responsive      */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  --carousel-gap: 0;
  --carousel-item-width: 100%;
  --carousel-nav-btn-size: var(--space-10);
  --carousel-nav-btn-bg: var(--surface);
  --carousel-nav-btn-color: var(--text-primary);
  --carousel-indicator-size: 8px;
  --carousel-indicator-active: var(--accent);
  --carousel-indicator-inactive: var(--border);
  --carousel-transition: 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

/* ================================================================== */
/*  Carousel Container                                                 */
/* ================================================================== */

.mom-carousel {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  width: 100%;
  max-width: 600px;
  margin: 0 auto;
}

/* ================================================================== */
/*  Viewport (scrollable area)                                         */
/* ================================================================== */

.mom-carousel__viewport {
  position: relative;
  overflow: hidden;
  width: 100%;
  border-radius: var(--radius-xl);
  aspect-ratio: 16 / 9;
}

/* ================================================================== */
/*  Track (contains all items)                                         */
/* ================================================================== */

.mom-carousel__track {
  display: flex;
  gap: 0;
  transition: transform var(--carousel-transition);
  will-change: transform;
  height: 100%;
}

/* ================================================================== */
/*  Carousel Item                                                      */
/* ================================================================== */

.mom-carousel__item {
  flex: 0 0 100%;
  width: 100%;
  scroll-snap-align: start;
  display: flex;
  align-items: center;
  justify-content: center;
}

.mom-carousel__item > * {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: var(--radius-lg);
}

/* ================================================================== */
/*  Size variants - affects container size                            */
/* ================================================================== */

.mom-carousel--sm {
  max-width: 400px;
}

.mom-carousel--md {
  max-width: 600px;
}

.mom-carousel--lg {
  max-width: 800px;
}

.mom-carousel--full {
  max-width: 100%;
}

.mom-carousel--sm .mom-carousel__item,
.mom-carousel--md .mom-carousel__item,
.mom-carousel--lg .mom-carousel__item,
.mom-carousel--full .mom-carousel__item {
  width: 100%;
  flex: 0 0 100%;
}

/* ================================================================== */
/*  Navigation Buttons                                                 */
/* ================================================================== */

.mom-carousel__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--carousel-nav-btn-size);
  height: var(--carousel-nav-btn-size);
  background: var(--carousel-nav-btn-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-full);
  box-shadow: var(--shadow-lg);
  color: var(--carousel-nav-btn-color);
  cursor: pointer;
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.15s ease, background 0.15s ease;
}

.mom-carousel:hover .mom-carousel__nav:not(:disabled):not(.mom-carousel__nav--disabled) {
  opacity: 1;
}

.mom-carousel__nav:hover {
  background: var(--surface-hover);
  transform: translateY(-50%) scale(1.1);
}

.mom-carousel__nav:active {
  transform: translateY(-50%) scale(0.95);
}

.mom-carousel__nav:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: 2px;
}

.mom-carousel__nav:disabled,
.mom-carousel__nav--disabled {
  opacity: 0.3;
  cursor: not-allowed;
  pointer-events: none;
}

/* Position nav buttons centered on viewport area (accounting for pagination below) */
/* Wrapper for viewport + nav buttons - establishes positioning context */
.mom-carousel__wrapper {
  position: relative;
  width: 100%;
}

.mom-carousel__nav--prev {
  left: var(--space-3);
}

.mom-carousel__nav--next {
  right: var(--space-3);
}

.mom-carousel__nav svg {
  width: var(--space-5);
  height: var(--space-5);
}

@media (hover: none) {
  .mom-carousel__nav:not(:disabled):not(.mom-carousel__nav--disabled) {
    opacity: 1;
    width: var(--space-8);
    height: var(--space-8);
  }
}

/* ================================================================== */
/*  Navigation Outside (arrows outside viewport)                         */
/* ================================================================== */

.mom-carousel--nav-outside .mom-carousel__wrapper {
  padding: 0 calc(var(--carousel-nav-btn-size) + var(--space-4));
}

.mom-carousel--nav-outside .mom-carousel__nav--prev {
  left: calc(-1 * var(--carousel-nav-btn-size) - var(--space-2));
}

.mom-carousel--nav-outside .mom-carousel__nav--next {
  right: calc(-1 * var(--carousel-nav-btn-size) - var(--space-2));
}

/* ================================================================== */
/*  Pagination Dots — Modern morphing pill indicators                    */
/* ================================================================== */

.mom-carousel__pagination {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1-5);
  padding: var(--space-2) 0;
  position: relative;
}

/* Base dot styling */
.mom-carousel__dot {
  position: relative;
  width: var(--carousel-indicator-size);
  height: var(--carousel-indicator-size);
  padding: 0;
  background: var(--carousel-indicator-inactive);
  border: none;
  border-radius: var(--radius-full);
  cursor: pointer;
  transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  will-change: width, background, transform;
}

/* Subtle hover state for inactive dots */
.mom-carousel__dot:hover {
  background: var(--text-muted);
}

/* Active dot - morphing pill with width animation and glow */
.mom-carousel__dot--active {
  background: linear-gradient(135deg, var(--carousel-indicator-active) 0%, var(--accent) 100%);
  width: 28px;
  box-shadow: 0 2px 8px rgba(var(--accent-rgb, 18, 165, 148), 0.4);
  animation: dotExpand 0.35s cubic-bezier(0.4, 0, 0.2, 1), dotPulseGlow 2s ease-in-out 0.35s infinite;
}

@keyframes dotExpand {
  0% {
    width: var(--carousel-indicator-size);
    opacity: 0.7;
  }
  100% {
    width: 28px;
    opacity: 1;
  }
}

/* Subtle pulsing glow on active dot */
@keyframes dotPulseGlow {
  0%, 100% {
    box-shadow: 0 2px 8px rgba(var(--accent-rgb, 18, 165, 148), 0.4);
  }
  50% {
    box-shadow: 0 2px 12px rgba(var(--accent-rgb, 18, 165, 148), 0.6);
  }
}

/* Smooth transition when deactivating */
.mom-carousel__dot:not(.mom-carousel__dot--active) {
  animation: dotShrink 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

@keyframes dotShrink {
  from {
    width: 28px;
    background: var(--carousel-indicator-active);
    box-shadow: 0 2px 8px rgba(var(--accent-rgb, 18, 165, 148), 0.4);
  }
  to {
    width: var(--carousel-indicator-size);
    background: var(--carousel-indicator-inactive);
    box-shadow: none;
  }
}

/* Active dot hover effect */
.mom-carousel__dot--active:hover {
  box-shadow: 0 3px 12px rgba(var(--accent-rgb, 18, 165, 148), 0.5);
}

/* Focus ring */
.mom-carousel__dot:focus-visible {
  outline: 2px solid var(--ring-color-accent);
  outline-offset: 3px;
}

/* ================================================================== */
/*  Counter (1 / 5 style)                                              */
/* ================================================================== */

.mom-carousel__counter {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-muted);
  text-align: center;
}

/* ================================================================== */
/*  Scroll Snap Mode (for native scroll behavior)                     */
/* ================================================================== */

.mom-carousel--snap .mom-carousel__viewport {
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.mom-carousel--snap .mom-carousel__viewport::-webkit-scrollbar {
  display: none;
}

.mom-carousel--snap .mom-carousel__track {
  transition: none;
}

@media (max-width: 640px) {
  .mom-carousel__nav {
    width: var(--space-8);
    height: var(--space-8);
  }
  
  .mom-carousel__nav svg {
    width: var(--space-4);
    height: var(--space-4);
  }
}

/* ================================================================== */
/*  Auto-play Progress Indicator                                        */
/* ================================================================== */

.mom-carousel__autoplay-progress {
  position: absolute;
  bottom: var(--space-3);
  left: var(--space-3);
  right: var(--space-3);
  height: 2px;
  background: rgba(255, 255, 255, 0.3);
  border-radius: var(--radius-full);
  overflow: hidden;
  z-index: 5;
}

.mom-carousel__autoplay-bar {
  height: 100%;
  background: white;
  transform-origin: left;
  animation: mom-carousel-autoplay linear forwards;
}

.mom-carousel:hover .mom-carousel__autoplay-bar {
  animation-play-state: paused;
}

@keyframes mom-carousel-autoplay {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

/* ================================================================== */
/*  Reduced motion support                                            */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .mom-carousel__track {
    transition: none;
  }
  
  .mom-carousel__autoplay-bar {
    animation: none;
  }
}


/* ── system/components/chat/chat.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Chat Component                               */
/*  Message bubbles with sent, received, and system variants          */
/* ================================================================== */

.mom-chat {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  max-height: 400px;
  overflow-y: auto;
  font-family: var(--font-sans);
  padding: var(--space-4);
}

.mom-chat__message {
  display: flex;
  align-items: flex-end;
  gap: var(--space-2);
  max-width: 85%;
}

.mom-chat__message--sent {
  align-self: flex-end;
  flex-direction: row-reverse;
}

.mom-chat__message--received {
  align-self: flex-start;
}

.mom-chat__message--system {
  align-self: center;
  flex-direction: column;
  max-width: 100%;
}

.mom-chat__avatar {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border-radius: var(--radius-full);
  background: var(--teal-9);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
}

.mom-chat__message--sent .mom-chat__avatar {
  order: 1;
}

.mom-chat__bubble {
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-xl);
  max-width: 280px;
}

.mom-chat__message--sent .mom-chat__bubble {
  background: var(--accent);
  color: var(--accent-fg);
  border-bottom-right-radius: var(--radius);
}

.mom-chat__message--received .mom-chat__bubble {
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text-primary);
  border-bottom-left-radius: var(--radius);
}

.mom-chat__text {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-base);
}

.mom-chat__time {
  font-size: 0.62rem;
  margin-top: var(--space-1);
  opacity: 0.85;
}

.mom-chat__message--sent .mom-chat__time {
  color: color-mix(in srgb, var(--accent-fg) 80%, transparent);
}

.mom-chat__message--received .mom-chat__time {
  color: var(--text-muted);
}

.mom-chat__message--system .mom-chat__text {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  text-align: center;
}

.mom-chat__message--system .mom-chat__bubble {
  background: transparent;
  border: none;
  padding: var(--space-1) 0;
}

.mom-chat__input {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-3);
  border-top: 1px solid var(--border);
  background: var(--surface);
}

.mom-chat__input input {
  flex: 1;
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-sm);
  font-family: var(--font-sans);
  background: var(--input-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  color: var(--text-primary);
  outline: none;
  transition: border-color 0.15s;
}

.mom-chat__input input:focus {
  border-color: var(--accent);
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
}

.mom-chat__input input::placeholder {
  color: var(--text-muted);
}

.mom-chat__send {
  padding: 0 var(--space-4);
  height: 36px;
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  font-family: var(--font-sans);
  background: var(--accent);
  color: var(--accent-fg);
  border: 1px solid var(--accent);
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}

.mom-chat__send:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
}


/* ── system/components/checkbox-group/checkbox-group.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Checkbox Group Component                     */
/*  Groups multiple checkboxes with shared layout and spacing          */
/*  Supports vertical, horizontal, and inline layouts                  */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                                */
/* ================================================================== */

.mom-checkbox-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

/* ================================================================== */
/*  Label (group-level)                                               */
/* ================================================================== */

.mom-checkbox-group__label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  color: var(--text-primary);
  line-height: var(--line-height-sm);
  margin-bottom: var(--space-1);
}

.mom-checkbox-group__label--required::after {
  content: ' *';
  color: var(--red-9);
}

/* ================================================================== */
/*  Layout variants                                                    */
/* ================================================================== */

/* Vertical (default) */
.mom-checkbox-group--vertical {
  flex-direction: column;
  gap: var(--space-2);
}

/* Horizontal - items in a row */
.mom-checkbox-group--horizontal {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-4);
}

/* Inline - compact horizontal with less spacing */
.mom-checkbox-group--inline {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-3);
}

/* ================================================================== */
/*  Error state (group-level)                                          */
/* ================================================================== */

.mom-checkbox-group--error .mom-checkbox__box {
  border-color: var(--input-field-border-error);
  background: var(--input-field-bg-error);
}

.mom-checkbox-group--error .mom-checkbox--checked .mom-checkbox__box,
.mom-checkbox-group--error .mom-checkbox--indeterminate .mom-checkbox__box {
  background: var(--toggle-checked-bg);
  border-color: var(--input-field-border-error);
}

/* ================================================================== */
/*  Helper text (group-level)                                         */
/* ================================================================== */

.mom-checkbox-group__helper {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--helper-color);
  margin-top: var(--space-1);
}

.mom-checkbox-group__helper--error {
  color: var(--helper-error-color);
}

.mom-checkbox-group__helper-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
}

.mom-checkbox-group__helper-icon svg {
  width: 14px;
  height: 14px;
}

/* ================================================================== */
/*  Disabled state (group-level)                                       */
/* ================================================================== */

.mom-checkbox-group--disabled .mom-checkbox {
  cursor: not-allowed;
  pointer-events: none;
}

.mom-checkbox-group--disabled .mom-checkbox__box {
  background: var(--toggle-disabled-bg);
  border-color: var(--toggle-disabled-bg);
}

.mom-checkbox-group--disabled .mom-checkbox__label,
.mom-checkbox-group--disabled .mom-checkbox__helper {
  opacity: 0.38;
}

/* ================================================================== */
/*  Sizes (group-level)                                                */
/* ================================================================== */

.mom-checkbox-group--sm {
  gap: var(--space-1-5);
}

.mom-checkbox-group--md {
  gap: var(--space-2);
}

.mom-checkbox-group--lg {
  gap: var(--space-3);
}

.mom-checkbox-group--sm.mom-checkbox-group--horizontal,
.mom-checkbox-group--sm.mom-checkbox-group--inline {
  gap: var(--space-3);
}

.mom-checkbox-group--md.mom-checkbox-group--horizontal,
.mom-checkbox-group--md.mom-checkbox-group--inline {
  gap: var(--space-4);
}

.mom-checkbox-group--lg.mom-checkbox-group--horizontal,
.mom-checkbox-group--lg.mom-checkbox-group--inline {
  gap: var(--space-5);
}


/* ── system/components/checkbox/checkbox.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Checkbox Component                           */
/*  Multi-select toggle with label and optional helper text           */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-checkbox {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--space-2); /* 8px — sm default */
  cursor: pointer;
  position: relative;
}

.mom-checkbox input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.mom-checkbox__box {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--toggle-border-color);
  background: var(--toggle-bg);
  border-radius: var(--radius); /* 4px */
  box-shadow: var(--toggle-top-highlight);
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    border-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
  overflow: hidden;
  margin-top: var(--space-0-5);
  position: relative;
}

/* Hover lift effect */
.mom-checkbox:hover:not(.mom-checkbox--disabled) .mom-checkbox__box {
  transform: scale(1.02);
}

/* Press feedback */
.mom-checkbox:active:not(.mom-checkbox--disabled) .mom-checkbox__box {
  transform: scale(0.95);
}

.mom-checkbox__check,
.mom-checkbox__minus {
  display: none;
  align-items: center;
  justify-content: center;
  width: 70%;
  height: 70%;
  flex-shrink: 0;
  color: white;
  transform: scale(0);
  opacity: 0;
}

/* Checkmark icon styling for animation */
.mom-checkbox__check svg {
  width: 100%;
  height: 100%;
  stroke-dasharray: 24;
  stroke-dashoffset: 24;
}

.mom-checkbox__minus svg {
  width: 100%;
  height: 100%;
}

.mom-checkbox__check svg,
.mom-checkbox__minus svg {
  width: 100%;
  height: 100%;
}

/* ================================================================== */
/*  Text block                                                         */
/* ================================================================== */

.mom-checkbox__text {
  display: flex;
  flex-direction: column;
  gap: 0; /* sm: no gap between label and helper */
}

.mom-checkbox__label {
  font-size: var(--font-size-sm); /* 14px */
  font-weight: var(--font-medium);
  color: var(--text-primary);
  line-height: var(--line-height-sm); /* 20px */
}

.mom-checkbox__helper {
  font-size: var(--font-size-sm); /* 14px — matches label size */
  font-weight: var(--font-regular);
  color: var(--text-muted);
  line-height: var(--line-height-sm); /* 20px */
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-checkbox--sm .mom-checkbox__box {
  width: 14px;
  height: 14px;
}

.mom-checkbox--md .mom-checkbox__box {
  width: var(--space-4);
  height: var(--space-4);
}

/* md/lg: larger gap + base (16px) typography */
.mom-checkbox--md,
.mom-checkbox--lg {
  gap: var(--space-3); /* 12px */
}

.mom-checkbox--md .mom-checkbox__text,
.mom-checkbox--lg .mom-checkbox__text {
  gap: var(--space-0-5);
}

.mom-checkbox--md .mom-checkbox__label,
.mom-checkbox--lg .mom-checkbox__label {
  font-size: var(--font-size-base); /* 16px */
  line-height: var(--line-height-base); /* 24px */
}

.mom-checkbox--md .mom-checkbox__helper,
.mom-checkbox--lg .mom-checkbox__helper {
  font-size: var(--font-size-base); /* 16px */
  line-height: var(--line-height-base); /* 24px */
}

.mom-checkbox--lg .mom-checkbox__box {
  width: var(--space-5);
  height: var(--space-5);
}

/* ================================================================== */
/*  Hover state                                                        */
/* ================================================================== */

.mom-checkbox:hover:not(.mom-checkbox--disabled) .mom-checkbox__box {
  background: var(--toggle-bg-hover);
}

/* Hover while checked or indeterminate */
.mom-checkbox--checked:hover:not(.mom-checkbox--disabled) .mom-checkbox__box,
.mom-checkbox--indeterminate:hover:not(.mom-checkbox--disabled) .mom-checkbox__box {
  background: var(--toggle-checked-hover-bg);
}

/* ================================================================== */
/*  Focus state                                                        */
/* ================================================================== */

.mom-checkbox input:focus-visible + .mom-checkbox__box {
  box-shadow: var(--toggle-ring), var(--toggle-top-highlight);
}

/* ================================================================== */
/*  Checked state                                                      */
/* ================================================================== */

.mom-checkbox--checked .mom-checkbox__box,
.mom-checkbox input:checked + .mom-checkbox__box {
  background: var(--toggle-checked-bg);
  border-color: var(--toggle-border-color);
}

.mom-checkbox--checked .mom-checkbox__box .mom-checkbox__check,
.mom-checkbox input:checked + .mom-checkbox__box .mom-checkbox__check {
  display: flex;
  animation: mom-checkbox-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
}

/* Draw animation for the checkmark stroke */
.mom-checkbox--checked .mom-checkbox__box .mom-checkbox__check svg,
.mom-checkbox input:checked + .mom-checkbox__box .mom-checkbox__check svg {
  animation: mom-checkbox-draw var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
  animation-delay: 0.05s;
}

@keyframes mom-checkbox-bounce {
  0% {
    transform: scale(0);
    opacity: 0;
  }
  50% {
    transform: scale(1.2);
  }
  70% {
    transform: scale(0.9);
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes mom-checkbox-draw {
  0% {
    stroke-dashoffset: 24;
  }
  100% {
    stroke-dashoffset: 0;
  }
}

/* Box background animation on check */
.mom-checkbox--checked .mom-checkbox__box,
.mom-checkbox input:checked + .mom-checkbox__box {
  animation: mom-checkbox-bg-pulse var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

@keyframes mom-checkbox-bg-pulse {
  0% { transform: scale(1); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}

/* ================================================================== */
/*  Indeterminate state                                                */
/* ================================================================== */

.mom-checkbox--indeterminate .mom-checkbox__box {
  background: var(--toggle-checked-bg);
  border-color: var(--toggle-border-color);
}

.mom-checkbox--indeterminate .mom-checkbox__box .mom-checkbox__check {
  display: none !important;
}

.mom-checkbox--indeterminate .mom-checkbox__box .mom-checkbox__minus {
  display: flex !important;
  animation: mom-checkbox-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
}

/* Focus glow enhancement */
.mom-checkbox input:focus-visible + .mom-checkbox__box {
  box-shadow: var(--toggle-ring), var(--toggle-top-highlight), 0 0 0 3px rgba(20, 184, 166, 0.15);
}

/* ================================================================== */
/*  Disabled state                                                     */
/* ================================================================== */

.mom-checkbox--disabled {
  cursor: not-allowed;
  pointer-events: none;
}

.mom-checkbox--disabled .mom-checkbox__box {
  background: var(--toggle-disabled-bg);
  border-color: var(--toggle-disabled-bg);
  box-shadow: none; /* no highlight when disabled */
}

.mom-checkbox--disabled .mom-checkbox__label,
.mom-checkbox--disabled .mom-checkbox__helper {
  opacity: 0.38;
}


/* ── system/components/color-picker/color-picker.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Color Picker Component                       */
/*  Anatomy: Swatch trigger · Popover panel · Color palette · Input   */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  /* Swatch trigger */
  --color-picker-swatch-bg:           var(--surface);
  --color-picker-swatch-border:       var(--border);
  --color-picker-swatch-border-focus: rgba(17, 255, 231, 0.37);
  --color-picker-swatch-shadow:       var(--shadow-sm);

  /* Popover panel */
  --color-picker-panel-bg:            var(--surface);
  --color-picker-panel-border:        var(--border);
  --color-picker-panel-shadow:        var(--shadow-lg);
  --color-picker-panel-radius:        var(--radius-xl);

  /* Palette swatches */
  --color-picker-option-border:       transparent;
  --color-picker-option-border-hover: rgba(255, 255, 255, 0.24);
  --color-picker-option-ring:         rgba(17, 255, 231, 0.50);

  /* Input field inside popover */
  --color-picker-input-bg:            rgba(226, 240, 253, 0.08);
  --color-picker-input-border:        var(--border);
  --color-picker-input-text:          var(--text-primary);
  --color-picker-input-placeholder:   var(--text-muted);

  /* Label */
  --color-picker-label-color:         var(--text-secondary);
}

/* ================================================================== */
/*  Light mode overrides                                              */
/* ================================================================== */

:root.light {
  --color-picker-swatch-border:       rgba(0, 0, 0, 0.14);
  --color-picker-swatch-border-focus: rgba(17, 255, 231, 0.37);
  --color-picker-option-border-hover: rgba(0, 0, 0, 0.18);
  --color-picker-option-ring:         rgba(17, 255, 231, 0.50);
  --color-picker-input-bg:            rgba(0, 0, 0, 0.04);
}

/* ================================================================== */
/*  Wrapper                                                           */
/* ================================================================== */

.mom-color-picker {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-2);
  position: relative;
}

/* ================================================================== */
/*  Swatch trigger                                                    */
/* ================================================================== */

.mom-color-picker__swatch {
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-full);
  border: 2px solid var(--color-picker-swatch-border);
  box-shadow: var(--color-picker-swatch-shadow);
  cursor: pointer;
  transition:
    border-color var(--duration-fast, 0.15s) ease,
    box-shadow var(--duration-fast, 0.15s) ease,
    transform var(--duration-fast, 0.15s) ease;
  background: none;
  padding: 0;
  outline: none;
}

.mom-color-picker__swatch-color {
  border-radius: var(--radius-full);
  pointer-events: none;
}

.mom-color-picker__swatch:hover {
  border-color: var(--color-picker-swatch-border-focus);
  transform: scale(1.05);
}

.mom-color-picker__swatch:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: 2px;
}

.mom-color-picker__swatch:active {
  transform: scale(0.96);
}

/* Disabled */
.mom-color-picker--disabled .mom-color-picker__swatch {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

/* ================================================================== */
/*  Popover panel                                                     */
/* ================================================================== */

.mom-color-picker__panel {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
  padding: var(--space-3);
  background: var(--color-picker-panel-bg);
  border: 1px solid var(--color-picker-panel-border);
  border-radius: var(--color-picker-panel-radius);
  box-shadow: var(--color-picker-panel-shadow);
  min-width: 220px;
  margin-top: var(--space-2);
}

/* ================================================================== */
/*  Color palette grid                                                */
/* ================================================================== */

.mom-color-picker__palette {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: var(--space-1-5);
  padding: 0;
  margin: 0;
  list-style: none;
}

/* Individual color option */
.mom-color-picker__option {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-full);
  border: 2px solid var(--color-picker-option-border);
  cursor: pointer;
  transition:
    border-color var(--duration-fast, 0.15s) ease,
    transform var(--duration-fast, 0.15s) ease,
    box-shadow var(--duration-fast, 0.15s) ease;
  background: none;
  padding: 0;
  outline: none;
}

.mom-color-picker__option:hover {
  border-color: var(--color-picker-option-border-hover);
  transform: scale(1.15);
  z-index: 1;
}

.mom-color-picker__option:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: 1px;
}

/* Selected state ring */
.mom-color-picker__option--selected {
  border-color: var(--color-picker-option-ring);
  box-shadow: 0 0 0 2px var(--color-picker-option-ring);
}

.mom-color-picker__option--selected:hover {
  border-color: var(--color-picker-option-ring);
}

/* Color circle inside option */
.mom-color-picker__option-color {
  border-radius: var(--radius-full);
  pointer-events: none;
}

/* ================================================================== */
/*  Hex input row                                                     */
/* ================================================================== */

.mom-color-picker__input-row {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.mom-color-picker__input-preview {
  flex-shrink: 0;
  width: var(--space-6);
  height: var(--space-6);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-picker-input-border);
}

.mom-color-picker__input {
  flex: 1;
  min-width: 0;
  height: var(--space-8);
  padding: 0 var(--space-2);
  background: var(--color-picker-input-bg);
  border: 1px solid var(--color-picker-input-border);
  border-radius: var(--radius-md);
  font-family: var(--font-mono, var(--font-sans));
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--color-picker-input-text);
  outline: none;
  transition:
    border-color var(--duration-fast, 0.15s) ease,
    box-shadow var(--duration-fast, 0.15s) ease;
}

.mom-color-picker__input::placeholder {
  color: var(--color-picker-input-placeholder);
}

.mom-color-picker__input:focus {
  border-color: var(--color-picker-swatch-border-focus);
  box-shadow: 0 0 0 3px rgba(20, 184, 166, 0.12);
}

/* Format label */
.mom-color-picker__format-label {
  flex-shrink: 0;
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
  color: var(--color-picker-label-color);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* ================================================================== */
/*  Size variants                                                     */
/* ================================================================== */

/* ── Small ─────────────────────────────────────────────────────── */

.mom-color-picker--sm .mom-color-picker__swatch {
  width: var(--space-7);
  height: var(--space-7);
}

.mom-color-picker--sm .mom-color-picker__swatch-color {
  width: calc(var(--space-7) - 6px);
  height: calc(var(--space-7) - 6px);
}

.mom-color-picker--sm .mom-color-picker__option {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-color-picker--sm .mom-color-picker__option-color {
  width: calc(var(--space-5) - 4px);
  height: calc(var(--space-5) - 4px);
}

.mom-color-picker--sm .mom-color-picker__panel {
  padding: var(--space-2);
  gap: var(--space-2);
  min-width: 180px;
}

.mom-color-picker--sm .mom-color-picker__palette {
  gap: var(--space-1);
}

.mom-color-picker--sm .mom-color-picker__input {
  height: var(--space-7);
  font-size: var(--font-size-xs);
}

/* ── Medium (default) ──────────────────────────────────────────── */

.mom-color-picker--md .mom-color-picker__swatch {
  width: var(--space-9);
  height: var(--space-9);
}

.mom-color-picker--md .mom-color-picker__swatch-color {
  width: calc(var(--space-9) - 6px);
  height: calc(var(--space-9) - 6px);
}

.mom-color-picker--md .mom-color-picker__option {
  width: var(--space-6);
  height: var(--space-6);
}

.mom-color-picker--md .mom-color-picker__option-color {
  width: calc(var(--space-6) - 4px);
  height: calc(var(--space-6) - 4px);
}

/* ── Large ─────────────────────────────────────────────────────── */

.mom-color-picker--lg .mom-color-picker__swatch {
  width: var(--space-11);
  height: var(--space-11);
}

.mom-color-picker--lg .mom-color-picker__swatch-color {
  width: calc(var(--space-11) - 8px);
  height: calc(var(--space-11) - 8px);
}

.mom-color-picker--lg .mom-color-picker__option {
  width: var(--space-7);
  height: var(--space-7);
}

.mom-color-picker--lg .mom-color-picker__option-color {
  width: calc(var(--space-7) - 4px);
  height: calc(var(--space-7) - 4px);
}

.mom-color-picker--lg .mom-color-picker__panel {
  padding: var(--space-4);
  gap: var(--space-3);
  min-width: 260px;
}

.mom-color-picker--lg .mom-color-picker__palette {
  gap: var(--space-2);
}

.mom-color-picker--lg .mom-color-picker__input {
  height: var(--space-9);
  font-size: var(--font-size-base);
}

/* ================================================================== */
/*  Reduced motion support                                            */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .mom-color-picker__swatch,
  .mom-color-picker__option {
    transition: none;
  }
}


/* ── system/components/combobox/combobox.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Combobox Component                           */
/*  Autocomplete / searchable select — text input + dropdown list     */
/*  Shares input tokens from input.css                                */
/* ================================================================== */

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-combobox {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1-5);
  width: 100%;
  max-width: 460px;
}

/* ================================================================== */
/*  Field wrap — establishes the positioning context for the listbox  */
/* ================================================================== */

.mom-combobox__field-wrap {
  position: relative;
}

/* ================================================================== */
/*  Trigger (input field container, mirrors mom-input__field-wrap)     */
/* ================================================================== */

.mom-combobox__trigger {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--space-10);
  background: var(--input-field-bg);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-lg);
  padding: 0 var(--space-1);
  box-shadow: var(--input-field-shadow);
  cursor: text;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  box-sizing: border-box;
}

/* Hover */
.mom-combobox__trigger:hover,
.mom-combobox--hover .mom-combobox__trigger {
  background: var(--input-field-bg-hover);
  border-color: var(--input-field-border-hover);
}

/* Focus / open with glow */
.mom-combobox__trigger:focus-within,
.mom-combobox--focus .mom-combobox__trigger,
.mom-combobox--open .mom-combobox__trigger {
  background: var(--input-field-bg);
  border-color: var(--input-field-border-focus);
  box-shadow: var(--input-field-shadow), 0 0 0 3px rgba(20, 184, 166, 0.12);
  outline: none;
}

/* Error */
.mom-combobox--error .mom-combobox__trigger {
  background: var(--input-field-bg-error);
  border-color: var(--input-field-border-error);
  box-shadow: var(--input-field-shadow);
}

/* Disabled */
.mom-combobox--disabled .mom-combobox__trigger {
  background: var(--input-field-bg-disabled);
  border-color: var(--input-field-border-disabled);
  box-shadow: none;
  pointer-events: none;
  cursor: not-allowed;
}

/* ================================================================== */
/*  Content area                                                       */
/* ================================================================== */

.mom-combobox__content {
  flex: 1 0 0;
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  min-width: 0;
  padding: 0 var(--space-1-5);
}

/* ================================================================== */
/*  Native input                                                       */
/* ================================================================== */

.mom-combobox__input {
  flex: 1 0 0;
  min-width: 0;
  border: none;
  background: transparent;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-text-placeholder);
  outline: none;
  caret-color: var(--input-field-border-focus);
}

.mom-combobox__input::placeholder {
  color: var(--input-text-placeholder);
}

.mom-combobox--hover .mom-combobox__input::placeholder {
  color: var(--input-text-hover);
}

.mom-combobox--open .mom-combobox__input,
.mom-combobox--focus .mom-combobox__input {
  color: var(--input-text-filled);
}

.mom-combobox--disabled .mom-combobox__input {
  color: var(--input-text-disabled);
  cursor: not-allowed;
}

/* ================================================================== */
/*  Icon left (search icon slot)                                       */
/* ================================================================== */

.mom-combobox__icon-left {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
  transition: color 0.2s ease;
}

.mom-combobox__icon-left svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-combobox__trigger:focus-within .mom-combobox__icon-left,
.mom-combobox--focus .mom-combobox__icon-left,
.mom-combobox--open .mom-combobox__icon-left {
  color: var(--teal-11);
}

.mom-combobox--disabled .mom-combobox__icon-left {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Clear button                                                       */
/* ================================================================== */

.mom-combobox__clear {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  padding: 0;
  border: none;
  background: transparent;
  border-radius: var(--radius-md);
  color: var(--input-leading-text);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.mom-combobox__clear:hover {
  background: var(--input-action-bg-hover);
  color: var(--input-text-filled);
}

.mom-combobox__clear svg {
  width: var(--space-3);
  height: var(--space-3);
}

/* ================================================================== */
/*  Chevron                                                            */
/* ================================================================== */

.mom-combobox__chevron {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
  margin-right: var(--space-1);
  transition: transform 0.25s ease;
}

.mom-combobox__chevron svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-combobox--open .mom-combobox__chevron {
  transform: rotate(180deg);
}

.mom-combobox--disabled .mom-combobox__chevron {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Loading spinner                                                    */
/* ================================================================== */

.mom-combobox__spinner {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
  margin-right: var(--space-1);
  animation: mom-combobox-spin 0.8s linear infinite;
}

.mom-combobox__spinner svg {
  width: var(--space-4);
  height: var(--space-4);
}

@keyframes mom-combobox-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* ================================================================== */
/*  Listbox (dropdown)                                                 */
/* ================================================================== */

.mom-combobox__listbox {
  position: absolute;
  top: calc(100% + var(--space-1));
  left: 0;
  right: 0;
  z-index: 200;
  display: none;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  padding: var(--space-1);
  box-sizing: border-box;
  overflow-y: auto;
  max-height: 240px;
  opacity: 0;
  transform: translateY(-4px);
  transform-origin: top center;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.mom-combobox--open .mom-combobox__listbox {
  display: flex;
  opacity: 1;
  transform: translateY(0);
}

/* ================================================================== */
/*  Listbox items                                                      */
/* ================================================================== */

.mom-combobox__option {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-md);
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--input-text-filled);
  cursor: pointer;
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
  transition: background-color 0.15s ease;
  box-sizing: border-box;
  opacity: 0;
  transform: translateY(4px);
}

/* Staggered entrance animation for options */
.mom-combobox--open .mom-combobox__option {
  animation: mom-combobox-item-in 0.3s ease forwards;
}

.mom-combobox--open .mom-combobox__option:nth-child(1) { animation-delay: 0.02s; }
.mom-combobox--open .mom-combobox__option:nth-child(2) { animation-delay: 0.04s; }
.mom-combobox--open .mom-combobox__option:nth-child(3) { animation-delay: 0.06s; }
.mom-combobox--open .mom-combobox__option:nth-child(4) { animation-delay: 0.08s; }
.mom-combobox--open .mom-combobox__option:nth-child(5) { animation-delay: 0.10s; }
.mom-combobox--open .mom-combobox__option:nth-child(6) { animation-delay: 0.12s; }
.mom-combobox--open .mom-combobox__option:nth-child(7) { animation-delay: 0.14s; }
.mom-combobox--open .mom-combobox__option:nth-child(8) { animation-delay: 0.16s; }

@keyframes mom-combobox-item-in {
  0% {
    opacity: 0;
    transform: translateY(4px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.mom-combobox__option:hover,
.mom-combobox__option--highlighted {
  background: var(--input-field-bg-hover);
}

.mom-combobox__option--active {
  background: var(--input-field-bg-hover);
  color: var(--input-selected-text);
  font-weight: var(--font-medium);
}

/* Check mark for selected option */
.mom-combobox__option-check {
  flex-shrink: 0;
  width: var(--space-4);
  height: var(--space-4);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--input-selected-icon);
}

.mom-combobox__option-check svg {
  width: 14px;
  height: 14px;
}

/* Empty / no-results message */
.mom-combobox__empty {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-4) var(--space-2);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--input-text-placeholder);
}

/* ================================================================== */
/*  Multi-select — tags layout                                         */
/* ================================================================== */

/* Trigger becomes auto-height in multi mode */
.mom-combobox--multiple .mom-combobox__trigger {
  height: auto;
  min-height: var(--space-10);
  flex-wrap: wrap;
  align-items: flex-start;
  padding-top: var(--space-1-5);
  padding-bottom: var(--space-1-5);
}

.mom-combobox--multiple.mom-combobox--sm .mom-combobox__trigger {
  min-height: var(--space-8);
}

.mom-combobox--multiple.mom-combobox--lg .mom-combobox__trigger {
  min-height: var(--space-12);
}

/* Tags container — wraps chips + inline filter input */
.mom-combobox__tags {
  flex: 1 0 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-1);
  padding: 0 var(--space-1-5);
  min-width: 0;
}

/* Individual tag / chip */
.mom-combobox__tag {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  padding: 2px var(--space-1-5);
  background: var(--teal-3);
  border: 1px solid var(--teal-6);
  border-radius: var(--radius-md);
  font-family: var(--font-sans);
  font-size: var(--font-size-xs);
  font-weight: var(--font-medium);
  line-height: var(--line-height-sm);
  color: var(--teal-11);
  white-space: nowrap;
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Tag remove (×) button */
.mom-combobox__tag-remove {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--teal-9);
  border-radius: 2px;
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.mom-combobox__tag-remove:hover {
  background: var(--teal-5);
  color: var(--teal-12);
}

.mom-combobox__tag-remove svg {
  width: 10px;
  height: 10px;
}

/* Inline input inside tags grows to fill remaining space */
.mom-combobox--multiple .mom-combobox__input {
  flex: 1 0 60px;
  min-width: 60px;
}

/* ================================================================== */
/*  Size variants                                                      */
/* ================================================================== */

.mom-combobox--sm .mom-combobox__trigger {
  height: var(--space-8);
}

.mom-combobox--sm .mom-combobox__input {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

.mom-combobox--sm .mom-combobox__icon-left,
.mom-combobox--sm .mom-combobox__chevron,
.mom-combobox--sm .mom-combobox__clear,
.mom-combobox--sm .mom-combobox__spinner {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-combobox--md .mom-combobox__trigger {
  height: var(--space-10);
}

.mom-combobox--lg .mom-combobox__trigger {
  height: var(--space-12);
}

.mom-combobox--lg .mom-combobox__input {
  font-size: var(--font-size-base);
}


/* ── system/components/command-palette/command-palette.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Command Palette (Ctrl+K) Component           */
/*  Search-driven command menu with groups and shortcuts              */
/* ================================================================== */

.mom-cmdk {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-2xl);
  max-width: 560px;
  width: 100%;
  font-family: var(--font-sans);
  overflow: hidden;
}

.mom-cmdk__header {
  padding: var(--space-2);
  border-bottom: 1px solid var(--border);
}

.mom-cmdk__input-wrap {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
}

.mom-cmdk__input-wrap svg {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  color: var(--text-muted);
}

.mom-cmdk__input {
  flex: 1;
  padding: var(--space-2) 0;
  font-size: var(--font-size-lg);
  font-family: var(--font-sans);
  background: transparent;
  border: none;
  outline: none;
  color: var(--text-primary);
}

.mom-cmdk__input::placeholder {
  color: var(--text-muted);
}

.mom-cmdk__body {
  max-height: 320px;
  overflow-y: auto;
  padding: var(--space-2);
}

.mom-cmdk__group {
  margin-bottom: var(--space-2);
}

.mom-cmdk__group:last-child {
  margin-bottom: 0;
}

.mom-cmdk__group-label {
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: var(--space-2) var(--space-3);
}

.mom-cmdk__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-lg);
  font-size: var(--font-size-sm);
  color: var(--text-primary);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}

.mom-cmdk__item:hover {
  background: var(--surface-hover);
}

.mom-cmdk__item--active,
.mom-cmdk__item.mom-cmdk__item--active {
  background: var(--accent-glow);
  color: var(--accent);
}

.mom-cmdk__item-icon {
  flex-shrink: 0;
  width: 16px;
  height: 16px;
  color: var(--text-muted);
}

.mom-cmdk__item--active .mom-cmdk__item-icon {
  color: var(--accent);
}

.mom-cmdk__item-icon svg {
  width: 100%;
  height: 100%;
}

.mom-cmdk__item-label {
  flex: 1;
}

.mom-cmdk__item-shortcut {
  flex-shrink: 0;
  font-size: var(--font-size-xs);
  font-family: ui-monospace, monospace;
  padding: 2px 6px;
  background: var(--input-bg);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-muted);
}

.mom-cmdk__item--active .mom-cmdk__item-shortcut {
  color: var(--accent);
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
}


/* ── system/components/content-footer/content-footer.css ── */
/* ================================================================== */
/*  Mo~oM Design System, ContentFooter Component                         */
/*  Content card footer with Actions or Helper Action variants        */
/* ================================================================== */

.mom-content-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-2);
  padding: var(--space-1) var(--space-4) var(--space-4);
  min-height: var(--space-12);
}

/* Helper variant - helper text takes available space */
.mom-content-footer--helper {
  justify-content: space-between;
}

/* Button wrappers - contain Button component */
.mom-content-footer__primary,
.mom-content-footer__secondary,
.mom-content-footer__destructive {
  flex-shrink: 0;
}

/* Destructive wrapper - pushed to left with auto margin */
.mom-content-footer__destructive {
  margin-right: auto;
}

/* Helper text */
.mom-content-footer__helper {
  flex: 1;
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-tight);
  color: var(--text-muted);
  text-align: right;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-right: var(--space-2);
}

/* Variant: Actions with destructive - adjust layout */
.mom-content-footer--has-destructive:not(.mom-content-footer--helper) {
  justify-content: flex-end;
}

/* Variant: Actions without destructive - buttons only */
.mom-content-footer:not(.mom-content-footer--has-destructive):not(.mom-content-footer--helper) {
  justify-content: flex-end;
}

/* Integration with Modal */
.mom-modal .mom-content-footer {
  padding: var(--space-1) var(--space-6) var(--space-4);
}

/* Integration with Card */
.mom-card .mom-content-footer {
  padding: var(--space-1) var(--space-5) var(--space-4);
  margin-top: auto;
}

/* Last child in container */
.mom-content-footer:last-child {
  border-radius: 0 0 var(--radius-2xl) var(--radius-2xl);
}


/* ── system/components/content-header/content-header.css ── */
/* ================================================================== */
/*  Mo~oM Design System, ContentHeader Component                         */
/*  Content card header with optional icon, subtitle, and close       */
/* ================================================================== */

.mom-content-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) var(--space-6);
}

/* Content area (left side) */
.mom-content-header__content {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  flex: 1;
  min-width: 0;
}

/* Decorative icon */
.mom-content-header__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--text-accent);
}

.mom-content-header__icon svg {
  width: 24px;
  height: 24px;
}

/* Text wrapper */
.mom-content-header__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

/* Title */
.mom-content-header__title {
  margin: 0;
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  color: var(--text-primary);
  line-height: var(--line-height-tight);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Subtitle */
.mom-content-header__subtitle {
  margin: 0;
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-muted);
  line-height: var(--line-height-snug);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Close button wrapper - contains Button component */
.mom-content-header__close {
  flex-shrink: 0;
  margin-top: -2px;
  margin-right: -2px;
}

/* Remove margins from button inside close wrapper */
.mom-content-header__close .mom-btn {
  margin: 0;
}

/* Variant: Without icon - align text to edge */
.mom-content-header:not(.mom-content-header--has-icon) .mom-content-header__content {
  align-items: flex-start;
}

/* Variant: Without subtitle - center content vertically */
.mom-content-header:not(.mom-content-header--has-subtitle) .mom-content-header__content {
  align-items: center;
}

.mom-content-header:not(.mom-content-header--has-subtitle) .mom-content-header__title {
  line-height: var(--line-height-normal);
}

/* Integration with Modal */
.mom-modal .mom-content-header {
  padding: var(--space-4) var(--space-6);
}

/* Integration with Card */
.mom-card .mom-content-header {
  padding: var(--space-4) var(--space-5);
}

/* Used as standalone header (no parent modal/card) */
.mom-content-header:first-child {
  border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;
}


/* ── system/components/date-picker/date-picker.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Date Picker Component                       */
/*  Calendar: single, range, year-month, dual-month modes            */
/*  Atoms: TableDays (7 states), HeaderLetter, DaySelector,          */
/*         HeaderNavigation, YearMonthSelector                       */
/* ================================================================== */

/* ================================================================== */
/*  Component Tokens                                                  */
/* ================================================================== */

:root {
  /* Radix teal-alpha tokens — defined for both dark and light in colors.css,
     so they automatically produce the correct mint tint in both modes.
     --teal-a4 ≈ Figma accent/alpha/6  --teal-a3 ≈ Figma accent/alpha/4      */
  --dp-selected-bg: var(--teal-a4);   /* range start/end + single selected    */
  --dp-range-bg:    var(--teal-a3);   /* in-range fill + badge default bg     */
  --dp-cell-h:      var(--space-8);   /* 32px — Figma TableDays height        */
  --dp-col-w:       var(--space-10);  /* 40px — closest to Figma ~42px/col    */
  --dp-radius:      var(--radius-2xl);/* 16px — pill / today ring             */
}

/* ================================================================== */
/*  Container                                                         */
/* ================================================================== */

.mom-datepicker {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  background: var(--elevation-40);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-xl);
  box-shadow: var(--elevation-shadow-40);
  padding: var(--space-4);
  font-family: var(--font-sans);
  overflow: hidden;
  /* Width is driven by column count × column width + padding — gives grid a definite width */
  width: calc(7 * var(--dp-col-w) + 2 * var(--space-4));
}

/* ================================================================== */
/*  Header Navigation  (916-19139)                                    */
/* ================================================================== */

.mom-datepicker__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* Month/Year selector container */
.mom-datepicker__month-year-selector {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

/* Month button (separate from year) */
.mom-datepicker__month-btn {
  display: flex;
  align-items: center;
  padding: var(--space-1) var(--space-2);
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  color: var(--text-primary);
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-datepicker__month-btn:hover {
  background: var(--surface-hover);
  transform: translateY(-1px);
}

.mom-datepicker__month-btn:active {
  transform: scale(0.98);
}

.mom-datepicker__month-name {
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-base);
  color: var(--text-primary);
}

/* Year button */
.mom-datepicker__year-btn {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-1) var(--space-2);
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  color: var(--text-primary);
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-datepicker__year-btn:hover {
  background: var(--surface-hover);
  transform: translateY(-1px);
}

.mom-datepicker__year-btn:active {
  transform: scale(0.98);
}

.mom-datepicker__year-btn svg {
  width: var(--space-4);
  height: var(--space-4);
  color: var(--text-muted);
  transition: transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-datepicker__year-btn:hover svg {
  transform: translateY(2px);
}

.mom-datepicker__year-num {
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-base);
  color: var(--text-primary);
}

/* Month/year button — left side with chevron-down */
.mom-datepicker__month-btn {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: 0;
  background: transparent;
  border: none;
  cursor: pointer;
  color: var(--text-primary);
}

.mom-datepicker__month-btn:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
  border-radius: var(--radius-md);
}

.mom-datepicker__month-year {
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-base);
  color: var(--text-primary);
}

.mom-datepicker__month-btn svg {
  width: var(--space-6);
  height: var(--space-6);
  color: var(--text-muted);
  flex-shrink: 0;
}

/* Prev / Next nav arrows */
.mom-datepicker__nav {
  display: flex;
}

.mom-datepicker__nav-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  padding: 0;
  background: transparent;
  border: none;
  color: var(--text-primary);
  cursor: pointer;
  transition: color 0.15s;
}

.mom-datepicker__nav-btn:hover {
  color: var(--accent);
}

.mom-datepicker__nav-btn:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
  border-radius: var(--radius-md);
}

.mom-datepicker__nav-btn svg {
  width: var(--space-6);
  height: var(--space-6);
  display: block;
}

/* ================================================================== */
/*  Weekday Headers  (HeaderLetter — 916-19078)                       */
/* ================================================================== */

.mom-datepicker__weekdays {
  display: grid;
  grid-template-columns: repeat(7, minmax(2rem, 1fr));
}

.mom-datepicker__weekday {
  height: var(--dp-cell-h);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--text-muted);   /* slate/10 → --text-muted */
  text-align: center;
}

/* ================================================================== */
/*  Day Grid  (DaySelector — 916-19080)                               */
/*  7-col grid, row-gap 8px, no column gap                           */
/* ================================================================== */

.mom-datepicker__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(2rem, 1fr));
  row-gap: var(--space-2);
}

/* Base day cell (TableDays Default — 916-19049) */
.mom-datepicker__day {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: var(--dp-cell-h);
  padding: var(--space-1) 0;
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  font-family: var(--font-sans);
  color: var(--text-primary);   /* slate/12 */
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--dp-radius);
  cursor: pointer;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    border-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
  text-align: center;
  position: relative;
  overflow: hidden;
}

.mom-datepicker__day:hover:not(:disabled):not(.mom-datepicker__day--in-range) {
  background: var(--surface-hover);
  transform: translateY(-1px);
}

.mom-datepicker__day:active:not(:disabled) {
  transform: scale(0.95);
}

.mom-datepicker__day:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Day States                                                        */
/* ================================================================== */

/* Today  (916-19053): border ring, medium weight */
.mom-datepicker__day--today {
  font-weight: var(--font-medium);
  border-color: var(--text-secondary);   /* slate/11 */
}

/* Single selected  (916-19056): full pill, accent alpha/6 bg */
.mom-datepicker__day--selected {
  font-weight: var(--font-medium);
  background: var(--dp-selected-bg);
  border-radius: var(--radius-full);
  animation: mom-datepicker-selected-pop var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-datepicker-selected-pop {
  0% { transform: scale(1); }
  50% { transform: scale(1.15); }
  100% { transform: scale(1); }
}

.mom-datepicker__day--selected:hover {
  background: var(--dp-selected-bg);
  box-shadow: 0 2px 8px rgba(20, 184, 166, 0.2);
}

/* Range start endpoint  (916-19059): left-pill, accent alpha/6 */
.mom-datepicker__day--range-start {
  font-weight: var(--font-medium);
  background: var(--dp-selected-bg);
  border-radius: var(--dp-radius) 0 0 var(--dp-radius);
  animation: mom-datepicker-range-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

/* Range end endpoint  (916-19067): right-pill, accent alpha/6 */
.mom-datepicker__day--range-end {
  font-weight: var(--font-medium);
  background: var(--dp-selected-bg);
  border-radius: 0 var(--dp-radius) var(--dp-radius) 0;
  animation: mom-datepicker-range-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-datepicker-range-bounce {
  0% { transform: scale(0.9); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}

/* Range middle days  (916-19075): slight rounding, accent alpha/4 */
.mom-datepicker__day--in-range {
  font-weight: var(--font-medium);
  background: var(--dp-range-bg);
  border-radius: var(--radius-sm);
}

.mom-datepicker__day--in-range:hover {
  background: var(--teal-a4);
}

/* Range preview start  (916-19063): left-pill, lighter alpha/4 */
.mom-datepicker__day--range-preview-start {
  background: var(--dp-range-bg);
  border-radius: var(--dp-radius) var(--radius-sm) var(--radius-sm) var(--dp-radius);
}

/* Range preview end  (916-19071): right-pill, lighter alpha/4 */
.mom-datepicker__day--range-preview-end {
  background: var(--dp-range-bg);
  border-radius: var(--radius-sm) var(--dp-radius) var(--dp-radius) var(--radius-sm);
}

/* Outside month days */
.mom-datepicker__day--outside {
  color: var(--text-muted);
  opacity: 0.4;
}

/* Disabled  (916-19051): slate/8 → muted + pointer-events none */
.mom-datepicker__day--disabled {
  color: var(--text-secondary);
  opacity: 0.3;
  cursor: not-allowed;
  pointer-events: none;
}

/* ================================================================== */
/*  Year / Month Selector  (916-19023)                                */
/*  3-column grid of badge-style year/month pills                    */
/* ================================================================== */

.mom-datepicker__year-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(4rem, 1fr));
  gap: var(--space-2);
}

/* Scrollable year grid (1900-2100) */
.mom-datepicker__year-grid--scrollable {
  display: flex;
  flex-direction: column;
  max-height: 240px;
  overflow-y: auto;
  gap: var(--space-1);
  padding-right: var(--space-1);
  /* Custom scrollbar styling */
  scrollbar-width: thin;
  scrollbar-color: var(--slate-a4) transparent;
}

.mom-datepicker__year-grid--scrollable::-webkit-scrollbar {
  width: 6px;
}

.mom-datepicker__year-grid--scrollable::-webkit-scrollbar-track {
  background: transparent;
}

.mom-datepicker__year-grid--scrollable::-webkit-scrollbar-thumb {
  background: var(--slate-a4);
  border-radius: var(--radius-full);
}

.mom-datepicker__year-grid--scrollable::-webkit-scrollbar-thumb:hover {
  background: var(--slate-a6);
}

/* Year items in scrollable list */
.mom-datepicker__year-grid--scrollable .mom-datepicker__year-item {
  height: var(--space-8);
  border-radius: var(--radius-md);
}

/* Month grid (3x4 layout for 12 months) */
.mom-datepicker__month-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(4, 1fr);
  gap: var(--space-2);
}

.mom-datepicker__month-grid .mom-datepicker__year-item {
  height: var(--space-10);
  font-size: var(--font-size-sm);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.mom-datepicker__year-item {
  display: flex;
  align-items: center;
  justify-content: center;
  height: var(--space-7);   /* 28px — exact match */
  padding: 0 var(--space-3);
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  line-height: var(--line-height-sm);
  font-family: var(--font-sans);
  color: var(--text-primary);
  background: var(--dp-range-bg);   /* accent alpha/4 — badge bg */
  border: none;
  border-radius: var(--radius-full);
  cursor: pointer;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
  text-align: center;
  width: 100%;
  opacity: 0;
  transform: scale(0.9);
  animation: mom-datepicker-year-item-in var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
}

/* Staggered entrance for year/month items */
.mom-datepicker__year-item:nth-child(1) { animation-delay: 0.03s; }
.mom-datepicker__year-item:nth-child(2) { animation-delay: 0.06s; }
.mom-datepicker__year-item:nth-child(3) { animation-delay: 0.09s; }
.mom-datepicker__year-item:nth-child(4) { animation-delay: 0.12s; }
.mom-datepicker__year-item:nth-child(5) { animation-delay: 0.15s; }
.mom-datepicker__year-item:nth-child(6) { animation-delay: 0.18s; }
.mom-datepicker__year-item:nth-child(7) { animation-delay: 0.21s; }
.mom-datepicker__year-item:nth-child(8) { animation-delay: 0.24s; }
.mom-datepicker__year-item:nth-child(9) { animation-delay: 0.27s; }
.mom-datepicker__year-item:nth-child(10) { animation-delay: 0.30s; }
.mom-datepicker__year-item:nth-child(11) { animation-delay: 0.33s; }
.mom-datepicker__year-item:nth-child(12) { animation-delay: 0.36s; }

@keyframes mom-datepicker-year-item-in {
  0% {
    opacity: 0;
    transform: scale(0.9);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

.mom-datepicker__year-item:hover {
  background: var(--teal-a5);   /* one step up from base --teal-a3 */
  transform: translateY(-2px) scale(1.02);
  box-shadow: 0 2px 8px rgba(20, 184, 166, 0.15);
}

.mom-datepicker__year-item:active {
  transform: scale(0.95);
}

.mom-datepicker__year-item:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
  animation: mom-datepicker-year-focus var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

@keyframes mom-datepicker-year-focus {
  0% { box-shadow: 0 0 0 0 var(--ring-color-accent-subtle); }
  50% { box-shadow: 0 0 0 4px rgba(20, 184, 166, 0.1); }
  100% { box-shadow: 0 0 0 2px var(--ring-color-accent-subtle); }
}

.mom-datepicker__year-item--selected {
  background: var(--teal-9) !important;   /* solid accent - forced override */
  color: white !important;
  font-weight: var(--font-semibold);
  border: 2px solid rgba(255, 255, 255, 0.5);
  box-shadow:
    0 0 0 2px var(--teal-9),
    0 4px 12px rgba(20, 184, 166, 0.5);
  transform: scale(1.05);
  z-index: 1;
}

.mom-datepicker__year-item--selected:hover {
  background: var(--teal-10) !important;
  border-color: white;
  box-shadow:
    0 0 0 3px var(--teal-10),
    0 6px 16px rgba(20, 184, 166, 0.6);
  transform: scale(1.08);
}

/* ================================================================== */
/*  Dual / Multi-Month Layout  (924-77845)                            */
/* ================================================================== */

.mom-datepicker--dual {
  /* 2 month grids + outer padding (×2) + inner gap between months */
  width: calc(2 * 7 * var(--dp-col-w) + 3 * var(--space-4));
}

.mom-datepicker__months {
  display: flex;
  gap: var(--space-4);
}

.mom-datepicker__month {
  flex: 1 0 0;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

/* ================================================================== */
/*  Sizes                                                             */
/* ================================================================== */

.mom-datepicker--sm {
  --dp-cell-h: var(--space-7);  /* 28px */
  --dp-col-w:  var(--space-9);  /* 36px — exact match for sm column width */
}

.mom-datepicker--sm .mom-datepicker__month-year {
  font-size: var(--font-size-sm);
}

.mom-datepicker--sm .mom-datepicker__weekday,
.mom-datepicker--sm .mom-datepicker__day {
  font-size: var(--font-size-xs);
}

.mom-datepicker--sm .mom-datepicker__nav-btn svg,
.mom-datepicker--sm .mom-datepicker__month-btn svg {
  width: var(--space-4);   /* 16px */
  height: var(--space-4);
}

.mom-datepicker--sm .mom-datepicker__year-item {
  height: var(--space-6);  /* 24px — closest win to 22px */
  font-size: var(--font-size-xs);
}

.mom-datepicker--lg {
  --dp-cell-h: var(--space-11); /* 44px */
  --dp-col-w:  var(--space-12); /* 48px — closest win to 52px */
}

.mom-datepicker--lg .mom-datepicker__month-year {
  font-size: var(--font-size-lg);
}

.mom-datepicker--lg .mom-datepicker__weekday,
.mom-datepicker--lg .mom-datepicker__day {
  font-size: var(--font-size-base);
}

.mom-datepicker--lg .mom-datepicker__nav-btn svg,
.mom-datepicker--lg .mom-datepicker__month-btn svg {
  width: var(--space-7);   /* 28px */
  height: var(--space-7);
}

.mom-datepicker--lg .mom-datepicker__year-item {
  height: var(--space-9);  /* 36px — exact match */
  font-size: var(--font-size-base);
}


/* ── system/components/divider/divider.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Divider Component                           */
/*  H-Divider: horizontal separator with optional centered content   */
/*  Line styles: solid · dashed · dotted                              */
/*  Content: none · text label · badge · button · button group        */
/* ================================================================== */

/* ─── Plain horizontal rule (no content) ─────────────────────────── */

hr.mom-divider {
  border: none;
  width: 100%;
  flex-shrink: 0;
}

hr.mom-divider--solid  { height: 1px; background: var(--border); }
hr.mom-divider--dashed { height: 0;   border-top: 1px dashed var(--border); }
hr.mom-divider--dotted { height: 0;   border-top: 1px dotted var(--border); }

/* ─── Vertical rule ──────────────────────────────────────────────── */

hr.mom-divider--vertical {
  height: auto;
  align-self: stretch;
  flex-shrink: 0;
}

hr.mom-divider--vertical.mom-divider--solid {
  width: 1px;
  background: var(--border);
}

hr.mom-divider--vertical.mom-divider--dashed {
  width: 0;
  background: none;
  border-top: none;
  border-left: 1px dashed var(--border);
}

hr.mom-divider--vertical.mom-divider--dotted {
  width: 0;
  background: none;
  border-top: none;
  border-left: 1px dotted var(--border);
}

/* ─── Divider with content ───────────────────────────────────────── */
/*                                                                    */
/*  Structure:                                                        */
/*    <div class="mom-divider mom-divider--solid">                    */
/*      <!-- any content: label, badge, button, button group -->      */
/*    </div>                                                          */
/*                                                                    */
/*  The ::before and ::after pseudo-elements form the flanking lines. */
/*  Gap is 8px on each side matching the Figma spec.                  */

div.mom-divider {
  display: flex;
  align-items: center;
  gap: var(--space-2);   /* 8px */
  width: 100%;
}

div.mom-divider::before,
div.mom-divider::after {
  content: '';
  flex: 1 0 0;
  min-width: 0;
}

/* Solid flanking lines */
div.mom-divider--solid::before,
div.mom-divider--solid::after {
  height: 1px;
  background: var(--border);
}

/* Dashed flanking lines */
div.mom-divider--dashed::before,
div.mom-divider--dashed::after {
  height: 0;
  border-top: 1px dashed var(--border);
}

/* Dotted flanking lines */
div.mom-divider--dotted::before,
div.mom-divider--dotted::after {
  height: 0;
  border-top: 1px dotted var(--border);
}

/* ─── Content placement ─────────────────────────────────────────── */
/*                                                                    */
/*  Center (default): both flanking lines visible                     */
/*  Left:  content first, only the right line                         */
/*  Right: content last,  only the left  line                         */

div.mom-divider--left::before  { display: none; }
div.mom-divider--right::after  { display: none; }

/* ─── Text label ─────────────────────────────────────────────────── */

.mom-divider__label {
  font-family: var(--font-sans);
  font-size: var(--font-size-lg);     /* 18px — matches Figma text-lg/medium */
  font-weight: var(--font-medium);    /* 500 */
  line-height: var(--line-height-lg); /* 28px */
  color: var(--slate-11);
  white-space: nowrap;
  flex-shrink: 0;
  text-align: center;
}


/* ── system/components/drawer/drawer.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Drawer Component                             */
/*  Slide-out panel anchored to screen edge with overlay backdrop     */
/* ================================================================== */

/* ------------------------------------------------------------------ */
/*  Overlay backdrop                                                   */
/* ------------------------------------------------------------------ */

.mom-drawer-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(var(--blur-sm));
  -webkit-backdrop-filter: blur(var(--blur-sm));
  z-index: 1000;
  opacity: 0;
  transition: opacity var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

.mom-drawer-overlay[open],
.mom-drawer-overlay.is-open,
.mom-drawer-overlay:target {
  opacity: 1;
}

.mom-drawer-overlay.is-closing {
  opacity: 0;
  transition: opacity var(--duration-fast, 0.15s) var(--ease-in-out-quart, ease);
}

/* ------------------------------------------------------------------ */
/*  Drawer panel (base)                                                */
/* ------------------------------------------------------------------ */

.mom-drawer {
  position: fixed;
  z-index: 1001;
  background: var(--surface);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-xl);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  will-change: transform;
  transition: transform var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

/* ------------------------------------------------------------------ */
/*  Inline mode (for viewer — not actually fixed)                      */
/* ------------------------------------------------------------------ */

.mom-drawer--inline {
  position: relative;
  z-index: auto;
  border-radius: var(--radius-2xl);
  max-height: 480px;
  transition: none;
}

.mom-drawer--inline.mom-drawer--left,
.mom-drawer--inline.mom-drawer--right {
  height: 480px;
}

.mom-drawer--inline.mom-drawer--top,
.mom-drawer--inline.mom-drawer--bottom {
  width: 100%;
  height: auto;
  max-height: 320px;
}

/* ------------------------------------------------------------------ */
/*  Position: Right (default)                                          */
/* ------------------------------------------------------------------ */

.mom-drawer--right {
  top: 0;
  right: 0;
  bottom: 0;
  border-radius: var(--radius-2xl) 0 0 var(--radius-2xl);
  transform: translateX(100%);
}

.mom-drawer--right[data-state="open"],
.is-open .mom-drawer--right {
  transform: translateX(0);
  animation: mom-drawer-slide-left var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-drawer-slide-left {
  0% { transform: translateX(100%); }
  100% { transform: translateX(0); }
}

/* ------------------------------------------------------------------ */
/*  Position: Left                                                     */
/* ------------------------------------------------------------------ */

.mom-drawer--left {
  top: 0;
  left: 0;
  bottom: 0;
  border-radius: 0 var(--radius-2xl) var(--radius-2xl) 0;
  transform: translateX(-100%);
}

.mom-drawer--left[data-state="open"],
.is-open .mom-drawer--left {
  transform: translateX(0);
  animation: mom-drawer-slide-right var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-drawer-slide-right {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(0); }
}

/* ------------------------------------------------------------------ */
/*  Position: Top                                                      */
/* ------------------------------------------------------------------ */

.mom-drawer--top {
  top: 0;
  left: 0;
  right: 0;
  border-radius: 0 0 var(--radius-2xl) var(--radius-2xl);
  transform: translateY(-100%);
}

.mom-drawer--top[data-state="open"],
.is-open .mom-drawer--top {
  transform: translateY(0);
  animation: mom-drawer-slide-down var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-drawer-slide-down {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(0); }
}

/* ------------------------------------------------------------------ */
/*  Position: Bottom                                                   */
/* ------------------------------------------------------------------ */

.mom-drawer--bottom {
  bottom: 0;
  left: 0;
  right: 0;
  border-radius: var(--radius-2xl) var(--radius-2xl) 0 0;
  transform: translateY(100%);
}

.mom-drawer--bottom[data-state="open"],
.is-open .mom-drawer--bottom {
  transform: translateY(0);
  animation: mom-drawer-slide-up var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-drawer-slide-up {
  0% { transform: translateY(100%); }
  100% { transform: translateY(0); }
}

/* ------------------------------------------------------------------ */
/*  Sizes — width for left/right, height for top/bottom                */
/* ------------------------------------------------------------------ */

.mom-drawer--sm.mom-drawer--left,
.mom-drawer--sm.mom-drawer--right {
  width: 280px;
}

.mom-drawer--md.mom-drawer--left,
.mom-drawer--md.mom-drawer--right {
  width: 400px;
}

.mom-drawer--lg.mom-drawer--left,
.mom-drawer--lg.mom-drawer--right {
  width: 560px;
}

.mom-drawer--full.mom-drawer--left,
.mom-drawer--full.mom-drawer--right {
  width: 100%;
}

.mom-drawer--sm.mom-drawer--top,
.mom-drawer--sm.mom-drawer--bottom {
  height: 200px;
}

.mom-drawer--md.mom-drawer--top,
.mom-drawer--md.mom-drawer--bottom {
  height: 320px;
}

.mom-drawer--lg.mom-drawer--top,
.mom-drawer--lg.mom-drawer--bottom {
  height: 440px;
}

.mom-drawer--full.mom-drawer--top,
.mom-drawer--full.mom-drawer--bottom {
  height: 100%;
}

/* Inline size overrides */
.mom-drawer--inline.mom-drawer--sm { width: 280px; }
.mom-drawer--inline.mom-drawer--md { width: 400px; }
.mom-drawer--inline.mom-drawer--lg { width: 560px; }
.mom-drawer--inline.mom-drawer--full { width: 100%; }

.mom-drawer--inline.mom-drawer--top,
.mom-drawer--inline.mom-drawer--bottom {
  width: 100%;
}

/* ------------------------------------------------------------------ */
/*  Header                                                             */
/* ------------------------------------------------------------------ */

.mom-drawer__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-6);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.mom-drawer__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--font-size-lg);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-lg);
  color: var(--text-primary);
}

/* ------------------------------------------------------------------ */
/*  Close button                                                       */
/* ------------------------------------------------------------------ */

.mom-drawer__close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  color: var(--text-muted);
  cursor: pointer;
  flex-shrink: 0;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

.mom-drawer__close:hover {
  background: var(--input-field-bg-hover);
  color: var(--text-primary);
}

.mom-drawer__close:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--input-field-border-focus);
}

.mom-drawer__close svg {
  width: 16px;
  height: 16px;
}

/* ------------------------------------------------------------------ */
/*  Body                                                               */
/* ------------------------------------------------------------------ */

.mom-drawer__body {
  padding: var(--space-6);
  overflow-y: auto;
  flex: 1;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--text-primary);
}

/* ------------------------------------------------------------------ */
/*  Footer                                                             */
/* ------------------------------------------------------------------ */

.mom-drawer__footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-6);
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}


/* ── system/components/dropdown/dropdown.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Dropdown / Menu Component                     */
/*  Floating panel that surfaces below a Select, Button, or trigger    */
/* ================================================================== */

/* ================================================================== */
/*  Container                                                          */
/* ================================================================== */

.mom-dropdown {
  display: inline-flex;
  flex-direction: column;
  min-width: 200px;
  background: var(--surface);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
  padding: var(--space-1);
  box-sizing: border-box;
  opacity: 0;
  transform: translateY(-8px) scale(0.98);
  transform-origin: top center;
  animation: mom-dropdown-in var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
}

@keyframes mom-dropdown-in {
  0% {
    opacity: 0;
    transform: translateY(-8px) scale(0.98);
  }
  60% {
    transform: translateY(2px) scale(1.01);
  }
  100% {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

/* ================================================================== */
/*  Header (optional title + description at the top)                   */
/* ================================================================== */

.mom-dropdown__header {
  display: flex;
  flex-direction: column;
  gap: var(--space-0-5);
  padding: var(--space-2) var(--space-2) var(--space-1-5);
}

.mom-dropdown__title {
  font-size: 13px;
  font-weight: var(--font-semibold);
  line-height: 18px;
  color: var(--input-text-filled);
}

.mom-dropdown__subtitle {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  line-height: var(--line-height-xs);
  color: var(--input-leading-text);
}

/* ================================================================== */
/*  Section label                                                      */
/* ================================================================== */

.mom-dropdown__section-title {
  padding: var(--space-1-5) var(--space-2) var(--space-0-5);
  font-size: 11px;
  font-weight: var(--font-semibold);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: var(--line-height-xs);
  color: var(--input-leading-text);
}

/* ================================================================== */
/*  Separator                                                          */
/* ================================================================== */

.mom-dropdown__sep {
  height: 1px;
  background: var(--border);
  margin: var(--space-1) 0;
}

/* ================================================================== */
/*  Item                                                               */
/* ================================================================== */

.mom-dropdown__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  padding: var(--space-1-5) var(--space-2);
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--input-text-filled);
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  cursor: pointer;
  text-align: left;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
  box-sizing: border-box;
  opacity: 0;
  transform: translateX(-4px);
  animation: mom-dropdown-item-in var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
}

/* Staggered entrance for items */
.mom-dropdown__item:nth-child(1) { animation-delay: 0.03s; }
.mom-dropdown__item:nth-child(2) { animation-delay: 0.06s; }
.mom-dropdown__item:nth-child(3) { animation-delay: 0.09s; }
.mom-dropdown__item:nth-child(4) { animation-delay: 0.12s; }
.mom-dropdown__item:nth-child(5) { animation-delay: 0.15s; }
.mom-dropdown__item:nth-child(6) { animation-delay: 0.18s; }
.mom-dropdown__item:nth-child(7) { animation-delay: 0.21s; }
.mom-dropdown__item:nth-child(8) { animation-delay: 0.24s; }

@keyframes mom-dropdown-item-in {
  0% {
    opacity: 0;
    transform: translateX(-4px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

.mom-dropdown__item:hover {
  background: var(--input-field-bg-hover);
  transform: translateX(2px);
}

.mom-dropdown__item:active {
  transform: scale(0.98);
}

.mom-dropdown__item:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--input-field-border-focus);
}

/* ── Active / selected ───────────────────────────────────────── */

.mom-dropdown__item--active {
  background: var(--input-field-bg-hover);
  font-weight: var(--font-medium);
  animation: mom-dropdown-active-bounce var(--duration-fast, 0.15s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-dropdown-active-bounce {
  0% { transform: scale(1) translateX(0); }
  50% { transform: scale(1.02) translateX(2px); }
  100% { transform: scale(1) translateX(2px); }
}

/* ── Destructive ─────────────────────────────────────────────── */

.mom-dropdown__item--destructive {
  color: var(--helper-error-color);
}

.mom-dropdown__item--destructive:hover {
  background: var(--red-a2);
}

.mom-dropdown__item--destructive .mom-dropdown__item-icon {
  color: var(--helper-error-color);
}

/* ── Disabled ────────────────────────────────────────────────── */

.mom-dropdown__item--disabled,
.mom-dropdown__item:disabled {
  color: var(--input-text-disabled);
  pointer-events: none;
  cursor: not-allowed;
}

.mom-dropdown__item--disabled .mom-dropdown__item-icon,
.mom-dropdown__item:disabled .mom-dropdown__item-icon {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Item parts                                                         */
/* ================================================================== */

/* Leading icon / check slot */
.mom-dropdown__item-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
  color: var(--input-leading-text);
}

.mom-dropdown__item-icon svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-dropdown__item--active .mom-dropdown__item-icon {
  color: var(--input-selected-icon);
}

/* Check mark (for selected state, same width as icon slot) */
.mom-dropdown__item-check {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
  color: var(--input-selected-icon);
}

.mom-dropdown__item-check svg {
  width: 14px;
  height: 14px;
}

/* Text body (label + optional description) */
.mom-dropdown__item-body {
  flex: 1 0 0;
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.mom-dropdown__item-label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: inherit;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mom-dropdown__item-desc {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  line-height: var(--line-height-xs);
  color: var(--input-leading-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Trailing slot (keyboard shortcut / badge) */
.mom-dropdown__item-trailing {
  flex-shrink: 0;
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.mom-dropdown__item-shortcut {
  font-size: 11px;
  font-weight: var(--font-medium);
  line-height: var(--line-height-xs);
  color: var(--input-leading-text);
  background: rgba(226, 240, 253, 0.06);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius);
  padding: 1px 5px;
  white-space: nowrap;
  letter-spacing: 0.02em;
}

.mom-dropdown__item--destructive .mom-dropdown__item-shortcut {
  color: var(--helper-error-color);
  background: var(--red-a2);
  border-color: var(--red-a3);
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-dropdown--sm .mom-dropdown__item {
  padding: var(--space-1) var(--space-2);
  font-size: 13px;
}

.mom-dropdown--sm .mom-dropdown__item-icon,
.mom-dropdown--sm .mom-dropdown__item-check {
  width: 14px;
  height: 14px;
}

.mom-dropdown--sm .mom-dropdown__item-icon svg,
.mom-dropdown--sm .mom-dropdown__item-check svg {
  width: 12px;
  height: 12px;
}

.mom-dropdown--sm .mom-dropdown__item-shortcut {
  font-size: 10px;
}

.mom-dropdown--lg .mom-dropdown__item {
  padding: 9px 10px;
  font-size: 15px;
}


/* ── system/components/empty-state/empty-state.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Empty State Component                        */
/*  Placeholder for empty content with icon, title, description       */
/*  Variants: default, compact, card                                 */
/* ================================================================== */

.mom-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: var(--space-8);
  font-family: var(--font-sans);
}

.mom-empty-state__icon {
  flex-shrink: 0;
  width: var(--space-16);
  height: var(--space-16);
  margin-bottom: var(--space-4);
  color: var(--text-muted);
}

.mom-empty-state__icon svg {
  width: 100%;
  height: 100%;
}

.mom-empty-state__title {
  font-size: var(--font-size-lg);
  font-weight: var(--font-semibold);
  color: var(--text-primary);
  line-height: var(--line-height-lg);
  margin-bottom: var(--space-2);
}

.mom-empty-state__description {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  line-height: var(--line-height-base);
  max-width: var(--container-xs);
  margin-bottom: var(--space-6);
}

.mom-empty-state__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
}


/* Compact variant */
.mom-empty-state--compact {
  padding: var(--space-4);
}

.mom-empty-state--compact .mom-empty-state__icon {
  width: var(--space-8);
  height: var(--space-8);
  margin-bottom: var(--space-2);
}

.mom-empty-state--compact .mom-empty-state__title {
  font-size: var(--font-size-sm);
  margin-bottom: var(--space-1);
}

.mom-empty-state--compact .mom-empty-state__description {
  font-size: var(--font-size-xs);
  margin-bottom: var(--space-4);
}

/* Card variant */
.mom-empty-state--card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-2xl);
  padding: var(--space-8);
}


/* ── system/components/file-upload/file-upload.css ── */
/* ================================================================== */
/*  Mo~oM Design System, File Upload Component                        */
/*  Dropzone (default + dragover) and File Item (all states)          */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                   */
/* ================================================================== */

:root {
  /* Dropzone */
  --file-dropzone-bg:           #202425;
  --file-dropzone-border:       var(--slate-a4);
  --file-dropzone-hover-bg:     rgba(0, 253, 232, 0.10);
  --file-dropzone-hover-border: rgba(9, 255, 230, 0.19);
  --file-dropzone-icon-bg:      rgba(0, 251, 213, 0.03);
  --file-dropzone-title:        white;
  --file-dropzone-hint:         var(--slate-12);
  --file-dropzone-link:         var(--teal-10);

  /* File item */
  --file-item-bg:               var(--slate-7);
  --file-item-hover-bg:         var(--slate-8);
  --file-item-progress-bg:      #151718;
  --file-item-border:           var(--slate-a4);
  --file-item-error-bg:         rgba(254,  57,  64, 0.18);
  --file-item-error-border:     rgba(255,  53,  60, 0.32);
  --file-item-icon-bg:          rgba(0, 251, 213, 0.03);
  --file-item-title:            white;
  --file-item-meta:             var(--slate-12);
  --file-item-btn:              rgba(226, 240, 253, 0.50);
  --file-item-btn-hover:        rgba(226, 240, 253, 0.85);

  /* Progress bar */
  --file-progress-track:        var(--slate-a4);
  --file-progress-fill:         var(--teal-9);
  --file-progress-pct:          var(--slate-12);

  /* Upload glow (uploading progress state) */
  --file-glow-border:           rgba(9, 255, 230, 0.19);
  --file-glow-bg:               rgba(9, 255, 230, 0.30);
}

:root.light {
  /* Dropzone */
  --file-dropzone-bg:           #f5f6f7;
  --file-dropzone-border:       rgba(0, 0, 0, 0.10);
  --file-dropzone-hover-bg:     rgba(0, 197, 179, 0.07);
  --file-dropzone-hover-border: rgba(0, 197, 179, 0.28);
  --file-dropzone-icon-bg:      rgba(0, 197, 179, 0.06);
  --file-dropzone-title:        var(--slate-12);
  --file-dropzone-hint:         var(--slate-11);

  /* File item */
  --file-item-bg:               white;
  --file-item-hover-bg:         #f3f4f5;
  --file-item-progress-bg:      #f0f1f3;
  --file-item-border:           rgba(0, 0, 0, 0.10);
  --file-item-error-bg:         var(--red-a2);
  --file-item-error-border:     rgba(229, 72, 77, 0.24);
  --file-item-icon-bg:          rgba(0, 197, 179, 0.06);
  --file-item-title:            var(--slate-12);
  --file-item-meta:             var(--slate-11);
  --file-item-btn:              var(--slate-11);
  --file-item-btn-hover:        var(--slate-12);

  /* Progress bar */
  --file-progress-track:        rgba(0, 0, 0, 0.08);
  --file-progress-pct:          var(--slate-12);
}

/* ================================================================== */
/*  Dropzone                                                           */
/* ================================================================== */

.mom-file-dropzone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1-5);
  padding: var(--space-6) var(--space-2);
  min-width: 240px;
  width: 100%;
  background: var(--file-dropzone-bg);
  border: 2px dashed var(--file-dropzone-border);
  border-radius: var(--radius-2xl);
  text-align: center;
  cursor: pointer;
  transition: background 0.18s, border-color 0.18s;
  position: relative;
  overflow: hidden;
}

.mom-file-dropzone input[type="file"] {
  position: absolute;
  width: 0;
  height: 0;
  opacity: 0;
  overflow: hidden;
}

/* Hover / drag-over state */
.mom-file-dropzone:hover,
.mom-file-dropzone:focus-within,
.mom-file-dropzone--dragover {
  background: var(--file-dropzone-hover-bg);
  border-color: var(--file-dropzone-hover-border);
}

/* Icon wrapper */
.mom-file-dropzone__icon-wrap {
  display: flex;
  align-items: flex-start;
  padding: var(--space-2);
  background: var(--file-dropzone-icon-bg);
  border-radius: var(--radius-lg);
  flex-shrink: 0;
}

.mom-file-dropzone__icon {
  width: var(--space-6);
  height: var(--space-6);
  color: var(--file-dropzone-link);
}

/* Text block */
.mom-file-dropzone__text {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-bottom: var(--space-0-5);
  width: 100%;
}

.mom-file-dropzone__title {
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-base);
  color: var(--file-dropzone-title);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}

.mom-file-dropzone__hint {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--file-dropzone-hint);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}

/* "or click to upload" inline link */
.mom-file-dropzone__link {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  line-height: var(--line-height-sm);
  color: var(--file-dropzone-link);
  text-decoration: underline;
  text-decoration-skip-ink: none;
  text-underline-offset: var(--space-0-5);
  cursor: pointer;
}

.mom-file-dropzone__link:hover {
  opacity: 0.8;
}

/* ================================================================== */
/*  File Item                                                          */
/* ================================================================== */

.mom-file-item {
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  padding: var(--space-2) var(--space-3) var(--space-2) var(--space-2);
  min-width: 240px;
  width: 100%;
  background: var(--file-item-bg);
  border: 1px solid var(--file-item-border);
  border-radius: var(--radius-2xl);
  box-shadow:
    0px 4px 7px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.08),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
  position: relative;
  overflow: hidden;
  transition: background 0.15s;
}

/* Hover */
.mom-file-item:hover,
.mom-file-item--hover {
  background: var(--file-item-hover-bg);
}

/* Icon wrapper */
.mom-file-item__icon-wrap {
  display: flex;
  align-items: flex-start;
  padding: var(--space-2);
  background: var(--file-item-icon-bg);
  border-radius: var(--radius-lg);
  flex-shrink: 0;
}

.mom-file-item__icon {
  width: var(--space-6);
  height: var(--space-6);
  color: var(--file-dropzone-link);
}

/* Body (title + meta) */
.mom-file-item__body {
  flex: 1 0 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
  min-height: 1px;
  padding-bottom: var(--space-0-5);
}

.mom-file-item__title {
  font-size: var(--font-size-base);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-base);
  color: var(--file-item-title);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}

.mom-file-item__meta {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--file-item-meta);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  width: 100%;
}

/* Action button (trash, cancel, retry) */
.mom-file-item__btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-8);
  height: var(--space-8);
  padding: var(--space-1-5);
  background: transparent;
  border: none;
  border-radius: var(--radius-lg);
  color: var(--file-item-btn);
  cursor: pointer;
  flex-shrink: 0;
  transition: color 0.15s, background 0.15s;
}

.mom-file-item__btn:hover {
  color: var(--file-item-btn-hover);
  background: rgba(255, 255, 255, 0.06);
}

:root.light .mom-file-item__btn:hover {
  background: rgba(0, 0, 0, 0.05);
}

.mom-file-item__btn svg {
  width: var(--space-6);
  height: var(--space-6);
}

/* ================================================================== */
/*  File Item — Uploading state (teal glow progress)                  */
/* ================================================================== */

.mom-file-item--uploading {
  background: var(--file-item-progress-bg);
  box-shadow:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.24),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px 4px 4px 0px rgba(0, 0, 0, 0.08);
}

.mom-file-item--uploading:hover {
  background: var(--file-item-progress-bg);
}

/* Teal glow overlay — width controlled by --upload-pct CSS var (0–100) */
.mom-file-item--uploading::before {
  content: '';
  position: absolute;
  left: -1px;
  top: -1px;
  bottom: -1px;
  width: calc(var(--upload-pct, 45) * 1% + 2px);
  background: linear-gradient(90deg,
    rgba(9, 255, 230, 0) 0%,
    var(--file-glow-bg) 100%);
  border-right: 1px solid var(--file-glow-border);
  border-radius: var(--radius-2xl) 0 0 var(--radius-2xl);
  pointer-events: none;
}

/* Animated scan-line particle effect */
.mom-file-item--uploading::after {
  content: '';
  position: absolute;
  left: -1px;
  top: -1px;
  bottom: -1px;
  width: calc(var(--upload-pct, 45) * 1% + 2px);
  background: repeating-linear-gradient(
    -15deg,
    transparent 0px,
    transparent 6px,
    rgba(9, 255, 230, 0.06) 6px,
    rgba(9, 255, 230, 0.06) 7px
  );
  pointer-events: none;
  animation: mom-file-scan 2s linear infinite;
  border-radius: var(--radius-2xl) 0 0 var(--radius-2xl);
}

@keyframes mom-file-scan {
  from { background-position: 0 0; }
  to   { background-position: 0 48px; }
}

/* ================================================================== */
/*  File Item — Progress Bar state                                     */
/* ================================================================== */

.mom-file-item--progress {
  background: var(--file-item-progress-bg);
  box-shadow:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.24),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px 4px 4px 0px rgba(0, 0, 0, 0.08);
}

.mom-file-item--progress:hover {
  background: var(--file-item-progress-bg);
}

/* Progress bar row (replaces meta) */
.mom-file-item__progress-bar {
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  width: 100%;
  margin-bottom: calc(var(--space-0-5) * -1);
}

.mom-file-item__progress-track {
  flex: 1 0 0;
  height: var(--space-2);
  min-width: 0;
  border-radius: var(--radius-lg);
  background: var(--file-progress-track);
  position: relative;
  overflow: hidden;
  box-shadow:
    inset 0px 1px 0px 0px rgba(0, 0, 0, 0.24),
    inset 0px -1px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px 4px 4px 0px rgba(0, 0, 0, 0.08);
}

.mom-file-item__progress-fill {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: var(--progress, 40%);
  border-radius: var(--radius);
  background: linear-gradient(
    90deg,
    var(--file-progress-fill) 0%,
    color-mix(in srgb, var(--file-progress-fill) 75%, white) 100%
  );
  box-shadow:
    0px 4px 7px 0px rgba(0, 0, 0, 0.08),
    inset 0px 1px 0px 0px rgba(255, 255, 255, 0.08),
    inset 0px -1px 0px 0px rgba(0, 0, 0, 0.24);
  transition: width 0.3s ease;
}

.mom-file-item__progress-pct {
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--file-progress-pct);
  text-align: right;
  width: var(--space-8);
  flex-shrink: 0;
  white-space: pre-wrap;
}

/* ================================================================== */
/*  File Item — Error state                                            */
/* ================================================================== */

.mom-file-item--error {
  background: var(--file-item-error-bg);
  border-color: var(--file-item-error-border);
}

.mom-file-item--error:hover {
  background: var(--file-item-error-bg);
}

/* ================================================================== */
/*  Legacy aliases — keep old class names working                      */
/* ================================================================== */

.mom-file-upload {
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}

.mom-file-upload input[type="file"] {
  position: absolute;
  width: 0;
  height: 0;
  opacity: 0;
  overflow: hidden;
}

.mom-file-upload--dropzone {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  padding: var(--space-8);
  border: 2px dashed var(--file-dropzone-border);
  border-radius: var(--radius-2xl);
  background: var(--file-dropzone-bg);
  text-align: center;
  min-height: 160px;
}

.mom-file-upload--dropzone:hover,
.mom-file-upload--dropzone:focus-within,
.mom-file-upload--dropzone.mom-file-upload--dragover {
  border-color: var(--file-dropzone-hover-border);
  background: var(--file-dropzone-hover-bg);
}

.mom-file-upload__icon {
  width: var(--space-10);
  height: var(--space-10);
  color: var(--text-muted);
}

.mom-file-upload--dropzone:hover .mom-file-upload__icon,
.mom-file-upload--dropzone:focus-within .mom-file-upload__icon {
  color: var(--accent);
}

.mom-file-upload__text {
  font-weight: var(--font-medium);
  color: var(--file-dropzone-title);
}

.mom-file-upload__hint {
  font-size: var(--font-size-xs);
  color: var(--file-dropzone-hint);
}

.mom-file-upload--button {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  background: var(--accent);
  color: var(--accent-fg);
  border-radius: var(--radius);
  font-weight: var(--font-medium);
}

.mom-file-upload--button:hover {
  background: var(--accent-hover);
}

.mom-file-upload--button .mom-file-upload__icon {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-file-upload--minimal {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--accent);
  text-decoration: underline;
  text-underline-offset: var(--space-0-5);
}

.mom-file-upload--minimal:hover {
  color: var(--accent-hover);
}

.mom-file-upload--minimal .mom-file-upload__icon {
  width: 14px;
  height: 14px;
}

.mom-file-upload--disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}


/* ── system/components/form-label/form-label.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Label Component                               */
/*  Standalone Label — use anywhere: forms, cards, sections, etc.     */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                   */
/* ================================================================== */

:root {
  --label-color:          var(--slate-12);    /* Slate/Solid/12  */
  --label-required-color: var(--teal-9);      /* Accent/Solid/9  */
  --label-optional-color: var(--slate-11);    /* Slate/Solid/11  */
  --label-disabled-color: var(--slate-a4);    /* Slate/Alpha/4   */
}

:root.light {
  --label-color:          var(--slate-12);    /* slate-12 light  */
  --label-required-color: var(--teal-9);      /* accent — same   */
  --label-optional-color: var(--slate-11);    /* slate-11 light  */
  --label-disabled-color: var(--slate-8);     /* slate-8 light   */
}

/* ================================================================== */
/*  Label                                                              */
/* ================================================================== */

.mom-label {
  display: flex;
  align-items: center;
  gap: var(--space-px);
}

.mom-label__text {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  line-height: var(--line-height-sm);
  color: var(--label-color);
  white-space: nowrap;
}

/* Required asterisk */
.mom-label__required {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  line-height: var(--line-height-sm);
  color: var(--label-required-color);
}

/* Optional badge */
.mom-label__optional {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--label-optional-color);
  white-space: nowrap;
}

/* Info icon slot */
.mom-label__info {
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  flex-shrink: 0;
  color: var(--label-optional-color);
}

.mom-label__info svg {
  width: var(--space-4);
  height: var(--space-4);
}

/* Disabled — all children fade */
.mom-label--disabled .mom-label__text,
.mom-label--disabled .mom-label__required,
.mom-label--disabled .mom-label__optional,
.mom-label--disabled .mom-label__info {
  color: var(--label-disabled-color);
}

/* ================================================================== */
/*  Tooltip integration                                                */
/* ================================================================== */

.mom-label__info.mom-tooltip {
  display: flex;
  cursor: pointer;
}

.mom-label__info.mom-tooltip .mom-tooltip__content {
  width: max-content;
  max-width: 220px;
  white-space: normal;
}

/* ================================================================== */
/*  Legacy aliases — keep input/textarea/select working unchanged      */
/*  TODO: migrate consumers to .mom-label* classes                     */
/* ================================================================== */

.mom-field-label          { display: flex; align-items: center; gap: var(--space-px); }
.mom-field-label__text    { font-size: var(--font-size-sm); font-weight: var(--font-medium); line-height: var(--line-height-sm); color: var(--label-color); white-space: nowrap; }
.mom-field-label__required{ font-size: var(--font-size-sm); font-weight: var(--font-medium); line-height: var(--line-height-sm); color: var(--label-required-color); }
.mom-field-label__optional{ font-size: var(--font-size-sm); font-weight: var(--font-regular); line-height: var(--line-height-sm); color: var(--label-optional-color); white-space: nowrap; }
.mom-field-label__info    { display: flex; align-items: center; justify-content: center; width: var(--space-6); height: var(--space-6); flex-shrink: 0; color: var(--label-optional-color); }
.mom-field-label__info svg{ width: var(--space-4); height: var(--space-4); }

.mom-field-label--disabled .mom-field-label__text,
.mom-field-label--disabled .mom-field-label__required,
.mom-field-label--disabled .mom-field-label__optional,
.mom-field-label--disabled .mom-field-label__info { color: var(--label-disabled-color); }

.mom-field-label__info.mom-tooltip          { display: flex; cursor: pointer; }
.mom-field-label__info.mom-tooltip .mom-tooltip__content { width: max-content; max-width: 220px; white-space: normal; }


/* ── system/components/helper/helper.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Helper Component                              */
/*  Standalone Helper — use anywhere: forms, cards, sections, etc.    */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                   */
/* ================================================================== */

:root {
  --helper-color:          var(--slate-11);   /* Slate/Solid/11     */
  --helper-error-color:    var(--red-9);      /* Communication/9    */
  --helper-disabled-color: var(--slate-a4);   /* Slate/Alpha/4      */
}

:root.light {
  --helper-color:          var(--slate-11);   /* slate-11 light     */
  --helper-error-color:    var(--red-9);      /* red-9 — same       */
  --helper-disabled-color: var(--slate-8);    /* slate-8 light      */
}

/* ================================================================== */
/*  Helper                                                             */
/* ================================================================== */

.mom-helper {
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

/* Icon slot */
.mom-helper__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
}

.mom-helper__icon svg {
  width: var(--space-4);
  height: var(--space-4);
}

/* Text */
.mom-helper__text {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  white-space: nowrap;
}

/* Default — slate-11 */
.mom-helper .mom-helper__icon,
.mom-helper .mom-helper__text {
  color: var(--helper-color);
}

/* Error */
.mom-helper--error .mom-helper__icon,
.mom-helper--error .mom-helper__text {
  color: var(--helper-error-color);
}

/* Disabled */
.mom-helper--disabled .mom-helper__icon,
.mom-helper--disabled .mom-helper__text {
  color: var(--helper-disabled-color);
}

/* ================================================================== */
/*  Tooltip integration                                                */
/* ================================================================== */

.mom-helper__icon.mom-tooltip {
  display: flex;
  cursor: pointer;
}

.mom-helper__icon.mom-tooltip .mom-tooltip__content {
  width: max-content;
  max-width: 220px;
  white-space: normal;
}

/* ================================================================== */
/*  Legacy aliases — keep input/textarea/select working unchanged      */
/*  TODO: migrate consumers to .mom-helper* classes                    */
/* ================================================================== */

.mom-field-helper          { display: flex; align-items: center; gap: var(--space-1); }
.mom-field-helper__icon    { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: var(--space-6); height: var(--space-6); }
.mom-field-helper__icon svg{ width: var(--space-4); height: var(--space-4); }
.mom-field-helper__text    { font-size: var(--font-size-sm); font-weight: var(--font-regular); line-height: var(--line-height-sm); white-space: nowrap; }

.mom-field-helper .mom-field-helper__icon,
.mom-field-helper .mom-field-helper__text    { color: var(--helper-color); }

.mom-field-helper--error .mom-field-helper__icon,
.mom-field-helper--error .mom-field-helper__text    { color: var(--helper-error-color); }

.mom-field-helper--disabled .mom-field-helper__icon,
.mom-field-helper--disabled .mom-field-helper__text { color: var(--helper-disabled-color); }

.mom-field-helper__icon.mom-tooltip { display: flex; cursor: pointer; }
.mom-field-helper__icon.mom-tooltip .mom-tooltip__content { width: max-content; max-width: 220px; white-space: normal; }


/* ── system/components/image/image.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Image Component                                 */
/*  Utility for displaying images with fallback and responsive behavior  */
/*  Requirements: Sizes, Fallback, Screen density, Alt text             */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  --image-bg: var(--surface);
  --image-fallback-bg: var(--surface-hover);
  --image-fallback-color: var(--text-muted);
  --image-radius: var(--radius-lg);
  --image-placeholder-icon-size: var(--space-8);
}

/* ================================================================== */
/*  Base Image Container                                               */
/* ================================================================== */

.mom-image {
  position: relative;
  display: block;
  width: 100%;
  overflow: hidden;
  background: var(--image-bg);
}

/* ================================================================== */
/*  Image Element                                                      */
/* ================================================================== */

.mom-image__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  transition: opacity 0.3s ease;
}

.mom-image__img--loading {
  opacity: 0;
}

.mom-image__img--loaded {
  opacity: 1;
}

.mom-image__img--error {
  display: none;
}

/* ================================================================== */
/*  Aspect Ratios                                                      */
/* ================================================================== */

.mom-image--aspect-auto {
  height: auto;
}

.mom-image--aspect-square {
  aspect-ratio: 1 / 1;
}

.mom-image--aspect-video {
  aspect-ratio: 16 / 9;
}

.mom-image--aspect-portrait {
  aspect-ratio: 3 / 4;
}

.mom-image--aspect-landscape {
  aspect-ratio: 4 / 3;
}

.mom-image--aspect-wide {
  aspect-ratio: 21 / 9;
}

.mom-image--aspect-ultrawide {
  aspect-ratio: 32 / 9;
}

/* ================================================================== */
/*  Fit variants                                                       */
/* ================================================================== */

.mom-image--fit-cover .mom-image__img {
  object-fit: cover;
}

.mom-image--fit-contain .mom-image__img {
  object-fit: contain;
}

.mom-image--fit-fill .mom-image__img {
  object-fit: fill;
}

.mom-image--fit-none .mom-image__img {
  object-fit: none;
}

/* Position variants for cover fit */
.mom-image--position-top .mom-image__img {
  object-position: top;
}

.mom-image--position-bottom .mom-image__img {
  object-position: bottom;
}

.mom-image--position-left .mom-image__img {
  object-position: left;
}

.mom-image--position-right .mom-image__img {
  object-position: right;
}

.mom-image--position-center .mom-image__img {
  object-position: center;
}

/* ================================================================== */
/*  Fallback / Placeholder                                             */
/* ================================================================== */

.mom-image__fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--image-fallback-bg);
  color: var(--image-fallback-color);
}

.mom-image__fallback-icon {
  width: var(--image-placeholder-icon-size);
  height: var(--image-placeholder-icon-size);
}

.mom-image__fallback-icon svg {
  width: 100%;
  height: 100%;
  opacity: 0.5;
}

/* Hide fallback when image loads successfully */
.mom-image__img--loaded + .mom-image__fallback {
  display: none;
}

/* Show fallback when error occurs */
.mom-image__img--error ~ .mom-image__fallback {
  display: flex;
}

/* ================================================================== */
/*  Custom fallback content                                            */
/* ================================================================== */

.mom-image__fallback-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-4);
  text-align: center;
}

.mom-image__fallback-text {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-muted);
}

/* ================================================================== */
/*  Loading state                                                      */
/* ================================================================== */

.mom-image--loading .mom-image__img {
  opacity: 0;
}

.mom-image--loading::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    var(--image-fallback-bg) 25%,
    var(--surface-hover) 50%,
    var(--image-fallback-bg) 75%
  );
  background-size: 200% 100%;
  animation: mom-image-shimmer 1.5s infinite;
}

@keyframes mom-image-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ================================================================== */
/*  Border radius variants                                             */
/* ================================================================== */

.mom-image--rounded-none {
  border-radius: 0;
}

.mom-image--rounded-sm {
  border-radius: var(--radius-sm);
}

.mom-image--rounded-md {
  border-radius: var(--radius-md);
}

.mom-image--rounded-lg {
  border-radius: var(--radius-lg);
}

.mom-image--rounded-xl {
  border-radius: var(--radius-xl);
}

.mom-image--rounded-full {
  border-radius: var(--radius-full);
}

/* ================================================================== */
/*  Elevation / Shadow                                                 */
/* ================================================================== */

.mom-image--shadow-sm {
  box-shadow: var(--shadow-sm);
}

.mom-image--shadow-md {
  box-shadow: var(--shadow-md);
}

.mom-image--shadow-lg {
  box-shadow: var(--shadow-lg);
}

.mom-image--shadow-xl {
  box-shadow: var(--shadow-xl);
}

/* ================================================================== */
/*  Border                                                             */
/* ================================================================== */

.mom-image--border {
  border: 1px solid var(--border);
}

/* ================================================================== */
/*  Clickable / Hover effect                                           */
/* ================================================================== */

.mom-image--clickable {
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.mom-image--clickable:hover {
  transform: scale(1.02);
  box-shadow: var(--shadow-lg);
}

.mom-image--clickable:active {
  transform: scale(0.98);
}

/* ================================================================== */
/*  Overlay (for captions or actions)                                  */
/* ================================================================== */

.mom-image__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: var(--space-4);
  background: linear-gradient(to top, rgba(0, 0, 0, 0.6) 0%, transparent 60%);
  opacity: 0;
  transition: opacity 0.2s ease;
}

.mom-image:hover .mom-image__overlay {
  opacity: 1;
}

.mom-image__overlay-content {
  color: white;
}

.mom-image__caption {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: white;
  margin: 0;
}

.mom-image__caption-sub {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  color: rgba(255, 255, 255, 0.8);
  margin: var(--space-0-5) 0 0;
}

/* ================================================================== */
/*  Reduced motion support                                            */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .mom-image__img {
    transition: none;
  }
  
  .mom-image--loading::after {
    animation: none;
    background: var(--image-fallback-bg);
  }
  
  .mom-image--clickable {
    transition: none;
  }
  
  .mom-image--clickable:hover {
    transform: none;
  }
  
  .mom-image__overlay {
    transition: none;
  }
}

/* ================================================================== */
/*  Print styles                                                       */
/* ================================================================== */

@media print {
  .mom-image {
    break-inside: avoid;
  }
  
  .mom-image__overlay {
    display: none;
  }
}


/* ── system/components/input/input.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Input Component                               */
/*  Anatomy: Label · Input · Helper                                    */
/*  From Figma: Work-file-Mo~oM-2-3, Input field nodes                 */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens (from Figma Variables: Components > Inputs)       */
/* ================================================================== */

:root {
  /* Field backgrounds */
  --input-field-bg:              rgba(226, 240, 253, 0.08);
  --input-field-bg-hover:        rgba(223, 239, 254, 0.14);
  --input-field-bg-error:        rgba(253, 40,  21,  0.05);
  --input-field-bg-disabled:     transparent;

  /* Field borders */
  --input-field-border:          rgba(226, 240, 253, 0.08);
  --input-field-border-hover:    rgba(223, 239, 254, 0.14);
  --input-field-border-focus:    rgba(17,  255, 231, 0.37);
  --input-field-border-error:    rgba(255, 53,  60,  0.32);
  --input-field-border-disabled: rgba(213, 254, 255, 0.03);

  /* Inset depth shadow (Figma: Shadows/Elevations/-e-10) */
  --input-field-shadow:
    inset 0px 1px  0px rgba(0,   0,   0,   0.16),
    inset 0px -1px 0px rgba(255, 255, 255, 0.08),
    inset 0px 2px  2px rgba(0,   0,   0,   0.16);

  /* Text colours inside the field */
  --input-text-placeholder:      rgba(229, 242, 254, 0.26);
  --input-text-hover:            rgba(231, 243, 255, 0.47);
  --input-text-filled:           white;
  --input-text-disabled:         var(--slate-9);

  /* Leading-text prefix (e.g. "$", "http://") */
  --input-leading-text:          var(--slate-11);
  --input-leading-text-disabled: var(--slate-7);

  /* ── Label + Helper tokens → see form-label/form-label.css ────── */

  /* ── Inline action buttons (Copy, etc.) ─────────────── */
  --input-action-color:          var(--teal-10);
  --input-action-bg-hover:       rgba(17, 255, 231, 0.08);

  /* ── Selected/active item colors (for dropdowns, selects) ─── */
  --input-selected-text:         var(--teal-11);
  --input-selected-icon:         var(--teal-11);
}

/* ================================================================== */
/*  Light mode token overrides                                        */
/*  Activated when <html class="light"> via MomTheme                  */
/* ================================================================== */

:root.light {
  /* Field backgrounds */
  --input-field-bg:              rgba(0, 0, 0, 0.04);
  --input-field-bg-hover:        rgba(0, 0, 0, 0.07);
  --input-field-bg-error:        rgba(229, 72, 77, 0.05);
  --input-field-bg-disabled:     transparent;

  /* Field borders */
  --input-field-border:          rgba(0, 0, 0, 0.14);
  --input-field-border-hover:    rgba(0, 0, 0, 0.22);
  --input-field-border-focus:    rgba(17, 255, 231, 0.37);
  --input-field-border-error:    rgba(229, 72, 77, 0.45);
  --input-field-border-disabled: rgba(0, 0, 0, 0.08);

  /* Inset depth shadow — lighter for light mode */
  --input-field-shadow:
    inset 0px 1px  0px rgba(0,   0,   0,   0.06),
    inset 0px -1px 0px rgba(255, 255, 255, 0.60),
    inset 0px 2px  2px rgba(0,   0,   0,   0.06);

  /* Text colours inside the field */
  --input-text-placeholder:      rgba(0, 5, 29, 0.38);
  --input-text-hover:            rgba(0, 5, 29, 0.52);
  --input-text-filled:           var(--slate-12);
  --input-text-disabled:         var(--slate-8);

  /* Leading-text prefix */
  --input-leading-text:          var(--slate-11);
  --input-leading-text-disabled: var(--slate-7);

  /* Action buttons */
  --input-action-color:          var(--teal-10);

  /* Selected/active item colors (for dropdowns, selects) */
  --input-selected-text:         var(--teal-11);
  --input-selected-icon:         var(--teal-11);
}

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-input-wrapper {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1-5);
  width: 100%;
  max-width: 460px;
}

/* ================================================================== */
/*  Element 1 — Label  →  see form-label/form-label.css               */
/* ================================================================== */

/* ================================================================== */
/*  Element 2 — Input                                                  */
/* ================================================================== */

/* Field wrap ─────────────────────────────────────────────────────── */

.mom-input__field-wrap {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--space-10);
  background: var(--input-field-bg);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-lg);
  padding: 0 var(--space-1);
  box-shadow: var(--input-field-shadow);
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  box-sizing: border-box;
}

/* Hover state */
.mom-input__field-wrap:hover,
.mom-input-wrapper--hover .mom-input__field-wrap {
  background: var(--input-field-bg-hover);
  border-color: var(--input-field-border-hover);
}

/* Focus / typing / focus-keyboard: teal border, default bg with glow */
.mom-input__field-wrap:focus-within,
.mom-input-wrapper--focus .mom-input__field-wrap,
.mom-input-wrapper--typing .mom-input__field-wrap,
.mom-input-wrapper--focus-keyboard .mom-input__field-wrap {
  background: var(--input-field-bg);
  border-color: var(--input-field-border-focus);
  box-shadow:
    var(--input-field-shadow),
    0 0 0 3px rgba(20, 184, 166, 0.12);
}

/* Icon color change on focus */
.mom-input__field-wrap:focus-within .mom-input__icon-left,
.mom-input-wrapper--focus .mom-input__icon-left {
  color: var(--teal-11);
}

.mom-input__icon-left,
.mom-input__icon-right,
.mom-input__help-icon {
  transition: color 0.2s ease;
}

/* Error state */
.mom-input-wrapper--error .mom-input__field-wrap {
  background: var(--input-field-bg-error);
  border-color: var(--input-field-border-error);
  box-shadow: var(--input-field-shadow);
}

/* Disabled state */
.mom-input-wrapper--disabled .mom-input__field-wrap {
  background: var(--input-field-bg-disabled);
  border-color: var(--input-field-border-disabled);
  box-shadow: none;
  pointer-events: none;
}

/* Content margin area (flex container holding icons + input) */
.mom-input__content {
  flex: 1 0 0;
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  min-width: 0;
  padding: 0 var(--space-1-5);
}

/* Icons (left, right, help) ──────────────────────────────────────── */

.mom-input__icon-left,
.mom-input__icon-right,
.mom-input__help-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
}

.mom-input__icon-left svg,
.mom-input__icon-right svg,
.mom-input__help-icon svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-input-wrapper--disabled .mom-input__icon-left,
.mom-input-wrapper--disabled .mom-input__icon-right,
.mom-input-wrapper--disabled .mom-input__help-icon {
  color: var(--input-text-disabled);
}

/* Leading text prefix ("$", "http://") ───────────────────────────── */

.mom-input__leading-text {
  flex-shrink: 0;
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-leading-text);
}

.mom-input-wrapper--disabled .mom-input__leading-text {
  color: var(--input-leading-text-disabled);
}

/* Native <input> ─────────────────────────────────────────────────── */

.mom-input {
  flex: 1 0 0;
  min-width: 0;
  border: none;
  background: transparent;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-text-placeholder);
  outline: none;
  caret-color: var(--input-field-border-focus);
}

.mom-input::placeholder {
  color: var(--input-text-placeholder);
}

/* Hover placeholder lightens slightly */
.mom-input-wrapper--hover .mom-input::placeholder {
  color: var(--input-text-hover);
}

/* Filled / typing / focus-keyboard → text is white */
.mom-input-wrapper--typing .mom-input,
.mom-input-wrapper--filled .mom-input,
.mom-input-wrapper--focus-keyboard .mom-input {
  color: var(--input-text-filled);
}

/* Disabled */
.mom-input-wrapper--disabled .mom-input {
  color: var(--input-text-disabled);
  cursor: not-allowed;
}

/* Inline action buttons (Copy, etc.) ─────────────────────────────── */

.mom-input__action-btn {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: var(--space-2);
  height: var(--space-8);
  padding: var(--space-1-5) var(--space-3);
  border: none;
  background: transparent;
  border-radius: var(--radius-lg);
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--input-action-color);
  cursor: pointer;
  transition: background-color 0.15s ease;
  white-space: nowrap;
}

.mom-input__action-btn:hover {
  background: var(--input-action-bg-hover);
}

.mom-input__action-btn:active {
  opacity: 0.8;
}

.mom-input__action-btn svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-input-wrapper--disabled .mom-input__action-btn {
  color: var(--input-text-disabled);
  cursor: not-allowed;
}

/* ================================================================== */
/*  Size variants                                                      */
/* ================================================================== */

.mom-input-wrapper--sm .mom-input__field-wrap {
  height: var(--space-8);
  padding: 0 var(--space-1);
}

.mom-input-wrapper--sm .mom-input {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

.mom-input-wrapper--sm .mom-input__action-btn {
  height: var(--space-6);
  padding: var(--space-0-5) var(--space-2);
  font-size: var(--font-size-xs);
}

.mom-input-wrapper--sm .mom-input__icon-left,
.mom-input-wrapper--sm .mom-input__icon-right,
.mom-input-wrapper--sm .mom-input__help-icon {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-input-wrapper--md .mom-input__field-wrap {
  height: var(--space-10);
}

.mom-input-wrapper--lg .mom-input__field-wrap {
  height: var(--space-12);
  padding: 0 var(--space-1);
}

.mom-input-wrapper--lg .mom-input {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}

/* ================================================================== */
/*  Element 3 — Helper  →  see form-label/form-label.css              */
/* ================================================================== */

/* ================================================================== */
/*  Input with Add-ons (Addon=Left / Addon=Right)                      */
/* ================================================================== */

.mom-input-addons {
  display: flex;
  align-items: stretch;
  background: var(--input-field-bg);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-lg);
  height: var(--space-10);
  overflow: hidden;
  box-shadow: var(--input-field-shadow);
  box-sizing: border-box;
}

.mom-input__addon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-2) var(--space-3);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-text-filled);
}

.mom-input__addon svg {
  width: var(--space-4);
  height: var(--space-4);
  color: var(--input-text-filled);
}

.mom-input-addons--left .mom-input__addon {
  border-right: 1px solid var(--input-field-border);
}

.mom-input-addons--right .mom-input__addon {
  border-left: 1px solid var(--input-field-border);
}

.mom-input-addons .mom-input__field-wrap {
  flex: 1 0 0;
  border: none;
  border-radius: 0;
  height: 100%;
  padding-top: 0;
  padding-bottom: 0;
  box-shadow: none;
  background: var(--input-field-bg);
}

.mom-input-addons .mom-input__field-wrap:hover,
.mom-input-addons .mom-input__field-wrap:focus-within {
  border-color: transparent;
}

/* Size: sm with addons */
.mom-input-wrapper--sm .mom-input-addons {
  height: var(--space-8);
}

/* Size: lg with addons */
.mom-input-wrapper--lg .mom-input-addons {
  height: var(--space-12);
}

/* ================================================================== */
/*  Tooltip integration                                                */
/*  label-info, help-icon, and helper-icon can serve as tooltip        */
/*  triggers. Combining with .mom-tooltip keeps layout intact.         */
/* ================================================================== */

/* Help icon tooltip (inside the field-wrap — unique to input) */
.mom-input__help-icon.mom-tooltip {
  display: flex;
  cursor: pointer;
}

.mom-input__help-icon.mom-tooltip .mom-tooltip__content {
  width: max-content;
  max-width: 220px;
  white-space: normal;
}


/* ── system/components/link/link.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Link Component                                  */
/*  Interactive text element for navigation within text paragraphs     */
/*  Requirements: Icon, Colors, Disabled, Font inheritance, Multiline  */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  --link-color: var(--teal-11);
  --link-color-hover: var(--teal-10);
  --link-color-active: var(--teal-12);
  --link-color-disabled: var(--slate-9);
  --link-decoration: underline;
  --link-decoration-hover: underline;
  --link-decoration-thickness: 1px;
  --link-underline-offset: 2px;
  --link-transition: 0.15s ease;
}

:root.light {
  --link-color: var(--teal-10);
  --link-color-hover: var(--teal-11);
  --link-color-active: var(--teal-12);
  --link-color-disabled: var(--slate-8);
}

/* ================================================================== */
/*  Base Link                                                          */
/* ================================================================== */

.mom-link {
  display: inline;
  font-family: inherit;
  font-size: inherit;
  font-weight: inherit;
  line-height: inherit;
  color: var(--link-color);
  text-decoration: var(--link-decoration);
  text-decoration-thickness: var(--link-decoration-thickness);
  text-underline-offset: var(--link-underline-offset);
  cursor: pointer;
  transition: color var(--link-transition), text-decoration-color var(--link-transition);
  background: none;
  border: none;
  padding: 0;
  outline: none;
}

.mom-link:hover {
  color: var(--link-color-hover);
}

.mom-link:active {
  color: var(--link-color-active);
}

.mom-link:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: 2px;
  text-decoration: none;
  border-radius: var(--radius-sm);
}

/* ================================================================== */
/*  Multiline support                                                  */
/* ================================================================== */

.mom-link--multiline {
  display: inline;
  text-decoration: underline;
  text-decoration-skip-ink: auto;
}

/* ================================================================== */
/*  With Icon                                                          */
/* ================================================================== */

.mom-link--with-icon {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
}

.mom-link--with-icon .mom-link__text {
  text-decoration: var(--link-decoration);
  text-decoration-thickness: var(--link-decoration-thickness);
  text-underline-offset: var(--link-underline-offset);
}

.mom-link--with-icon:hover .mom-link__text {
  text-decoration-color: var(--link-color-hover);
}

.mom-link__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
}

.mom-link__icon svg {
  width: 100%;
  height: 100%;
}

/* Icon positioning */
.mom-link--icon-left {
  flex-direction: row;
}

.mom-link--icon-right {
  flex-direction: row-reverse;
}

/* ================================================================== */
/*  Variants                                                           */
/* ================================================================== */

/* Subtle - less prominent */
.mom-link--subtle {
  --link-color: var(--text-muted);
  --link-color-hover: var(--text-secondary);
  --link-color-active: var(--text-primary);
  text-decoration: none;
}

.mom-link--subtle:hover {
  text-decoration: underline;
}

/* Muted - no underline by default */
.mom-link--muted {
  text-decoration: none;
}

.mom-link--muted:hover {
  text-decoration: underline;
}

/* Underline animation on hover */
.mom-link--animated {
  text-decoration: none;
  position: relative;
}

.mom-link--animated::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: right;
  transition: transform 0.25s ease;
}

.mom-link--animated:hover::after {
  transform: scaleX(1);
  transform-origin: left;
}

/* ================================================================== */
/*  Color variants                                                     */
/* ================================================================== */

.mom-link--danger {
  --link-color: var(--red-11);
  --link-color-hover: var(--red-10);
  --link-color-active: var(--red-12);
}

.mom-link--neutral {
  --link-color: var(--slate-11);
  --link-color-hover: var(--slate-10);
  --link-color-active: var(--slate-12);
}

/* Inherit color from parent */
.mom-link--inherit {
  --link-color: inherit;
  --link-color-hover: inherit;
  --link-color-active: inherit;
  opacity: 0.8;
}

.mom-link--inherit:hover {
  opacity: 1;
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-link--sm {
  font-size: var(--font-size-sm);
}

.mom-link--lg {
  font-size: var(--font-size-lg);
}

/* ================================================================== */
/*  Disabled state                                                     */
/* ================================================================== */

.mom-link:disabled,
.mom-link--disabled,
.mom-link[aria-disabled="true"] {
  color: var(--link-color-disabled);
  cursor: not-allowed;
  text-decoration: none;
  pointer-events: none;
}

/* ================================================================== */
/*  External link indicator                                            */
/* ================================================================== */

.mom-link--external {
  padding-right: var(--space-3);
}

.mom-link--external::after {
  content: '';
  display: inline-block;
  width: var(--space-3);
  height: var(--space-3);
  margin-left: var(--space-1);
  background: currentColor;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") no-repeat center;
  mask-size: contain;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E") no-repeat center;
  -webkit-mask-size: contain;
}


/* ── system/components/list/list.css ── */
/* ================================================================== */
/*  Mo~oM Design System, List Component                                  */
/*  Ordered and unordered lists with flexible content                 */
/*  Requirements: Order, Content composition, Accessibility roles      */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  --list-spacing: var(--space-2);
  --list-marker-color: var(--text-muted);
  --list-text-color: var(--text-primary);
  --list-nested-indent: var(--space-6);
}

/* ================================================================== */
/*  Base List                                                          */
/* ================================================================== */

.mom-list {
  display: flex;
  flex-direction: column;
  gap: var(--list-spacing);
  margin: 0;
  padding: 0;
  list-style: none;
  color: var(--list-text-color);
}

/* ================================================================== */
/*  List Item                                                          */
/* ================================================================== */

.mom-list__item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  position: relative;
  transition: transform var(--duration-fast, 0.15s) var(--ease-out-expo, ease);
}

/* Stagger entrance animation for list items */
.mom-list--animate-in .mom-list__item {
  opacity: 0;
  transform: translateX(-8px);
  animation: mom-list-item-enter var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
}

.mom-list--animate-in .mom-list__item:nth-child(1) { animation-delay: 0.03s; }
.mom-list--animate-in .mom-list__item:nth-child(2) { animation-delay: 0.06s; }
.mom-list--animate-in .mom-list__item:nth-child(3) { animation-delay: 0.09s; }
.mom-list--animate-in .mom-list__item:nth-child(4) { animation-delay: 0.12s; }
.mom-list--animate-in .mom-list__item:nth-child(5) { animation-delay: 0.15s; }
.mom-list--animate-in .mom-list__item:nth-child(6) { animation-delay: 0.18s; }
.mom-list--animate-in .mom-list__item:nth-child(7) { animation-delay: 0.21s; }
.mom-list--animate-in .mom-list__item:nth-child(8) { animation-delay: 0.24s; }

@keyframes mom-list-item-enter {
  0% {
    opacity: 0;
    transform: translateX(-8px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Bullet/marker animation */
.mom-list--unordered .mom-list__item::before {
  transition: transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease),
              background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

.mom-list__item:hover::before {
  transform: scale(1.2);
}

/* Flexible content area */
.mom-list__content {
  flex: 1;
  min-width: 0;
}

/* ================================================================== */
/*  Unordered List (bulleted)                                         */
/* ================================================================== */

.mom-list--unordered .mom-list__item::before {
  content: '';
  flex-shrink: 0;
  width: 6px;
  height: 6px;
  margin-top: 0.5em;
  background: var(--list-marker-color);
  border-radius: var(--radius-full);
}

/* Bullet variants */
.mom-list--bullet-disc .mom-list__item::before {
  border-radius: var(--radius-full);
}

.mom-list--bullet-circle .mom-list__item::before {
  border-radius: var(--radius-full);
  border: 1px solid var(--list-marker-color);
  background: transparent;
}

.mom-list--bullet-square .mom-list__item::before {
  border-radius: var(--radius-sm);
}

.mom-list--bullet-dash .mom-list__item::before {
  width: 12px;
  height: 2px;
  border-radius: 0;
}

/* ================================================================== */
/*  Ordered List (numbered)                                           */
/* ================================================================== */

.mom-list--ordered {
  counter-reset: list-counter;
}

.mom-list--ordered .mom-list__item {
  counter-increment: list-counter;
}

.mom-list--ordered .mom-list__item::before {
  content: counter(list-counter) '.';
  flex-shrink: 0;
  min-width: var(--space-5);
  font-size: var(--font-size-base);
  font-weight: var(--font-medium);
  line-height: var(--line-height-base);
  color: var(--list-marker-color);
  text-align: right;
}

/* Numbering styles */
.mom-list--decimal .mom-list__item::before {
  content: counter(list-counter) '.';
}

.mom-list--decimal-leading-zero .mom-list__item::before {
  content: counter(list-counter, decimal-leading-zero) '.';
}

.mom-list--lower-alpha .mom-list__item::before {
  content: counter(list-counter, lower-alpha) '.';
}

.mom-list--upper-alpha .mom-list__item::before {
  content: counter(list-counter, upper-alpha) '.';
}

.mom-list--lower-roman .mom-list__item::before {
  content: counter(list-counter, lower-roman) '.';
}

.mom-list--upper-roman .mom-list__item::before {
  content: counter(list-counter, upper-roman) '.';
}

/* ================================================================== */
/*  Icon List                                                          */
/* ================================================================== */

.mom-list--icon .mom-list__item {
  gap: var(--space-2);
}

.mom-list__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-5);
  height: var(--space-5);
  margin-top: 0.125em;
  color: var(--list-marker-color);
  transition: color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
              transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-list__item:hover .mom-list__icon {
  transform: scale(1.1);
  color: var(--accent);
}

.mom-list__icon svg {
  width: var(--space-4);
  height: var(--space-4);
  transition: transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-list__item:hover .mom-list__icon svg {
  transform: rotate(5deg);
}

/* ================================================================== */
/*  Nested Lists                                                       */
/* ================================================================== */

.mom-list .mom-list {
  margin-top: var(--list-spacing);
  margin-left: var(--list-nested-indent);
}

/* ================================================================== */
/*  Size variants                                                      */
/* ================================================================== */

.mom-list--sm {
  gap: var(--space-1-5);
  font-size: var(--font-size-sm);
}

.mom-list--sm .mom-list__item::before {
  margin-top: 0.5em;
}

.mom-list--sm .mom-list--ordered .mom-list__item::before {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

.mom-list--lg {
  gap: var(--space-3);
  font-size: var(--font-size-lg);
}

.mom-list--lg .mom-list__item::before {
  margin-top: 0.5em;
  width: 8px;
  height: 8px;
}

.mom-list--lg .mom-list--ordered .mom-list__item::before {
  font-size: var(--font-size-lg);
  line-height: var(--line-height-lg);
  min-width: var(--space-6);
}

/* ================================================================== */
/*  Horizontal List                                                   */
/* ================================================================== */

.mom-list--horizontal {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-6);
}

.mom-list--horizontal .mom-list__item {
  align-items: center;
}

.mom-list--horizontal .mom-list__item::before {
  margin-top: 0;
}

.mom-list--horizontal.mom-list--ordered .mom-list__item::before {
  line-height: 1;
}

/* Divided horizontal list */
.mom-list--divided.mom-list--horizontal .mom-list__item:not(:last-child)::after {
  content: '';
  width: 1px;
  height: var(--space-4);
  background: var(--border);
  margin-left: var(--space-2);
}

/* ================================================================== */
/*  Description List (dl/dt/dd style)                                  */
/* ================================================================== */

.mom-list--description {
  gap: var(--space-3);
}

.mom-list--description .mom-list__item {
  flex-direction: column;
  gap: var(--space-0-5);
}

.mom-list__term {
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  color: var(--text-primary);
}

.mom-list__description {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  color: var(--text-secondary);
  margin: 0;
}

/* ================================================================== */
/*  Interactive List (with hover states)                               */
/* ================================================================== */

.mom-list--interactive .mom-list__item {
  padding: var(--space-2) var(--space-3);
  margin: 0 calc(var(--space-3) * -1);
  border-radius: var(--radius-md);
  cursor: pointer;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

.mom-list--interactive .mom-list__item:hover {
  background: var(--surface-hover);
  transform: translateX(4px);
}

.mom-list--interactive .mom-list__item:active {
  transform: translateX(4px) scale(0.98);
  transition-duration: var(--duration-instant, 0.08s);
}

.mom-list--interactive .mom-list__item--active {
  background: var(--accent-glow);
  animation: mom-list-item-active-pulse var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

@keyframes mom-list-item-active-pulse {
  0% { box-shadow: 0 0 0 0 rgba(20, 184, 166, 0.3); }
  50% { box-shadow: 0 0 0 4px rgba(20, 184, 166, 0.1); }
  100% { box-shadow: 0 0 0 0 transparent; }
}

.mom-list--interactive .mom-list__item--active .mom-list__content {
  color: var(--accent);
  font-weight: var(--font-medium);
}

/* ================================================================== */
/*  Selection List (with checkboxes)                                   */
/* ================================================================== */

.mom-list--selection .mom-list__item {
  gap: var(--space-3);
}

/* ================================================================== */
/*  Empty state                                                        */
/* ================================================================== */

.mom-list--empty {
  padding: var(--space-8);
  text-align: center;
  color: var(--text-muted);
}

/* ================================================================== */
/*  Accessibility - Screen reader only                               */
/* ================================================================== */

.mom-list__counter-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}


/* ── system/components/metrics/metrics.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Metrics Component                           */
/*  Variants: default, card, compact                                  */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-metric {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  font-family: var(--font-sans);
}

.mom-metric__label {
  font-size: var(--font-size-xs);
  font-weight: var(--font-medium);
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.mom-metric__value {
  font-size: var(--font-size-2xl);
  font-weight: var(--font-bold);
  color: var(--text-primary);
  line-height: var(--line-height-2xl);
}

.mom-metric__change {
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
}

.mom-metric__change--up {
  color: var(--green-9);
}

.mom-metric__change--down {
  color: var(--red-9);
}

.mom-metric__change--neutral {
  color: var(--gray-9);
}

/* ================================================================== */
/*  Variant: Card                                                      */
/* ================================================================== */

.mom-metric--card {
  background: var(--surface);
  border: 1px solid var(--border);
  padding: var(--space-4);
  border-radius: var(--radius-xl);
}

/* ================================================================== */
/*  Variant: Compact (inline)                                          */
/* ================================================================== */

.mom-metric--compact {
  flex-direction: row;
  align-items: baseline;
  gap: var(--space-2);
}

.mom-metric--compact .mom-metric__label {
  order: 2;
}

.mom-metric--compact .mom-metric__value {
  order: 1;
  font-size: var(--font-size-lg);
}

.mom-metric--compact .mom-metric__change {
  order: 3;
}

/* ================================================================== */
/*  Optional icon                                                      */
/* ================================================================== */

.mom-metric__icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-lg);
  flex-shrink: 0;
}

.mom-metric__icon svg {
  width: 20px;
  height: 20px;
}

.mom-metric--with-icon {
  flex-direction: row;
  align-items: flex-start;
  gap: var(--space-3);
}

.mom-metric--with-icon .mom-metric__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  flex: 1;
  min-width: 0;
}

/* ================================================================== */
/*  Optional sparkline placeholder                                     */
/* ================================================================== */

.mom-metric__chart {
  height: 32px;
  margin-top: var(--space-2);
  background: linear-gradient(90deg, var(--accent) 0%, var(--accent) 30%, var(--accent) 50%, var(--accent-glow) 80%, var(--border) 100%);
  border-radius: var(--radius);
  opacity: 0.6;
}


/* ── system/components/modal/modal.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Modal Component                             */
/*  Full-featured modal with optional header, body content, footer  */
/* ================================================================== */

.mom-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(var(--blur-sm));
  -webkit-backdrop-filter: blur(var(--blur-sm));
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  opacity: 0;
  transition: opacity var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

/* Open states with animations */
.mom-modal-overlay[open],
.mom-modal-overlay.is-open,
.mom-modal-overlay:target {
  opacity: 1;
}

.mom-modal-overlay[open] .mom-modal,
.mom-modal-overlay.is-open .mom-modal,
.mom-modal-overlay:target .mom-modal {
  animation: mom-modal-enter var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
}

/* Exit animation */
.mom-modal-overlay.is-closing {
  opacity: 0;
  transition: opacity var(--duration-fast, 0.15s) var(--ease-in-out-quart, ease);
}

.mom-modal-overlay.is-closing .mom-modal {
  animation: mom-modal-exit var(--duration-fast, 0.15s) var(--ease-in-out-quart, ease) forwards;
}

@keyframes mom-modal-enter {
  0% {
    opacity: 0;
    transform: scale(0.9) translateY(20px);
  }
  60% {
    transform: scale(1.02) translateY(-2px);
  }
  100% {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
}

@keyframes mom-modal-exit {
  0% {
    opacity: 1;
    transform: scale(1) translateY(0);
  }
  100% {
    opacity: 0;
    transform: scale(0.95) translateY(10px);
  }
}

.mom-modal {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-2xl);
  box-shadow: var(--shadow-xl);
  display: flex;
  flex-direction: column;
  max-height: 90vh;
  overflow: hidden;
  will-change: transform, opacity;
}


.mom-modal--sm {
  max-width: 400px;
  width: 100%;
}

.mom-modal--md {
  max-width: 560px;
  width: 100%;
}

.mom-modal--lg {
  max-width: 720px;
  width: 100%;
}

/* Note: Modal uses ContentHeader component for headers */
/* The ContentHeader component provides .mom-content-header and related styles */

/* Body */
.mom-modal__body {
  padding: var(--space-6);
  overflow-y: auto;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

/* Cover image */
.mom-modal__cover {
  width: 100%;
  border-radius: var(--radius-md);
  overflow: hidden;
}

.mom-modal__cover .mom-image {
  width: 100% !important;
}

.mom-modal__cover .mom-image__img {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

/* Description text */
.mom-modal__description {
  margin: 0;
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--text-primary);
}

/* Input field wrapper - force full width */
.mom-modal__field {
  width: 100%;
}

.mom-modal__field .mom-input-wrapper {
  display: flex !important;
  width: 100% !important;
  max-width: none !important;
}

.mom-modal__field .mom-input__field-wrap {
  width: 100%;
  flex: 1 0 auto;
}

.mom-modal__field .mom-input__content {
  width: 100%;
  flex: 1 1 auto;
}

.mom-modal__field .mom-input {
  width: 100%;
}

/* Note: Modal uses ContentFooter component for footers */
/* The ContentFooter component provides .mom-content-footer and related styles */

/* Legacy footer (for backwards compatibility) */
.mom-modal__footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--space-3);
  padding: var(--space-4) var(--space-6);
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}


/* ── system/components/navigation/navigation.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Navigation Component                         */
/*  Horizontal, vertical, and pill variants                            */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-nav {
  display: flex;
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
}

.mom-nav__item {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  color: var(--text-muted);
  text-decoration: none;
  transition:
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
  position: relative;
}

.mom-nav__item:hover {
  color: var(--text-primary);
  transform: translateY(-1px);
}

.mom-nav__item:active {
  transform: translateY(0) scale(0.98);
}

.mom-nav__item-icon {
  transition: transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-nav__item:hover .mom-nav__item-icon {
  transform: scale(1.1);
}

.mom-nav__item-icon {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}

/* ================================================================== */
/*  Horizontal variant                                                 */
/* ================================================================== */

.mom-nav--horizontal {
  flex-direction: row;
  align-items: center;
  gap: var(--space-6);
}

.mom-nav--horizontal .mom-nav__item {
  padding: var(--space-2) 0;
  border-bottom: 2px solid transparent;
  position: relative;
}

/* Animated underline for horizontal nav */
.mom-nav--horizontal .mom-nav__item::after {
  content: '';
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 2px;
  background: var(--accent);
  transform: scaleX(0);
  transform-origin: center;
  transition: transform var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

.mom-nav--horizontal .mom-nav__item--active {
  color: var(--text-primary);
  border-bottom-color: transparent;
}

.mom-nav--horizontal .mom-nav__item--active::after {
  transform: scaleX(1);
}

.mom-nav--horizontal .mom-nav__item:hover::after {
  transform: scaleX(0.5);
}

.mom-nav--horizontal .mom-nav__item--active:hover::after {
  transform: scaleX(1);
}

.mom-nav--horizontal .mom-nav__item:hover {
  color: var(--text-primary);
}

/* ================================================================== */
/*  Vertical variant                                                   */
/* ================================================================== */

.mom-nav--vertical {
  flex-direction: column;
  width: 100%;
}

.mom-nav--vertical .mom-nav__item {
  width: 100%;
  padding: var(--space-3) var(--space-4);
  border-left: 3px solid transparent;
  border-radius: 0 var(--radius) var(--radius) 0;
}

.mom-nav--vertical .mom-nav__item:hover {
  background: var(--surface-hover);
  transform: translateX(2px);
}

.mom-nav--vertical .mom-nav__item--active {
  color: var(--text-primary);
  background: var(--accent-glow);
  border-left-color: var(--accent);
  animation: mom-nav-active-pulse var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

@keyframes mom-nav-active-pulse {
  0% { box-shadow: inset 3px 0 0 0 var(--accent), 0 0 0 0 rgba(20, 184, 166, 0.2); }
  50% { box-shadow: inset 3px 0 0 0 var(--accent), 0 0 0 8px rgba(20, 184, 166, 0.05); }
  100% { box-shadow: inset 3px 0 0 0 var(--accent), 0 0 0 0 transparent; }
}

/* ================================================================== */
/*  Pills variant                                                      */
/* ================================================================== */

.mom-nav--pills {
  flex-direction: row;
  align-items: center;
  gap: var(--space-2);
}

.mom-nav--pills .mom-nav__item {
  padding: var(--space-2) var(--space-4);
  border-radius: var(--radius-full);
  transition:
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    background-color var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
}

.mom-nav--pills .mom-nav__item:hover {
  background: var(--surface-hover);
  transform: translateY(-1px);
}

.mom-nav--pills .mom-nav__item--active {
  color: var(--accent-fg);
  background: var(--accent);
  animation: mom-nav-pill-active var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-nav-pill-active {
  0% { transform: scale(0.95); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}

.mom-nav--pills .mom-nav__item--active:hover {
  background: var(--accent-hover);
  transform: translateY(-1px);
}


/* ── system/components/pagination/pagination.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Pagination Component                         */
/*  Page navigation with prev/next and page numbers                  */
/* ================================================================== */

.mom-pagination {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  font-family: var(--font-sans);
}

.mom-pagination__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  padding: 0 var(--space-2);
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  font-family: inherit;
  color: var(--text-primary);
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}

.mom-pagination__btn:hover:not(:disabled) {
  background: var(--surface-hover);
  border-color: var(--text-muted);
}

.mom-pagination__btn:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
}

.mom-pagination__btn--active {
  background: var(--accent);
  color: var(--accent-fg);
  border-color: var(--accent);
}

.mom-pagination__btn--active:hover {
  background: var(--accent-hover);
  border-color: var(--accent-hover);
}

.mom-pagination__btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.mom-pagination__ellipsis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  height: 32px;
  font-size: var(--font-size-sm);
  color: var(--text-muted);
}

/* Sizes */
.mom-pagination--sm .mom-pagination__btn,
.mom-pagination--sm .mom-pagination__ellipsis {
  min-width: 28px;
  height: 28px;
  font-size: var(--font-size-xs);
}

.mom-pagination--md .mom-pagination__btn,
.mom-pagination--md .mom-pagination__ellipsis {
  min-width: 32px;
  height: 32px;
  font-size: var(--font-size-sm);
}

.mom-pagination--lg .mom-pagination__btn,
.mom-pagination--lg .mom-pagination__ellipsis {
  min-width: 40px;
  height: 40px;
  font-size: var(--font-size-base);
}


/* ── system/components/popover/popover.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Popover Component                            */
/*  Floating content panel triggered by click with arrow              */
/* ================================================================== */

/* ------------------------------------------------------------------ */
/*  Component tokens                                                   */
/* ------------------------------------------------------------------ */

:root {
  --popover-bg:     var(--surface);
  --popover-border: var(--border);
  --popover-shadow: var(--shadow-xl);
  --popover-arrow:  8px;
}

/* ------------------------------------------------------------------ */
/*  Wrapper — inline-flex to hug the trigger                           */
/* ------------------------------------------------------------------ */

.mom-popover {
  position: relative;
  display: inline-flex;
}

/* ------------------------------------------------------------------ */
/*  Trigger                                                            */
/* ------------------------------------------------------------------ */

.mom-popover__trigger {
  display: inline-flex;
  align-items: center;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: inherit;
}

/* ------------------------------------------------------------------ */
/*  Content panel                                                      */
/* ------------------------------------------------------------------ */

.mom-popover__content {
  position: absolute;
  z-index: 200;
  background: var(--popover-bg);
  border: 1px solid var(--popover-border);
  border-radius: var(--radius-xl);
  box-shadow: var(--popover-shadow);
  display: flex;
  flex-direction: column;
  opacity: 0;
  visibility: hidden;
  transform: scale(0.96);
  transition:
    opacity var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    visibility var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
  pointer-events: none;
  will-change: transform, opacity;
}

.mom-popover.is-open .mom-popover__content {
  opacity: 1;
  visibility: visible;
  transform: scale(1);
  pointer-events: auto;
  animation: mom-popover-enter var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-popover-enter {
  0% {
    opacity: 0;
    transform: scale(0.96);
  }
  60% {
    transform: scale(1.02);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}

/* ------------------------------------------------------------------ */
/*  Sizes (width)                                                      */
/* ------------------------------------------------------------------ */

.mom-popover--sm .mom-popover__content {
  width: 240px;
}

.mom-popover--md .mom-popover__content {
  width: 320px;
}

.mom-popover--lg .mom-popover__content {
  width: 420px;
}

/* ------------------------------------------------------------------ */
/*  Header                                                             */
/* ------------------------------------------------------------------ */

.mom-popover__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-3) var(--space-4);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.mom-popover__title {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--text-primary);
}

/* ------------------------------------------------------------------ */
/*  Close button                                                       */
/* ------------------------------------------------------------------ */

.mom-popover__close {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  color: var(--text-muted);
  cursor: pointer;
  flex-shrink: 0;
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

.mom-popover__close:hover {
  background: var(--input-field-bg-hover);
  color: var(--text-primary);
}

.mom-popover__close:focus-visible {
  outline: none;
  box-shadow: 0 0 0 2px var(--input-field-border-focus);
}

.mom-popover__close svg {
  width: 14px;
  height: 14px;
}

/* ------------------------------------------------------------------ */
/*  Body                                                               */
/* ------------------------------------------------------------------ */

.mom-popover__body {
  padding: var(--space-3) var(--space-4);
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--text-primary);
  overflow-y: auto;
  flex: 1;
}

/* ------------------------------------------------------------------ */
/*  Arrow                                                              */
/* ------------------------------------------------------------------ */

.mom-popover__arrow {
  position: absolute;
  width: var(--popover-arrow);
  height: var(--popover-arrow);
  background: var(--popover-bg);
  border: 1px solid var(--popover-border);
  transform: rotate(45deg);
  z-index: -1;
}

/* ------------------------------------------------------------------ */
/*  Position: Bottom (default)                                         */
/* ------------------------------------------------------------------ */

.mom-popover--bottom .mom-popover__content {
  top: 100%;
  left: 50%;
  margin-top: calc(var(--space-2) + var(--popover-arrow) / 2);
  transform: translateX(-50%) translateY(-4px) scale(0.96);
}

.mom-popover--bottom.is-open .mom-popover__content {
  transform: translateX(-50%) translateY(0) scale(1);
  animation: mom-popover-enter-bottom var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-popover-enter-bottom {
  0% { opacity: 0; transform: translateX(-50%) translateY(-4px) scale(0.96); }
  60% { transform: translateX(-50%) translateY(2px) scale(1.01); }
  100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}

.mom-popover--bottom .mom-popover__arrow {
  top: calc(-1 * var(--popover-arrow) / 2);
  left: 50%;
  margin-left: calc(-1 * var(--popover-arrow) / 2);
  border-right: none;
  border-bottom: none;
}

/* ------------------------------------------------------------------ */
/*  Position: Top                                                      */
/* ------------------------------------------------------------------ */

.mom-popover--top .mom-popover__content {
  bottom: 100%;
  left: 50%;
  margin-bottom: calc(var(--space-2) + var(--popover-arrow) / 2);
  transform: translateX(-50%) translateY(4px) scale(0.96);
}

.mom-popover--top.is-open .mom-popover__content {
  transform: translateX(-50%) translateY(0) scale(1);
  animation: mom-popover-enter-top var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-popover-enter-top {
  0% { opacity: 0; transform: translateX(-50%) translateY(4px) scale(0.96); }
  60% { transform: translateX(-50%) translateY(-2px) scale(1.01); }
  100% { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}

.mom-popover--top .mom-popover__arrow {
  bottom: calc(-1 * var(--popover-arrow) / 2);
  left: 50%;
  margin-left: calc(-1 * var(--popover-arrow) / 2);
  border-left: none;
  border-top: none;
}

/* ------------------------------------------------------------------ */
/*  Position: Right                                                    */
/* ------------------------------------------------------------------ */

.mom-popover--right .mom-popover__content {
  top: 50%;
  left: 100%;
  margin-left: calc(var(--space-2) + var(--popover-arrow) / 2);
  transform: translateY(-50%) translateX(-4px) scale(0.96);
}

.mom-popover--right.is-open .mom-popover__content {
  transform: translateY(-50%) translateX(0) scale(1);
  animation: mom-popover-enter-right var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-popover-enter-right {
  0% { opacity: 0; transform: translateY(-50%) translateX(-4px) scale(0.96); }
  60% { transform: translateY(-50%) translateX(2px) scale(1.01); }
  100% { opacity: 1; transform: translateY(-50%) translateX(0) scale(1); }
}

.mom-popover--right .mom-popover__arrow {
  left: calc(-1 * var(--popover-arrow) / 2);
  top: 50%;
  margin-top: calc(-1 * var(--popover-arrow) / 2);
  border-right: none;
  border-top: none;
}

/* ------------------------------------------------------------------ */
/*  Position: Left                                                     */
/* ------------------------------------------------------------------ */

.mom-popover--left .mom-popover__content {
  top: 50%;
  right: 100%;
  margin-right: calc(var(--space-2) + var(--popover-arrow) / 2);
  transform: translateY(-50%) translateX(4px) scale(0.96);
}

.mom-popover--left.is-open .mom-popover__content {
  transform: translateY(-50%) translateX(0) scale(1);
  animation: mom-popover-enter-left var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-popover-enter-left {
  0% { opacity: 0; transform: translateY(-50%) translateX(4px) scale(0.96); }
  60% { transform: translateY(-50%) translateX(-2px) scale(1.01); }
  100% { opacity: 1; transform: translateY(-50%) translateX(0) scale(1); }
}

.mom-popover--left .mom-popover__arrow {
  right: calc(-1 * var(--popover-arrow) / 2);
  top: 50%;
  margin-top: calc(-1 * var(--popover-arrow) / 2);
  border-left: none;
  border-bottom: none;
}


/* ── system/components/progress/progress.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Progress Component                           */
/*  Determinate progress bar — gradient fill, slate track, label pos  */
/* ================================================================== */

/* ================================================================== */
/*  Outer wrapper                                                      */
/* ================================================================== */

.mom-progress {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
  font-family: var(--font-sans);
}

/* ================================================================== */
/*  Track                                                              */
/* ================================================================== */

.mom-progress__track {
  flex: 1;
  background: var(--slate-a4);
  border-radius: var(--radius-full);
  overflow: hidden;
  position: relative;
}

/* ================================================================== */
/*  Fill                                                               */
/* ================================================================== */

.mom-progress__fill {
  height: 100%;
  border-radius: var(--radius-full);
  background:
    linear-gradient(to right, transparent 50%, rgba(255, 255, 255, 0.45)),
    var(--_progress-fill, var(--teal-9));
  transition: width 2s var(--ease-out-quart, ease);
  position: relative;
}

/* Shimmer effect for active progress */
.mom-progress__fill::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: var(--radius-full);
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.3) 50%,
    transparent 100%
  );
  background-size: 200% 100%;
  animation: mom-progress-shimmer 6s linear infinite;
}

@keyframes mom-progress-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Completed state animation */
.mom-progress--complete .mom-progress__fill {
  animation: mom-progress-complete-pulse 2.5s var(--ease-out-quart, ease);
}

@keyframes mom-progress-complete-pulse {
  0% { box-shadow: 0 0 0 0 rgba(20, 184, 166, 0.4); }
  50% { box-shadow: 0 0 0 8px rgba(20, 184, 166, 0.1); }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-progress--sm .mom-progress__track { height: 4px; }
.mom-progress--md .mom-progress__track { height: 8px; }
.mom-progress--lg .mom-progress__track { height: 12px; }

/* ================================================================== */
/*  Color variants                                                     */
/* ================================================================== */

.mom-progress--accent { --_progress-fill: var(--teal-9); }
.mom-progress--blue   { --_progress-fill: var(--blue-9); }
.mom-progress--red    { --_progress-fill: var(--red-9); }
.mom-progress--orange { --_progress-fill: var(--orange-9); }
.mom-progress--purple { --_progress-fill: var(--purple-9); }

/* ================================================================== */
/*  Label — inline (left / right)                                     */
/* ================================================================== */

.mom-progress__label {
  font-size: var(--font-size-sm);
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  flex-shrink: 0;
}

.mom-progress--label-left .mom-progress__label { order: -1; }

/* ================================================================== */
/*  Label — above (above-left / above-right)                          */
/* ================================================================== */

.mom-progress--label-above-left,
.mom-progress--label-above-right {
  flex-direction: column;
  align-items: stretch;
  gap: var(--space-1);
}

.mom-progress--label-above-left .mom-progress__track,
.mom-progress--label-above-right .mom-progress__track {
  flex: none;
  width: 100%;
}

.mom-progress--label-above-left .mom-progress__label,
.mom-progress--label-above-right .mom-progress__label {
  order: -1;
}

.mom-progress--label-above-left .mom-progress__label  { text-align: left; }
.mom-progress--label-above-right .mom-progress__label { text-align: right; }

/* ================================================================== */
/*  Tooltip — floating above / below fill endpoint                    */
/* ================================================================== */

.mom-progress--tooltip-above .mom-progress__track,
.mom-progress--tooltip-below .mom-progress__track {
  overflow: visible;
}

.mom-progress__tooltip {
  position: absolute;
  right: 0;
  transform: translateX(50%) scale(0.9);
  background: var(--tooltip-bg);
  color: var(--text-primary);
  font-size: var(--font-size-xs);
  font-family: var(--font-sans);
  font-variant-numeric: tabular-nums;
  font-weight: var(--font-semibold);
  line-height: var(--line-height-xs);
  padding: var(--space-2);
  border-radius: var(--radius-md);
  border: 1px solid var(--tooltip-border);
  width: max-content;
  white-space: nowrap;
  pointer-events: none;
  box-shadow: var(--tooltip-shadow);
  opacity: 0;
  transition: opacity 2s var(--ease-out-quart, ease),
              transform 2s var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

/* Show tooltip on hover */
.mom-progress:hover .mom-progress__tooltip,
.mom-progress--tooltip-above .mom-progress__tooltip,
.mom-progress--tooltip-below .mom-progress__tooltip {
  opacity: 1;
  transform: translateX(50%) scale(1);
  animation: mom-progress-tooltip-pop 2s var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-progress-tooltip-pop {
  0% { transform: translateX(50%) scale(0.9); opacity: 0; }
  50% { transform: translateX(50%) scale(1.1); }
  100% { transform: translateX(50%) scale(1); opacity: 1; }
}

.mom-progress--tooltip-above .mom-progress__tooltip { bottom: calc(100% + 7px); }
.mom-progress--tooltip-below .mom-progress__tooltip { top: calc(100% + 7px); }


/* ── system/components/radio-group/radio-group.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Radio Group Component                         */
/*  Groups multiple radio buttons with shared layout and spacing       */
/*  Supports vertical, horizontal, and inline layouts                 */
/*  IMPORTANT: Radio buttons should ALWAYS be used in a group          */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                                */
/* ================================================================== */

.mom-radio-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

/* ================================================================== */
/*  Label (group-level)                                               */
/* ================================================================== */

.mom-radio-group__label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  color: var(--text-primary);
  line-height: var(--line-height-sm);
  margin-bottom: var(--space-1);
}

.mom-radio-group__label--required::after {
  content: ' *';
  color: var(--red-9);
}

/* ================================================================== */
/*  Layout variants                                                    */
/* ================================================================== */

/* Vertical (default) */
.mom-radio-group--vertical {
  flex-direction: column;
  gap: var(--space-2);
}

/* Horizontal - items in a row */
.mom-radio-group--horizontal {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-4);
}

/* Inline - compact horizontal with less spacing */
.mom-radio-group--inline {
  flex-direction: row;
  flex-wrap: wrap;
  gap: var(--space-3);
}

/* ================================================================== */
/*  Error state (group-level)                                          */
/* ================================================================== */

.mom-radio-group--error .mom-radio__circle {
  border-color: var(--input-field-border-error);
  background: var(--input-field-bg-error);
}

.mom-radio-group--error .mom-radio--selected .mom-radio__circle,
.mom-radio-group--error input:checked + .mom-radio__circle {
  background: var(--toggle-checked-bg);
  border-color: var(--input-field-border-error);
}

.mom-radio-group--error .mom-radio__label,
.mom-radio-group--error .mom-radio__helper {
  color: var(--helper-error-color);
}

/* ================================================================== */
/*  Helper text (group-level)                                         */
/* ================================================================== */

.mom-radio-group__helper {
  display: flex;
  align-items: center;
  gap: var(--space-1);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--helper-color);
  margin-top: var(--space-1);
}

.mom-radio-group__helper--error {
  color: var(--helper-error-color);
}

.mom-radio-group__helper-icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
}

.mom-radio-group__helper-icon svg {
  width: 14px;
  height: 14px;
}

/* ================================================================== */
/*  Disabled state (group-level)                                       */
/* ================================================================== */

.mom-radio-group--disabled .mom-radio {
  cursor: not-allowed;
  pointer-events: none;
}

.mom-radio-group--disabled .mom-radio__circle {
  background: var(--toggle-disabled-bg);
  border-color: var(--toggle-disabled-bg);
}

.mom-radio-group--disabled .mom-radio__label,
.mom-radio-group--disabled .mom-radio__helper {
  opacity: 0.38;
}

/* ================================================================== */
/*  Sizes (group-level)                                                */
/* ================================================================== */

.mom-radio-group--sm {
  gap: var(--space-1-5);
}

.mom-radio-group--md {
  gap: var(--space-2);
}

.mom-radio-group--lg {
  gap: var(--space-3);
}

.mom-radio-group--sm.mom-radio-group--horizontal,
.mom-radio-group--sm.mom-radio-group--inline {
  gap: var(--space-3);
}

.mom-radio-group--md.mom-radio-group--horizontal,
.mom-radio-group--md.mom-radio-group--inline {
  gap: var(--space-4);
}

.mom-radio-group--lg.mom-radio-group--horizontal,
.mom-radio-group--lg.mom-radio-group--inline {
  gap: var(--space-5);
}


/* ── system/components/radio/radio.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Radio Component                              */
/*  Single-select option control, circular with inner dot indicator   */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-radio {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--space-2);
  cursor: pointer;
  position: relative;
}

.mom-radio input[type="radio"] {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.mom-radio__circle {
  flex-shrink: 0;
  position: relative;
  border: 1px solid var(--toggle-border-color);
  background: var(--toggle-bg);
  border-radius: var(--radius-full);
  box-shadow: var(--toggle-top-highlight);
  transition:
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    border-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, ease);
  overflow: hidden;
  margin-top: var(--space-0-5);
}

/* Hover lift */
.mom-radio:hover:not(.mom-radio--disabled) .mom-radio__circle {
  background: var(--toggle-bg-hover);
  transform: scale(1.05);
}

/* Press feedback */
.mom-radio:active:not(.mom-radio--disabled) .mom-radio__circle {
  transform: scale(0.95);
}

/* Inner dot — hidden by default, shown with bounce animation when selected */
.mom-radio__circle::after {
  content: '';
  position: absolute;
  width: var(--space-1-5);
  height: var(--space-1-5);
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0);
  background: white;
  border-radius: var(--radius-full);
  opacity: 0;
  transition: opacity var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

/* Selected dot bounce animation */
.mom-radio--selected .mom-radio__circle::after,
.mom-radio input:checked + .mom-radio__circle::after {
  opacity: 1;
  animation: mom-radio-dot-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) forwards;
}

@keyframes mom-radio-dot-bounce {
  0% {
    transform: translate(-50%, -50%) scale(0);
  }
  50% {
    transform: translate(-50%, -50%) scale(1.4);
  }
  100% {
    transform: translate(-50%, -50%) scale(1);
  }
}

/* Hover shine overlay */
.mom-radio__circle::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-full);
  background: radial-gradient(ellipse at 50% 0%, rgba(255,255,255,0.48) 0%, rgba(255,255,255,0) 70%);
  opacity: 0;
  pointer-events: none;
  mix-blend-mode: overlay;
  transition: opacity 0.15s;
}

/* ================================================================== */
/*  Text block                                                         */
/* ================================================================== */

.mom-radio__text {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.mom-radio__label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-primary);
  line-height: var(--line-height-sm);
}

.mom-radio__helper {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  color: var(--text-muted);
  line-height: var(--line-height-sm);
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-radio--sm .mom-radio__circle {
  width: var(--space-4);
  height: var(--space-4);
}

/* md: larger circle, larger dot, 12px gap, base typography */
.mom-radio--md {
  gap: var(--space-3);
}

.mom-radio--md .mom-radio__circle {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-radio--md .mom-radio__circle::after {
  width: var(--space-2);
  height: var(--space-2);
}

.mom-radio--md .mom-radio__text {
  gap: var(--space-0-5);
}

.mom-radio--md .mom-radio__label {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}

.mom-radio--md .mom-radio__helper {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}

/* ================================================================== */
/*  Hover state                                                        */
/* ================================================================== */

.mom-radio:hover:not(.mom-radio--disabled) .mom-radio__circle {
  background: var(--toggle-bg-hover);
}

.mom-radio:hover:not(.mom-radio--disabled) .mom-radio__circle::before {
  opacity: 1;
}

.mom-radio--selected:hover:not(.mom-radio--disabled) .mom-radio__circle {
  background: var(--toggle-checked-hover-bg);
}

/* ================================================================== */
/*  Focus state                                                        */
/* ================================================================== */

.mom-radio input:focus-visible + .mom-radio__circle {
  box-shadow: var(--toggle-ring), var(--toggle-top-highlight);
}

/* ================================================================== */
/*  Selected state                                                     */
/* ================================================================== */

.mom-radio--selected .mom-radio__circle,
.mom-radio input:checked + .mom-radio__circle {
  background: var(--toggle-checked-bg);
  border-color: var(--toggle-border-color);
  animation: mom-radio-selected-pulse var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

@keyframes mom-radio-selected-pulse {
  0% { box-shadow: 0 0 0 0 rgba(20, 184, 166, 0.4); }
  50% { box-shadow: 0 0 0 8px rgba(20, 184, 166, 0.1); }
  100% { box-shadow: 0 0 0 0 transparent; }
}

.mom-radio--selected .mom-radio__circle::after,
.mom-radio input:checked + .mom-radio__circle::after {
  opacity: 1;
}

/* ================================================================== */
/*  Error state                                                        */
/* ================================================================== */

.mom-radio--error .mom-radio__circle {
  border-color: var(--input-field-border-error);
  background: var(--input-field-bg-error);
}

.mom-radio--error.mom-radio--selected .mom-radio__circle,
.mom-radio--error input:checked + .mom-radio__circle {
  background: var(--toggle-checked-bg);
  border-color: var(--input-field-border-error);
}

.mom-radio--error .mom-radio__label,
.mom-radio--error .mom-radio__helper {
  color: var(--helper-error-color);
}

/* ================================================================== */
/*  Disabled state                                                     */
/* ================================================================== */

.mom-radio--disabled {
  cursor: not-allowed;
  pointer-events: none;
}

.mom-radio--disabled .mom-radio__circle {
  background: var(--toggle-disabled-bg);
  border-color: var(--toggle-disabled-bg);
  box-shadow: none;
}

.mom-radio--disabled .mom-radio__circle::after {
  opacity: 0;
}

.mom-radio--disabled.mom-radio--selected .mom-radio__circle::after {
  opacity: 0.5;
}

.mom-radio--disabled .mom-radio__label,
.mom-radio--disabled .mom-radio__helper {
  opacity: 0.38;
}


/* ── system/components/rating/rating.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Rating Component                             */
/*  Star rating input — interactive, readonly, half-star support       */
/* ================================================================== */

/* ================================================================== */
/*  Outer wrapper                                                      */
/* ================================================================== */

.mom-rating {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-sans);
  line-height: 1;
}

/* ================================================================== */
/*  Stars container                                                    */
/* ================================================================== */

.mom-rating__stars {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
}

/* ================================================================== */
/*  Individual star                                                    */
/* ================================================================== */

.mom-rating__star {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  color: var(--slate-a4);
  transition: color 0.15s, transform 0.15s;
}

.mom-rating__star svg {
  display: block;
}

.mom-rating__star:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
  border-radius: var(--radius-sm);
}

/* ================================================================== */
/*  Star states                                                        */
/* ================================================================== */

.mom-rating__star--filled {
  color: var(--_rating-color, var(--teal-9));
}

.mom-rating__star--half {
  color: var(--_rating-color, var(--teal-9));
}

.mom-rating__star--empty {
  color: var(--slate-a4);
}

/* ================================================================== */
/*  Interactive hover                                                  */
/* ================================================================== */

.mom-rating--interactive .mom-rating__star:hover {
  transform: scale(1.15);
}

.mom-rating--interactive .mom-rating__stars:hover .mom-rating__star {
  color: var(--_rating-color, var(--teal-9));
}

.mom-rating--interactive .mom-rating__stars:hover .mom-rating__star:hover ~ .mom-rating__star {
  color: var(--slate-a4);
}

/* ================================================================== */
/*  Readonly & disabled                                                */
/* ================================================================== */

.mom-rating--readonly .mom-rating__star {
  cursor: default;
  pointer-events: none;
}

.mom-rating--disabled {
  opacity: 0.5;
  pointer-events: none;
}

.mom-rating--disabled .mom-rating__star {
  cursor: not-allowed;
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-rating--sm .mom-rating__star svg {
  width: 16px;
  height: 16px;
}

.mom-rating--md .mom-rating__star svg {
  width: 20px;
  height: 20px;
}

.mom-rating--lg .mom-rating__star svg {
  width: 28px;
  height: 28px;
}

/* ================================================================== */
/*  Color variants                                                     */
/* ================================================================== */

.mom-rating--accent { --_rating-color: var(--teal-9); }
.mom-rating--yellow { --_rating-color: var(--yellow-9); }
.mom-rating--orange { --_rating-color: var(--orange-9); }

/* ================================================================== */
/*  Value label                                                        */
/* ================================================================== */

.mom-rating__label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  flex-shrink: 0;
}

.mom-rating--sm .mom-rating__label { font-size: var(--font-size-xs); }
.mom-rating--lg .mom-rating__label { font-size: var(--font-size-base); }


/* ── system/components/search-input/search-input.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Search Input Component                       */
/*  Styled input with search icon (left) and clear button (right)     */
/*  Shares input tokens from input.css                                */
/* ================================================================== */

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-search-input {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1-5);
  width: 100%;
  max-width: 460px;
}

/* ================================================================== */
/*  Field wrap                                                         */
/* ================================================================== */

.mom-search-input__field-wrap {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--space-10);
  background: var(--input-field-bg);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-lg);
  padding: 0 var(--space-1);
  box-shadow: var(--input-field-shadow);
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  box-sizing: border-box;
}

/* Hover */
.mom-search-input__field-wrap:hover,
.mom-search-input--hover .mom-search-input__field-wrap {
  background: var(--input-field-bg-hover);
  border-color: var(--input-field-border-hover);
}

/* Focus with glow */
.mom-search-input__field-wrap:focus-within,
.mom-search-input--focus .mom-search-input__field-wrap,
.mom-search-input--filled .mom-search-input__field-wrap:focus-within {
  background: var(--input-field-bg);
  border-color: var(--input-field-border-focus);
  box-shadow: var(--input-field-shadow), 0 0 0 3px rgba(20, 184, 166, 0.12);
  outline: none;
}

/* Disabled */
.mom-search-input--disabled .mom-search-input__field-wrap {
  background: var(--input-field-bg-disabled);
  border-color: var(--input-field-border-disabled);
  box-shadow: none;
  pointer-events: none;
}

/* ================================================================== */
/*  Content area                                                       */
/* ================================================================== */

.mom-search-input__content {
  flex: 1 0 0;
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  min-width: 0;
  padding: 0 var(--space-1-5);
}

/* ================================================================== */
/*  Search icon (left)                                                 */
/* ================================================================== */

.mom-search-input__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
  transition: color 0.2s ease;
}

.mom-search-input__icon svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-search-input__field-wrap:focus-within .mom-search-input__icon,
.mom-search-input--focus .mom-search-input__icon {
  color: var(--teal-11);
}

.mom-search-input--disabled .mom-search-input__icon {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Native input                                                       */
/* ================================================================== */

.mom-search-input__input {
  flex: 1 0 0;
  min-width: 0;
  border: none;
  background: transparent;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-text-placeholder);
  outline: none;
  caret-color: var(--input-field-border-focus);
}

/* Hide browser-native search cancel button */
.mom-search-input__input::-webkit-search-cancel-button,
.mom-search-input__input::-webkit-search-decoration {
  -webkit-appearance: none;
  appearance: none;
}

.mom-search-input__input::placeholder {
  color: var(--input-text-placeholder);
}

.mom-search-input--hover .mom-search-input__input::placeholder {
  color: var(--input-text-hover);
}

.mom-search-input--filled .mom-search-input__input,
.mom-search-input--focus .mom-search-input__input {
  color: var(--input-text-filled);
}

.mom-search-input--disabled .mom-search-input__input {
  color: var(--input-text-disabled);
  cursor: not-allowed;
}

/* ================================================================== */
/*  Clear button (right, shown when filled)                            */
/* ================================================================== */

.mom-search-input__clear {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  padding: 0;
  border: none;
  background: transparent;
  border-radius: var(--radius-md);
  color: var(--input-leading-text);
  cursor: pointer;
  transition: background-color 0.15s ease, color 0.15s ease;
}

.mom-search-input__clear:hover {
  background: var(--input-action-bg-hover);
  color: var(--input-text-filled);
}

.mom-search-input__clear svg {
  width: var(--space-3);
  height: var(--space-3);
}

/* ================================================================== */
/*  Size variants                                                      */
/* ================================================================== */

.mom-search-input--sm .mom-search-input__field-wrap {
  height: var(--space-8);
  padding: 0 var(--space-1);
}

.mom-search-input--sm .mom-search-input__input {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

.mom-search-input--sm .mom-search-input__icon,
.mom-search-input--sm .mom-search-input__clear {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-search-input--md .mom-search-input__field-wrap {
  height: var(--space-10);
}

.mom-search-input--lg .mom-search-input__field-wrap {
  height: var(--space-12);
  padding: 0 var(--space-1);
}

.mom-search-input--lg .mom-search-input__input {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}


/* ── system/components/segmented/segmented.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Segmented Control Component                  */
/*  Mutually exclusive option group with elevated active segment       */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                   */
/* ================================================================== */

:root {
  /* Container */
  --segmented-bg:              var(--slate-a3);
  --segmented-border:          var(--slate-a5);

  /* Idle segment */
  --segmented-fg:              var(--text-muted);
  --segmented-hover-bg:        var(--slate-a4);
  --segmented-hover-fg:        var(--text-secondary);

  /* Active segment — elevated surface */
  --segmented-active-bg:       var(--slate-5);
  --segmented-active-fg:       var(--text-primary);
  --segmented-active-shadow:
    0 1px 3px rgba(0, 0, 0, 0.28),
    0 1px 1px rgba(0, 0, 0, 0.20),
    inset 0 1px 0 rgba(255, 255, 255, 0.10);
}

:root.light {
  --segmented-bg:              var(--slate-3);
  --segmented-border:          var(--slate-6);
  --segmented-hover-bg:        var(--slate-4);
  --segmented-active-bg:       white;
  --segmented-active-shadow:
    0 1px 3px rgba(0, 0, 0, 0.10),
    0 1px 1px rgba(0, 0, 0, 0.07),
    inset 0 1px 0 rgba(255, 255, 255, 0.90);
}

/* ================================================================== */
/*  Container                                                          */
/* ================================================================== */

.mom-segmented {
  display: inline-flex;
  gap: 2px;
  background: var(--segmented-bg);
  border: 1px solid var(--segmented-border);
  border-radius: var(--radius-lg);
  padding: 2px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.16);
}

/* ================================================================== */
/*  Segment button                                                     */
/* ================================================================== */

.mom-segmented__btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-1-5);
  border-radius: calc(var(--radius-lg) - 2px);
  font-family: var(--font-sans);
  font-weight: var(--font-medium);
  color: var(--segmented-fg);
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.12s ease, color 0.12s ease, box-shadow 0.12s ease;
}

.mom-segmented__btn:not(.mom-segmented__btn--active):hover {
  background: var(--segmented-hover-bg);
  color: var(--segmented-hover-fg);
}

.mom-segmented__btn--active {
  background: var(--segmented-active-bg);
  color: var(--segmented-active-fg);
  box-shadow: var(--segmented-active-shadow);
}

/* ================================================================== */
/*  Button icon slot                                                   */
/* ================================================================== */

.mom-segmented__btn__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  width: var(--space-4);
  height: var(--space-4);
}

.mom-segmented__btn__icon svg {
  width: 100%;
  height: 100%;
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-segmented--sm .mom-segmented__btn {
  padding: var(--space-1) var(--space-2-5);
  font-size: var(--font-size-xs);
  line-height: var(--line-height-xs);
}

.mom-segmented--md .mom-segmented__btn {
  padding: var(--space-1-5) var(--space-3-5);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

/* ================================================================== */
/*  Full width                                                         */
/* ================================================================== */

.mom-segmented--full {
  width: 100%;
}

.mom-segmented--full .mom-segmented__btn {
  flex: 1;
}

/* ================================================================== */
/*  Disabled                                                           */
/* ================================================================== */

.mom-segmented--disabled {
  opacity: 0.5;
  pointer-events: none;
}

.mom-segmented__btn:disabled,
.mom-segmented__btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}


/* ── system/components/select/select.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Select Component                              */
/*  Derivative of Input — trigger is a styled input field-wrap        */
/*  Label · Helper tokens shared from input.css                        */
/* ================================================================== */

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-select-wrapper {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1-5);
  width: 100%;
  max-width: 460px;
}

/* ================================================================== */
/*  Field wrap — establishes the positioning context for the menu     */
/* ================================================================== */

.mom-select__field-wrap {
  position: relative;
}

/* ================================================================== */
/*  Trigger (visually identical to mom-input__field-wrap)              */
/* ================================================================== */

.mom-select__trigger {
  position: relative;
  display: flex;
  align-items: center;
  height: var(--space-10);
  background: var(--input-field-bg);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-lg);
  padding: 0 var(--space-1);
  box-shadow: var(--input-field-shadow);
  cursor: pointer;
  transition:
    background-color 0.2s ease,
    border-color 0.2s ease,
    box-shadow 0.2s ease;
  box-sizing: border-box;
  user-select: none;
}

/* Hover */
.mom-select__trigger:hover,
.mom-select-wrapper--hover .mom-select__trigger {
  background: var(--input-field-bg-hover);
  border-color: var(--input-field-border-hover);
}

/* Focus / open with glow */
.mom-select__trigger:focus-within,
.mom-select-wrapper--focus .mom-select__trigger,
.mom-select-wrapper--open .mom-select__trigger {
  background: var(--input-field-bg);
  border-color: var(--input-field-border-focus);
  box-shadow: var(--input-field-shadow), 0 0 0 3px rgba(20, 184, 166, 0.12);
  outline: none;
}

/* Error */
.mom-select-wrapper--error .mom-select__trigger {
  background: var(--input-field-bg-error);
  border-color: var(--input-field-border-error);
  box-shadow: var(--input-field-shadow);
}

/* Disabled */
.mom-select-wrapper--disabled .mom-select__trigger {
  background: var(--input-field-bg-disabled);
  border-color: var(--input-field-border-disabled);
  box-shadow: none;
  pointer-events: none;
  cursor: not-allowed;
}

/* ================================================================== */
/*  Content area (mirrors mom-input__content)                          */
/* ================================================================== */

.mom-select__content {
  flex: 1 0 0;
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  min-width: 0;
  padding: 0 var(--space-1-5);
}

/* Optional left icon (mirrors mom-input__icon-left) */
.mom-select__icon-left {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
}

.mom-select__icon-left svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-select-wrapper--disabled .mom-select__icon-left {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Value / placeholder text                                           */
/* ================================================================== */

.mom-select__value {
  flex: 1 0 0;
  min-width: 0;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-text-placeholder);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.mom-select__value--filled {
  color: var(--input-text-filled);
}

.mom-select-wrapper--disabled .mom-select__value {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Chevron (right side)                                               */
/* ================================================================== */

.mom-select__chevron {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--input-leading-text);
  margin-right: var(--space-1);
  transition: transform 0.25s ease;
}

.mom-select__chevron svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-select-wrapper--open .mom-select__chevron {
  transform: rotate(180deg);
}

.mom-select-wrapper--disabled .mom-select__chevron {
  color: var(--input-text-disabled);
}

/* ================================================================== */
/*  Native <select> overlay (accessible, invisible)                    */
/* ================================================================== */

.mom-select__native {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
  opacity: 0;
  pointer-events: none;
}

/* ================================================================== */
/*  Size variants                                                      */
/* ================================================================== */

.mom-select-wrapper--sm .mom-select__trigger {
  height: var(--space-8);
}

.mom-select-wrapper--sm .mom-select__value {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
}

.mom-select-wrapper--sm .mom-select__icon-left,
.mom-select-wrapper--sm .mom-select__chevron {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-select-wrapper--md .mom-select__trigger {
  height: var(--space-10);
}

.mom-select-wrapper--lg .mom-select__trigger {
  height: var(--space-12);
}

.mom-select-wrapper--lg .mom-select__value {
  font-size: var(--font-size-base);
}

/* ================================================================== */
/*  Open dropdown panel (shown below trigger)                          */
/* ================================================================== */

.mom-select__menu {
  position: absolute;
  top: calc(100% + var(--space-1));
  left: 0;
  right: 0;
  z-index: 200;
  display: none;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xl);
  padding: var(--space-1);
  box-sizing: border-box;
  overflow: hidden;
  opacity: 0;
  transform: translateY(-4px);
  transform-origin: top center;
  transition: opacity 0.2s ease, transform 0.2s ease;
}

.mom-select-wrapper--open .mom-select__menu {
  display: flex;
  opacity: 1;
  transform: translateY(0);
}

.mom-select__menu-item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-md);
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--input-text-filled);
  cursor: pointer;
  border: none;
  background: transparent;
  width: 100%;
  text-align: left;
  transition: background-color 0.15s ease;
  box-sizing: border-box;
  opacity: 0;
  transform: translateY(4px);
}

/* Staggered entrance animation for menu items */
.mom-select-wrapper--open .mom-select__menu-item {
  animation: mom-select-item-in 0.3s ease forwards;
}

.mom-select-wrapper--open .mom-select__menu-item:nth-child(1) { animation-delay: 0.02s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(2) { animation-delay: 0.04s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(3) { animation-delay: 0.06s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(4) { animation-delay: 0.08s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(5) { animation-delay: 0.10s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(6) { animation-delay: 0.12s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(7) { animation-delay: 0.14s; }
.mom-select-wrapper--open .mom-select__menu-item:nth-child(8) { animation-delay: 0.16s; }

@keyframes mom-select-item-in {
  0% {
    opacity: 0;
    transform: translateY(4px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.mom-select__menu-item:hover {
  background: var(--input-field-bg-hover);
}

.mom-select__menu-item--active {
  background: var(--input-field-bg-hover);
  color: var(--input-selected-text);
  font-weight: var(--font-medium);
}

.mom-select__menu-item-check {
  flex-shrink: 0;
  width: var(--space-4);
  height: var(--space-4);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--input-selected-icon);
}

.mom-select__menu-item-check svg {
  width: 14px;
  height: 14px;
}

.mom-select__menu-sep {
  height: 1px;
  background: var(--input-field-border);
  margin: var(--space-1) 0;
}


/* ── system/components/skeleton/skeleton.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Skeleton Component                          */
/*  Loading placeholder shapes with pulse animation                   */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

@keyframes mom-skeleton--pulse {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}

.mom-skeleton {
  background: var(--border);
  animation: mom-skeleton--pulse 1.5s ease-in-out infinite;
}

/* ================================================================== */
/*  Variants                                                            */
/* ================================================================== */

.mom-skeleton--text {
  height: var(--space-3-5);
  border-radius: var(--radius);
  min-width: 60px;
}

.mom-skeleton--circle {
  border-radius: 50%;
  aspect-ratio: 1;
}

.mom-skeleton--rectangle {
  min-width: 120px;
  min-height: 80px;
  border-radius: var(--radius-lg);
}


/* ── system/components/slider/slider.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Slider & Range Component                     */
/*  Single-handle slider · Dual-handle range · Label & tooltip modes  */
/* ================================================================== */

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-slider {
  position: relative;
  width: 100%;
  /* padding lets the 24px handle breathe above/below the track */
  padding: var(--space-2) 0;
}

/* Extra room below for the handle label */
.mom-slider--label-bottom { padding-bottom: var(--space-9); }

/* Extra room above for the tooltip */
.mom-slider--tooltip { padding-top: var(--space-11); }

/* Hidden native range input — accessibility / keyboard / production use */
.mom-slider__input {
  position: absolute;
  inset: 0;
  width: 100%;
  opacity: 0;
  cursor: pointer;
  z-index: 3;
  margin: 0;
  -webkit-appearance: none;
  appearance: none;
}

/* ================================================================== */
/*  Track                                                              */
/* ================================================================== */

.mom-slider__track {
  position: relative;
  width: 100%;
  background: var(--slate-a4);
  border-radius: var(--radius-full);
  overflow: visible;
  box-shadow:
    inset 0 1px 0 rgba(0, 0, 0, 0.24),
    inset 0 -1px 0 rgba(255, 255, 255, 0.12),
    inset 0 4px 4px rgba(0, 0, 0, 0.08);
}

/* ================================================================== */
/*  Sizes  (track height only — handle is always 24px)               */
/* ================================================================== */

.mom-slider--sm .mom-slider__track { height: var(--space-1); }
.mom-slider--md .mom-slider__track { height: var(--space-2); }
.mom-slider--lg .mom-slider__track { height: var(--space-3); }

/* ================================================================== */
/*  Fill                                                               */
/* ================================================================== */

.mom-slider__fill {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  border-radius: var(--radius-full);
  background:
    linear-gradient(to right, transparent 50%, rgba(255, 255, 255, 0.45)),
    var(--teal-9);
  box-shadow:
    0 4px 7px rgba(0, 0, 0, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    inset 0 -1px 0 rgba(0, 0, 0, 0.24);
  pointer-events: none;
}

/* ================================================================== */
/*  Handle (thumb)                                                     */
/* ================================================================== */

.mom-slider__thumb {
  position: absolute;
  top: 50%;
  width: var(--space-6);
  height: var(--space-6);
  margin-top: calc(var(--space-3) * -1);
  transform: translateX(-50%);
  border-radius: var(--radius-full);
  background:
    radial-gradient(ellipse 110% 55% at 50% 0%, rgba(255, 255, 255, 0.48) 0%, transparent 70%),
    var(--_handle-bg, var(--slate-11));
  border: 1px solid rgba(255, 255, 255, 0.12);
  box-shadow: var(--shadow-md);
  cursor: grab;
  z-index: 2;
  transition:
    background-color var(--duration-fast, 0.12s) var(--ease-out-quart, ease),
    box-shadow var(--duration-fast, 0.12s) var(--ease-out-quart, ease),
    border-width var(--duration-fast, 0.12s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, cubic-bezier(0.175, 0.885, 0.32, 1.275));
  will-change: transform;
}

.mom-slider__thumb:active {
  cursor: grabbing;
  transform: translateX(-50%) scale(1.1);
}

/* Hover state with scale */
.mom-slider__thumb.is-hover,
.mom-slider__thumb:hover {
  --_handle-bg: var(--slate-10);
  border-width: 2px;
  transform: translateX(-50%) scale(1.15);
  box-shadow: var(--shadow-lg);
}

/* Focus state with glow pulse */
.mom-slider__thumb.is-focus {
  --_handle-bg: var(--slate-10);
  box-shadow:
    var(--shadow),
    0 0 0 4px var(--teal-a4),
    0 0 0 8px rgba(20, 184, 166, 0.1);
  animation: mom-slider-focus-pulse var(--duration-slower, 0.6s) var(--ease-out-quart, ease) infinite;
}

@keyframes mom-slider-focus-pulse {
  0%, 100% {
    box-shadow: var(--shadow), 0 0 0 4px var(--teal-a4), 0 0 0 8px rgba(20, 184, 166, 0.1);
  }
  50% {
    box-shadow: var(--shadow), 0 0 0 6px var(--teal-a4), 0 0 0 12px rgba(20, 184, 166, 0.05);
  }
}

/* Snap animation for value changes */
.mom-slider__thumb.is-snapping {
  animation: mom-slider-thumb-snap var(--duration-fast, 0.15s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-slider-thumb-snap {
  0% { transform: translateX(-50%) scale(1.15); }
  50% { transform: translateX(-50%) scale(1.25); }
  100% { transform: translateX(-50%) scale(1.15); }
}

/* ================================================================== */
/*  Handle label — below                                               */
/* ================================================================== */

.mom-slider__label {
  display: none;
  position: absolute;
  top: calc(100% + var(--space-2));
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-primary);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  pointer-events: none;
  line-height: 1;
}

.mom-slider--label-bottom .mom-slider__label { display: block; }

/* ================================================================== */
/*  Handle tooltip — above                                             */
/* ================================================================== */

.mom-slider__tooltip {
  display: none;
  position: absolute;
  bottom: calc(100% + var(--space-1-5));
  left: 50%;
  transform: translateX(-50%) scale(0.9);
  background: var(--tooltip-bg);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-xs);
  padding: var(--space-2);
  border-radius: var(--radius-md);
  border: 1px solid var(--tooltip-border);
  box-shadow: var(--tooltip-shadow);
  width: max-content;
  white-space: nowrap;
  pointer-events: none;
  z-index: 10;
  opacity: 0;
  transition: opacity var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
              transform var(--duration-fast, 0.15s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

.mom-slider--tooltip .mom-slider__thumb:hover .mom-slider__tooltip,
.mom-slider--tooltip .mom-slider__thumb.is-hover .mom-slider__tooltip,
.mom-slider--tooltip .mom-slider__thumb.is-focus .mom-slider__tooltip {
  display: block;
  opacity: 1;
  transform: translateX(-50%) scale(1);
  animation: mom-slider-tooltip-pop var(--duration-fast, 0.2s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-slider-tooltip-pop {
  0% { transform: translateX(-50%) scale(0.9); opacity: 0; }
  50% { transform: translateX(-50%) scale(1.1); }
  100% { transform: translateX(-50%) scale(1); opacity: 1; }
}

/* Tooltip bounce on value change */
.mom-slider__thumb.is-snapping .mom-slider__tooltip {
  animation: mom-slider-tooltip-bounce var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-slider-tooltip-bounce {
  0% { transform: translateX(-50%) scale(1) translateY(0); }
  30% { transform: translateX(-50%) scale(1.15) translateY(-4px); }
  60% { transform: translateX(-50%) scale(0.95) translateY(2px); }
  100% { transform: translateX(-50%) scale(1) translateY(0); }
}

/* ================================================================== */
/*  Disabled                                                           */
/* ================================================================== */

.mom-slider--disabled {
  opacity: 0.5;
  pointer-events: none;
}


/* ── system/components/spinner/spinner.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Spinner Component                           */
/*  Indeterminate loading indicator with size and color variants      */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

@keyframes mom-spinner--spin {
  to { transform: rotate(360deg); }
}

.mom-spinner {
  border-radius: var(--radius-full);
  animation: mom-spinner--spin 0.75s linear infinite;
}

/* ================================================================== */
/*  Sizes                                                               */
/* ================================================================== */

.mom-spinner--sm {
  width: var(--space-4);
  height: var(--space-4);
  border: var(--ring-width) solid var(--border);
  border-top-color: var(--accent);
}

.mom-spinner--md {
  width: var(--space-6);
  height: var(--space-6);
  border: 3px solid var(--border);
  border-top-color: var(--accent);
}

.mom-spinner--lg {
  width: var(--space-8);
  height: var(--space-8);
  border: 3px solid var(--border);
  border-top-color: var(--accent);
}

.mom-spinner--xl {
  width: var(--space-12);
  height: var(--space-12);
  border: 3px solid var(--border);
  border-top-color: var(--accent);
}

/* ================================================================== */
/*  Colors                                                              */
/* ================================================================== */

.mom-spinner--gray {
  border-top-color: var(--text-muted);
}


/* ── system/components/step-indicator/step-indicator.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Step Indicator Component                     */
/*  Simple dot/bar/number progress indicator                          */
/* ================================================================== */

/* ================================================================== */
/*  Outer wrapper                                                      */
/* ================================================================== */

.mom-step-indicator {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  font-family: var(--font-sans);
}

/* ================================================================== */
/*  Individual dot / bar / number                                      */
/* ================================================================== */

.mom-step-indicator__step {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border: none;
  padding: 0;
  background: var(--slate-a4);
  transition: background 0.2s, transform 0.2s, color 0.2s;
  cursor: default;
}

/* ================================================================== */
/*  Active state                                                       */
/* ================================================================== */

.mom-step-indicator__step--active {
  background: var(--_indicator-color, var(--teal-9));
  transform: scale(1.15);
}

/* Completed (before active) */
.mom-step-indicator__step--completed {
  background: var(--_indicator-color, var(--teal-9));
  opacity: 0.6;
}

/* ================================================================== */
/*  Variant: dots (default)                                            */
/* ================================================================== */

.mom-step-indicator--dots .mom-step-indicator__step {
  border-radius: var(--radius-full);
}

.mom-step-indicator--dots.mom-step-indicator--sm .mom-step-indicator__step {
  width: 8px;
  height: 8px;
}

.mom-step-indicator--dots.mom-step-indicator--md .mom-step-indicator__step {
  width: 10px;
  height: 10px;
}

.mom-step-indicator--dots.mom-step-indicator--lg .mom-step-indicator__step {
  width: 14px;
  height: 14px;
}

/* ================================================================== */
/*  Variant: bars                                                      */
/* ================================================================== */

.mom-step-indicator--bars .mom-step-indicator__step {
  border-radius: var(--radius-full);
}

.mom-step-indicator--bars.mom-step-indicator--sm .mom-step-indicator__step {
  width: 20px;
  height: 4px;
}

.mom-step-indicator--bars.mom-step-indicator--md .mom-step-indicator__step {
  width: 28px;
  height: 5px;
}

.mom-step-indicator--bars.mom-step-indicator--lg .mom-step-indicator__step {
  width: 36px;
  height: 6px;
}

/* Active bar is wider */
.mom-step-indicator--bars .mom-step-indicator__step--active {
  transform: scaleX(1.2);
}

/* ================================================================== */
/*  Variant: numbers                                                   */
/* ================================================================== */

.mom-step-indicator--numbers .mom-step-indicator__step {
  border-radius: var(--radius-full);
  font-weight: var(--font-semibold);
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
  background: var(--slate-a4);
}

.mom-step-indicator--numbers .mom-step-indicator__step--active {
  color: var(--accent-fg);
  background: var(--_indicator-color, var(--teal-9));
}

.mom-step-indicator--numbers .mom-step-indicator__step--completed {
  color: var(--accent-fg);
  background: var(--_indicator-color, var(--teal-9));
  opacity: 0.6;
}

.mom-step-indicator--numbers.mom-step-indicator--sm .mom-step-indicator__step {
  width: 20px;
  height: 20px;
  font-size: var(--font-size-xs);
}

.mom-step-indicator--numbers.mom-step-indicator--md .mom-step-indicator__step {
  width: 28px;
  height: 28px;
  font-size: var(--font-size-sm);
}

.mom-step-indicator--numbers.mom-step-indicator--lg .mom-step-indicator__step {
  width: 36px;
  height: 36px;
  font-size: var(--font-size-base);
}

/* ================================================================== */
/*  Color variants                                                     */
/* ================================================================== */

.mom-step-indicator--accent { --_indicator-color: var(--teal-9); }
.mom-step-indicator--blue   { --_indicator-color: var(--blue-9); }
.mom-step-indicator--purple { --_indicator-color: var(--purple-9); }
.mom-step-indicator--orange { --_indicator-color: var(--orange-9); }

/* ================================================================== */
/*  Focus visible (for interactive use)                                */
/* ================================================================== */

.mom-step-indicator__step:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
}


/* ── system/components/stepper/stepper.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Stepper Component                            */
/*  Multi-step wizard indicator with numbered steps and connectors     */
/* ================================================================== */

/* ================================================================== */
/*  Outer wrapper                                                      */
/* ================================================================== */

.mom-stepper {
  display: flex;
  font-family: var(--font-sans);
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Horizontal (default) */
.mom-stepper--horizontal {
  flex-direction: row;
  align-items: flex-start;
}

/* Vertical */
.mom-stepper--vertical {
  flex-direction: column;
  align-items: flex-start;
}

/* ================================================================== */
/*  Step item                                                          */
/* ================================================================== */

.mom-stepper__step {
  display: flex;
  align-items: flex-start;
  position: relative;
  flex: 1;
}

.mom-stepper--horizontal .mom-stepper__step {
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.mom-stepper--vertical .mom-stepper__step {
  flex-direction: row;
  align-items: flex-start;
  gap: var(--space-3);
  padding-bottom: var(--space-6);
}

.mom-stepper--vertical .mom-stepper__step:last-child {
  padding-bottom: 0;
}

/* ================================================================== */
/*  Step header (circle + connector row)                               */
/* ================================================================== */

.mom-stepper__header {
  display: flex;
  align-items: center;
  width: 100%;
}

.mom-stepper--vertical .mom-stepper__header {
  flex-direction: column;
  width: auto;
  align-items: center;
}

/* ================================================================== */
/*  Step circle                                                        */
/* ================================================================== */

.mom-stepper__circle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: var(--radius-full);
  font-weight: var(--font-semibold);
  font-variant-numeric: tabular-nums;
  transition: background 0.2s, color 0.2s, border-color 0.2s;
  position: relative;
  z-index: 1;
}

/* Upcoming (default) */
.mom-stepper__circle {
  background: var(--surface);
  color: var(--text-muted);
  border: 2px solid var(--border);
}

/* Active */
.mom-stepper__step--active .mom-stepper__circle {
  background: var(--accent);
  color: var(--accent-fg);
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--teal-a3);
}

/* Completed */
.mom-stepper__step--completed .mom-stepper__circle {
  background: var(--accent);
  color: var(--accent-fg);
  border-color: var(--accent);
}

/* ================================================================== */
/*  Connector line                                                     */
/* ================================================================== */

.mom-stepper__connector {
  flex: 1;
  transition: background 0.2s;
}

.mom-stepper--horizontal .mom-stepper__connector {
  height: 2px;
  min-width: var(--space-4);
  background: var(--border);
}

.mom-stepper--vertical .mom-stepper__connector {
  width: 2px;
  flex: 1;
  min-height: var(--space-4);
  background: var(--border);
}

/* Completed connector */
.mom-stepper__step--completed .mom-stepper__connector {
  background: var(--accent);
}

/* Hide connector on last step */
.mom-stepper__step:last-child .mom-stepper__connector {
  display: none;
}

/* ================================================================== */
/*  Step content (label + description)                                 */
/* ================================================================== */

.mom-stepper__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.mom-stepper--horizontal .mom-stepper__content {
  margin-top: var(--space-2);
  align-items: center;
}

.mom-stepper__label {
  font-weight: var(--font-semibold);
  color: var(--text-muted);
  transition: color 0.2s;
}

.mom-stepper__step--active .mom-stepper__label {
  color: var(--text-primary);
}

.mom-stepper__step--completed .mom-stepper__label {
  color: var(--text-primary);
}

.mom-stepper__description {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  line-height: var(--line-height-sm);
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

/* Small */
.mom-stepper--sm .mom-stepper__circle {
  width: 24px;
  height: 24px;
  font-size: var(--font-size-xs);
}

.mom-stepper--sm .mom-stepper__label {
  font-size: var(--font-size-xs);
}

.mom-stepper--sm .mom-stepper__description {
  font-size: 10px;
}

/* Medium */
.mom-stepper--md .mom-stepper__circle {
  width: 32px;
  height: 32px;
  font-size: var(--font-size-sm);
}

.mom-stepper--md .mom-stepper__label {
  font-size: var(--font-size-sm);
}

/* Large */
.mom-stepper--lg .mom-stepper__circle {
  width: 40px;
  height: 40px;
  font-size: var(--font-size-base);
}

.mom-stepper--lg .mom-stepper__label {
  font-size: var(--font-size-base);
}

.mom-stepper--lg .mom-stepper__description {
  font-size: var(--font-size-sm);
}

/* ================================================================== */
/*  Checkmark SVG in completed circles                                 */
/* ================================================================== */

.mom-stepper__check {
  display: block;
}

.mom-stepper--sm .mom-stepper__check {
  width: 12px;
  height: 12px;
}

.mom-stepper--md .mom-stepper__check {
  width: 16px;
  height: 16px;
}

.mom-stepper--lg .mom-stepper__check {
  width: 20px;
  height: 20px;
}


/* ── system/components/table/table.css ── */
/* ================================================================== */
/*  Mo~oM Table Component — Simple semantic table                     */
/*  Supports: checkbox, avatar-text, text, badge, rating, actions   */
/* ================================================================== */

.mom-table-wrapper {
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  overflow: hidden;
  background: var(--surface);
}

.mom-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--font-sans);
  font-size: var(--font-size-sm);
  text-align: left;
  background: var(--surface);
}

/* ================================================================== */
/*  Header                                                            */
/* ================================================================== */

.mom-table thead {
  background: var(--colours-slate-alpha-2, rgba(213, 254, 255, 0.03));
}

.mom-table thead tr {
  border-bottom: 1px solid var(--colours-slate-alpha-4, rgba(226, 240, 253, 0.08));
}

.mom-table th {
  height: 40px;
  padding: 10px 18px;
  font-size: var(--font-size-xs);
  font-weight: var(--font-medium);
  color: var(--colours-slate-solid-11, #9ba1a6);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  vertical-align: middle;
  white-space: nowrap;
}

.mom-table th .mom-table__header-checkbox {
  display: inline-flex;
  margin-right: 8px;
}

.mom-table th .mom-table__sort {
  display: inline-flex;
  margin-left: 4px;
  color: var(--text-muted);
}

.mom-table th .mom-table__sort svg {
  width: 16px;
  height: 16px;
}

/* ================================================================== */
/*  Body & Rows                                                       */
/* ================================================================== */

.mom-table tbody {
  background: var(--components-table-cells-background, #202425);
}

.mom-table tbody tr {
  border-bottom: 1px solid var(--colours-slate-alpha-4, rgba(226, 240, 253, 0.08));
  transition: background 0.15s ease;
}

.mom-table tbody tr:last-child {
  border-bottom: none;
}

/* Row hover */
.mom-table tbody tr:hover {
  background: var(--surface-hover);
}

/* Selected row state */
.mom-table tbody tr[data-selected="true"] {
  background: var(--surface-selected, rgba(0, 253, 232, 0.08)) !important;
}

.mom-table tbody tr[data-selected="true"]:hover {
  background: var(--surface-selected-hover, rgba(0, 253, 232, 0.12)) !important;
}

/* Row checkbox cursor */
.mom-table__row-checkbox {
  cursor: pointer;
}

/* Striped rows (default variant) */
.mom-table--default tbody tr:nth-child(odd) {
  background: var(--bg);
}

.mom-table--default tbody tr:nth-child(even) {
  background: var(--surface);
}

.mom-table--default tbody tr:hover {
  background: var(--surface-hover);
}

/* No stripe modifier */
.mom-table--no-stripe tbody tr,
.mom-table--default.mom-table--no-stripe tbody tr:nth-child(odd),
.mom-table--default.mom-table--no-stripe tbody tr:nth-child(even) {
  background: var(--surface);
}

.mom-table--no-stripe tbody tr:hover,
.mom-table--default.mom-table--no-stripe tbody tr:hover {
  background: var(--surface-hover);
}

/* No hover modifier */
.mom-table--no-hover tbody tr:hover,
.mom-table--default.mom-table--no-hover tbody tr:hover {
  background: inherit;
}

/* ================================================================== */
/*  Cells                                                             */
/* ================================================================== */

.mom-table td {
  height: 56px;
  padding: 16px 18px;
  vertical-align: middle;
  background: transparent;
  border-right: 1px solid var(--colours-slate-alpha-4, rgba(226, 240, 253, 0.08));
}

.mom-table td:last-child {
  border-right: none;
}

.mom-table td > div {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Checkbox cell */
.mom-table__cell--checkbox > div {
  justify-content: center;
}

.mom-table__cell--checkbox .mom-checkbox {
  margin: 0;
}

/* Lead cell (with avatar) */
.mom-table__cell--lead > div {
  gap: 12px;
}

.mom-table__cell--lead .mom-avatar {
  width: 40px;
  height: 40px;
  flex-shrink: 0;
}

/* Text content */
.mom-table__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.mom-table__main {
  font-weight: var(--font-medium);
  color: var(--colours-slate-solid-12, #eeecec);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mom-table__sub {
  font-weight: var(--font-regular);
  color: var(--colours-slate-solid-11, #9ba1a6);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.mom-table__simple {
  font-weight: var(--font-medium);
  color: var(--text-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Rating cell */
.mom-table__cell--rating > div {
  gap: 2px;
}

.mom-table__star {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  color: var(--slate-6);
  cursor: pointer;
  transition: transform 0.1s ease;
}

.mom-table__star:hover {
  transform: scale(1.1);
}

.mom-table__star svg {
  width: 18px;
  height: 18px;
}

.mom-table__star--filled {
  color: var(--yellow-9);
}

/* Actions cell */
.mom-table__cell--actions > div {
  justify-content: flex-end;
}

/* ================================================================== */
/*  Sizes                                                             */
/* ================================================================== */

.mom-table--sm th { height: 32px; padding: 8px 12px; font-size: 10px; }
.mom-table--sm td { height: 44px; padding: 12px; }
.mom-table--sm .mom-table__cell--lead .mom-avatar { width: 32px; height: 32px; }

.mom-table--lg th { height: 48px; padding: 12px 20px; }
.mom-table--lg td { height: 64px; padding: 16px 20px; }
.mom-table--lg .mom-table__cell--lead .mom-avatar { width: 48px; height: 48px; }

/* ================================================================== */
/*  Variants                                                          */
/* ================================================================== */

.mom-table--bordered th,
.mom-table--bordered td {
  border: 1px solid var(--border-subtle);
}

.mom-table--minimal {
  border: none;
  border-radius: 0;
}

/* ================================================================== */
/*  Responsive                                                        */
/* ================================================================== */

@media (max-width: 768px) {
  .mom-table th,
  .mom-table td {
    padding: 12px;
  }
}


/* ── system/components/tabs/tabs.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Tabs Component                              */
/*  Content section switcher with line, pill, or enclosed variants   */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-tabs {
  display: flex;
  gap: 0;
  font-family: var(--font-sans);
}

.mom-tab {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-2) var(--space-4);
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-secondary);
  background: transparent;
  border: none;
  border-radius: 0;
  cursor: pointer;
  transition:
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    border-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-instant, 0.08s) var(--ease-spring-subtle, ease);
  position: relative;
}

.mom-tab:hover {
  color: var(--text-primary);
  transform: translateY(-1px);
}

.mom-tab:active {
  transform: translateY(0) scale(0.98);
}

.mom-tab:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
}

/* ================================================================== */
/*  Variant: Line                                                      */
/* ================================================================== */

.mom-tabs--line {
  border-bottom: 1px solid var(--border);
  position: relative;
}

.mom-tabs--line .mom-tab {
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  position: relative;
}

/* Animated underline indicator */
.mom-tabs--line::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 0;
  height: 2px;
  background: var(--accent);
  transition: transform var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)),
              width var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
  transform-origin: left;
  pointer-events: none;
}

.mom-tabs--line .mom-tab--active {
  color: var(--accent);
  border-bottom-color: var(--accent);
  animation: mom-tab-active-pulse var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
}

@keyframes mom-tab-active-pulse {
  0% { background: transparent; }
  50% { background: rgba(20, 184, 166, 0.08); }
  100% { background: transparent; }
}

/* ================================================================== */
/*  Variant: Pill                                                       */
/* ================================================================== */

.mom-tabs--pill {
  gap: var(--space-1);
  position: relative;
}

.mom-tabs--pill .mom-tab {
  border-radius: var(--radius-full);
  transition:
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    background-color var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)),
    transform var(--duration-instant, 0.08s) var(--ease-spring-subtle, ease);
}

.mom-tabs--pill .mom-tab--active {
  background: var(--accent);
  color: var(--accent-fg);
  animation: mom-tab-pill-active var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-tab-pill-active {
  0% { transform: scale(0.95); }
  50% { transform: scale(1.05); }
  100% { transform: scale(1); }
}

/* Sliding pill background indicator */
.mom-tabs--pill::before {
  content: '';
  position: absolute;
  background: var(--accent);
  border-radius: var(--radius-full);
  z-index: -1;
  transition: transform var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)),
              width var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
  pointer-events: none;
}

/* ================================================================== */
/*  Variant: Enclosed                                                   */
/* ================================================================== */

.mom-tabs--enclosed {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
}

.mom-tabs--enclosed .mom-tab {
  border-bottom: 2px solid var(--border);
  border-radius: 0;
}

.mom-tabs--enclosed .mom-tab--active {
  background: var(--bg);
  color: var(--text-primary);
  border-bottom-color: transparent;
}

/* ================================================================== */
/*  Sizes                                                               */
/* ================================================================== */

.mom-tabs--sm .mom-tab {
  padding: var(--space-1) var(--space-3);
  font-size: var(--font-size-xs);
}

.mom-tabs--md .mom-tab {
  padding: var(--space-2) var(--space-4);
  font-size: var(--font-size-sm);
}

.mom-tabs--lg .mom-tab {
  padding: var(--space-3) var(--space-5);
  font-size: var(--font-size-base);
}

/* ================================================================== */
/*  Tab Content Transitions                                            */
/* ================================================================== */

.mom-tab-panel {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity var(--duration-normal, 0.25s) var(--ease-out-quart, ease),
              transform var(--duration-normal, 0.25s) var(--ease-out-expo, ease);
}

.mom-tab-panel--active {
  opacity: 1;
  transform: translateY(0);
  animation: mom-tab-panel-in var(--duration-normal, 0.25s) var(--ease-out-expo, ease);
}

@keyframes mom-tab-panel-in {
  0% {
    opacity: 0;
    transform: translateY(8px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Staggered content inside panels */
.mom-tab-panel--active > * {
  opacity: 0;
  animation: mom-tab-content-in var(--duration-normal, 0.25s) var(--ease-out-expo, ease) forwards;
}

.mom-tab-panel--active > *:nth-child(1) { animation-delay: 0.03s; }
.mom-tab-panel--active > *:nth-child(2) { animation-delay: 0.06s; }
.mom-tab-panel--active > *:nth-child(3) { animation-delay: 0.09s; }
.mom-tab-panel--active > *:nth-child(4) { animation-delay: 0.12s; }

@keyframes mom-tab-content-in {
  0% {
    opacity: 0;
    transform: translateY(6px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}


/* ── system/components/tag/tag.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Tag Component                                */
/*  Figma nodes: 677:27030 · 677:27041 · 677:27052                    */
/* ================================================================== */

.mom-tag {
  --tag-bg: var(--surface-hover);
  --tag-border: var(--border);
  --tag-label: var(--text-primary);
  --tag-count-bg: var(--surface);
  --tag-count-text: var(--text-secondary);
  --tag-xclose-hover:  color-mix(in srgb, currentColor 8%, transparent);
  --tag-xclose-active: color-mix(in srgb, currentColor 14%, transparent);

  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-0-5);
  border-radius: var(--radius-md);
  border: 1px solid var(--tag-border);
  background: var(--tag-bg);
  color: var(--tag-label);
  font-family: var(--font-sans);
  font-weight: var(--font-medium);
  white-space: nowrap;
  flex-shrink: 0;
  box-shadow: var(--shadow-xs);
}

.mom-tag__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.mom-tag__icon svg {
  width: 100%;
  height: 100%;
}

.mom-tag__label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  flex-shrink: 0;
}

.mom-tag__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--radius-sm);
  background: var(--tag-count-bg);
  color: var(--tag-count-text);
  flex-shrink: 0;
}

/* ------------------------------------------------------------------ */
/*  X-close button — matches Figma nodes 677:27085/27088/27091        */
/*  Default: transparent bg, 3px radius                               */
/*  Hover:   subtle currentColor overlay (8%)                         */
/*  Active:  stronger currentColor overlay (14%)                      */
/*  Focus:   system accent ring (--ring-width / --ring-color-accent-subtle) */
/* ------------------------------------------------------------------ */

.mom-tag__xclose {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  border-radius: 3px;
  background: transparent;
  color: inherit;
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
}

.mom-tag__xclose:hover,
.mom-tag__xclose.force-hover {
  background: var(--tag-xclose-hover);
}

.mom-tag__xclose:active {
  background: var(--tag-xclose-active);
}

.mom-tag__xclose:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent-subtle);
  outline-offset: var(--ring-offset);
}

.mom-tag__xclose-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.mom-tag__xclose-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* ------------------------------------------------------------------ */
/*  Light mode token overrides (766:28766 · 766:28796 · 766:28802)   */
/*  bg/border/count-bg switch to dark-alpha Radix steps.              */
/*  label + count-text inherit from --text-primary/secondary in theme. */
/*  xclose hover uses color-mix(currentColor) — auto-adapts.          */
/* ------------------------------------------------------------------ */

:root.light {
  --tag-bg:       var(--gray-a3);   /* ~6% dark alpha  — subtle pill surface */
  --tag-border:   var(--gray-a5);   /* ~12% dark alpha — visible border      */
  --tag-count-bg: var(--gray-a3);   /* same as tag-bg (Figma shares token)   */
}

/* Compose existing Checkbox and Avatar components inside Tag */
.mom-tag .mom-tag__checkbox {
  display: inline-flex;
  align-items: center;
  gap: 0;
  margin: 0;
  cursor: default;
  flex-shrink: 0;
}

.mom-tag .mom-tag__checkbox .mom-checkbox__box {
  margin-top: 0;
  box-shadow: none;
}

.mom-tag .mom-tag__avatar {
  color: white;
  background: var(--gray-9);
  box-shadow: none;
}

/* ------------------------------------------------------------------ */
/*  Size: sm (677:27030)                                              */
/*  h=24px  pl=5px  pr=4px  py=3px  gap=2px                          */
/* ------------------------------------------------------------------ */

.mom-tag--sm {
  height: 24px;
  padding: 3px var(--space-1) 3px 5px;
}

.mom-tag--sm .mom-tag__checkbox .mom-checkbox__box { width: 14px; height: 14px; }
.mom-tag--sm .mom-tag__icon  { width: 14px; height: 14px; }
.mom-tag--sm .mom-tag__avatar { width: var(--space-4); height: var(--space-4); }
.mom-tag--sm .mom-tag__label { padding: 0 var(--space-1); font-size: var(--font-size-xs); line-height: var(--line-height-sm); }
.mom-tag--sm .mom-tag__count { padding: 0 var(--space-1); font-size: var(--font-size-xs); line-height: var(--line-height-sm); min-height: var(--space-4); }
.mom-tag--sm .mom-tag__xclose { padding: var(--space-0-5); }
.mom-tag--sm .mom-tag__xclose-icon { width: var(--space-2-5); height: var(--space-2-5); }
.mom-tag--sm .mom-tag__avatar .mom-avatar__icon { width: 70%; height: 70%; }

/* ------------------------------------------------------------------ */
/*  Size: md (677:27041)                                              */
/*  h=24px  pl=4px  pr=3px  py=2px  gap=2px                          */
/* ------------------------------------------------------------------ */

.mom-tag--md {
  height: 24px;
  padding: var(--space-0-5) 3px var(--space-0-5) var(--space-1);
}

.mom-tag--md .mom-tag__checkbox .mom-checkbox__box { width: var(--space-4); height: var(--space-4); }
.mom-tag--md .mom-tag__icon  { width: var(--space-4); height: var(--space-4); }
.mom-tag--md .mom-tag__avatar { width: 18px; height: 18px; }
.mom-tag--md .mom-tag__label { padding: 0 var(--space-1); font-size: var(--font-size-sm); line-height: var(--line-height-sm); }
.mom-tag--md .mom-tag__count { padding: 0 5px; font-size: var(--font-size-xs); line-height: var(--line-height-sm); min-height: 18px; }
.mom-tag--md .mom-tag__xclose { padding: var(--space-0-5); }
.mom-tag--md .mom-tag__xclose-icon { width: var(--space-3); height: var(--space-3); }
.mom-tag--md .mom-tag__avatar .mom-avatar__icon { width: 70%; height: 70%; }

/* ------------------------------------------------------------------ */
/*  Size: lg (677:27052)                                              */
/*  h=28px  pl=5px  pr=4px  py=4px  gap=2px                          */
/* ------------------------------------------------------------------ */

.mom-tag--lg {
  height: 28px;
  padding: var(--space-1) var(--space-1) var(--space-1) 5px;
}

.mom-tag--lg .mom-tag__checkbox .mom-checkbox__box { width: 18px; height: 18px; }
.mom-tag--lg .mom-tag__icon  { width: 18px; height: 18px; }
.mom-tag--lg .mom-tag__avatar { width: var(--space-5); height: var(--space-5); }
.mom-tag--lg .mom-tag__label { padding: 0 var(--space-1); font-size: var(--font-size-sm); line-height: var(--line-height-sm); }
.mom-tag--lg .mom-tag__count { padding: 0 var(--space-1-5); font-size: var(--font-size-sm); line-height: var(--line-height-sm); min-height: var(--space-5); }
.mom-tag--lg .mom-tag__xclose { padding: 3px; }
.mom-tag--lg .mom-tag__xclose-icon { width: var(--space-3-5); height: var(--space-3-5); }
.mom-tag--lg .mom-tag__avatar .mom-avatar__icon { width: 70%; height: 70%; }


/* ── system/components/textarea/textarea.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Textarea Component                            */
/*  Derivative of Input — shares Label · Helper tokens from input.css  */
/* ================================================================== */

/* ================================================================== */
/*  Wrapper                                                            */
/* ================================================================== */

.mom-textarea-wrapper {
  display: inline-flex;
  flex-direction: column;
  gap: var(--space-1-5);
  width: 100%;
  max-width: 460px;
}

/* ================================================================== */
/*  Field (the bordered container around textarea + counter)           */
/* ================================================================== */

.mom-textarea__field {
  display: flex;
  flex-direction: column;
  background: var(--input-field-bg);
  border: 1px solid var(--input-field-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--input-field-shadow);
  transition: background 0.15s ease, border-color 0.15s ease;
  box-sizing: border-box;
  overflow: hidden;
}

/* Hover */
.mom-textarea__field:hover,
.mom-textarea-wrapper--hover .mom-textarea__field {
  background: var(--input-field-bg-hover);
  border-color: var(--input-field-border-hover);
}

/* Focus */
.mom-textarea__field:focus-within,
.mom-textarea-wrapper--focus .mom-textarea__field {
  background: var(--input-field-bg);
  border-color: var(--input-field-border-focus);
}

/* Error */
.mom-textarea-wrapper--error .mom-textarea__field {
  background: var(--input-field-bg-error);
  border-color: var(--input-field-border-error);
  box-shadow: var(--input-field-shadow);
}

/* Disabled */
.mom-textarea-wrapper--disabled .mom-textarea__field {
  background: var(--input-field-bg-disabled);
  border-color: var(--input-field-border-disabled);
  box-shadow: none;
  pointer-events: none;
}

/* ================================================================== */
/*  Textarea element                                                    */
/* ================================================================== */

.mom-textarea {
  flex: 1;
  min-width: 0;
  border: none;
  background: transparent;
  font-family: var(--font-sans);
  font-size: var(--font-size-base);
  font-weight: var(--font-regular);
  line-height: var(--line-height-base);
  color: var(--input-text-placeholder);
  padding: var(--space-2-5) var(--space-3);
  outline: none;
  resize: vertical;
  caret-color: var(--input-field-border-focus);
  display: block;
  width: 100%;
  box-sizing: border-box;
}

.mom-textarea::placeholder {
  color: var(--input-text-placeholder);
}

/* Hover placeholder */
.mom-textarea-wrapper--hover .mom-textarea::placeholder {
  color: var(--input-text-hover);
}

/* Filled / typing → white text */
.mom-textarea-wrapper--typing .mom-textarea,
.mom-textarea-wrapper--filled .mom-textarea {
  color: var(--input-text-filled);
}

/* Disabled */
.mom-textarea-wrapper--disabled .mom-textarea {
  color: var(--input-text-disabled);
  cursor: not-allowed;
  resize: none;
}

/* No-resize modifier */
.mom-textarea-wrapper--no-resize .mom-textarea {
  resize: none;
}

/* Both-axis resize modifier */
.mom-textarea-wrapper--resize-both .mom-textarea {
  resize: both;
}

/* ================================================================== */
/*  Footer row (character counter)                                     */
/* ================================================================== */

.mom-textarea__footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: var(--space-1) var(--space-3) var(--space-2);
  gap: var(--space-2);
}

.mom-textarea__counter {
  font-size: var(--font-size-xs);
  font-weight: var(--font-regular);
  line-height: var(--line-height-xs);
  color: var(--input-leading-text);
  white-space: nowrap;
}

.mom-textarea__counter--over {
  color: var(--helper-error-color);
  font-weight: var(--font-medium);
}

.mom-textarea-wrapper--disabled .mom-textarea__counter {
  color: var(--label-disabled-color);
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-textarea-wrapper--sm .mom-textarea {
  min-height: 80px;
  font-size: var(--font-size-sm);
  line-height: var(--line-height-sm);
  padding: var(--space-2) var(--space-3);
}

.mom-textarea-wrapper--md .mom-textarea {
  min-height: 120px;
}

.mom-textarea-wrapper--lg .mom-textarea {
  min-height: 180px;
}


/* ── system/components/toast/toast.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Toast Component                               */
/*  Auto-dismissing notifications with proper fixed positioning        */
/* ================================================================== */

/* ================================================================== */
/*  Toast Item                                                         */
/* ================================================================== */

.mom-toast {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: var(--space-3);
  width: 100%;
  max-width: 400px;
  min-width: 300px;
  padding: var(--space-3) var(--space-4);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  box-shadow: var(--shadow-xl);
  pointer-events: auto;
  overflow: hidden;

  /* Enter animation - starts off-screen with spring */
  opacity: 0;
  transform: translateX(100%);
  transition:
    opacity var(--duration-normal, 0.25s) var(--ease-out-quart, ease),
    transform var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
  will-change: transform, opacity;
}

/* Hover effect - subtle lift */
.mom-toast:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-xl), 0 8px 24px rgba(0, 0, 0, 0.12);
  transition:
    opacity var(--duration-normal, 0.25s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring-subtle, cubic-bezier(0.175, 0.885, 0.32, 1.275)),
    box-shadow var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

/* Entered state - visible with bounce */
.mom-toast--entering {
  opacity: 1;
  transform: translateX(0);
  animation: mom-toast-enter var(--duration-slow, 0.4s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-toast-enter {
  0% {
    opacity: 0;
    transform: translateX(100%);
  }
  60% {
    transform: translateX(-4px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

/* Content stagger animation */
.mom-toast--entering .mom-toast__icon {
  animation: mom-toast-icon-in var(--duration-normal, 0.25s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1)) 0.1s both;
}

.mom-toast--entering .mom-toast__content {
  animation: mom-toast-content-in var(--duration-normal, 0.25s) var(--ease-out-expo, ease) 0.15s both;
}

@keyframes mom-toast-icon-in {
  0% {
    opacity: 0;
    transform: scale(0) rotate(-45deg);
  }
  50% {
    transform: scale(1.1) rotate(5deg);
  }
  100% {
    opacity: 1;
    transform: scale(1) rotate(0);
  }
}

@keyframes mom-toast-content-in {
  0% {
    opacity: 0;
    transform: translateY(8px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Exit animation with slide out */
.mom-toast--exiting {
  opacity: 0;
  transform: translateX(100%);
  transition:
    opacity var(--duration-fast, 0.15s) var(--ease-in-out-quart, ease),
    transform var(--duration-normal, 0.25s) var(--ease-out-expo, ease);
  pointer-events: none;
}

/* ================================================================== */
/*  Color Variants                                                     */
/* ================================================================== */

.mom-toast--info {
  border-color: var(--blue-a4);
  background: linear-gradient(135deg, var(--blue-1) 0%, var(--surface) 100%);
}
.mom-toast--info .mom-toast__icon { color: var(--blue-11); }
.mom-toast--info .mom-toast__progress-bar { background: var(--blue-9); }

.mom-toast--success {
  border-color: var(--teal-a4);
  background: linear-gradient(135deg, var(--teal-1) 0%, var(--surface) 100%);
}
.mom-toast--success .mom-toast__icon { color: var(--teal-11); }
.mom-toast--success .mom-toast__progress-bar { background: var(--teal-9); }

.mom-toast--warning {
  border-color: var(--amber-a4);
  background: linear-gradient(135deg, var(--amber-1) 0%, var(--surface) 100%);
}
.mom-toast--warning .mom-toast__icon { color: var(--amber-11); }
.mom-toast--warning .mom-toast__progress-bar { background: var(--amber-9); }

.mom-toast--error {
  border-color: var(--red-a4);
  background: linear-gradient(135deg, var(--red-1) 0%, var(--surface) 100%);
}
.mom-toast--error .mom-toast__icon { color: var(--red-11); }
.mom-toast--error .mom-toast__progress-bar { background: var(--red-9); }

/* ================================================================== */
/*  Icon                                                               */
/* ================================================================== */

.mom-toast__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  color: var(--text-muted);
  margin-top: 2px;
}

.mom-toast__icon svg {
  width: 20px;
  height: 20px;
}

/* ================================================================== */
/*  Content                                                            */
/* ================================================================== */

.mom-toast__content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.mom-toast__title {
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--text-primary);
  margin: 0;
}

.mom-toast__message {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--text-secondary);
  margin: 0;
}

/* ================================================================== */
/*  Actions                                                            */
/* ================================================================== */

.mom-toast__actions {
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-top: var(--space-2);
}

.mom-toast__action {
  font-size: var(--font-size-sm);
  font-weight: var(--font-semibold);
  line-height: var(--line-height-sm);
  color: var(--accent);
  text-decoration: none;
  cursor: pointer;
  background: none;
  border: none;
  padding: 0;
  transition: opacity 0.15s ease;
}

.mom-toast__action:hover {
  opacity: 0.8;
  text-decoration: underline;
}

/* ================================================================== */
/*  Close Button                                                       */
/* ================================================================== */

.mom-toast__close {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-6);
  height: var(--space-6);
  margin: calc(var(--space-1) * -1);
  margin-left: 0;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: var(--radius-md);
  color: var(--text-muted);
  cursor: pointer;
  transition:
    color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    background-color var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-instant, 0.08s) var(--ease-spring-subtle, ease);
}

.mom-toast__close:hover {
  color: var(--text-primary);
  background: var(--surface-hover);
  transform: scale(1.1);
}

.mom-toast__close:active {
  transform: scale(0.95);
}

.mom-toast__close:hover {
  color: var(--text-primary);
  background: var(--surface-hover);
}

.mom-toast__close svg {
  width: 16px;
  height: 16px;
}

/* ================================================================== */
/*  Progress Bar                                                       */
/* ================================================================== */

.mom-toast__progress {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 3px;
  background: var(--border-subtle);
  border-radius: 0 0 var(--radius-xl) var(--radius-xl);
  overflow: hidden;
}

.mom-toast__progress-bar {
  height: 100%;
  background: var(--accent);
  transform-origin: left;
  animation: mom-toast-progress linear forwards;
}

/* Pause animation when hovering */
.mom-toast:hover .mom-toast__progress-bar {
  animation-play-state: paused;
}

@keyframes mom-toast-progress {
  from { transform: scaleX(1); }
  to { transform: scaleX(0); }
}

/* ================================================================== */
/*  Persistent (no progress bar)                                       */
/* ================================================================== */

.mom-toast--persistent .mom-toast__progress {
  display: none;
}

/* ================================================================== */
/*  Reduced Motion                                                     */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .mom-toast {
    transition: none;
    transform: none;
  }
  
  .mom-toast--entering,
  .mom-toast--exiting {
    opacity: 1;
    transform: none;
  }
  
  .mom-toast--exiting {
    display: none;
  }
  
  .mom-toast__progress-bar {
    animation: none;
    transform: scaleX(0);
  }
}


/* ── system/components/toggle/toggle.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Toggle / Switch Component                   */
/*  On/off switch control                                              */
/* ================================================================== */

/* ================================================================== */
/*  Base                                                               */
/* ================================================================== */

.mom-toggle {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--space-2);
  cursor: pointer;
  position: relative;
}

.mom-toggle input[type="checkbox"] {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

.mom-toggle__track {
  position: relative;
  flex-shrink: 0;
  background: var(--toggle-bg);
  border-radius: var(--radius-full);
  transition:
    background-color var(--duration-normal, 0.25s) var(--ease-out-quart, ease),
    box-shadow var(--duration-normal, 0.25s) var(--ease-out-quart, ease);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.24);
  overflow: hidden;
}

/* Glow effect on hover */
.mom-toggle:hover:not(.mom-toggle--disabled) .mom-toggle__track {
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.24), 0 0 0 3px rgba(20, 184, 166, 0.1);
}

.mom-toggle--checked:hover:not(.mom-toggle--disabled) .mom-toggle__track,
.mom-toggle input:checked:hover + .mom-toggle__track {
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.24), 0 0 0 4px rgba(20, 184, 166, 0.15);
}

.mom-toggle__thumb {
  position: absolute;
  top: var(--space-0-5);
  left: var(--space-0-5);
  border-radius: var(--radius-full);
  background: white;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.35), 0 1px 2px rgba(0, 0, 0, 0.25);
  transition: transform var(--duration-normal, 0.25s) var(--ease-elastic, cubic-bezier(0.68, -0.6, 0.32, 1.6));
  will-change: transform;
}

/* Thumb pressed state */
.mom-toggle:active .mom-toggle__thumb {
  transform: scaleX(1.15);
  transition: transform var(--duration-fast, 0.15s) var(--ease-out-quart, ease);
}

/* ================================================================== */
/*  Text block                                                         */
/* ================================================================== */

.mom-toggle__text {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.mom-toggle__label {
  font-size: var(--font-size-sm);
  font-weight: var(--font-medium);
  color: var(--text-primary);
  line-height: var(--line-height-sm);
}

.mom-toggle__helper {
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  color: var(--text-muted);
  line-height: var(--line-height-sm);
}

/* ================================================================== */
/*  Sizes                                                              */
/* ================================================================== */

.mom-toggle--sm .mom-toggle__track {
  width: var(--space-9);
  height: var(--space-5);
}

.mom-toggle--sm .mom-toggle__thumb {
  width: var(--space-4);
  height: var(--space-4);
}

/* md: wider track + 12px gap + base typography */
.mom-toggle--md {
  gap: var(--space-3);
}

.mom-toggle--md .mom-toggle__track {
  width: var(--space-11);
  height: var(--space-6);
}

.mom-toggle--md .mom-toggle__thumb {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-toggle--md .mom-toggle__text {
  gap: var(--space-0-5);
}

.mom-toggle--md .mom-toggle__label {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}

.mom-toggle--md .mom-toggle__helper {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}

/* ================================================================== */
/*  Focus state                                                        */
/* ================================================================== */

.mom-toggle input:focus-visible + .mom-toggle__track {
  box-shadow: var(--toggle-ring), inset 0 1px 2px rgba(0, 0, 0, 0.24);
}

/* ================================================================== */
/*  Checked state                                                      */
/* ================================================================== */

.mom-toggle--checked .mom-toggle__track,
.mom-toggle input:checked + .mom-toggle__track {
  background: var(--switch-checked-bg);
}

.mom-toggle--sm.mom-toggle--checked .mom-toggle__thumb,
.mom-toggle--sm input:checked + .mom-toggle__track .mom-toggle__thumb {
  transform: translateX(var(--space-4));
  animation: mom-toggle-thumb-snap-sm var(--duration-normal, 0.25s) var(--ease-elastic, cubic-bezier(0.68, -0.6, 0.32, 1.6));
}

@keyframes mom-toggle-thumb-snap-sm {
  0% { transform: translateX(0) scaleX(1); }
  40% { transform: translateX(calc(var(--space-4) + 2px)) scaleX(1.1); }
  70% { transform: translateX(calc(var(--space-4) - 1px)) scaleX(0.95); }
  100% { transform: translateX(var(--space-4)) scaleX(1); }
}

.mom-toggle--md.mom-toggle--checked .mom-toggle__thumb,
.mom-toggle--md input:checked + .mom-toggle__track .mom-toggle__thumb {
  transform: translateX(var(--space-5));
  animation: mom-toggle-thumb-snap-md var(--duration-normal, 0.25s) var(--ease-elastic, cubic-bezier(0.68, -0.6, 0.32, 1.6));
}

@keyframes mom-toggle-thumb-snap-md {
  0% { transform: translateX(0) scaleX(1); }
  40% { transform: translateX(calc(var(--space-5) + 3px)) scaleX(1.1); }
  70% { transform: translateX(calc(var(--space-5) - 1px)) scaleX(0.95); }
  100% { transform: translateX(var(--space-5)) scaleX(1); }
}

/* Unchecked animation (return to left) */
.mom-toggle--sm:not(.mom-toggle--checked) .mom-toggle__thumb:not(:active) {
  animation: mom-toggle-thumb-return-sm var(--duration-normal, 0.25s) var(--ease-elastic, cubic-bezier(0.68, -0.6, 0.32, 1.6));
}

.mom-toggle--md:not(.mom-toggle--checked) .mom-toggle__thumb:not(:active) {
  animation: mom-toggle-thumb-return-md var(--duration-normal, 0.25s) var(--ease-elastic, cubic-bezier(0.68, -0.6, 0.32, 1.6));
}

@keyframes mom-toggle-thumb-return-sm {
  0% { transform: translateX(var(--space-4)) scaleX(1); }
  40% { transform: translateX(-2px) scaleX(1.1); }
  70% { transform: translateX(1px) scaleX(0.95); }
  100% { transform: translateX(0) scaleX(1); }
}

@keyframes mom-toggle-thumb-return-md {
  0% { transform: translateX(var(--space-5)) scaleX(1); }
  40% { transform: translateX(-3px) scaleX(1.1); }
  70% { transform: translateX(1px) scaleX(0.95); }
  100% { transform: translateX(0) scaleX(1); }
}

/* ================================================================== */
/*  Disabled state                                                     */
/* ================================================================== */

.mom-toggle--disabled {
  cursor: not-allowed;
  pointer-events: none;
}

.mom-toggle--disabled .mom-toggle__track {
  background: var(--toggle-disabled-bg);
  box-shadow: none;
}

.mom-toggle--disabled .mom-toggle__thumb {
  box-shadow: none;
  opacity: 0.5;
}

.mom-toggle--disabled .mom-toggle__label,
.mom-toggle--disabled .mom-toggle__helper {
  opacity: 0.38;
}


/* ── system/components/tooltip/tooltip.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Tooltip Component                           */
/*  Figma nodes: 715:18558 (dark) · 766:30820 (light)               */
/*  No tail — content-only floating label                             */
/* ================================================================== */

/* ------------------------------------------------------------------ */
/*  Component tokens — :root so slider / progress can reuse them      */
/* ------------------------------------------------------------------ */

:root {
  --tooltip-bg:     var(--elevation-40);
  --tooltip-border: rgba(226, 240, 253, 0.08);
  --tooltip-shadow:
    0px 8px 12px -4px rgba(0, 0, 0, 0.08),
    inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.12),
    inset 0px -0.5px 0px 0px rgba(0, 0, 0, 0.40);
}

:root.light {
  --tooltip-border: var(--gray-a5);
  --tooltip-shadow:
    0px 8px 16px -4px rgba(0, 0, 0, 0.08),
    inset 0px 0.5px 0px 0px rgba(255, 255, 255, 0.40),
    inset 0px -0.5px 0px 0px rgba(0, 0, 0, 0.04);
}

/* ------------------------------------------------------------------ */
/*  Wrapper — inline-flex to hug the trigger                          */
/* ------------------------------------------------------------------ */

.mom-tooltip {
  position: relative;
  display: inline-flex;
}

/* ------------------------------------------------------------------ */
/*  Content bubble                                                     */
/* ------------------------------------------------------------------ */

.mom-tooltip__content {
  position: absolute;
  z-index: 100;
  padding: var(--space-2);
  background: var(--tooltip-bg);
  border: 1px solid var(--tooltip-border);
  border-radius: var(--radius-md);
  box-shadow: var(--tooltip-shadow);
  font-family: var(--font-sans);
  font-size: var(--font-size-xs);
  font-weight: var(--font-semibold);
  color: var(--text-primary);
  line-height: var(--line-height-xs);
  width: max-content;
  max-width: 200px;
  white-space: normal;
  text-align: center;
  opacity: 0;
  visibility: hidden;
  transform: scale(0.9);
  transition:
    opacity var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    visibility var(--duration-fast, 0.15s) var(--ease-out-quart, ease),
    transform var(--duration-fast, 0.15s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
  pointer-events: none;
  will-change: transform, opacity;
}

.mom-tooltip:hover .mom-tooltip__content {
  opacity: 1;
  visibility: visible;
  transform: scale(1);
  animation: mom-tooltip-pop var(--duration-fast, 0.2s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-tooltip-pop {
  0% {
    transform: scale(0.9);
    opacity: 0;
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
    opacity: 1;
  }
}

/* ------------------------------------------------------------------ */
/*  Position: Top                                                      */
/* ------------------------------------------------------------------ */

.mom-tooltip--top .mom-tooltip__content {
  bottom: 100%;
  left: 50%;
  margin-bottom: var(--space-2);
  transform: translateX(-50%) translateY(4px) scale(0.9);
}

.mom-tooltip--top:hover .mom-tooltip__content {
  transform: translateX(-50%) translateY(0) scale(1);
  animation: mom-tooltip-pop-top var(--duration-fast, 0.2s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-tooltip-pop-top {
  0% { transform: translateX(-50%) translateY(4px) scale(0.9); opacity: 0; }
  50% { transform: translateX(-50%) translateY(-2px) scale(1.05); }
  100% { transform: translateX(-50%) translateY(0) scale(1); opacity: 1; }
}

/* ------------------------------------------------------------------ */
/*  Position: Right                                                    */
/* ------------------------------------------------------------------ */

.mom-tooltip--right .mom-tooltip__content {
  top: 50%;
  left: 100%;
  margin-left: var(--space-2);
  transform: translateY(-50%) translateX(-4px) scale(0.9);
}

.mom-tooltip--right:hover .mom-tooltip__content {
  transform: translateY(-50%) translateX(0) scale(1);
  animation: mom-tooltip-pop-right var(--duration-fast, 0.2s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-tooltip-pop-right {
  0% { transform: translateY(-50%) translateX(-4px) scale(0.9); opacity: 0; }
  50% { transform: translateY(-50%) translateX(2px) scale(1.05); }
  100% { transform: translateY(-50%) translateX(0) scale(1); opacity: 1; }
}

/* ------------------------------------------------------------------ */
/*  Position: Bottom                                                   */
/* ------------------------------------------------------------------ */

.mom-tooltip--bottom .mom-tooltip__content {
  top: 100%;
  left: 50%;
  margin-top: var(--space-2);
  transform: translateX(-50%) translateY(-4px) scale(0.9);
}

.mom-tooltip--bottom:hover .mom-tooltip__content {
  transform: translateX(-50%) translateY(0) scale(1);
  animation: mom-tooltip-pop-bottom var(--duration-fast, 0.2s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-tooltip-pop-bottom {
  0% { transform: translateX(-50%) translateY(-4px) scale(0.9); opacity: 0; }
  50% { transform: translateX(-50%) translateY(2px) scale(1.05); }
  100% { transform: translateX(-50%) translateY(0) scale(1); opacity: 1; }
}

/* ------------------------------------------------------------------ */
/*  Position: Left                                                     */
/* ------------------------------------------------------------------ */

.mom-tooltip--left .mom-tooltip__content {
  top: 50%;
  right: 100%;
  margin-right: var(--space-2);
  transform: translateY(-50%) translateX(4px) scale(0.9);
}

.mom-tooltip--left:hover .mom-tooltip__content {
  transform: translateY(-50%) translateX(0) scale(1);
  animation: mom-tooltip-pop-left var(--duration-fast, 0.2s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
}

@keyframes mom-tooltip-pop-left {
  0% { transform: translateY(-50%) translateX(4px) scale(0.9); opacity: 0; }
  50% { transform: translateY(-50%) translateX(-2px) scale(1.05); }
  100% { transform: translateY(-50%) translateX(0) scale(1); opacity: 1; }
}

/* ------------------------------------------------------------------ */
/*  Light mode — tokens already redefined at :root.light above        */
/* ------------------------------------------------------------------ */


/* ── system/components/tree-view/tree-view.css ── */
/* ================================================================== */
/*  Mo~oM Design System, Tree View Component                          */
/*  Anatomy: Tree root · Tree item · Chevron · Icon · Label · Lines   */
/* ================================================================== */

/* ================================================================== */
/*  Component tokens                                                  */
/* ================================================================== */

:root {
  --tree-bg:                   transparent;
  --tree-item-color:           var(--text-primary);
  --tree-item-color-muted:     var(--text-secondary);
  --tree-item-bg-hover:        var(--surface-hover);
  --tree-item-bg-selected:     rgba(17, 255, 231, 0.08);
  --tree-item-border-selected: rgba(17, 255, 231, 0.37);
  --tree-icon-color:           var(--text-muted);
  --tree-icon-color-folder:    var(--teal-10);
  --tree-chevron-color:        var(--text-muted);
  --tree-line-color:           var(--border-subtle);
  --tree-indent:               var(--space-5);
  --tree-item-radius:          var(--radius-md);
}

/* ================================================================== */
/*  Light mode overrides                                              */
/* ================================================================== */

:root.light {
  --tree-item-bg-hover:        rgba(0, 0, 0, 0.04);
  --tree-item-bg-selected:     rgba(17, 255, 231, 0.06);
  --tree-item-border-selected: rgba(17, 255, 231, 0.37);
  --tree-line-color:           rgba(0, 0, 0, 0.10);
}

/* ================================================================== */
/*  Tree root                                                         */
/* ================================================================== */

.mom-tree-view {
  display: flex;
  flex-direction: column;
  width: 100%;
  font-family: var(--font-sans);
  background: var(--tree-bg);
  list-style: none;
  margin: 0;
  padding: 0;
}

/* ================================================================== */
/*  Nested groups                                                     */
/* ================================================================== */

.mom-tree-view__group {
  display: flex;
  flex-direction: column;
  list-style: none;
  margin: 0;
  padding: 0;
  padding-left: var(--tree-indent);
  position: relative;
}

/* Collapsed group */
.mom-tree-view__item--collapsed > .mom-tree-view__group {
  display: none;
}

/* ================================================================== */
/*  Tree item container                                               */
/* ================================================================== */

.mom-tree-view__item {
  display: flex;
  flex-direction: column;
  position: relative;
}

/* ================================================================== */
/*  Item row (clickable)                                              */
/* ================================================================== */

.mom-tree-view__item-row {
  display: flex;
  align-items: center;
  gap: var(--space-1-5);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--tree-item-radius);
  cursor: pointer;
  border: 1px solid transparent;
  background: transparent;
  text-decoration: none;
  transition:
    background-color var(--duration-fast, 0.15s) ease,
    border-color var(--duration-fast, 0.15s) ease;
  outline: none;
  font-family: inherit;
  width: 100%;
  text-align: left;
}

.mom-tree-view__item-row:hover {
  background: var(--tree-item-bg-hover);
}

.mom-tree-view__item-row:focus-visible {
  outline: var(--ring-width) solid var(--ring-color-accent);
  outline-offset: -1px;
}

.mom-tree-view__item-row:active {
  transform: scale(0.995);
}

/* Selected state */
.mom-tree-view__item--selected > .mom-tree-view__item-row {
  background: var(--tree-item-bg-selected);
  border-color: var(--tree-item-border-selected);
}

/* Disabled state */
.mom-tree-view__item--disabled > .mom-tree-view__item-row {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

/* ================================================================== */
/*  Chevron (expand/collapse)                                         */
/* ================================================================== */

.mom-tree-view__chevron {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
  color: var(--tree-chevron-color);
  transition: transform var(--duration-fast, 0.15s) var(--ease-spring, cubic-bezier(0.34, 1.56, 0.64, 1));
  transform: rotate(-90deg);
}

.mom-tree-view__chevron svg {
  width: var(--space-3);
  height: var(--space-3);
}

/* Expanded state: rotate to point down */
.mom-tree-view__item--expanded > .mom-tree-view__item-row .mom-tree-view__chevron {
  transform: rotate(0deg);
}

/* Spacer for leaf nodes (no chevron) */
.mom-tree-view__chevron-spacer {
  flex-shrink: 0;
  width: var(--space-4);
  height: var(--space-4);
}

/* ================================================================== */
/*  Icon (folder/file)                                                */
/* ================================================================== */

.mom-tree-view__icon {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: var(--space-4);
  height: var(--space-4);
  color: var(--tree-icon-color);
}

.mom-tree-view__icon svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-tree-view__icon--folder {
  color: var(--tree-icon-color-folder);
}

/* ================================================================== */
/*  Label                                                             */
/* ================================================================== */

.mom-tree-view__label {
  flex: 1;
  min-width: 0;
  font-size: var(--font-size-sm);
  font-weight: var(--font-regular);
  line-height: var(--line-height-sm);
  color: var(--tree-item-color);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Folder labels are slightly bolder */
.mom-tree-view__item--branch > .mom-tree-view__item-row .mom-tree-view__label {
  font-weight: var(--font-medium);
}

/* ================================================================== */
/*  Indent guide lines                                                */
/* ================================================================== */

.mom-tree-view--show-lines .mom-tree-view__group {
  position: relative;
}

.mom-tree-view--show-lines .mom-tree-view__group::before {
  content: '';
  position: absolute;
  top: 0;
  left: calc(var(--space-4) / 2);
  bottom: var(--space-3);
  width: 1px;
  background: var(--tree-line-color);
}

/* Horizontal connector for each item inside a group with lines */
.mom-tree-view--show-lines .mom-tree-view__group > .mom-tree-view__item > .mom-tree-view__item-row::before {
  content: '';
  position: absolute;
  left: calc(-1 * var(--tree-indent) + var(--space-4) / 2);
  top: 50%;
  width: calc(var(--tree-indent) - var(--space-4) / 2 - var(--space-1));
  height: 1px;
  background: var(--tree-line-color);
}

.mom-tree-view--show-lines .mom-tree-view__item-row {
  position: relative;
}

/* ================================================================== */
/*  Size variants                                                     */
/* ================================================================== */

/* ── Small ─────────────────────────────────────────────────────── */

.mom-tree-view--sm {
  --tree-indent: var(--space-4);
}

.mom-tree-view--sm .mom-tree-view__item-row {
  padding: var(--space-0-5) var(--space-1-5);
  gap: var(--space-1);
}

.mom-tree-view--sm .mom-tree-view__label {
  font-size: var(--font-size-xs);
  line-height: var(--line-height-xs);
}

.mom-tree-view--sm .mom-tree-view__chevron {
  width: var(--space-3);
  height: var(--space-3);
}

.mom-tree-view--sm .mom-tree-view__chevron svg {
  width: 10px;
  height: 10px;
}

.mom-tree-view--sm .mom-tree-view__chevron-spacer {
  width: var(--space-3);
  height: var(--space-3);
}

.mom-tree-view--sm .mom-tree-view__icon {
  width: var(--space-3-5);
  height: var(--space-3-5);
}

.mom-tree-view--sm .mom-tree-view__icon svg {
  width: var(--space-3-5);
  height: var(--space-3-5);
}

/* ── Medium (default) ──────────────────────────────────────────── */

.mom-tree-view--md {
  --tree-indent: var(--space-5);
}

/* ── Large ─────────────────────────────────────────────────────── */

.mom-tree-view--lg {
  --tree-indent: var(--space-6);
}

.mom-tree-view--lg .mom-tree-view__item-row {
  padding: var(--space-1-5) var(--space-2-5);
  gap: var(--space-2);
}

.mom-tree-view--lg .mom-tree-view__label {
  font-size: var(--font-size-base);
  line-height: var(--line-height-base);
}

.mom-tree-view--lg .mom-tree-view__chevron {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-tree-view--lg .mom-tree-view__chevron svg {
  width: var(--space-4);
  height: var(--space-4);
}

.mom-tree-view--lg .mom-tree-view__chevron-spacer {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-tree-view--lg .mom-tree-view__icon {
  width: var(--space-5);
  height: var(--space-5);
}

.mom-tree-view--lg .mom-tree-view__icon svg {
  width: var(--space-5);
  height: var(--space-5);
}

/* ================================================================== */
/*  Reduced motion support                                            */
/* ================================================================== */

@media (prefers-reduced-motion: reduce) {
  .mom-tree-view__chevron,
  .mom-tree-view__item-row {
    transition: none;
  }
}
