xtablo-source/backend/static/tailwind.css
Arthur Belleville 5d0c201e86
Some checks failed
backend-ci / Backend tests (pull_request) Failing after 53s
backend-ci / Backend tests (push) Failing after 1s
Some work
2026-05-23 17:26:01 +02:00

5580 lines
128 KiB
CSS

/*! tailwindcss v4.0.0 | MIT License | https://tailwindcss.com */
@layer theme, base, components, utilities;
@layer theme {
:root {
--font-sans: ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',
'Segoe UI Symbol', 'Noto Color Emoji';
--font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif;
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
'Courier New', monospace;
--color-red-50: oklch(0.971 0.013 17.38);
--color-red-100: oklch(0.936 0.032 17.717);
--color-red-200: oklch(0.885 0.062 18.334);
--color-red-300: oklch(0.808 0.114 19.571);
--color-red-400: oklch(0.704 0.191 22.216);
--color-red-500: oklch(0.637 0.237 25.331);
--color-red-600: oklch(0.577 0.245 27.325);
--color-red-700: oklch(0.505 0.213 27.518);
--color-red-800: oklch(0.444 0.177 26.899);
--color-red-900: oklch(0.396 0.141 25.723);
--color-red-950: oklch(0.258 0.092 26.042);
--color-orange-50: oklch(0.98 0.016 73.684);
--color-orange-100: oklch(0.954 0.038 75.164);
--color-orange-200: oklch(0.901 0.076 70.697);
--color-orange-300: oklch(0.837 0.128 66.29);
--color-orange-400: oklch(0.75 0.183 55.934);
--color-orange-500: oklch(0.705 0.213 47.604);
--color-orange-600: oklch(0.646 0.222 41.116);
--color-orange-700: oklch(0.553 0.195 38.402);
--color-orange-800: oklch(0.47 0.157 37.304);
--color-orange-900: oklch(0.408 0.123 38.172);
--color-orange-950: oklch(0.266 0.079 36.259);
--color-amber-50: oklch(0.987 0.022 95.277);
--color-amber-100: oklch(0.962 0.059 95.617);
--color-amber-200: oklch(0.924 0.12 95.746);
--color-amber-300: oklch(0.879 0.169 91.605);
--color-amber-400: oklch(0.828 0.189 84.429);
--color-amber-500: oklch(0.769 0.188 70.08);
--color-amber-600: oklch(0.666 0.179 58.318);
--color-amber-700: oklch(0.555 0.163 48.998);
--color-amber-800: oklch(0.473 0.137 46.201);
--color-amber-900: oklch(0.414 0.112 45.904);
--color-amber-950: oklch(0.279 0.077 45.635);
--color-yellow-50: oklch(0.987 0.026 102.212);
--color-yellow-100: oklch(0.973 0.071 103.193);
--color-yellow-200: oklch(0.945 0.129 101.54);
--color-yellow-300: oklch(0.905 0.182 98.111);
--color-yellow-400: oklch(0.852 0.199 91.936);
--color-yellow-500: oklch(0.795 0.184 86.047);
--color-yellow-600: oklch(0.681 0.162 75.834);
--color-yellow-700: oklch(0.554 0.135 66.442);
--color-yellow-800: oklch(0.476 0.114 61.907);
--color-yellow-900: oklch(0.421 0.095 57.708);
--color-yellow-950: oklch(0.286 0.066 53.813);
--color-lime-50: oklch(0.986 0.031 120.757);
--color-lime-100: oklch(0.967 0.067 122.328);
--color-lime-200: oklch(0.938 0.127 124.321);
--color-lime-300: oklch(0.897 0.196 126.665);
--color-lime-400: oklch(0.841 0.238 128.85);
--color-lime-500: oklch(0.768 0.233 130.85);
--color-lime-600: oklch(0.648 0.2 131.684);
--color-lime-700: oklch(0.532 0.157 131.589);
--color-lime-800: oklch(0.453 0.124 130.933);
--color-lime-900: oklch(0.405 0.101 131.063);
--color-lime-950: oklch(0.274 0.072 132.109);
--color-green-50: oklch(0.982 0.018 155.826);
--color-green-100: oklch(0.962 0.044 156.743);
--color-green-200: oklch(0.925 0.084 155.995);
--color-green-300: oklch(0.871 0.15 154.449);
--color-green-400: oklch(0.792 0.209 151.711);
--color-green-500: oklch(0.723 0.219 149.579);
--color-green-600: oklch(0.627 0.194 149.214);
--color-green-700: oklch(0.527 0.154 150.069);
--color-green-800: oklch(0.448 0.119 151.328);
--color-green-900: oklch(0.393 0.095 152.535);
--color-green-950: oklch(0.266 0.065 152.934);
--color-emerald-50: oklch(0.979 0.021 166.113);
--color-emerald-100: oklch(0.95 0.052 163.051);
--color-emerald-200: oklch(0.905 0.093 164.15);
--color-emerald-300: oklch(0.845 0.143 164.978);
--color-emerald-400: oklch(0.765 0.177 163.223);
--color-emerald-500: oklch(0.696 0.17 162.48);
--color-emerald-600: oklch(0.596 0.145 163.225);
--color-emerald-700: oklch(0.508 0.118 165.612);
--color-emerald-800: oklch(0.432 0.095 166.913);
--color-emerald-900: oklch(0.378 0.077 168.94);
--color-emerald-950: oklch(0.262 0.051 172.552);
--color-teal-50: oklch(0.984 0.014 180.72);
--color-teal-100: oklch(0.953 0.051 180.801);
--color-teal-200: oklch(0.91 0.096 180.426);
--color-teal-300: oklch(0.855 0.138 181.071);
--color-teal-400: oklch(0.777 0.152 181.912);
--color-teal-500: oklch(0.704 0.14 182.503);
--color-teal-600: oklch(0.6 0.118 184.704);
--color-teal-700: oklch(0.511 0.096 186.391);
--color-teal-800: oklch(0.437 0.078 188.216);
--color-teal-900: oklch(0.386 0.063 188.416);
--color-teal-950: oklch(0.277 0.046 192.524);
--color-cyan-50: oklch(0.984 0.019 200.873);
--color-cyan-100: oklch(0.956 0.045 203.388);
--color-cyan-200: oklch(0.917 0.08 205.041);
--color-cyan-300: oklch(0.865 0.127 207.078);
--color-cyan-400: oklch(0.789 0.154 211.53);
--color-cyan-500: oklch(0.715 0.143 215.221);
--color-cyan-600: oklch(0.609 0.126 221.723);
--color-cyan-700: oklch(0.52 0.105 223.128);
--color-cyan-800: oklch(0.45 0.085 224.283);
--color-cyan-900: oklch(0.398 0.07 227.392);
--color-cyan-950: oklch(0.302 0.056 229.695);
--color-sky-50: oklch(0.977 0.013 236.62);
--color-sky-100: oklch(0.951 0.026 236.824);
--color-sky-200: oklch(0.901 0.058 230.902);
--color-sky-300: oklch(0.828 0.111 230.318);
--color-sky-400: oklch(0.746 0.16 232.661);
--color-sky-500: oklch(0.685 0.169 237.323);
--color-sky-600: oklch(0.588 0.158 241.966);
--color-sky-700: oklch(0.5 0.134 242.749);
--color-sky-800: oklch(0.443 0.11 240.79);
--color-sky-900: oklch(0.391 0.09 240.876);
--color-sky-950: oklch(0.293 0.066 243.157);
--color-blue-50: oklch(0.97 0.014 254.604);
--color-blue-100: oklch(0.932 0.032 255.585);
--color-blue-200: oklch(0.882 0.059 254.128);
--color-blue-300: oklch(0.809 0.105 251.813);
--color-blue-400: oklch(0.707 0.165 254.624);
--color-blue-500: oklch(0.623 0.214 259.815);
--color-blue-600: oklch(0.546 0.245 262.881);
--color-blue-700: oklch(0.488 0.243 264.376);
--color-blue-800: oklch(0.424 0.199 265.638);
--color-blue-900: oklch(0.379 0.146 265.522);
--color-blue-950: oklch(0.282 0.091 267.935);
--color-indigo-50: oklch(0.962 0.018 272.314);
--color-indigo-100: oklch(0.93 0.034 272.788);
--color-indigo-200: oklch(0.87 0.065 274.039);
--color-indigo-300: oklch(0.785 0.115 274.713);
--color-indigo-400: oklch(0.673 0.182 276.935);
--color-indigo-500: oklch(0.585 0.233 277.117);
--color-indigo-600: oklch(0.511 0.262 276.966);
--color-indigo-700: oklch(0.457 0.24 277.023);
--color-indigo-800: oklch(0.398 0.195 277.366);
--color-indigo-900: oklch(0.359 0.144 278.697);
--color-indigo-950: oklch(0.257 0.09 281.288);
--color-violet-50: oklch(0.969 0.016 293.756);
--color-violet-100: oklch(0.943 0.029 294.588);
--color-violet-200: oklch(0.894 0.057 293.283);
--color-violet-300: oklch(0.811 0.111 293.571);
--color-violet-400: oklch(0.702 0.183 293.541);
--color-violet-500: oklch(0.606 0.25 292.717);
--color-violet-600: oklch(0.541 0.281 293.009);
--color-violet-700: oklch(0.491 0.27 292.581);
--color-violet-800: oklch(0.432 0.232 292.759);
--color-violet-900: oklch(0.38 0.189 293.745);
--color-violet-950: oklch(0.283 0.141 291.089);
--color-purple-50: oklch(0.977 0.014 308.299);
--color-purple-100: oklch(0.946 0.033 307.174);
--color-purple-200: oklch(0.902 0.063 306.703);
--color-purple-300: oklch(0.827 0.119 306.383);
--color-purple-400: oklch(0.714 0.203 305.504);
--color-purple-500: oklch(0.627 0.265 303.9);
--color-purple-600: oklch(0.558 0.288 302.321);
--color-purple-700: oklch(0.496 0.265 301.924);
--color-purple-800: oklch(0.438 0.218 303.724);
--color-purple-900: oklch(0.381 0.176 304.987);
--color-purple-950: oklch(0.291 0.149 302.717);
--color-fuchsia-50: oklch(0.977 0.017 320.058);
--color-fuchsia-100: oklch(0.952 0.037 318.852);
--color-fuchsia-200: oklch(0.903 0.076 319.62);
--color-fuchsia-300: oklch(0.833 0.145 321.434);
--color-fuchsia-400: oklch(0.74 0.238 322.16);
--color-fuchsia-500: oklch(0.667 0.295 322.15);
--color-fuchsia-600: oklch(0.591 0.293 322.896);
--color-fuchsia-700: oklch(0.518 0.253 323.949);
--color-fuchsia-800: oklch(0.452 0.211 324.591);
--color-fuchsia-900: oklch(0.401 0.17 325.612);
--color-fuchsia-950: oklch(0.293 0.136 325.661);
--color-pink-50: oklch(0.971 0.014 343.198);
--color-pink-100: oklch(0.948 0.028 342.258);
--color-pink-200: oklch(0.899 0.061 343.231);
--color-pink-300: oklch(0.823 0.12 346.018);
--color-pink-400: oklch(0.718 0.202 349.761);
--color-pink-500: oklch(0.656 0.241 354.308);
--color-pink-600: oklch(0.592 0.249 0.584);
--color-pink-700: oklch(0.525 0.223 3.958);
--color-pink-800: oklch(0.459 0.187 3.815);
--color-pink-900: oklch(0.408 0.153 2.432);
--color-pink-950: oklch(0.284 0.109 3.907);
--color-rose-50: oklch(0.969 0.015 12.422);
--color-rose-100: oklch(0.941 0.03 12.58);
--color-rose-200: oklch(0.892 0.058 10.001);
--color-rose-300: oklch(0.81 0.117 11.638);
--color-rose-400: oklch(0.712 0.194 13.428);
--color-rose-500: oklch(0.645 0.246 16.439);
--color-rose-600: oklch(0.586 0.253 17.585);
--color-rose-700: oklch(0.514 0.222 16.935);
--color-rose-800: oklch(0.455 0.188 13.697);
--color-rose-900: oklch(0.41 0.159 10.272);
--color-rose-950: oklch(0.271 0.105 12.094);
--color-slate-50: oklch(0.984 0.003 247.858);
--color-slate-100: oklch(0.968 0.007 247.896);
--color-slate-200: oklch(0.929 0.013 255.508);
--color-slate-300: oklch(0.869 0.022 252.894);
--color-slate-400: oklch(0.704 0.04 256.788);
--color-slate-500: oklch(0.554 0.046 257.417);
--color-slate-600: oklch(0.446 0.043 257.281);
--color-slate-700: oklch(0.372 0.044 257.287);
--color-slate-800: oklch(0.279 0.041 260.031);
--color-slate-900: oklch(0.208 0.042 265.755);
--color-slate-950: oklch(0.129 0.042 264.695);
--color-gray-50: oklch(0.985 0.002 247.839);
--color-gray-100: oklch(0.967 0.003 264.542);
--color-gray-200: oklch(0.928 0.006 264.531);
--color-gray-300: oklch(0.872 0.01 258.338);
--color-gray-400: oklch(0.707 0.022 261.325);
--color-gray-500: oklch(0.551 0.027 264.364);
--color-gray-600: oklch(0.446 0.03 256.802);
--color-gray-700: oklch(0.373 0.034 259.733);
--color-gray-800: oklch(0.278 0.033 256.848);
--color-gray-900: oklch(0.21 0.034 264.665);
--color-gray-950: oklch(0.13 0.028 261.692);
--color-zinc-50: oklch(0.985 0 0);
--color-zinc-100: oklch(0.967 0.001 286.375);
--color-zinc-200: oklch(0.92 0.004 286.32);
--color-zinc-300: oklch(0.871 0.006 286.286);
--color-zinc-400: oklch(0.705 0.015 286.067);
--color-zinc-500: oklch(0.552 0.016 285.938);
--color-zinc-600: oklch(0.442 0.017 285.786);
--color-zinc-700: oklch(0.37 0.013 285.805);
--color-zinc-800: oklch(0.274 0.006 286.033);
--color-zinc-900: oklch(0.21 0.006 285.885);
--color-zinc-950: oklch(0.141 0.005 285.823);
--color-neutral-50: oklch(0.985 0 0);
--color-neutral-100: oklch(0.97 0 0);
--color-neutral-200: oklch(0.922 0 0);
--color-neutral-300: oklch(0.87 0 0);
--color-neutral-400: oklch(0.708 0 0);
--color-neutral-500: oklch(0.556 0 0);
--color-neutral-600: oklch(0.439 0 0);
--color-neutral-700: oklch(0.371 0 0);
--color-neutral-800: oklch(0.269 0 0);
--color-neutral-900: oklch(0.205 0 0);
--color-neutral-950: oklch(0.145 0 0);
--color-stone-50: oklch(0.985 0.001 106.423);
--color-stone-100: oklch(0.97 0.001 106.424);
--color-stone-200: oklch(0.923 0.003 48.717);
--color-stone-300: oklch(0.869 0.005 56.366);
--color-stone-400: oklch(0.709 0.01 56.259);
--color-stone-500: oklch(0.553 0.013 58.071);
--color-stone-600: oklch(0.444 0.011 73.639);
--color-stone-700: oklch(0.374 0.01 67.558);
--color-stone-800: oklch(0.268 0.007 34.298);
--color-stone-900: oklch(0.216 0.006 56.043);
--color-stone-950: oklch(0.147 0.004 49.25);
--color-black: #000;
--color-white: #fff;
--spacing: 0.25rem;
--breakpoint-sm: 40rem;
--breakpoint-md: 48rem;
--breakpoint-lg: 64rem;
--breakpoint-xl: 80rem;
--breakpoint-2xl: 96rem;
--container-3xs: 16rem;
--container-2xs: 18rem;
--container-xs: 20rem;
--container-sm: 24rem;
--container-md: 28rem;
--container-lg: 32rem;
--container-xl: 36rem;
--container-2xl: 42rem;
--container-3xl: 48rem;
--container-4xl: 56rem;
--container-5xl: 64rem;
--container-6xl: 72rem;
--container-7xl: 80rem;
--text-xs: 0.75rem;
--text-xs--line-height: calc(1 / 0.75);
--text-sm: 0.875rem;
--text-sm--line-height: calc(1.25 / 0.875);
--text-base: 1rem;
--text-base--line-height: calc(1.5 / 1);
--text-lg: 1.125rem;
--text-lg--line-height: calc(1.75 / 1.125);
--text-xl: 1.25rem;
--text-xl--line-height: calc(1.75 / 1.25);
--text-2xl: 1.5rem;
--text-2xl--line-height: calc(2 / 1.5);
--text-3xl: 1.875rem;
--text-3xl--line-height: calc(2.25 / 1.875);
--text-4xl: 2.25rem;
--text-4xl--line-height: calc(2.5 / 2.25);
--text-5xl: 3rem;
--text-5xl--line-height: 1;
--text-6xl: 3.75rem;
--text-6xl--line-height: 1;
--text-7xl: 4.5rem;
--text-7xl--line-height: 1;
--text-8xl: 6rem;
--text-8xl--line-height: 1;
--text-9xl: 8rem;
--text-9xl--line-height: 1;
--font-weight-thin: 100;
--font-weight-extralight: 200;
--font-weight-light: 300;
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--font-weight-extrabold: 800;
--font-weight-black: 900;
--tracking-tighter: -0.05em;
--tracking-tight: -0.025em;
--tracking-normal: 0em;
--tracking-wide: 0.025em;
--tracking-wider: 0.05em;
--tracking-widest: 0.1em;
--leading-tight: 1.25;
--leading-snug: 1.375;
--leading-normal: 1.5;
--leading-relaxed: 1.625;
--leading-loose: 2;
--radius-xs: 0.125rem;
--radius-sm: 0.25rem;
--radius-md: 0.375rem;
--radius-lg: 0.5rem;
--radius-xl: 0.75rem;
--radius-2xl: 1rem;
--radius-3xl: 1.5rem;
--radius-4xl: 2rem;
--shadow-2xs: 0 1px rgb(0 0 0 / 0.05);
--shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--shadow-sm: 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);
--inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05);
--inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05);
--inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05);
--drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05);
--drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15);
--drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12);
--drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15);
--drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1);
--drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-out: cubic-bezier(0, 0, 0.2, 1);
--ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
--animate-spin: spin 1s linear infinite;
--animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
--animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
--animate-bounce: bounce 1s infinite;
--blur-xs: 4px;
--blur-sm: 8px;
--blur-md: 12px;
--blur-lg: 16px;
--blur-xl: 24px;
--blur-2xl: 40px;
--blur-3xl: 64px;
--perspective-dramatic: 100px;
--perspective-near: 300px;
--perspective-normal: 500px;
--perspective-midrange: 800px;
--perspective-distant: 1200px;
--aspect-video: 16 / 9;
--default-transition-duration: 150ms;
--default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
--default-font-family: var(--font-sans);
--default-font-feature-settings: var(--font-sans--font-feature-settings);
--default-font-variation-settings: var(--font-sans--font-variation-settings);
--default-mono-font-family: var(--font-mono);
--default-mono-font-feature-settings: var(--font-mono--font-feature-settings);
--default-mono-font-variation-settings: var(--font-mono--font-variation-settings);
}
}
@layer base {
*, ::after, ::before, ::backdrop, ::file-selector-button {
box-sizing: border-box;
margin: 0;
padding: 0;
border: 0 solid;
}
html, :host {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
tab-size: 4;
font-family: var( --default-font-family, ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji' );
font-feature-settings: var(--default-font-feature-settings, normal);
font-variation-settings: var(--default-font-variation-settings, normal);
-webkit-tap-highlight-color: transparent;
}
body {
line-height: inherit;
}
hr {
height: 0;
color: inherit;
border-top-width: 1px;
}
abbr:where([title]) {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
}
h1, h2, h3, h4, h5, h6 {
font-size: inherit;
font-weight: inherit;
}
a {
color: inherit;
-webkit-text-decoration: inherit;
text-decoration: inherit;
}
b, strong {
font-weight: bolder;
}
code, kbd, samp, pre {
font-family: var( --default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace );
font-feature-settings: var(--default-mono-font-feature-settings, normal);
font-variation-settings: var(--default-mono-font-variation-settings, normal);
font-size: 1em;
}
small {
font-size: 80%;
}
sub, sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
table {
text-indent: 0;
border-color: inherit;
border-collapse: collapse;
}
:-moz-focusring {
outline: auto;
}
progress {
vertical-align: baseline;
}
summary {
display: list-item;
}
ol, ul, menu {
list-style: none;
}
img, svg, video, canvas, audio, iframe, embed, object {
display: block;
vertical-align: middle;
}
img, video {
max-width: 100%;
height: auto;
}
button, input, select, optgroup, textarea, ::file-selector-button {
font: inherit;
font-feature-settings: inherit;
font-variation-settings: inherit;
letter-spacing: inherit;
color: inherit;
border-radius: 0;
background-color: transparent;
opacity: 1;
}
:where(select:is([multiple], [size])) optgroup {
font-weight: bolder;
}
:where(select:is([multiple], [size])) optgroup option {
padding-inline-start: 20px;
}
::file-selector-button {
margin-inline-end: 4px;
}
::placeholder {
opacity: 1;
color: color-mix(in oklab, currentColor 50%, transparent);
}
textarea {
resize: vertical;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-date-and-time-value {
min-height: 1lh;
text-align: inherit;
}
::-webkit-datetime-edit {
display: inline-flex;
}
::-webkit-datetime-edit-fields-wrapper {
padding: 0;
}
::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field {
padding-block: 0;
}
:-moz-ui-invalid {
box-shadow: none;
}
button, input:where([type='button'], [type='reset'], [type='submit']), ::file-selector-button {
appearance: button;
}
::-webkit-inner-spin-button, ::-webkit-outer-spin-button {
height: auto;
}
[hidden]:where(:not([hidden='until-found'])) {
display: none !important;
}
}
@layer utilities {
.pointer-events-none {
pointer-events: none;
}
.visible {
visibility: visible;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.absolute {
position: absolute;
}
.fixed {
position: fixed;
}
.relative {
position: relative;
}
.static {
position: static;
}
.sticky {
position: sticky;
}
.top-0 {
top: calc(var(--spacing) * 0);
}
.top-1\/2 {
top: calc(1/2 * 100%);
}
.top-2 {
top: calc(var(--spacing) * 2);
}
.top-10 {
top: calc(var(--spacing) * 10);
}
.top-full {
top: 100%;
}
.right-0 {
right: calc(var(--spacing) * 0);
}
.right-2 {
right: calc(var(--spacing) * 2);
}
.left-3 {
left: calc(var(--spacing) * 3);
}
.left-10 {
left: calc(var(--spacing) * 10);
}
.isolate {
isolation: isolate;
}
.z-50 {
z-index: 50;
}
.\!container {
width: 100% !important;
@media (width >= 40rem) {
max-width: 40rem !important;
}
@media (width >= 48rem) {
max-width: 48rem !important;
}
@media (width >= 64rem) {
max-width: 64rem !important;
}
@media (width >= 80rem) {
max-width: 80rem !important;
}
@media (width >= 96rem) {
max-width: 96rem !important;
}
}
.container {
width: 100%;
@media (width >= 40rem) {
max-width: 40rem;
}
@media (width >= 48rem) {
max-width: 48rem;
}
@media (width >= 64rem) {
max-width: 64rem;
}
@media (width >= 80rem) {
max-width: 80rem;
}
@media (width >= 96rem) {
max-width: 96rem;
}
}
.mx-auto {
margin-inline: auto;
}
.my-2 {
margin-block: calc(var(--spacing) * 2);
}
.mt-1 {
margin-top: calc(var(--spacing) * 1);
}
.mt-2 {
margin-top: calc(var(--spacing) * 2);
}
.mt-3 {
margin-top: calc(var(--spacing) * 3);
}
.mt-4 {
margin-top: calc(var(--spacing) * 4);
}
.mt-6 {
margin-top: calc(var(--spacing) * 6);
}
.mt-auto {
margin-top: auto;
}
.mb-1 {
margin-bottom: calc(var(--spacing) * 1);
}
.mb-2 {
margin-bottom: calc(var(--spacing) * 2);
}
.mb-3 {
margin-bottom: calc(var(--spacing) * 3);
}
.mb-4 {
margin-bottom: calc(var(--spacing) * 4);
}
.mb-6 {
margin-bottom: calc(var(--spacing) * 6);
}
.ml-1 {
margin-left: calc(var(--spacing) * 1);
}
.block {
display: block;
}
.flex {
display: flex;
}
.grid {
display: grid;
}
.hidden {
display: none;
}
.inline {
display: inline;
}
.inline-block {
display: inline-block;
}
.inline-flex {
display: inline-flex;
}
.table {
display: table;
}
.size-5 {
width: calc(var(--spacing) * 5);
height: calc(var(--spacing) * 5);
}
.size-7 {
width: calc(var(--spacing) * 7);
height: calc(var(--spacing) * 7);
}
.size-10 {
width: calc(var(--spacing) * 10);
height: calc(var(--spacing) * 10);
}
.size-11 {
width: calc(var(--spacing) * 11);
height: calc(var(--spacing) * 11);
}
.size-12 {
width: calc(var(--spacing) * 12);
height: calc(var(--spacing) * 12);
}
.size-13 {
width: calc(var(--spacing) * 13);
height: calc(var(--spacing) * 13);
}
.size-14 {
width: calc(var(--spacing) * 14);
height: calc(var(--spacing) * 14);
}
.size-15 {
width: calc(var(--spacing) * 15);
height: calc(var(--spacing) * 15);
}
.size-16 {
width: calc(var(--spacing) * 16);
height: calc(var(--spacing) * 16);
}
.size-18 {
width: calc(var(--spacing) * 18);
height: calc(var(--spacing) * 18);
}
.size-20 {
width: calc(var(--spacing) * 20);
height: calc(var(--spacing) * 20);
}
.h-2\.5 {
height: calc(var(--spacing) * 2.5);
}
.h-3 {
height: calc(var(--spacing) * 3);
}
.h-3\.5 {
height: calc(var(--spacing) * 3.5);
}
.h-4 {
height: calc(var(--spacing) * 4);
}
.h-5 {
height: calc(var(--spacing) * 5);
}
.h-6 {
height: calc(var(--spacing) * 6);
}
.h-10 {
height: calc(var(--spacing) * 10);
}
.h-16 {
height: calc(var(--spacing) * 16);
}
.h-\[75px\] {
height: 75px;
}
.h-auto {
height: auto;
}
.h-full {
height: 100%;
}
.min-h-11 {
min-height: calc(var(--spacing) * 11);
}
.min-h-24 {
min-height: calc(var(--spacing) * 24);
}
.min-h-screen {
min-height: 100vh;
}
.\!w-16 {
width: calc(var(--spacing) * 16) !important;
}
.w-2\.5 {
width: calc(var(--spacing) * 2.5);
}
.w-3 {
width: calc(var(--spacing) * 3);
}
.w-3\.5 {
width: calc(var(--spacing) * 3.5);
}
.w-4 {
width: calc(var(--spacing) * 4);
}
.w-5 {
width: calc(var(--spacing) * 5);
}
.w-6 {
width: calc(var(--spacing) * 6);
}
.w-10 {
width: calc(var(--spacing) * 10);
}
.w-16 {
width: calc(var(--spacing) * 16);
}
.w-56 {
width: calc(var(--spacing) * 56);
}
.w-full {
width: 100%;
}
.max-w-5xl {
max-width: var(--container-5xl);
}
.max-w-\[7rem\] {
max-width: 7rem;
}
.max-w-sm {
max-width: var(--container-sm);
}
.max-w-xl {
max-width: var(--container-xl);
}
.min-w-0 {
min-width: calc(var(--spacing) * 0);
}
.min-w-6 {
min-width: calc(var(--spacing) * 6);
}
.min-w-\[680px\] {
min-width: 680px;
}
.flex-1 {
flex: 1;
}
.flex-shrink {
flex-shrink: 1;
}
.flex-shrink-0 {
flex-shrink: 0;
}
.shrink-0 {
flex-shrink: 0;
}
.-translate-y-1\/2 {
--tw-translate-y: calc(calc(1/2 * 100%) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
.transform {
transform: var(--tw-rotate-x) var(--tw-rotate-y) var(--tw-rotate-z) var(--tw-skew-x) var(--tw-skew-y);
}
.cursor-pointer {
cursor: pointer;
}
.list-none {
list-style-type: none;
}
.grid-cols-7 {
grid-template-columns: repeat(7, minmax(0, 1fr));
}
.flex-col {
flex-direction: column;
}
.flex-wrap {
flex-wrap: wrap;
}
.items-center {
align-items: center;
}
.items-start {
align-items: flex-start;
}
.justify-between {
justify-content: space-between;
}
.justify-center {
justify-content: center;
}
.justify-end {
justify-content: flex-end;
}
.justify-start {
justify-content: flex-start;
}
.gap-1 {
gap: calc(var(--spacing) * 1);
}
.gap-2 {
gap: calc(var(--spacing) * 2);
}
.gap-2\.5 {
gap: calc(var(--spacing) * 2.5);
}
.gap-3 {
gap: calc(var(--spacing) * 3);
}
.gap-4 {
gap: calc(var(--spacing) * 4);
}
.gap-px {
gap: 1px;
}
.gap-x-2\.5 {
column-gap: calc(var(--spacing) * 2.5);
}
.space-y-0\.5 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 0.5) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 0.5) * calc(1 - var(--tw-space-y-reverse)));
}
}
.space-y-1 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)));
}
}
.space-y-2 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)));
}
}
.space-y-3 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)));
}
}
.space-y-4 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)));
}
}
.space-y-6 {
:where(& > :not(:last-child)) {
--tw-space-y-reverse: 0;
margin-block-start: calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));
margin-block-end: calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)));
}
}
.divide-y {
:where(& > :not(:last-child)) {
--tw-divide-y-reverse: 0;
border-bottom-style: var(--tw-border-style);
border-top-style: var(--tw-border-style);
border-top-width: calc(1px * var(--tw-divide-y-reverse));
border-bottom-width: calc(1px * calc(1 - var(--tw-divide-y-reverse)));
}
}
.divide-slate-100 {
:where(& > :not(:last-child)) {
border-color: var(--color-slate-100);
}
}
.truncate {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.overflow-hidden {
overflow: hidden;
}
.overflow-x-auto {
overflow-x: auto;
}
.overflow-x-hidden {
overflow-x: hidden;
}
.overflow-y-auto {
overflow-y: auto;
}
.rounded {
border-radius: 0.25rem;
}
.rounded-\[8px\] {
border-radius: 8px;
}
.rounded-full {
border-radius: calc(infinity * 1px);
}
.rounded-lg {
border-radius: var(--radius-lg);
}
.rounded-md {
border-radius: var(--radius-md);
}
.border {
border-style: var(--tw-border-style);
border-width: 1px;
}
.border-t {
border-top-style: var(--tw-border-style);
border-top-width: 1px;
}
.border-r {
border-right-style: var(--tw-border-style);
border-right-width: 1px;
}
.border-b {
border-bottom-style: var(--tw-border-style);
border-bottom-width: 1px;
}
.border-\[\#EAECF0\] {
border-color: #EAECF0;
}
.border-blue-200 {
border-color: var(--color-blue-200);
}
.border-gray-100 {
border-color: var(--color-gray-100);
}
.border-gray-200 {
border-color: var(--color-gray-200);
}
.border-gray-300 {
border-color: var(--color-gray-300);
}
.border-red-200 {
border-color: var(--color-red-200);
}
.border-red-300 {
border-color: var(--color-red-300);
}
.border-slate-200 {
border-color: var(--color-slate-200);
}
.border-slate-300 {
border-color: var(--color-slate-300);
}
.border-slate-800 {
border-color: var(--color-slate-800);
}
.bg-purple-100 {
background-color: var(--color-purple-100);
}
.bg-red-50 {
background-color: var(--color-red-50);
}
.bg-slate-50 {
background-color: var(--color-slate-50);
}
.bg-slate-100 {
background-color: var(--color-slate-100);
}
.bg-slate-200 {
background-color: var(--color-slate-200);
}
.bg-slate-900 {
background-color: var(--color-slate-900);
}
.bg-transparent {
background-color: transparent;
}
.bg-white {
background-color: var(--color-white);
}
.p-1 {
padding: calc(var(--spacing) * 1);
}
.p-2 {
padding: calc(var(--spacing) * 2);
}
.p-3 {
padding: calc(var(--spacing) * 3);
}
.p-4 {
padding: calc(var(--spacing) * 4);
}
.p-6 {
padding: calc(var(--spacing) * 6);
}
.px-1 {
padding-inline: calc(var(--spacing) * 1);
}
.px-1\.5 {
padding-inline: calc(var(--spacing) * 1.5);
}
.px-2 {
padding-inline: calc(var(--spacing) * 2);
}
.px-2\.5 {
padding-inline: calc(var(--spacing) * 2.5);
}
.px-3 {
padding-inline: calc(var(--spacing) * 3);
}
.px-4 {
padding-inline: calc(var(--spacing) * 4);
}
.px-6 {
padding-inline: calc(var(--spacing) * 6);
}
.py-0\.5 {
padding-block: calc(var(--spacing) * 0.5);
}
.py-1 {
padding-block: calc(var(--spacing) * 1);
}
.py-1\.5 {
padding-block: calc(var(--spacing) * 1.5);
}
.py-2 {
padding-block: calc(var(--spacing) * 2);
}
.py-3 {
padding-block: calc(var(--spacing) * 3);
}
.py-4 {
padding-block: calc(var(--spacing) * 4);
}
.py-6 {
padding-block: calc(var(--spacing) * 6);
}
.py-8 {
padding-block: calc(var(--spacing) * 8);
}
.py-16 {
padding-block: calc(var(--spacing) * 16);
}
.pt-4 {
padding-top: calc(var(--spacing) * 4);
}
.pt-6 {
padding-top: calc(var(--spacing) * 6);
}
.pr-4 {
padding-right: calc(var(--spacing) * 4);
}
.pb-1 {
padding-bottom: calc(var(--spacing) * 1);
}
.pb-1\.5 {
padding-bottom: calc(var(--spacing) * 1.5);
}
.pb-2 {
padding-bottom: calc(var(--spacing) * 2);
}
.pb-8 {
padding-bottom: calc(var(--spacing) * 8);
}
.pl-2 {
padding-left: calc(var(--spacing) * 2);
}
.pl-9 {
padding-left: calc(var(--spacing) * 9);
}
.text-center {
text-align: center;
}
.text-left {
text-align: left;
}
.text-2xl {
font-size: var(--text-2xl);
line-height: var(--tw-leading, var(--text-2xl--line-height));
}
.text-base {
font-size: var(--text-base);
line-height: var(--tw-leading, var(--text-base--line-height));
}
.text-lg {
font-size: var(--text-lg);
line-height: var(--tw-leading, var(--text-lg--line-height));
}
.text-sm {
font-size: var(--text-sm);
line-height: var(--tw-leading, var(--text-sm--line-height));
}
.text-xl {
font-size: var(--text-xl);
line-height: var(--tw-leading, var(--text-xl--line-height));
}
.text-xs {
font-size: var(--text-xs);
line-height: var(--tw-leading, var(--text-xs--line-height));
}
.text-\[10px\] {
font-size: 10px;
}
.leading-6 {
--tw-leading: calc(var(--spacing) * 6);
line-height: calc(var(--spacing) * 6);
}
.leading-none {
--tw-leading: 1;
line-height: 1;
}
.leading-snug {
--tw-leading: var(--leading-snug);
line-height: var(--leading-snug);
}
.leading-tight {
--tw-leading: var(--leading-tight);
line-height: var(--leading-tight);
}
.font-bold {
--tw-font-weight: var(--font-weight-bold);
font-weight: var(--font-weight-bold);
}
.font-medium {
--tw-font-weight: var(--font-weight-medium);
font-weight: var(--font-weight-medium);
}
.font-normal {
--tw-font-weight: var(--font-weight-normal);
font-weight: var(--font-weight-normal);
}
.font-semibold {
--tw-font-weight: var(--font-weight-semibold);
font-weight: var(--font-weight-semibold);
}
.tracking-wider {
--tw-tracking: var(--tracking-wider);
letter-spacing: var(--tracking-wider);
}
.whitespace-nowrap {
white-space: nowrap;
}
.text-\[\#0C111D\] {
color: #0C111D;
}
.text-\[\#804EEC\] {
color: #804EEC;
}
.text-blue-600 {
color: var(--color-blue-600);
}
.text-blue-700 {
color: var(--color-blue-700);
}
.text-gray-400 {
color: var(--color-gray-400);
}
.text-gray-500 {
color: var(--color-gray-500);
}
.text-gray-700 {
color: var(--color-gray-700);
}
.text-gray-900 {
color: var(--color-gray-900);
}
.text-red-600 {
color: var(--color-red-600);
}
.text-red-700 {
color: var(--color-red-700);
}
.text-red-800 {
color: var(--color-red-800);
}
.text-slate-400 {
color: var(--color-slate-400);
}
.text-slate-500 {
color: var(--color-slate-500);
}
.text-slate-600 {
color: var(--color-slate-600);
}
.text-slate-700 {
color: var(--color-slate-700);
}
.text-slate-800 {
color: var(--color-slate-800);
}
.text-slate-900 {
color: var(--color-slate-900);
}
.text-white {
color: var(--color-white);
}
.lowercase {
text-transform: lowercase;
}
.uppercase {
text-transform: uppercase;
}
.italic {
font-style: italic;
}
.antialiased {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.placeholder-gray-400 {
&::placeholder {
color: var(--color-gray-400);
}
}
.placeholder-slate-400 {
&::placeholder {
color: var(--color-slate-400);
}
}
.opacity-0 {
opacity: 0%;
}
.opacity-50 {
opacity: 50%;
}
.shadow-lg {
--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.shadow-md {
--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.shadow-sm {
--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1));
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.filter {
filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,);
}
.transition {
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.transition-all {
transition-property: all;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.transition-colors {
transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
transition-timing-function: var(--tw-ease, var(--default-transition-timing-function));
transition-duration: var(--tw-duration, var(--default-transition-duration));
}
.duration-300 {
--tw-duration: 300ms;
transition-duration: 300ms;
}
.group-hover\:opacity-100 {
&:is(:where(.group):hover *) {
@media (hover: hover) {
opacity: 100%;
}
}
}
.file\:mr-3 {
&::file-selector-button {
margin-right: calc(var(--spacing) * 3);
}
}
.file\:rounded {
&::file-selector-button {
border-radius: 0.25rem;
}
}
.file\:border-0 {
&::file-selector-button {
border-style: var(--tw-border-style);
border-width: 0px;
}
}
.file\:bg-slate-200 {
&::file-selector-button {
background-color: var(--color-slate-200);
}
}
.file\:px-3 {
&::file-selector-button {
padding-inline: calc(var(--spacing) * 3);
}
}
.file\:py-1 {
&::file-selector-button {
padding-block: calc(var(--spacing) * 1);
}
}
.file\:text-sm {
&::file-selector-button {
font-size: var(--text-sm);
line-height: var(--tw-leading, var(--text-sm--line-height));
}
}
.file\:font-medium {
&::file-selector-button {
--tw-font-weight: var(--font-weight-medium);
font-weight: var(--font-weight-medium);
}
}
.hover\:scale-110 {
&:hover {
@media (hover: hover) {
--tw-scale-x: 110%;
--tw-scale-y: 110%;
--tw-scale-z: 110%;
scale: var(--tw-scale-x) var(--tw-scale-y);
}
}
}
.hover\:border-slate-400 {
&:hover {
@media (hover: hover) {
border-color: var(--color-slate-400);
}
}
}
.hover\:bg-gray-50 {
&:hover {
@media (hover: hover) {
background-color: var(--color-gray-50);
}
}
}
.hover\:bg-gray-100 {
&:hover {
@media (hover: hover) {
background-color: var(--color-gray-100);
}
}
}
.hover\:bg-slate-50 {
&:hover {
@media (hover: hover) {
background-color: var(--color-slate-50);
}
}
}
.hover\:text-gray-900 {
&:hover {
@media (hover: hover) {
color: var(--color-gray-900);
}
}
}
.hover\:text-slate-600 {
&:hover {
@media (hover: hover) {
color: var(--color-slate-600);
}
}
}
.hover\:text-slate-800 {
&:hover {
@media (hover: hover) {
color: var(--color-slate-800);
}
}
}
.hover\:underline {
&:hover {
@media (hover: hover) {
text-decoration-line: underline;
}
}
}
.hover\:file\:bg-slate-300 {
&:hover {
@media (hover: hover) {
&::file-selector-button {
background-color: var(--color-slate-300);
}
}
}
}
.focus\:border-blue-600 {
&:focus {
border-color: var(--color-blue-600);
}
}
.focus\:border-slate-500 {
&:focus {
border-color: var(--color-slate-500);
}
}
.focus\:ring-2 {
&:focus {
--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentColor);
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
}
.focus\:ring-blue-600 {
&:focus {
--tw-ring-color: var(--color-blue-600);
}
}
.focus\:ring-purple-500 {
&:focus {
--tw-ring-color: var(--color-purple-500);
}
}
.focus\:ring-offset-2 {
&:focus {
--tw-ring-offset-width: 2px;
--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
}
}
.focus\:outline-none {
&:focus {
--tw-outline-style: none;
outline-style: none;
}
}
.sm\:mt-0 {
@media (width >= 40rem) {
margin-top: calc(var(--spacing) * 0);
}
}
.sm\:flex {
@media (width >= 40rem) {
display: flex;
}
}
.sm\:grid-cols-3 {
@media (width >= 40rem) {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.sm\:flex-row {
@media (width >= 40rem) {
flex-direction: row;
}
}
.sm\:items-center {
@media (width >= 40rem) {
align-items: center;
}
}
.sm\:justify-between {
@media (width >= 40rem) {
justify-content: space-between;
}
}
.sm\:gap-3 {
@media (width >= 40rem) {
gap: calc(var(--spacing) * 3);
}
}
.sm\:px-6 {
@media (width >= 40rem) {
padding-inline: calc(var(--spacing) * 6);
}
}
.sm\:text-right {
@media (width >= 40rem) {
text-align: right;
}
}
.md\:text-3xl {
@media (width >= 48rem) {
font-size: var(--text-3xl);
line-height: var(--tw-leading, var(--text-3xl--line-height));
}
}
.\[\&\:\:-webkit-details-marker\]\:hidden {
&::-webkit-details-marker {
display: none;
}
}
.\[\&\>svg\]\:h-5 {
&>svg {
height: calc(var(--spacing) * 5);
}
}
.\[\&\>svg\]\:w-5 {
&>svg {
width: calc(var(--spacing) * 5);
}
}
}
:root {
color-scheme: light;
accent-color: var(--color-brand-primary);
--color-text-primary: hsl(0 0% 9%);
--color-text-secondary: #475467;
--color-text-muted: hsl(0 0% 43.5%);
--color-text-faint: #9ca3af;
--color-text-inverse: #ffffff;
--color-text-brand: #804eec;
--color-text-brand-hover: #6f3fd4;
--color-text-brand-strong: #7c3aed;
--color-text-brand-accent: #7f56d9;
--color-text-heading-alt: #1f2937;
--color-text-body-subtle: #374151;
--color-text-google: #1f1f1f;
--color-text-overlay: #344054;
--color-text-disabled: #667085;
--color-surface-page: hsl(0 0% 100%);
--color-surface-default: #ffffff;
--color-surface-card: rgba(255, 255, 255, 0.8);
--color-surface-subtle: hsl(0 0% 96.1%);
--color-surface-muted: #f3f4f6;
--color-surface-muted-hover: #e5e7eb;
--color-surface-muted-active: #d1d5db;
--color-surface-muted-inverse: #111827;
--color-surface-elevated: rgba(255, 255, 255, 0.92);
--color-surface-elevated-strong: rgba(255, 255, 255, 0.95);
--color-surface-elevated-soft: rgba(255, 255, 255, 0.9);
--color-surface-overlay: rgba(255, 255, 255, 0.88);
--color-surface-overlay-strong: rgba(255, 255, 255, 0.96);
--color-surface-brand-soft: #ede9fe;
--color-surface-brand-soft-hover: #ddd6fe;
--color-surface-brand-soft-active: #c4b5fd;
--color-surface-brand-muted: #f4f3ff;
--color-surface-neutral-hover: rgba(249, 250, 251, 0.9);
--color-surface-page-tint: #f8f7ff;
--color-surface-page-tint-alt: #f4f7fb;
--color-border-default: hsl(0 0% 90.9%);
--color-border-strong: #d1d5db;
--color-border-muted: #e5e7eb;
--color-border-subtle: #d0d5dd;
--color-border-google: #747775;
--color-border-panel: rgba(30, 27, 46, 0.08);
--color-border-panel-muted: rgba(107, 114, 128, 0.22);
--color-border-panel-strong: rgba(107, 114, 128, 0.35);
--color-border-overlay: rgba(148, 163, 184, 0.22);
--color-border-overlay-strong: rgba(148, 163, 184, 0.3);
--color-brand-ink: #1e1b2e;
--color-brand-primary: #804eec;
--color-brand-primary-hover: #6d28d9;
--color-brand-primary-active: #5b21b6;
--color-brand-secondary: #a855f7;
--color-brand-accent: #3b82f6;
--color-focus-ring: rgba(124, 58, 237, 0.2);
--color-focus-ring-strong: rgba(139, 92, 246, 0.16);
--color-ring-subtle: rgba(30, 27, 46, 0.35);
--color-status-info-soft-bg: #eff6ff;
--color-status-info-soft-border: #bfdbfe;
--color-status-info-foreground: #2563eb;
--color-status-warning-soft-bg: #fff4e2;
--color-status-warning-soft-border: #db9729;
--color-status-warning-foreground: #db9729;
--color-status-warning-strong: #db9729;
--color-status-warning-strong-hover: #c37f12;
--color-status-warning-strong-active: #a9670c;
--color-status-warning-strong-foreground: #ffffff;
--color-status-warning-soft-foreground-strong: #b86e00;
--color-status-warning-soft-bg-hover: #fee6b7;
--color-status-warning-soft-bg-active: #fdd58e;
--color-status-warning-emphasis-bg: #fffbeb;
--color-status-warning-emphasis-border: #fde68a;
--color-status-warning-emphasis-foreground: #ca8a04;
--color-status-success-soft-bg: #ecfdf3;
--color-status-success-soft-border: #bbf7d0;
--color-status-success-foreground: #16a34a;
--color-status-success-strong: #16a34a;
--color-status-success-strong-hover: #15803d;
--color-status-success-strong-active: #166534;
--color-status-success-strong-foreground: #ffffff;
--color-status-success-soft-foreground-strong: #15803d;
--color-status-success-soft-bg-hover: #d1fadf;
--color-status-success-soft-bg-active: #a6f4c5;
--color-status-success-banner-bg: hsl(143 85% 96%);
--color-status-success-banner-border: hsl(145 92% 87%);
--color-status-success-banner-foreground: hsl(140 100% 27%);
--color-status-danger-soft-bg: #fef2f2;
--color-status-danger-soft-bg-alt: #fef3f2;
--color-status-danger-soft-border: #fecaca;
--color-status-danger-foreground: #dc2626;
--color-status-danger-strong: #dc2626;
--color-status-danger-strong-hover: #b91c1c;
--color-status-danger-strong-active: #991b1b;
--color-status-danger-strong-foreground: #ffffff;
--color-status-danger-soft-foreground-strong: #b42318;
--color-status-danger-soft-bg-hover: #fee4e2;
--color-status-danger-soft-bg-active: #fecdca;
--color-status-danger-icon-hover: #ef4444;
--color-status-danger-banner-bg: hsl(359 100% 97%);
--color-status-danger-banner-border: hsl(359 100% 94%);
--color-status-danger-banner-foreground: hsl(360 100% 45%);
--overlay-backdrop-default: rgba(17, 24, 39, 0.52);
--overlay-dark-soft: rgba(30, 27, 46, 0.05);
--overlay-dark-soft-alt: rgba(30, 27, 46, 0.06);
--overlay-dark-border: rgba(30, 27, 46, 0.08);
--overlay-dark-strong: rgba(30, 27, 46, 0.14);
--overlay-brand-soft: rgba(124, 58, 237, 0.1);
--overlay-brand-soft-strong: rgba(124, 58, 237, 0.14);
--overlay-brand-muted: rgba(128, 78, 236, 0.08);
--overlay-brand-faint: rgba(128, 78, 236, 0.04);
--overlay-brand-glow: rgba(128, 78, 236, 0.1);
--overlay-google-state: #303030;
--shadow-auth-card: 0 20px 45px rgba(0, 0, 0, 0.1);
--shadow-surface-sm: 0 10px 30px rgba(15, 23, 42, 0.05);
--shadow-surface-md: 0 10px 30px rgba(15, 23, 42, 0.06);
--shadow-surface-hover: 0 12px 30px rgba(15, 23, 42, 0.08);
--shadow-surface-lg: 0 24px 48px rgba(15, 23, 42, 0.18);
--shadow-surface-xl: 0 32px 70px rgba(15, 23, 42, 0.12);
--shadow-sidebar: 20px 0 45px rgba(30, 27, 46, 0.06);
--shadow-floating-control: 0 10px 24px rgba(30, 27, 46, 0.14);
--shadow-google-button: 0 1px 2px 0 rgba(60, 64, 67, 0.3),
0 1px 3px 1px rgba(60, 64, 67, 0.15);
--shadow-brand-action: 0 18px 35px rgba(124, 58, 237, 0.25);
--gradient-shell: linear-gradient(135deg, var(--overlay-brand-muted), transparent 30%),
linear-gradient(160deg, var(--overlay-dark-soft), transparent 42%),
linear-gradient(to bottom right, var(--overlay-dark-border), var(--color-surface-page), var(--overlay-brand-faint));
--gradient-card-glow: linear-gradient(to bottom right, rgba(30, 27, 46, 0.1), var(--overlay-dark-soft), var(--overlay-brand-glow));
--gradient-overview-badge: linear-gradient(to right, var(--color-brand-secondary), var(--color-brand-accent));
--gradient-app-surface: linear-gradient(180deg, var(--color-surface-overlay-strong) 0%, var(--color-surface-default) 100%);
--gradient-not-found-bg: radial-gradient(circle at top, var(--overlay-brand-soft-strong), transparent 35%),
linear-gradient(180deg, var(--color-surface-page-tint) 0%, var(--color-surface-page-tint-alt) 100%);
--gradient-not-found-primary: linear-gradient(135deg, var(--color-text-brand-strong) 0%, var(--color-status-info-foreground) 100%);
--color-project-fallback: #3b82f6;
--color-project-accent-purple: #a855f7;
--color-project-accent-red: #ef4444;
--background: var(--color-surface-page);
--foreground: var(--color-text-primary);
--muted-foreground: var(--color-text-muted);
--border: var(--color-border-default);
--input: var(--color-border-default);
--card: var(--color-surface-card);
--accent: var(--color-surface-subtle);
--primary: var(--color-brand-ink);
--primary-foreground: var(--color-text-inverse);
--secondary: var(--color-brand-primary);
--ring: var(--color-ring-subtle);
}
* {
box-sizing: border-box;
}
html, body {
margin: 0;
min-height: 100%;
}
body {
background: var(--background);
color: var(--foreground);
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
a {
color: inherit;
text-decoration: none;
}
button, input {
font: inherit;
}
.light-only {
display: block;
}
.dark-only {
display: none;
}
.visually-hidden:where(:not(:focus, :focus-within, :active)) {
position: absolute !important;
clip-path: inset(50%) !important;
overflow: hidden !important;
width: 1px !important;
height: 1px !important;
margin: -1px !important;
padding: 0 !important;
border: 0 !important;
white-space: nowrap !important;
}
.skip-link {
position: fixed;
top: 0.75rem;
left: 0.75rem;
z-index: 10000;
padding: 0.5rem 0.75rem;
border-radius: 8px;
background: var(--color-brand-primary);
color: var(--color-text-inverse);
font-size: 0.875rem;
font-weight: 600;
text-decoration: none;
box-shadow: var(--shadow-floating-control);
}
.skip-link:focus, .skip-link:focus-visible {
outline: 2px solid var(--color-text-inverse);
outline-offset: 2px;
}
:where(a, button, input, select, textarea, summary, [tabindex]:not([tabindex="-1"])):focus-visible {
outline: 2px solid var(--color-brand-primary);
outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
.login-screen {
align-items: center;
background: var(--gradient-shell);
display: flex;
justify-content: center;
min-height: 100vh;
overflow: hidden;
padding: 2rem 1rem;
position: relative;
}
.background-layer {
inset: 0;
overflow: hidden;
pointer-events: none;
position: absolute;
}
.background-logo {
position: absolute;
}
.logo-asset {
display: block;
height: auto;
object-fit: contain;
width: 100%;
}
.size-06 {
width: 1.5rem;
height: 1.5rem;
}
.size-07 {
width: 1.75rem;
height: 1.75rem;
}
.size-08 {
width: 2rem;
height: 2rem;
}
.size-09 {
width: 2.25rem;
height: 2.25rem;
}
.size-10 {
width: 2.5rem;
height: 2.5rem;
}
.size-11 {
width: 2.75rem;
height: 2.75rem;
}
.size-12 {
width: 3rem;
height: 3rem;
}
.size-13 {
width: 3.25rem;
height: 3.25rem;
}
.size-14 {
width: 3.5rem;
height: 3.5rem;
}
.size-15 {
width: 3.75rem;
height: 3.75rem;
}
.size-16 {
width: 4rem;
height: 4rem;
}
.size-18 {
width: 4.5rem;
height: 4.5rem;
}
.size-20 {
width: 5rem;
height: 5rem;
}
.opacity-02 {
opacity: 0.2;
}
.opacity-03 {
opacity: 0.3;
}
.opacity-04 {
opacity: 0.4;
}
.opacity-05 {
opacity: 0.5;
}
.bg-01 {
top: 25%;
left: 0;
}
.bg-02 {
top: 33%;
left: 0;
}
.bg-03 {
top: 50%;
left: 0;
}
.bg-04 {
top: 66%;
left: 0;
}
.bg-05 {
top: 75%;
left: 0;
}
.bg-06 {
top: 0;
left: 25%;
}
.bg-07 {
top: 0;
left: 50%;
}
.bg-08 {
top: 0;
left: 75%;
}
.bg-09 {
top: 0;
left: 16.66%;
}
.bg-10 {
top: 0;
left: 83.33%;
}
.bg-11, .bg-12, .bg-13, .bg-14, .bg-15 {
left: 50%;
top: 50%;
}
.bg-16 {
top: 25%;
left: 0;
}
.bg-17 {
top: 50%;
left: 0;
}
.bg-18 {
top: 75%;
left: 0;
}
.bg-19 {
top: 0;
left: 25%;
}
.bg-20 {
top: 0;
left: 75%;
}
.bg-21 {
top: 16.66%;
left: 33.33%;
}
.bg-22 {
top: 33.33%;
left: 66.66%;
}
.bg-23 {
top: 66.66%;
left: 25%;
}
.bg-24 {
top: 83.33%;
left: 75%;
}
.bg-25 {
top: 12.5%;
left: 0;
}
.bg-26 {
top: 37.5%;
left: 0;
}
.bg-27 {
top: 62.5%;
left: 0;
}
.bg-28 {
top: 87.5%;
left: 0;
}
.bg-29 {
top: 0;
left: 0;
}
.bg-30 {
top: 0;
right: 0;
}
.bg-31 {
bottom: 0;
left: 0;
}
.bg-32 {
bottom: 0;
right: 0;
}
.bg-33 {
top: 20%;
left: 20%;
}
.bg-34 {
top: 40%;
left: 80%;
}
.bg-35 {
top: 80%;
left: 40%;
}
.card-wrap {
max-width: 32rem;
position: relative;
transition: transform 0.2s ease-out;
width: 100%;
z-index: 1;
}
.card-glow {
background: var(--gradient-card-glow);
border-radius: 1rem;
filter: blur(24px);
inset: 0;
position: absolute;
z-index: -1;
}
.auth-card-shell {
backdrop-filter: blur(12px);
background: var(--card);
border: 1px solid var(--border);
border-radius: 1rem;
box-shadow: var(--shadow-auth-card);
padding: 1.25rem;
position: relative;
}
.auth-card-topbar {
align-items: center;
display: flex;
justify-content: space-between;
margin-bottom: 1.5rem;
}
.brand-header {
display: flex;
justify-content: center;
margin-bottom: 1.5rem;
}
.brand-logo {
display: block;
height: 4rem;
object-fit: contain;
width: 4rem;
}
.title-group {
margin-bottom: 1.5rem;
text-align: center;
}
.title-group h1 {
font-size: clamp(1.5rem, 4vw, 1.875rem);
font-weight: 700;
margin: 0;
}
.auth-body {
align-items: center;
display: flex;
flex-direction: column;
gap: 1rem;
}
.login-form {
display: flex;
flex-direction: column;
gap: 1rem;
margin: 0 auto;
max-width: 28rem;
width: 100%;
}
.divider-row {
align-items: center;
display: flex;
gap: 0.25rem;
margin: 0.5rem 0 0;
position: relative;
width: 100%;
}
.divider-line {
border-top: 1px solid var(--border);
flex: 1;
}
.divider-pill {
background: var(--background);
border-radius: 999px;
color: var(--muted-foreground);
font-size: 0.875rem;
font-weight: 500;
padding: 0.25rem 1rem;
position: relative;
z-index: 1;
}
.signup-copy {
color: var(--muted-foreground);
font-size: 0.875rem;
margin: 0;
text-align: center;
}
.signup-link {
border-radius: 0.375rem;
color: var(--foreground);
display: inline-block;
font-weight: 500;
margin-left: 0.2rem;
padding: 0.25rem 0.5rem;
transition: color 0.2s ease, background-color 0.2s ease;
}
.signup-link:hover {
background: var(--accent);
}
.status-slot {
min-height: 0.25rem;
}
.status-banner {
border: 1px solid;
border-radius: 0.5rem;
font-size: 0.875rem;
padding: 0.75rem 0.875rem;
}
.status-success {
background: var(--color-status-success-banner-bg);
border-color: var(--color-status-success-banner-border);
color: var(--color-status-success-banner-foreground);
}
.status-error {
background: var(--color-status-danger-banner-bg);
border-color: var(--color-status-danger-banner-border);
color: var(--color-status-danger-banner-foreground);
}
.gsi-material-button {
-moz-user-select: none;
-ms-user-select: none;
-webkit-appearance: none;
-webkit-user-select: none;
background-color: var(--color-surface-default);
background-image: none;
border: 1px solid var(--color-border-google);
border-radius: 20px;
box-sizing: border-box;
color: var(--color-text-google);
cursor: pointer;
display: block;
font-family: "Roboto", Arial, sans-serif;
font-size: 14px;
height: 40px;
letter-spacing: 0.25px;
margin: 0 auto;
min-width: min-content;
outline: none;
overflow: hidden;
padding: 0 12px;
position: relative;
text-align: center;
text-decoration: none;
transition: background-color 0.218s, border-color 0.218s, box-shadow 0.218s;
vertical-align: middle;
white-space: nowrap;
width: max-content;
}
.gsi-material-button .gsi-material-button-icon {
height: 20px;
margin-right: 12px;
min-width: 20px;
width: 20px;
}
.gsi-material-button .gsi-material-button-icon svg {
display: block;
height: 100%;
width: 100%;
}
.gsi-material-button .gsi-material-button-content-wrapper {
align-items: center;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
height: 100%;
justify-content: space-between;
position: relative;
width: 100%;
}
.gsi-material-button .gsi-material-button-contents {
flex-grow: 0;
font-family: "Roboto", Arial, sans-serif;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
vertical-align: top;
}
.gsi-material-button .gsi-material-button-state {
bottom: 0;
left: 0;
opacity: 0;
position: absolute;
right: 0;
top: 0;
transition: opacity 0.218s;
}
.gsi-material-button:not(:disabled):active .gsi-material-button-state, .gsi-material-button:not(:disabled):focus .gsi-material-button-state {
background-color: var(--overlay-google-state);
opacity: 0.12;
}
.gsi-material-button:not(:disabled):hover {
box-shadow: var(--shadow-google-button);
}
.gsi-material-button:not(:disabled):hover .gsi-material-button-state {
background-color: var(--overlay-google-state);
opacity: 0.08;
}
.auth-provider-stack {
display: grid;
gap: 8px;
margin-bottom: 16px;
}
.auth-provider-button {
display: inline-flex;
min-height: 44px;
width: 100%;
align-items: center;
justify-content: center;
border-radius: 0.375rem;
border: 1px solid #e2e8f0;
background-color: #ffffff;
padding: 0.625rem 1rem;
color: #0f172a;
font-size: 1rem;
font-weight: 600;
line-height: 1.25;
text-align: center;
text-decoration: none;
}
.auth-provider-button:hover {
background-color: #f8fafc;
}
.auth-provider-button:focus-visible {
outline: 2px solid #2563eb;
outline-offset: 2px;
}
.auth-provider-button-disabled, .auth-provider-button-disabled:hover {
background-color: #f1f5f9;
color: #94a3b8;
cursor: not-allowed;
}
.auth-provider-separator {
display: grid;
grid-template-columns: 1fr auto 1fr;
align-items: center;
gap: 8px;
margin: 16px 0;
color: #64748b;
font-size: 0.875rem;
line-height: 1.4;
}
.auth-provider-separator span {
height: 1px;
background-color: #e2e8f0;
}
.auth-provider-separator em {
font-style: normal;
}
@keyframes move-right-slow {
from {
transform: translateX(-6rem);
}
to {
transform: translateX(calc(100vw + 6rem));
}
}
@keyframes move-right-medium {
from {
transform: translateX(-5rem);
}
to {
transform: translateX(calc(100vw + 5rem));
}
}
@keyframes move-right-fast {
from {
transform: translateX(-7rem);
}
to {
transform: translateX(calc(100vw + 7rem));
}
}
@keyframes move-down-slow {
from {
transform: translateY(-6rem);
}
to {
transform: translateY(calc(100vh + 6rem));
}
}
@keyframes move-down-medium {
from {
transform: translateY(-5rem);
}
to {
transform: translateY(calc(100vh + 5rem));
}
}
@keyframes move-diagonal-1 {
from {
transform: translate(-4rem, -4rem);
}
to {
transform: translate(52vw, 70vh);
}
}
@keyframes move-diagonal-2 {
from {
transform: translate(0, -4rem);
}
to {
transform: translate(-18vw, 76vh);
}
}
@keyframes move-diagonal-3 {
from {
transform: translate(0, -4rem);
}
to {
transform: translate(12vw, 72vh);
}
}
@keyframes orbit-1 {
from {
transform: translate(-50%, -50%) rotate(0deg) translateX(11rem);
}
to {
transform: translate(-50%, -50%) rotate(360deg) translateX(11rem);
}
}
@keyframes orbit-2 {
from {
transform: translate(-50%, -50%) rotate(0deg) translateX(7rem);
}
to {
transform: translate(-50%, -50%) rotate(-360deg) translateX(7rem);
}
}
@keyframes orbit-3 {
from {
transform: translate(-50%, -50%) rotate(0deg) translateX(5rem);
}
to {
transform: translate(-50%, -50%) rotate(360deg) translateX(5rem);
}
}
@keyframes orbit-4 {
from {
transform: translate(-50%, -50%) rotate(0deg) translateX(15rem);
}
to {
transform: translate(-50%, -50%) rotate(360deg) translateX(15rem);
}
}
@keyframes orbit-5 {
from {
transform: translate(-50%, -50%) rotate(0deg) translateX(8rem);
}
to {
transform: translate(-50%, -50%) rotate(-360deg) translateX(8rem);
}
}
@keyframes zigzag-1 {
0% {
transform: translateX(-6rem) translateY(0);
}
25% {
transform: translateX(25vw) translateY(-3rem);
}
50% {
transform: translateX(50vw) translateY(3rem);
}
75% {
transform: translateX(75vw) translateY(-2rem);
}
100% {
transform: translateX(calc(100vw + 6rem)) translateY(1rem);
}
}
@keyframes zigzag-2 {
0% {
transform: translateX(-5rem) translateY(0);
}
25% {
transform: translateX(25vw) translateY(2rem);
}
50% {
transform: translateX(50vw) translateY(-3rem);
}
75% {
transform: translateX(75vw) translateY(1.5rem);
}
100% {
transform: translateX(calc(100vw + 5rem)) translateY(0);
}
}
@keyframes zigzag-3 {
0% {
transform: translateX(-7rem) translateY(0);
}
20% {
transform: translateX(20vw) translateY(-4rem);
}
40% {
transform: translateX(40vw) translateY(4rem);
}
60% {
transform: translateX(60vw) translateY(-2rem);
}
80% {
transform: translateX(80vw) translateY(3rem);
}
100% {
transform: translateX(calc(100vw + 7rem)) translateY(0);
}
}
@keyframes spiral-1 {
0% {
transform: translate(0, 0) rotate(0deg) scale(0.6);
}
100% {
transform: translate(90vw, 90vh) rotate(360deg) scale(1.3);
}
}
@keyframes spiral-2 {
0% {
transform: translate(0, 0) rotate(0deg) scale(1.4);
}
100% {
transform: translate(-70vw, 90vh) rotate(-360deg) scale(0.7);
}
}
@keyframes float-random-1 {
0%, 100% {
transform: translate(0, 0);
}
50% {
transform: translate(1.4rem, -1rem);
}
}
@keyframes float-random-2 {
0%, 100% {
transform: translate(0, 0);
}
50% {
transform: translate(-1.2rem, 1.1rem);
}
}
@keyframes float-random-3 {
0%, 100% {
transform: translate(0, 0);
}
50% {
transform: translate(0.9rem, -1.4rem);
}
}
@keyframes float-random-4 {
0%, 100% {
transform: translate(0, 0);
}
50% {
transform: translate(-1rem, 0.8rem);
}
}
@keyframes wave-1 {
from {
transform: translateX(-4rem);
}
to {
transform: translateX(calc(100vw + 4rem));
}
}
@keyframes wave-2 {
from {
transform: translateX(-5rem);
}
to {
transform: translateX(calc(100vw + 5rem));
}
}
@keyframes wave-3 {
from {
transform: translateX(-4rem);
}
to {
transform: translateX(calc(100vw + 4rem));
}
}
@keyframes wave-4 {
from {
transform: translateX(-6rem);
}
to {
transform: translateX(calc(100vw + 6rem));
}
}
@keyframes corner-shoot-1 {
from {
transform: translate(0, 0);
}
to {
transform: translate(110vw, 110vh);
}
}
@keyframes corner-shoot-2 {
from {
transform: translate(0, 0);
}
to {
transform: translate(-110vw, 110vh);
}
}
@keyframes corner-shoot-3 {
from {
transform: translate(0, 0);
}
to {
transform: translate(110vw, -110vh);
}
}
@keyframes corner-shoot-4 {
from {
transform: translate(0, 0);
}
to {
transform: translate(-110vw, -110vh);
}
}
@keyframes bounce-ball-1 {
0%, 100% {
transform: translateY(0) translateX(0);
}
50% {
transform: translateY(-5rem) translateX(2rem);
}
}
@keyframes bounce-ball-2 {
0%, 100% {
transform: translateY(0) translateX(0);
}
50% {
transform: translateY(4rem) translateX(-2rem);
}
}
@keyframes bounce-ball-3 {
0%, 100% {
transform: translateY(0) translateX(0);
}
50% {
transform: translateY(-4rem) translateX(1.5rem);
}
}
@keyframes spin-slow {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes spin-reverse {
from {
transform: rotate(0deg);
}
to {
transform: rotate(-360deg);
}
}
@keyframes bounce-gentle {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-0.6rem);
}
}
@keyframes pulse-gentle {
0%, 100% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(1.08);
opacity: 0.85;
}
}
@keyframes wiggle {
0%, 100% {
transform: rotate(0deg);
}
25% {
transform: rotate(-4deg);
}
75% {
transform: rotate(4deg);
}
}
@keyframes float-gentle {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-0.8rem);
}
}
@keyframes scale-gentle {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.12);
}
}
@keyframes rotate-gentle {
0%, 100% {
transform: rotate(0deg);
}
50% {
transform: rotate(12deg);
}
}
@keyframes bounce-soft {
0%, 100% {
transform: translateY(0);
}
50% {
transform: translateY(-0.9rem);
}
}
@keyframes sway {
0%, 100% {
transform: translateX(0);
}
50% {
transform: translateX(0.8rem);
}
}
@keyframes spin-fast {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes pulse-fast {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.2);
}
}
@keyframes wobble {
0%, 100% {
transform: translateX(0);
}
15% {
transform: translateX(-0.35rem) rotate(-5deg);
}
30% {
transform: translateX(0.25rem) rotate(4deg);
}
45% {
transform: translateX(-0.2rem) rotate(-2deg);
}
60% {
transform: translateX(0.12rem) rotate(1deg);
}
}
@keyframes shake {
0%, 100% {
transform: translateX(0);
}
25% {
transform: translateX(-0.12rem);
}
75% {
transform: translateX(0.12rem);
}
}
@keyframes bounce-crazy {
0%, 100% {
transform: translateY(0) scale(1);
}
25% {
transform: translateY(-0.5rem) scale(1.05);
}
75% {
transform: translateY(0.2rem) scale(0.98);
}
}
@keyframes spin-wobble {
0% {
transform: rotate(0deg) scale(1);
}
50% {
transform: rotate(180deg) scale(1.12);
}
100% {
transform: rotate(360deg) scale(1);
}
}
@keyframes flip {
0%, 100% {
transform: rotateY(0deg);
}
50% {
transform: rotateY(180deg);
}
}
@keyframes twirl {
0%, 100% {
transform: rotate(0deg) scale(1);
}
50% {
transform: rotate(180deg) scale(1.15);
}
}
@keyframes dance {
0%, 100% {
transform: translateY(0) rotate(0deg);
}
25% {
transform: translateY(-0.3rem) rotate(-6deg);
}
75% {
transform: translateY(0.3rem) rotate(6deg);
}
}
@keyframes jiggle {
0%, 100% {
transform: translateX(0);
}
25% {
transform: translateX(-0.18rem);
}
50% {
transform: translateX(0.18rem);
}
75% {
transform: translateX(-0.1rem);
}
}
@keyframes vibrate {
0%, 100% {
transform: translate(0);
}
20% {
transform: translate(-1px, 1px);
}
40% {
transform: translate(1px, -1px);
}
60% {
transform: translate(-1px, -1px);
}
80% {
transform: translate(1px, 1px);
}
}
@keyframes swing {
0%, 100% {
transform: rotate(0deg);
}
50% {
transform: rotate(10deg);
}
}
@keyframes pendulum {
0%, 100% {
transform: rotate(-8deg);
}
50% {
transform: rotate(8deg);
}
}
@keyframes elastic {
0%, 100% {
transform: scale(1);
}
30% {
transform: scale(1.15, 0.9);
}
60% {
transform: scale(0.95, 1.08);
}
}
@keyframes rubber {
0%, 100% {
transform: scale(1);
}
35% {
transform: scale(1.2, 0.9);
}
65% {
transform: scale(0.9, 1.15);
}
}
@keyframes rocket {
0%, 100% {
transform: translateY(0) rotate(-8deg);
}
50% {
transform: translateY(-0.8rem) rotate(-12deg);
}
}
@keyframes comet {
0%, 100% {
transform: translateX(0) rotate(12deg);
}
50% {
transform: translateX(0.8rem) rotate(18deg);
}
}
@keyframes meteor {
0%, 100% {
transform: translateY(0) rotate(8deg);
}
50% {
transform: translateY(-0.7rem) rotate(14deg);
}
}
@keyframes blast {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.2) rotate(10deg);
}
}
@keyframes spin-bounce {
0%, 100% {
transform: rotate(0deg) translateY(0);
}
50% {
transform: rotate(180deg) translateY(-0.5rem);
}
}
@keyframes flip-bounce {
0%, 100% {
transform: rotateY(0deg) translateY(0);
}
50% {
transform: rotateY(180deg) translateY(-0.5rem);
}
}
@keyframes scale-bounce {
0%, 100% {
transform: scale(1) translateY(0);
}
50% {
transform: scale(1.14) translateY(-0.55rem);
}
}
.animate-move-right-slow {
animation: move-right-slow 25s linear infinite;
}
.animate-move-right-medium {
animation: move-right-medium 20s linear infinite;
}
.animate-move-right-fast {
animation: move-right-fast 15s linear infinite;
}
.animate-move-down-slow {
animation: move-down-slow 30s linear infinite;
}
.animate-move-down-medium {
animation: move-down-medium 25s linear infinite;
}
.animate-move-diagonal-1 {
animation: move-diagonal-1 35s linear infinite;
}
.animate-move-diagonal-2 {
animation: move-diagonal-2 28s linear infinite;
}
.animate-move-diagonal-3 {
animation: move-diagonal-3 32s linear infinite;
}
.animate-orbit-1 {
animation: orbit-1 20s linear infinite;
}
.animate-orbit-2 {
animation: orbit-2 25s linear infinite reverse;
}
.animate-orbit-3 {
animation: orbit-3 15s linear infinite;
}
.animate-orbit-4 {
animation: orbit-4 22s linear infinite;
}
.animate-orbit-5 {
animation: orbit-5 18s linear infinite;
}
.animate-zigzag-1 {
animation: zigzag-1 18s linear infinite;
}
.animate-zigzag-2 {
animation: zigzag-2 22s linear infinite;
}
.animate-zigzag-3 {
animation: zigzag-3 16s linear infinite;
}
.animate-spiral-1 {
animation: spiral-1 30s linear infinite;
}
.animate-spiral-2 {
animation: spiral-2 25s linear infinite;
}
.animate-float-random-1 {
animation: float-random-1 8s ease-in-out infinite;
}
.animate-float-random-2 {
animation: float-random-2 10s ease-in-out infinite;
}
.animate-float-random-3 {
animation: float-random-3 12s ease-in-out infinite;
}
.animate-float-random-4 {
animation: float-random-4 9s ease-in-out infinite;
}
.animate-wave-1 {
animation: wave-1 20s linear infinite;
}
.animate-wave-2 {
animation: wave-2 24s linear infinite;
}
.animate-wave-3 {
animation: wave-3 18s linear infinite;
}
.animate-wave-4 {
animation: wave-4 26s linear infinite;
}
.animate-corner-shoot-1 {
animation: corner-shoot-1 15s linear infinite;
}
.animate-corner-shoot-2 {
animation: corner-shoot-2 18s linear infinite;
}
.animate-corner-shoot-3 {
animation: corner-shoot-3 20s linear infinite;
}
.animate-corner-shoot-4 {
animation: corner-shoot-4 16s linear infinite;
}
.animate-bounce-ball-1 {
animation: bounce-ball-1 12s ease-in-out infinite;
}
.animate-bounce-ball-2 {
animation: bounce-ball-2 14s ease-in-out infinite;
}
.animate-bounce-ball-3 {
animation: bounce-ball-3 10s ease-in-out infinite;
}
.animate-spin-slow {
animation: spin-slow 8s linear infinite;
}
.animate-spin-reverse {
animation: spin-reverse 6s linear infinite;
}
.animate-bounce-gentle {
animation: bounce-gentle 3s ease-in-out infinite;
}
.animate-bounce-soft {
animation: bounce-soft 4s ease-in-out infinite;
}
.animate-pulse-gentle {
animation: pulse-gentle 4s ease-in-out infinite;
}
.animate-wiggle {
animation: wiggle 2s ease-in-out infinite;
}
.animate-float-gentle {
animation: float-gentle 5s ease-in-out infinite;
}
.animate-scale-gentle {
animation: scale-gentle 6s ease-in-out infinite;
}
.animate-rotate-gentle {
animation: rotate-gentle 8s ease-in-out infinite;
}
.animate-sway {
animation: sway 3s ease-in-out infinite;
}
.animate-spin-fast {
animation: spin-fast 2s linear infinite;
}
.animate-pulse-fast {
animation: pulse-fast 1.5s ease-in-out infinite;
}
.animate-wobble {
animation: wobble 2s ease-in-out infinite;
}
.animate-shake {
animation: shake 0.5s ease-in-out infinite;
}
.animate-bounce-crazy {
animation: bounce-crazy 1s ease-in-out infinite;
}
.animate-spin-wobble {
animation: spin-wobble 4s ease-in-out infinite;
}
.animate-flip {
animation: flip 3s ease-in-out infinite;
}
.animate-twirl {
animation: twirl 5s ease-in-out infinite;
}
.animate-dance {
animation: dance 3s ease-in-out infinite;
}
.animate-jiggle {
animation: jiggle 1s ease-in-out infinite;
}
.animate-vibrate {
animation: vibrate 0.3s ease-in-out infinite;
}
.animate-swing {
animation: swing 2.8s ease-in-out infinite;
}
.animate-pendulum {
animation: pendulum 2.4s ease-in-out infinite;
}
.animate-elastic {
animation: elastic 2.2s ease-in-out infinite;
}
.animate-rubber {
animation: rubber 2.5s ease-in-out infinite;
}
.animate-rocket {
animation: rocket 1.8s ease-in-out infinite;
}
.animate-comet {
animation: comet 2s ease-in-out infinite;
}
.animate-meteor {
animation: meteor 1.7s ease-in-out infinite;
}
.animate-blast {
animation: blast 2.2s ease-in-out infinite;
}
.animate-spin-bounce {
animation: spin-bounce 2.4s ease-in-out infinite;
}
.animate-flip-bounce {
animation: flip-bounce 2.6s ease-in-out infinite;
}
.animate-scale-bounce {
animation: scale-bounce 2.1s ease-in-out infinite;
}
.ui-button {
align-items: center;
border: 0;
border-radius: 0.35rem;
cursor: pointer;
display: inline-flex;
font-weight: 600;
gap: 0.5rem;
justify-content: center;
line-height: 1;
min-height: 44px;
text-decoration: none;
transition: background-color 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
}
.ui-button-icon, .ui-button-icon svg {
height: 1rem;
width: 1rem;
}
.ui-button:focus-visible {
box-shadow: 0 0 0 3px var(--color-focus-ring);
outline: none;
}
.ui-button-sm {
font-size: 0.875rem;
min-height: 40px;
padding: 0.625rem 0.9rem;
}
.ui-button-md {
font-size: 0.95rem;
padding: 0.7rem 1rem;
}
.ui-button-lg {
font-size: 1rem;
padding: 0.82rem 1.15rem;
}
.ui-button-solid.ui-button-default {
background: var(--color-brand-primary);
color: var(--color-brand-foreground, var(--color-text-inverse));
}
.ui-button-solid.ui-button-default:hover {
background: var(--color-brand-primary-hover);
}
.ui-button-solid.ui-button-default:active {
background: var(--color-brand-primary-active);
}
.ui-button-solid.ui-button-neutral {
background: var(--color-surface-muted);
color: var(--color-text-primary);
}
.ui-button-solid.ui-button-neutral:hover {
background: var(--color-surface-muted-hover);
}
.ui-button-solid.ui-button-neutral:active {
background: var(--color-surface-muted-active);
}
.ui-button-solid.ui-button-warning {
background: var(--color-status-warning-strong);
color: var(--color-status-warning-strong-foreground);
}
.ui-button-solid.ui-button-warning:hover {
background: var(--color-status-warning-strong-hover);
}
.ui-button-solid.ui-button-warning:active {
background: var(--color-status-warning-strong-active);
}
.ui-button-solid.ui-button-success {
background: var(--color-status-success-strong);
color: var(--color-status-success-strong-foreground);
}
.ui-button-solid.ui-button-success:hover {
background: var(--color-status-success-strong-hover);
}
.ui-button-solid.ui-button-success:active {
background: var(--color-status-success-strong-active);
}
.ui-button-solid.ui-button-danger {
background: var(--color-status-danger-strong);
color: var(--color-status-danger-strong-foreground);
}
.ui-button-solid.ui-button-danger:hover {
background: var(--color-status-danger-strong-hover);
}
.ui-button-solid.ui-button-danger:active {
background: var(--color-status-danger-strong-active);
}
.ui-button-soft.ui-button-default {
background: var(--color-surface-brand-soft);
color: var(--color-brand-primary-hover);
}
.ui-button-soft.ui-button-default:hover {
background: var(--color-surface-brand-soft-hover);
}
.ui-button-soft.ui-button-default:active {
background: var(--color-surface-brand-soft-active);
}
.ui-button-soft.ui-button-warning {
background: var(--color-status-warning-soft-bg);
color: var(--color-status-warning-soft-foreground-strong);
}
.ui-button-soft.ui-button-warning:hover {
background: var(--color-status-warning-soft-bg-hover);
}
.ui-button-soft.ui-button-warning:active {
background: var(--color-status-warning-soft-bg-active);
}
.ui-button-soft.ui-button-success {
background: var(--color-status-success-soft-bg);
color: var(--color-status-success-soft-foreground-strong);
}
.ui-button-soft.ui-button-success:hover {
background: var(--color-status-success-soft-bg-hover);
}
.ui-button-soft.ui-button-success:active {
background: var(--color-status-success-soft-bg-active);
}
.ui-button-soft.ui-button-danger {
background: var(--color-status-danger-soft-bg-alt);
color: var(--color-status-danger-soft-foreground-strong);
}
.ui-button-soft.ui-button-danger:hover {
background: var(--color-status-danger-soft-bg-hover);
}
.ui-button-soft.ui-button-danger:active {
background: var(--color-status-danger-soft-bg-active);
}
.ui-button-ghost {
background: transparent;
color: var(--color-brand-primary);
}
.ui-button-ghost:hover {
background: var(--color-surface-brand-soft);
}
.ui-button-ghost:focus-visible {
box-shadow: 0 0 0 3px var(--color-focus-ring);
outline: none;
}
.ui-button-soft.ui-button-neutral {
background: var(--color-surface-muted);
color: var(--color-text-secondary);
}
.ui-button-soft.ui-button-neutral:hover {
background: var(--color-surface-muted-hover);
}
.ui-button-soft.ui-button-neutral:active {
background: var(--color-surface-muted-active);
}
.ui-badge {
border: 1px solid transparent;
border-radius: 999px;
display: inline-flex;
font-size: 0.75rem;
font-weight: 600;
line-height: 1.2;
padding: 0.3rem 0.75rem;
}
.ui-badge-info {
background: var(--color-status-info-soft-bg);
border-color: var(--color-status-info-soft-border);
color: var(--color-status-info-foreground);
}
.ui-badge-warning {
background: var(--color-status-warning-soft-bg);
border-color: var(--color-status-warning-soft-border);
color: var(--color-status-warning-foreground);
}
.ui-badge-success {
background: var(--color-status-success-soft-bg);
border-color: var(--color-status-success-soft-border);
color: var(--color-status-success-foreground);
}
.ui-badge-danger {
background: var(--color-status-danger-soft-bg);
border-color: var(--color-status-danger-soft-border);
color: var(--color-status-danger-foreground);
}
.ui-badge-primary {
background: var(--color-surface-brand-soft);
border-color: rgba(128, 78, 236, 0.3);
color: var(--color-text-brand);
}
.ui-card {
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 1rem;
box-shadow: var(--shadow-surface-md);
}
.ui-card-header, .ui-card-body, .ui-card-footer {
padding: 1.25rem 1.5rem;
}
.ui-card-header, .ui-card-footer {
border-color: var(--color-border-default);
}
.ui-card-header {
border-bottom-style: solid;
border-bottom-width: 1px;
}
.ui-card-footer {
border-top-style: solid;
border-top-width: 1px;
}
.ui-input {
appearance: none;
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 0.75rem;
color: var(--color-text-primary);
font: inherit;
line-height: 1.4;
min-height: 44px;
padding: 0.75rem 0.95rem;
width: 100%;
}
.ui-input::placeholder {
color: var(--color-text-faint);
}
.ui-input:focus {
border-color: var(--color-brand-focus);
box-shadow: 0 0 0 3px var(--color-focus-ring-strong);
outline: none;
}
.ui-textarea {
appearance: none;
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 0.75rem;
color: var(--color-text-primary);
font: inherit;
line-height: 1.4;
min-height: 7rem;
padding: 0.85rem 0.95rem;
resize: vertical;
width: 100%;
}
.ui-textarea::placeholder {
color: var(--color-text-faint);
}
.ui-textarea:focus {
border-color: var(--color-brand-focus);
box-shadow: 0 0 0 3px var(--color-focus-ring-strong);
outline: none;
}
.ui-select {
position: relative;
width: 100%;
}
.ui-select-native {
height: 0;
left: 0;
opacity: 0;
pointer-events: none;
position: absolute;
top: 0;
width: 0;
}
.ui-select-control {
align-items: center;
appearance: none;
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 0.75rem;
color: var(--color-text-primary);
cursor: pointer;
display: flex;
gap: 0.75rem;
justify-content: space-between;
min-height: 44px;
padding: 0.55rem 0.75rem 0.55rem 0.95rem;
text-align: left;
transition: border-color 0.2s ease, box-shadow 0.2s ease;
width: 100%;
}
.ui-select-control:focus-visible {
border-color: var(--color-brand-focus);
box-shadow: 0 0 0 3px var(--color-focus-ring-strong);
outline: none;
}
.ui-select-control:disabled {
color: var(--color-text-faint);
cursor: not-allowed;
}
.ui-select-value-wrapper {
align-items: center;
display: flex;
flex: 1 1 auto;
flex-wrap: wrap;
gap: 0.35rem;
min-width: 0;
}
.ui-select-placeholder {
color: var(--color-text-faint);
}
.ui-select-chip {
background: var(--color-surface-muted);
border-radius: 999px;
color: var(--color-text-primary);
display: inline-flex;
font-size: 0.875rem;
line-height: 1;
padding: 0.35rem 0.6rem;
}
.ui-select-arrow-zone {
align-items: center;
color: var(--color-text-secondary);
display: inline-flex;
flex: 0 0 auto;
justify-content: center;
}
.ui-select-arrow-icon {
height: 1rem;
transition: transform 0.2s ease;
width: 1rem;
}
.ui-select.is-open .ui-select-arrow-icon {
transform: rotate(180deg);
}
.ui-select-menu {
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 0.9rem;
box-shadow: var(--shadow-surface-md);
display: grid;
gap: 0.25rem;
left: 0;
margin-top: 0.45rem;
max-height: 16rem;
overflow-y: auto;
padding: 0.4rem;
position: absolute;
right: 0;
top: 100%;
z-index: 30;
}
.ui-select-menu[hidden] {
display: none;
}
.ui-select-option {
align-items: center;
appearance: none;
background: transparent;
border: 0;
border-radius: 0.7rem;
color: var(--color-text-primary);
cursor: pointer;
display: flex;
font: inherit;
gap: 0.75rem;
justify-content: space-between;
padding: 0.7rem 0.8rem;
text-align: left;
width: 100%;
}
.ui-select-option:hover, .ui-select-option:focus-visible {
background: var(--color-surface-muted);
outline: none;
}
.ui-select-option.is-selected {
background: var(--color-status-info-soft-bg);
color: var(--color-text-brand);
}
.ui-select-option:disabled {
color: var(--color-text-faint);
cursor: not-allowed;
}
.ui-select-option-text {
flex: 1 1 auto;
}
.ui-select-option-check {
color: currentColor;
opacity: 0;
}
.ui-select-option.is-selected .ui-select-option-check {
opacity: 1;
}
.ui-modal-backdrop {
align-items: center;
background: var(--overlay-backdrop-default);
display: flex;
inset: 0;
justify-content: center;
padding: 1rem;
position: fixed;
z-index: 40;
}
.ui-modal-panel {
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 1rem;
box-shadow: var(--shadow-surface-lg);
max-width: 32rem;
width: min(100%, 32rem);
}
.ui-modal-header, .ui-modal-body, .ui-modal-actions {
padding-left: 1.5rem;
padding-right: 1.5rem;
}
.ui-modal-header {
border-bottom: 1px solid var(--color-border-default);
padding-bottom: 1rem;
padding-top: 1.25rem;
}
.ui-modal-header h2 {
color: var(--color-text-primary);
font-size: 1.125rem;
font-weight: 700;
margin: 0;
}
.ui-modal-body {
padding-bottom: 1.25rem;
padding-top: 1.25rem;
}
.ui-modal-actions {
border-top: 1px solid var(--color-border-default);
display: flex;
gap: 0.75rem;
justify-content: flex-end;
padding-bottom: 1rem;
padding-top: 1rem;
}
.ui-empty-state {
align-items: center;
border: 1px dashed var(--color-border-subtle);
border-radius: 1rem;
color: var(--color-text-muted);
display: flex;
flex-direction: column;
gap: 0.75rem;
justify-content: center;
padding: 3rem 1.5rem;
text-align: center;
}
.ui-empty-state-title {
color: var(--color-text-primary);
font-size: 1.125rem;
font-weight: 700;
margin: 0;
}
.ui-empty-state-icon {
align-items: center;
background: var(--color-surface-muted);
border-radius: 999px;
color: var(--color-text-faint);
display: inline-flex;
height: 4rem;
justify-content: center;
width: 4rem;
}
.ui-empty-state-icon svg {
height: 2rem;
width: 2rem;
}
.ui-empty-state-description {
margin: 0;
max-width: 32rem;
}
.ui-table-shell {
overflow-x: auto;
width: 100%;
}
.ui-table {
border-collapse: collapse;
min-width: 100%;
width: 100%;
}
.ui-icon-button {
align-items: center;
appearance: none;
background: transparent;
border: 0;
border-radius: 0.5rem;
cursor: pointer;
display: inline-flex;
justify-content: center;
min-height: 44px;
min-width: 44px;
padding: 0.5rem;
transition: background-color 0.2s ease, color 0.2s ease;
}
.ui-icon-button:focus-visible, .borderless-icon-button:focus-visible {
box-shadow: 0 0 0 3px var(--color-focus-ring);
outline: none;
}
.ui-icon-button-solid.ui-icon-button-neutral {
color: var(--color-text-muted);
}
.ui-icon-button-solid.ui-icon-button-danger {
color: var(--color-status-danger-foreground);
}
.ui-icon-button-solid.ui-icon-button-warning {
color: var(--color-status-warning-foreground);
}
.ui-icon-button-solid.ui-icon-button-success {
color: var(--color-status-success-foreground);
}
.ui-icon-button-solid.ui-icon-button-neutral:hover {
color: var(--color-text-primary);
}
.ui-icon-button-solid.ui-icon-button-danger:hover {
color: var(--color-status-danger-strong-hover);
}
.ui-icon-button-solid.ui-icon-button-warning:hover {
color: var(--color-status-warning-strong-hover);
}
.ui-icon-button-solid.ui-icon-button-success:hover {
color: var(--color-status-success-strong-hover);
}
.borderless-icon-button {
appearance: none;
background: transparent;
border: 0;
box-shadow: none;
cursor: pointer;
outline: none;
}
.ui-icon-button-ghost.ui-icon-button-neutral {
color: var(--color-text-faint);
}
.ui-icon-button-ghost.ui-icon-button-danger {
color: var(--color-text-faint);
}
.ui-icon-button-ghost.ui-icon-button-warning {
color: var(--color-text-faint);
}
.ui-icon-button-ghost.ui-icon-button-success {
color: var(--color-text-faint);
}
.ui-icon-button-ghost.ui-icon-button-neutral:hover {
color: var(--color-text-primary);
}
.ui-icon-button-ghost.ui-icon-button-danger:hover {
color: var(--color-status-danger-icon-hover);
}
.ui-icon-button-ghost.ui-icon-button-warning:hover {
color: var(--color-status-warning-strong);
}
.ui-icon-button-ghost.ui-icon-button-success:hover {
color: var(--color-status-success-strong);
}
.borderless-icon-button svg {
height: 1rem;
width: 1rem;
}
.ui-form-field {
display: grid;
gap: 0.5rem;
}
.ui-form-label {
color: var(--color-text-primary);
font-size: 0.95rem;
font-weight: 600;
}
.ui-form-hint {
color: var(--color-text-muted);
font-size: 0.875rem;
margin: 0;
}
.ui-form-error {
color: var(--color-status-danger-foreground);
font-size: 0.875rem;
margin: 0;
}
.ui-space-x {
display: inline-block;
flex-shrink: 0;
}
.ui-space-y {
display: block;
}
.ui-space-x-xs {
width: 0.25rem;
}
.ui-space-x-sm {
width: 0.5rem;
}
.ui-space-x-md {
width: 0.75rem;
}
.ui-space-x-lg {
width: 1rem;
}
.ui-space-x-xl {
width: 1.5rem;
}
.ui-space-y-xs {
height: 0.25rem;
}
.ui-space-y-sm {
height: 0.5rem;
}
.ui-space-y-md {
height: 0.75rem;
}
.ui-space-y-lg {
height: 1rem;
}
.ui-space-y-xl {
height: 1.5rem;
}
.dashboard-shell {
background: var(--gradient-shell);
color: var(--foreground);
display: flex;
min-height: 100vh;
}
.dashboard-sidebar {
width: 12rem;
flex-shrink: 0;
transition: width 0.3s ease;
padding-left: env(safe-area-inset-left, 0px);
}
.dashboard-shell.sidebar-is-collapsed .dashboard-sidebar {
width: 4rem;
}
.sidebar-nav-shell {
background: var(--color-surface-elevated);
border-right: 1px solid var(--color-border-panel);
box-shadow: var(--shadow-sidebar);
display: flex;
flex-direction: column;
height: 100vh;
overflow-x: hidden;
overflow-y: auto;
padding: env(safe-area-inset-top, 0px) 0.75rem env(safe-area-inset-bottom, 0px) 0;
position: sticky;
top: 0;
}
.sidebar-brand {
align-items: center;
display: flex;
justify-content: center;
padding: 0.75rem 0.5rem;
position: relative;
}
.sidebar-brand-link {
align-items: center;
display: flex;
flex-direction: column;
gap: 0.5rem;
width: 100%;
}
.sidebar-brand-logo {
border-radius: 0.75rem;
height: 4rem;
object-fit: cover;
width: 4rem;
}
.sidebar-brand-title {
color: var(--color-text-heading-alt);
font-size: 1.125rem;
font-weight: 700;
margin: 0;
}
.sidebar-collapse-button {
align-items: center;
background: var(--color-surface-elevated-strong);
border: 0;
border-radius: 999px;
box-shadow: var(--shadow-floating-control);
color: var(--color-text-muted);
cursor: pointer;
display: inline-flex;
height: 1.5rem;
justify-content: center;
padding: 0.25rem;
position: absolute;
right: 0.75rem;
top: 0.5rem;
width: 1.5rem;
}
.sidebar-collapse-button svg {
height: 1rem;
width: 1rem;
}
.sidebar-primary {
display: flex;
flex: 1;
flex-direction: column;
}
.sidebar-list {
display: grid;
gap: 0;
list-style: none;
margin: 0;
padding: 0.75rem 0 0;
}
.sidebar-divider {
margin: 0.5rem 0;
padding: 0 0.875rem;
}
.sidebar-divider hr, .sidebar-projects hr {
border: 0;
border-top: 1px solid var(--color-border-panel-muted);
margin: 0;
}
.sidebar-nav-item {
border-radius: 0.9rem;
color: var(--color-text-muted);
font-weight: 500;
margin: 0 0.5rem;
padding: 0.15rem 0;
transition: background-color 0.2s ease, color 0.2s ease;
}
.sidebar-nav-item:hover {
background: var(--overlay-dark-soft);
color: var(--color-surface-muted-inverse);
}
.sidebar-nav-item.is-active {
background: var(--overlay-brand-soft-strong);
color: var(--color-text-brand);
font-weight: 600;
}
.sidebar-nav-link {
display: block;
width: 100%;
}
.sidebar-nav-link-inner {
align-items: center;
display: flex;
gap: 0.75rem;
padding: 0.6rem 0.95rem;
}
.sidebar-nav-icon {
align-items: center;
display: inline-flex;
justify-content: center;
}
.sidebar-nav-icon svg {
height: 1.35rem;
width: 1.35rem;
}
.sidebar-nav-label {
font-size: 1rem;
}
.sidebar-projects {
margin-top: 0.4rem;
padding: 0 0.75rem 0.75rem;
}
.sidebar-section-label {
color: var(--color-text-muted);
font-size: 0.625rem;
font-weight: 700;
letter-spacing: 0.14em;
margin: 0.9rem 0 0.65rem;
padding: 0 0.5rem;
text-transform: uppercase;
}
.sidebar-project-list {
display: grid;
gap: 0.1rem;
list-style: none;
margin: 0;
padding: 0;
}
.sidebar-project-link {
align-items: center;
border-radius: 0.85rem;
color: var(--color-text-muted);
display: flex;
gap: 0.65rem;
padding: 0.48rem 0.5rem;
transition: background-color 0.2s ease, color 0.2s ease;
}
.sidebar-project-link:hover {
background: var(--overlay-dark-soft);
color: var(--color-surface-muted-inverse);
}
.sidebar-project-icon {
align-items: center;
border: 1px solid var(--color-border-panel-strong);
border-radius: 999px;
display: inline-flex;
flex-shrink: 0;
height: 1.55rem;
justify-content: center;
width: 1.55rem;
}
.sidebar-project-icon svg {
height: 0.9rem;
width: 0.9rem;
}
.sidebar-project-label {
flex: 1;
font-size: 0.9rem;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.sidebar-footer-links {
margin-top: auto;
padding-bottom: 0.25rem;
}
.sidebar-organization {
background: var(--color-surface-elevated);
padding: 0 0.5rem 0.9rem;
}
.organization-button {
align-items: center;
background: transparent;
border: 0;
border-radius: 0.95rem;
cursor: pointer;
display: flex;
gap: 0.65rem;
padding: 0.55rem 0.65rem;
text-align: left;
transition: background-color 0.2s ease;
width: 100%;
}
.organization-button:hover {
background: var(--overlay-dark-soft);
}
.organization-avatar {
border-radius: 999px;
display: inline-flex;
flex-shrink: 0;
height: 1.75rem;
overflow: hidden;
width: 1.75rem;
}
.organization-avatar img {
aspect-ratio: 1;
height: 100%;
object-fit: cover;
width: 100%;
}
.organization-copy {
display: flex;
flex-direction: column;
min-width: 0;
}
.organization-name {
color: var(--color-text-body-subtle);
font-size: 0.95rem;
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.organization-meta {
color: var(--color-text-muted);
font-size: 0.75rem;
}
.dashboard-shell.sidebar-is-collapsed {
grid-template-columns: 4rem 1fr;
}
.dashboard-shell.sidebar-is-collapsed .sidebar-brand-title, .dashboard-shell.sidebar-is-collapsed .sidebar-section-label, .dashboard-shell.sidebar-is-collapsed .sidebar-nav-label, .dashboard-shell.sidebar-is-collapsed .sidebar-project-label {
display: none;
}
.dashboard-shell.sidebar-is-collapsed .sidebar-nav-link-inner {
justify-content: center;
}
.dashboard-shell.sidebar-is-collapsed .sidebar-project-list {
display: none;
}
.dashboard-shell.sidebar-is-collapsed .sidebar-collapse-button svg {
transform: rotate(180deg);
}
.page-header {
}
.page-header-right {
flex: 0 0 auto;
display: flex;
align-items: center;
gap: 0.5rem;
}
.page-header-actions {
flex: 0 0 auto;
margin-left: auto;
}
.breadcrumb {
display: flex;
align-items: center;
gap: 0.375rem;
font-size: 0.875rem;
}
.breadcrumb-separator {
color: var(--color-text-muted);
user-select: none;
}
.breadcrumb-item {
color: var(--color-text-muted);
font-weight: 500;
}
.breadcrumb-item--link {
color: var(--color-text-brand);
text-decoration: none;
}
.breadcrumb-item--link:hover {
text-decoration: underline;
}
.breadcrumb-item--current {
color: var(--color-text-muted);
}
.header-search-placeholder {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.375rem 0.75rem;
border: 1px solid var(--color-border-panel);
border-radius: 0.375rem;
background: var(--color-surface-muted-inverse);
color: var(--color-text-muted);
font-size: 0.875rem;
min-width: 16rem;
max-width: 28rem;
width: 100%;
cursor: default;
}
.header-icon-button {
display: flex;
align-items: center;
justify-content: center;
width: 2rem;
height: 2rem;
border-radius: 0.375rem;
border: none;
background: transparent;
color: var(--color-text-muted);
cursor: pointer;
}
.header-icon-button:hover {
background: var(--overlay-dark-soft);
}
.header-icon-button:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.header-avatar-menu {
position: relative;
}
.header-avatar-menu > summary {
list-style: none;
cursor: pointer;
}
.header-avatar-menu > summary::-webkit-details-marker {
display: none;
}
.header-avatar-button {
display: flex;
align-items: center;
justify-content: center;
width: 2rem;
height: 2rem;
border-radius: 50%;
background: var(--color-text-brand);
color: #fff;
font-size: 0.8125rem;
font-weight: 600;
cursor: pointer;
border: none;
outline: none;
}
.header-avatar-initial {
text-transform: uppercase;
line-height: 1;
pointer-events: none;
}
.header-avatar-dropdown {
position: absolute;
right: 0;
top: calc(100% + 0.5rem);
min-width: 14rem;
background: var(--color-surface-elevated);
border: 1px solid var(--color-border-panel);
border-radius: 0.5rem;
box-shadow: var(--shadow-floating-control);
z-index: 50;
overflow: hidden;
}
.avatar-dropdown-workspace {
padding: 0.75rem 1rem;
display: flex;
flex-direction: column;
gap: 0.125rem;
}
.avatar-dropdown-workspace-name {
font-size: 0.875rem;
font-weight: 600;
color: var(--color-text-muted);
word-break: break-all;
}
.avatar-dropdown-workspace-meta {
font-size: 0.75rem;
color: var(--color-text-muted);
opacity: 0.7;
}
.avatar-dropdown-divider {
border: none;
border-top: 1px solid var(--color-border-panel-muted);
margin: 0;
}
.avatar-dropdown-item {
display: block;
width: 100%;
padding: 0.625rem 1rem;
font-size: 0.875rem;
color: var(--color-text-muted);
text-decoration: none;
background: transparent;
border: none;
text-align: left;
cursor: pointer;
}
.avatar-dropdown-item:hover {
background: var(--overlay-dark-soft);
}
.avatar-dropdown-item--danger {
color: #dc2626;
}
.avatar-dropdown-item--danger:hover {
background: #fef2f2;
}
.avatar-dropdown-logout-form {
display: contents;
}
.dashboard-main {
display: flex;
flex-direction: column;
flex: 1;
min-width: 0;
}
.dashboard-main-content {
display: flex;
flex-direction: column;
gap: 1.5rem;
padding: 2rem;
flex: 1;
}
.overview-section {
padding: 0.25rem 0 0;
}
.overview-section-heading {
align-items: center;
display: flex;
justify-content: space-between;
margin-bottom: 1.5rem;
}
.overview-section-heading h1, .overview-section-heading h3, .tasks-section-header h3 {
color: var(--color-surface-muted-inverse);
font-size: 1.6rem;
font-weight: 600;
margin: 0;
}
.project-grid {
display: grid;
gap: 1.25rem;
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.project-card {
background: var(--color-surface-default);
border: 1px solid var(--color-border-subtle);
border-radius: 1rem;
cursor: pointer;
padding: 1rem;
transition: box-shadow 0.2s ease;
}
.project-card-top {
align-items: center;
display: flex;
justify-content: space-between;
margin-bottom: 1rem;
}
.project-card-top .borderless-icon-button {
padding: 0;
}
.project-card-top .ui-icon-button-ghost.ui-icon-button-neutral:hover {
color: var(--color-text-primary);
}
.project-card-top .ui-icon-button-ghost.ui-icon-button-danger:hover {
color: var(--color-status-danger-icon-hover);
}
.project-card-title-row {
align-items: center;
display: flex;
gap: 0.75rem;
margin-bottom: 1rem;
}
.project-avatar {
align-items: center;
background: var(--project-color, var(--color-project-fallback));
border-radius: 0.85rem;
color: var(--color-text-inverse);
display: inline-flex;
flex-shrink: 0;
font-size: 1.1rem;
font-weight: 700;
height: 3rem;
justify-content: center;
width: 3rem;
}
.project-avatar > svg {
height: 1.25rem;
width: 1.25rem;
}
.project-date-row {
align-items: center;
color: var(--color-text-muted);
display: flex;
font-size: 0.875rem;
gap: 0.5rem;
margin-bottom: 1rem;
}
.tasks-section {
background: var(--color-surface-default);
border: 1px solid var(--color-border-subtle);
border-radius: 1rem;
overflow: hidden;
}
.tasks-section-header {
align-items: center;
border-bottom: 1px solid var(--color-border-muted);
display: flex;
justify-content: space-between;
padding: 1.2rem 1rem;
}
.tasks-add-button {
align-items: center;
background: var(--color-surface-default);
border: 1px solid var(--color-border-muted);
border-radius: 0.7rem;
color: var(--color-text-secondary);
cursor: pointer;
display: inline-flex;
font-weight: 500;
gap: 0.5rem;
min-height: 2.75rem;
padding: 0.7rem 1rem;
}
.task-list {
display: flex;
flex-direction: column;
}
.task-drag-handle {
color: var(--color-text-faint);
cursor: grab;
flex-shrink: 0;
line-height: 1;
user-select: none;
}
.task-drag-handle:active {
cursor: grabbing;
}
.task-row {
align-items: center;
border-bottom: 1px solid var(--color-border-muted);
cursor: pointer;
display: flex;
gap: 0.75rem;
padding: 0.9rem 1rem;
transition: background-color 0.2s ease;
}
.task-row:hover {
background: var(--color-surface-neutral-hover);
}
.task-check {
align-items: center;
background: var(--color-surface-default);
border: 2px solid var(--color-border-strong);
border-radius: 999px;
color: var(--color-text-inverse);
cursor: pointer;
display: inline-flex;
flex-shrink: 0;
height: 2rem;
justify-content: center;
width: 2rem;
}
.task-check.is-complete {
background: var(--color-text-brand-strong);
border-color: var(--color-text-brand-strong);
}
.task-body {
flex: 1;
min-width: 0;
}
.task-body p {
color: var(--color-surface-muted-inverse);
font-size: 0.95rem;
font-weight: 500;
margin: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-row.is-complete .task-body p {
color: var(--color-text-faint);
text-decoration: line-through;
}
.task-meta {
align-items: center;
color: var(--color-text-muted);
display: flex;
flex-wrap: wrap;
font-size: 0.75rem;
gap: 0.45rem;
margin-top: 0.3rem;
}
.project-progress-track {
background: var(--color-surface-muted);
border-radius: 999px;
height: 0.5rem;
overflow: hidden;
}
.project-progress-bar {
background: var(--project-color, var(--color-project-fallback));
border-radius: 999px;
height: 100%;
}
.project-card-progress-row {
display: flex;
flex-direction: column;
gap: 0.35rem;
}
.project-card-progress-label {
color: var(--color-text-muted);
font-size: 0.8rem;
}
.project-card-progress-bar {
background: var(--color-accent);
border-radius: 999px;
height: 100%;
}
.view-tab {
display: flex;
align-items: center;
gap: 0.5rem;
padding-bottom: 0.75rem;
border-bottom: 2px solid transparent;
color: var(--color-text-muted, #6b7280);
font-size: 0.875rem;
transition: color 0.15s, border-color 0.15s;
white-space: nowrap;
}
.view-tab:hover {
color: #374151;
}
.view-tab.is-active {
border-bottom-color: #9333ea;
color: #9333ea;
font-weight: 600;
}
.filter-tab {
display: inline-flex;
align-items: center;
gap: 0.375rem;
padding: 0.625rem 1rem;
border: 1px solid #EAECF0;
border-radius: 0.5rem;
font-size: 0.875rem;
font-weight: 500;
color: #374151;
background: white;
cursor: pointer;
transition: background 0.15s, color 0.15s, border-color 0.15s;
white-space: nowrap;
}
.filter-tab:hover {
background: #f9fafb;
}
.filter-tab.is-active {
border-color: #9333ea;
background: #faf5ff;
color: #9333ea;
}
.view-toggle-btn {
align-items: center;
background: transparent;
border: 1px solid var(--color-border-subtle);
border-radius: 0.5rem;
color: var(--color-text-secondary);
cursor: pointer;
display: inline-flex;
height: 2rem;
justify-content: center;
padding: 0;
transition: background-color 0.15s ease, color 0.15s ease;
width: 2rem;
}
.view-toggle-btn:hover {
background: var(--color-surface-neutral-hover);
color: var(--color-text-primary);
}
.tab-nav {
align-items: center;
border-bottom: 1px solid var(--color-border-muted);
display: flex;
gap: 1.5rem;
margin-bottom: 1.5rem;
overflow-x: auto;
}
.tab-nav-item {
align-items: center;
border-bottom: 2px solid transparent;
color: var(--color-text-muted);
display: flex;
font-size: 0.875rem;
font-weight: 400;
gap: 0.5rem;
min-height: 44px;
padding-bottom: 0.75rem;
padding-inline: 0.25rem;
transition: color 0.15s ease, border-color 0.15s ease;
}
.tab-nav-item.is-active {
border-bottom-color: var(--color-brand-primary);
color: var(--color-text-brand);
font-weight: 600;
}
.tab-nav-item:hover:not(.is-active) {
color: var(--color-text-primary);
}
.tablo-metadata-row {
align-items: center;
border-bottom: 1px solid var(--color-border-muted);
display: flex;
flex-wrap: wrap;
gap: 1rem;
margin-bottom: 1rem;
padding-bottom: 1rem;
}
.tablo-metadata-date {
align-items: center;
color: var(--color-text-muted);
display: flex;
font-size: 0.875rem;
gap: 0.5rem;
}
.tablo-metadata-date svg {
height: 1rem;
width: 1rem;
}
.kanban-column {
flex-shrink: 0;
width: 18rem;
}
.kanban-column .tasks-section-header h3 {
font-size: 1rem;
}
.etape-group-header {
align-items: center;
background: var(--color-surface-muted);
border-bottom: 1px solid var(--color-border-muted);
display: flex;
gap: 0.5rem;
padding: 0.5rem 1rem;
}
.etape-group-color-dot {
background: var(--project-color, var(--color-project-fallback));
border-radius: 999px;
flex-shrink: 0;
height: 0.5rem;
width: 0.5rem;
}
.etape-group-label {
color: var(--color-text-secondary);
font-size: 0.875rem;
font-weight: 600;
}
.etape-group-label.is-unassigned {
color: var(--color-text-muted);
font-weight: 400;
}
.task-list-empty {
color: var(--color-text-faint);
font-size: 0.875rem;
font-style: italic;
padding: 0.75rem 1rem;
}
#discussion-messages {
max-height: 32rem;
overflow-y: auto;
scroll-behavior: smooth;
}
.message-row {
display: flex;
flex-direction: column;
padding: 0.75rem 1rem;
}
.message-row.message-own {
align-items: flex-end;
}
.message-row.message-other {
align-items: flex-start;
}
.message-meta {
display: flex;
align-items: baseline;
gap: 0.5rem;
margin-bottom: 0.25rem;
}
.message-author {
color: var(--color-text-primary);
font-size: 0.875rem;
font-weight: 600;
}
.message-timestamp {
color: var(--color-text-muted);
font-size: 0.75rem;
}
.message-bubble {
border-radius: 0.25rem 0.75rem 0.75rem 0.75rem;
font-size: 1rem;
line-height: 1.5;
max-width: 70%;
padding: 0.75rem 1rem;
white-space: pre-wrap;
word-break: break-words;
}
.message-row.message-own .message-bubble {
background-color: color-mix(in srgb, var(--color-brand-primary) 10%, transparent);
border-radius: 0.75rem 0.75rem 0.25rem 0.75rem;
color: var(--color-text-primary);
}
.message-row.message-other .message-bubble {
background-color: var(--color-surface-default, #ffffff);
border: 1px solid var(--color-border-default, #e2e8f0);
color: var(--color-text-primary);
}
.tablo-detail-page {
padding: 24px 32px;
}
.tablo-detail-header {
border-bottom: 1px solid var(--color-border-muted);
display: flex;
flex-direction: column;
gap: 0;
padding-bottom: 0;
}
.tablo-detail-title-row {
align-items: center;
display: flex;
gap: 16px;
padding-bottom: 16px;
}
.tablo-detail-avatar {
align-items: center;
background: var(--color-surface-muted);
border-radius: 12px;
color: #ffffff;
display: flex;
flex-shrink: 0;
font-size: 1rem;
font-weight: 700;
height: 48px;
justify-content: center;
width: 48px;
}
.tablo-detail-title {
color: var(--color-text-primary);
font-size: 1.75rem;
font-weight: 600;
line-height: 1.2;
margin: 0;
}
.tablo-detail-header .tablo-metadata-row {
border-bottom: 1px solid var(--color-border-muted);
gap: 24px;
margin-bottom: 0;
padding-block: 16px;
}
.tablo-meta-segment {
align-items: center;
color: var(--color-text-secondary);
display: flex;
font-size: 0.875rem;
gap: 8px;
}
.tablo-meta-progress {
align-items: center;
display: flex;
gap: 8px;
}
.tablo-progress-bar {
background: var(--color-brand-primary);
border-radius: 9999px;
height: 5px;
}
.tablo-tab-bar {
border-bottom: 1px solid var(--color-border-muted);
display: flex;
gap: 24px;
padding-top: 8px;
}
.tablo-tab-bar .tab-nav-item {
font-size: 0.875rem;
padding-bottom: 12px;
}
.tablo-kanban-board {
display: flex;
gap: 16px;
overflow-x: auto;
padding-bottom: 16px;
padding-top: 24px;
}
.tablo-kanban-column {
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 0.75rem;
flex-shrink: 0;
overflow: hidden;
width: 18rem;
}
.tablo-kanban-column-header {
align-items: center;
background: var(--color-surface-muted);
display: flex;
gap: 8px;
padding: 12px 16px;
}
.tablo-kanban-column-title {
color: var(--color-text-primary);
font-size: 0.875rem;
font-weight: 600;
margin: 0;
}
.tablo-kanban-task-count {
background: var(--color-surface-default);
border: 1px solid var(--color-border-muted);
border-radius: 9999px;
color: var(--color-text-secondary);
font-size: 0.75rem;
padding: 0 8px;
}
.tablo-kanban-empty {
color: var(--color-text-faint);
font-size: 0.875rem;
padding: 24px 16px;
text-align: center;
}
.task-card {
background: var(--color-surface-default);
border: 1px solid var(--color-border-default);
border-radius: 8px;
cursor: pointer;
display: flex;
flex-direction: column;
gap: 8px;
margin: 8px;
padding-block: 8px;
padding-inline: 12px;
transition: box-shadow 0.12s ease, border-color 0.12s ease;
}
.task-card:hover {
border-color: var(--color-border-strong);
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
}
.task-card-top-row {
align-items: flex-start;
display: flex;
gap: 6px;
}
.task-card-title {
color: var(--color-text-primary);
flex: 1;
font-size: 0.875rem;
font-weight: 400;
line-height: 1.4;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-card-delete {
flex-shrink: 0;
opacity: 0;
transition: opacity 0.12s ease;
}
.task-card:hover .task-card-delete {
opacity: 1;
}
.task-card:hover .task-drag-handle {
opacity: 1;
}
.planning-page {
display: flex;
flex-direction: column;
height: 100%;
overflow: hidden;
}
.planning-header {
align-items: center;
border-bottom: 1px solid var(--color-border-default);
display: flex;
flex-shrink: 0;
gap: 12px;
padding: 16px 24px;
}
.planning-period {
color: var(--color-text-primary);
flex: 1;
font-size: 0.875rem;
font-weight: 600;
}
.planning-month-body {
flex: 1;
overflow-y: auto;
padding: 0 24px 24px;
}
.icon-btn {
align-items: center;
background: transparent;
border: 1px solid var(--color-border-default);
border-radius: 6px;
color: var(--color-text-muted);
cursor: pointer;
display: inline-flex;
justify-content: center;
padding: 5px 6px;
text-decoration: none;
transition: background 0.15s;
}
.icon-btn:hover {
background: var(--color-surface-muted);
}
.view-toggle {
border: 1px solid var(--color-border-default);
border-radius: 8px;
display: flex;
overflow: hidden;
}
.view-btn {
align-items: center;
background: transparent;
border: none;
color: var(--color-text-muted);
cursor: pointer;
display: flex;
font-size: 0.8125rem;
padding: 6px 10px;
text-decoration: none;
transition: background 0.15s;
}
.view-btn + .view-btn {
border-left: 1px solid var(--color-border-default);
}
.view-btn.active {
background: color-mix(in srgb, var(--color-brand-primary) 10%, transparent);
color: var(--color-brand-primary);
}
.cal-header {
display: grid;
grid-template-columns: repeat(7, 1fr);
}
.cal-dow {
color: var(--color-text-muted);
font-size: 0.75rem;
font-weight: 600;
padding: 8px 0;
text-align: center;
}
.cal-grid {
border-left: 1px solid var(--color-border-default);
border-top: 1px solid var(--color-border-default);
display: grid;
grid-auto-rows: minmax(80px, auto);
grid-template-columns: repeat(7, 1fr);
}
.cal-day {
border-bottom: 1px solid var(--color-border-default);
border-right: 1px solid var(--color-border-default);
min-height: 80px;
padding: 6px 8px;
}
.cal-day.other-month {
background: var(--color-surface-muted);
}
.cal-day.today .day-num {
align-items: center;
background: var(--color-brand-primary);
border-radius: 50%;
color: #fff;
display: inline-flex;
height: 24px;
justify-content: center;
width: 24px;
}
.day-num {
display: block;
font-size: 0.8125rem;
font-weight: 500;
margin-bottom: 4px;
}
.cal-event {
border-radius: 4px;
cursor: pointer;
display: block;
font-size: 0.6875rem;
font-weight: 500;
margin-bottom: 2px;
overflow: hidden;
padding: 2px 6px;
text-decoration: none;
text-overflow: ellipsis;
white-space: nowrap;
}
.ev-purple {
background: #ede9fe;
color: #804eec;
}
.ev-blue {
background: #dbeafe;
color: #1d4ed8;
}
.ev-amber {
background: #fef3c7;
color: #b45309;
}
.ev-green {
background: #d1fae5;
color: #065f46;
}
.ev-red {
background: #fee2e2;
color: #b91c1c;
}
.ev-default {
background: var(--color-surface-muted);
color: var(--color-text-secondary);
}
.planning-split {
display: flex;
flex: 1;
height: 100%;
overflow: hidden;
}
.mini-panel {
border-right: 1px solid var(--color-border-default);
flex-shrink: 0;
min-width: 220px;
overflow-y: auto;
padding: 16px 12px;
width: 220px;
}
.mini-month-label {
color: var(--color-text-primary);
font-size: 0.8125rem;
font-weight: 600;
margin-bottom: 8px;
}
.mini-grid {
display: grid;
gap: 1px;
grid-template-columns: repeat(7, 1fr);
margin-bottom: 4px;
}
.mini-dow {
color: var(--color-text-muted);
font-size: 0.6875rem;
font-weight: 600;
padding: 4px 0;
text-align: center;
}
.mini-day {
border-radius: 4px;
color: var(--color-text-primary);
cursor: pointer;
display: block;
font-size: 0.75rem;
padding: 4px 2px;
text-align: center;
text-decoration: none;
}
.mini-day.today {
background: var(--color-brand-primary);
border-radius: 50%;
color: #fff;
font-weight: 600;
}
.mini-day.in-week {
background: color-mix(in srgb, var(--color-brand-primary) 12%, transparent);
color: var(--color-brand-primary);
}
.timeline-outer {
display: flex;
flex: 1;
flex-direction: column;
overflow: hidden;
}
.timeline-col-header {
border-bottom: 1px solid var(--color-border-default);
display: flex;
}
.tl-gutter {
flex-shrink: 0;
width: 48px;
}
.tl-day-header {
border-left: 1px solid var(--color-border-default);
flex: 1;
font-size: 0.8125rem;
font-weight: 500;
padding: 8px 4px;
text-align: center;
}
.tl-day-header.today {
color: var(--color-brand-primary);
font-weight: 700;
}
.timeline-body {
display: flex;
flex: 1;
overflow-y: auto;
}
.tl-time-col {
flex-shrink: 0;
width: 48px;
}
.tl-hour-label {
border-bottom: 1px solid var(--color-border-default);
color: var(--color-text-muted);
font-size: 0.6875rem;
height: 48px;
padding-right: 8px;
padding-top: 4px;
text-align: right;
}
.tl-day-col {
border-left: 1px solid var(--color-border-default);
flex: 1;
position: relative;
}
.tl-hour-row {
border-bottom: 1px solid var(--color-border-default);
height: 48px;
}
.tl-event {
border-radius: 6px;
cursor: pointer;
font-size: 0.6875rem;
font-weight: 500;
left: 3px;
min-height: 20px;
overflow: hidden;
padding: 3px 6px;
position: absolute;
right: 3px;
text-decoration: none;
}
.now-line {
background: var(--color-brand-primary);
height: 2px;
left: 0;
pointer-events: none;
position: absolute;
right: 0;
z-index: 3;
}
.now-dot {
background: var(--color-brand-primary);
border-radius: 50%;
height: 8px;
left: -4px;
position: absolute;
top: -3px;
width: 8px;
}
.home-layout {
display: flex;
flex: 1;
min-height: 0;
overflow: hidden;
}
.home-main {
flex: 1;
min-width: 0;
overflow-y: auto;
padding: 28px 32px;
scrollbar-gutter: stable;
}
.deferred-below-fold {
content-visibility: auto;
contain-intrinsic-size: auto none auto 280px;
}
.is-view-hidden {
display: none !important;
}
@supports (content-visibility: hidden) {
.is-view-hidden {
display: block !important;
content-visibility: hidden;
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip-path: inset(50%);
white-space: nowrap;
border: 0;
padding: 0;
margin: -1px;
pointer-events: none;
}
}
.tablos-list-panel {
background: #fff;
border: 1px solid var(--color-border-default);
border-radius: 12px;
overflow: hidden;
}
.home-projects-section {
margin-bottom: 0;
}
.home-today-rail {
width: 260px;
min-width: 260px;
border-left: 1px solid var(--color-border-default);
padding: 24px 20px;
overflow-y: auto;
background: var(--color-surface-page);
}
.home-today-rail-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 16px;
}
.home-today-rail-title {
font-size: 0.875rem;
font-weight: 600;
color: var(--color-text-primary);
margin: 0;
}
.home-today-empty, .home-tasks-empty {
font-size: 0.8125rem;
color: var(--color-text-muted);
margin: 0;
}
.home-stat-chips {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-bottom: 20px;
}
.home-stat-chip {
display: flex;
flex-direction: column;
min-width: 120px;
padding: 12px 16px;
border-radius: 12px;
border: 1px solid var(--color-border-default);
background: #fff;
}
.home-stat-value {
font-size: 1.375rem;
font-weight: 700;
color: var(--color-text-primary);
line-height: 1.2;
}
.home-stat-value.is-brand {
color: var(--color-brand-primary);
}
.home-stat-value.is-warning {
color: var(--color-status-warning-foreground);
}
.home-stat-label {
font-size: 0.75rem;
color: var(--color-text-secondary);
padding-top: 2px;
}
.filter-pills-row {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 16px;
}
.section-header-actions {
display: flex;
align-items: center;
gap: 12px;
}
.home-tasks-section {
margin-top: 32px;
}
.home-tasks-pending {
font-size: 0.75rem;
color: var(--color-text-muted);
}
.home-task-group-label {
font-size: 0.6875rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--color-text-faint);
padding: 0 12px 8px;
}
.home-task-list {
display: flex;
flex-direction: column;
gap: 2px;
margin-bottom: 8px;
}
.home-task-row {
display: flex;
align-items: center;
gap: 12px;
padding: 9px 12px;
border-radius: 8px;
text-decoration: none;
color: inherit;
transition: background 0.12s;
}
.home-task-row:hover {
background: var(--color-surface-subtle);
}
.home-task-check {
width: 16px;
height: 16px;
border-radius: 4px;
border: 1.5px solid var(--color-border-strong);
flex-shrink: 0;
}
.home-task-title {
font-size: 0.875rem;
color: var(--color-text-primary);
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.home-task-project {
font-size: 0.75rem;
color: var(--color-text-muted);
white-space: nowrap;
}
.task-badge {
font-size: 10px;
font-weight: 600;
padding: 2px 7px;
border-radius: 9999px;
white-space: nowrap;
flex-shrink: 0;
}
.task-badge-high {
background: var(--color-status-danger-soft-bg);
color: var(--color-status-danger-foreground);
}
.task-badge-medium {
background: var(--color-status-warning-soft-bg);
color: var(--color-status-warning-foreground);
}
.task-badge-low {
background: var(--color-status-success-soft-bg);
color: var(--color-status-success-foreground);
}
.home-add-task {
display: flex;
align-items: center;
gap: 8px;
padding: 9px 12px;
border: none;
background: transparent;
font-size: 0.875rem;
color: var(--color-text-brand, var(--color-brand-primary));
border-radius: 8px;
cursor: not-allowed;
opacity: 0.6;
}
.home-today-timeline {
display: flex;
flex-direction: column;
gap: 12px;
}
.home-today-event-row {
display: flex;
flex-direction: row;
gap: 12px;
text-decoration: none;
color: inherit;
}
.home-today-time {
font-size: 0.75rem;
font-weight: 500;
color: var(--color-text-faint);
min-width: 44px;
padding-top: 10px;
}
.home-today-time.is-highlight {
font-weight: 600;
color: var(--color-brand-primary);
}
.home-today-event-card {
display: flex;
flex-direction: column;
flex: 1;
padding: 10px 12px;
border-radius: 8px;
border: 1px solid var(--color-border-default);
background: #fff;
}
.home-today-event-card.is-highlight {
border-left: 3px solid var(--color-brand-primary);
background: var(--color-surface-brand-muted);
}
.home-today-event-title {
font-size: 0.8125rem;
font-weight: 500;
color: var(--color-text-primary);
}
.home-today-event-meta {
font-size: 0.6875rem;
color: var(--color-text-muted);
padding-top: 2px;
}
.home-now-indicator {
display: flex;
align-items: center;
gap: 8px;
padding-top: 16px;
}
.home-now-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--color-brand-primary);
flex-shrink: 0;
}
.home-now-label {
font-size: 0.6875rem;
font-weight: 500;
color: var(--color-brand-primary);
}
.home-date-line {
font-size: 0.75rem;
color: var(--color-text-muted);
margin-bottom: 4px;
}
.home-greeting {
font-size: 1.5rem;
font-weight: 700;
color: var(--color-text-primary);
margin: 0 0 20px;
}
.action-pills-row {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 28px;
}
.action-pill {
display: flex;
align-items: center;
gap: 6px;
padding: 7px 14px;
border-radius: 9999px;
border: 1px solid var(--color-border-default);
background: #fff;
font-size: 0.8125rem;
font-weight: 500;
color: var(--color-text-secondary);
cursor: pointer;
transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.action-pill:hover:not(:disabled) {
background: var(--color-brand-primary);
border-color: var(--color-brand-primary);
color: #fff;
}
.action-pill:disabled {
opacity: 0.45;
cursor: not-allowed;
}
.action-pill.primary-pill {
background: var(--color-brand-primary);
border-color: var(--color-brand-primary);
color: #fff;
}
.action-pill.primary-pill:hover {
background: var(--color-brand-primary-hover, #6b3fd9);
border-color: var(--color-brand-primary-hover, #6b3fd9);
}
.section-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12px;
}
.section-title {
font-size: 1rem;
font-weight: 600;
color: var(--color-text-primary);
}
.see-all {
font-size: 0.875rem;
color: var(--color-text-brand, var(--color-brand-primary));
cursor: pointer;
text-decoration: none;
}
.see-all:hover {
text-decoration: underline;
}
.card-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-bottom: 0;
}
.card-grid .project-card {
background: #fff;
border: 1px solid var(--color-border-default);
border-radius: 12px;
padding: 20px;
cursor: pointer;
transition: box-shadow 0.15s, border-color 0.15s;
display: flex;
flex-direction: column;
gap: 0;
}
.card-grid .project-card:hover {
box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08);
border-color: var(--color-border-strong, #d1d5db);
}
.card-color-circle {
width: 14px;
height: 14px;
border-radius: 50%;
flex-shrink: 0;
display: inline-block;
}
.card-header {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 8px;
}
.card-title {
font-size: 0.875rem;
font-weight: 600;
color: var(--color-text-primary);
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.card-meta {
font-size: 0.75rem;
color: var(--color-text-muted);
margin-bottom: 12px;
}
.badge-active {
background: #ecfdf3;
color: #16a34a;
font-size: 10px;
font-weight: 600;
padding: 2px 8px;
border-radius: 9999px;
white-space: nowrap;
flex-shrink: 0;
}
.badge-archived {
background: var(--color-surface-muted);
color: var(--color-text-muted);
font-size: 10px;
font-weight: 600;
padding: 2px 8px;
border-radius: 9999px;
white-space: nowrap;
flex-shrink: 0;
}
.view-toggle {
display: flex;
border: 1px solid var(--color-border-default);
border-radius: 8px;
overflow: hidden;
}
.view-btn {
padding: 6px 10px;
border: none;
background: transparent;
cursor: pointer;
color: var(--color-text-muted);
display: flex;
align-items: center;
transition: background 0.15s;
}
.view-btn:first-child {
border-right: 1px solid var(--color-border-default);
}
.view-btn.active {
background: color-mix(in srgb, var(--color-brand-primary) 10%, transparent);
color: var(--color-text-brand, var(--color-brand-primary));
}
.filter-pill {
padding: 4px 12px;
border-radius: 9999px;
border: 1px solid var(--color-border-default);
background: #fff;
font-size: 0.8125rem;
cursor: pointer;
color: var(--color-text-secondary);
transition: background 0.15s;
}
.filter-pill.active {
background: var(--color-brand-primary);
color: #fff;
border-color: var(--color-brand-primary);
}
.projects-table {
width: 100%;
border-collapse: collapse;
table-layout: fixed;
}
.projects-table th {
text-align: left;
font-size: 0.75rem;
font-weight: 600;
color: var(--color-text-muted);
text-transform: uppercase;
letter-spacing: 0.04em;
padding: 8px 16px;
border-bottom: 1px solid var(--color-border-default);
background: var(--color-surface-muted);
}
.projects-table td {
padding: 13px 16px;
border-bottom: 1px solid var(--color-border-default);
font-size: 0.875rem;
vertical-align: middle;
}
.projects-table tr:hover td {
background: var(--color-surface-subtle);
cursor: pointer;
}
.proj-name-cell {
display: flex;
align-items: center;
gap: 10px;
}
.progress-with-label {
display: flex;
align-items: center;
gap: 8px;
}
.progress-with-label .progress-bar-wrap {
flex: 1;
height: 4px;
background: var(--color-surface-muted);
border-radius: 9999px;
overflow: hidden;
}
.progress-pct {
font-size: 0.75rem;
color: var(--color-text-muted);
min-width: 32px;
}
@keyframes spin {
to {
transform: rotate(360deg);
}
}
@keyframes ping {
75%, 100% {
transform: scale(2);
opacity: 0;
}
}
@keyframes pulse {
50% {
opacity: 0.5;
}
}
@keyframes bounce {
0%, 100% {
transform: translateY(-25%);
animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
}
50% {
transform: none;
animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
}
}
@property --tw-translate-x {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-translate-y {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-translate-z {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-rotate-x {
syntax: "*";
inherits: false;
initial-value: rotateX(0);
}
@property --tw-rotate-y {
syntax: "*";
inherits: false;
initial-value: rotateY(0);
}
@property --tw-rotate-z {
syntax: "*";
inherits: false;
initial-value: rotateZ(0);
}
@property --tw-skew-x {
syntax: "*";
inherits: false;
initial-value: skewX(0);
}
@property --tw-skew-y {
syntax: "*";
inherits: false;
initial-value: skewY(0);
}
@property --tw-space-y-reverse {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-divide-y-reverse {
syntax: "*";
inherits: false;
initial-value: 0;
}
@property --tw-border-style {
syntax: "*";
inherits: false;
initial-value: solid;
}
@property --tw-leading {
syntax: "*";
inherits: false;
}
@property --tw-font-weight {
syntax: "*";
inherits: false;
}
@property --tw-tracking {
syntax: "*";
inherits: false;
}
@property --tw-shadow {
syntax: "*";
inherits: false;
initial-value: 0 0 #0000;
}
@property --tw-shadow-color {
syntax: "*";
inherits: false;
}
@property --tw-inset-shadow {
syntax: "*";
inherits: false;
initial-value: 0 0 #0000;
}
@property --tw-inset-shadow-color {
syntax: "*";
inherits: false;
}
@property --tw-ring-color {
syntax: "*";
inherits: false;
}
@property --tw-ring-shadow {
syntax: "*";
inherits: false;
initial-value: 0 0 #0000;
}
@property --tw-inset-ring-color {
syntax: "*";
inherits: false;
}
@property --tw-inset-ring-shadow {
syntax: "*";
inherits: false;
initial-value: 0 0 #0000;
}
@property --tw-ring-inset {
syntax: "*";
inherits: false;
}
@property --tw-ring-offset-width {
syntax: "<length>";
inherits: false;
initial-value: 0px;
}
@property --tw-ring-offset-color {
syntax: "*";
inherits: false;
initial-value: #fff;
}
@property --tw-ring-offset-shadow {
syntax: "*";
inherits: false;
initial-value: 0 0 #0000;
}
@property --tw-blur {
syntax: "*";
inherits: false;
}
@property --tw-brightness {
syntax: "*";
inherits: false;
}
@property --tw-contrast {
syntax: "*";
inherits: false;
}
@property --tw-grayscale {
syntax: "*";
inherits: false;
}
@property --tw-hue-rotate {
syntax: "*";
inherits: false;
}
@property --tw-invert {
syntax: "*";
inherits: false;
}
@property --tw-opacity {
syntax: "*";
inherits: false;
}
@property --tw-saturate {
syntax: "*";
inherits: false;
}
@property --tw-sepia {
syntax: "*";
inherits: false;
}
@property --tw-duration {
syntax: "*";
inherits: false;
}
@property --tw-scale-x {
syntax: "*";
inherits: false;
initial-value: 1;
}
@property --tw-scale-y {
syntax: "*";
inherits: false;
initial-value: 1;
}
@property --tw-scale-z {
syntax: "*";
inherits: false;
initial-value: 1;
}