diff --git a/backend/internal/web/handlers_tablos_test.go b/backend/internal/web/handlers_tablos_test.go
index c888fd1..048f0fe 100644
--- a/backend/internal/web/handlers_tablos_test.go
+++ b/backend/internal/web/handlers_tablos_test.go
@@ -632,6 +632,56 @@ func TestTablosDashboard_Sidebar(t *testing.T) {
if !strings.Contains(body, "sidebar-nav-shell") {
t.Errorf("body missing 'sidebar-nav-shell'; body: %.300s", body)
}
+ if !strings.Contains(body, "page-header") {
+ t.Errorf("expected page-header class in response body")
+ }
+ if !strings.Contains(body, "breadcrumb") {
+ t.Errorf("expected breadcrumb class in response body")
+ }
+}
+
+// ---- TestTablosDashboard_Header ----
+
+// TestTablosDashboard_Header verifies that authenticated GET / renders the page header bar
+// (NAV-02) with all expected elements.
+func TestTablosDashboard_Header(t *testing.T) {
+ pool, cleanup := setupTestDB(t)
+ defer cleanup()
+
+ ctx := context.Background()
+ q := sqlc.New(pool)
+ store := auth.NewStore(q)
+ router := newTabloTestRouter(q, store)
+
+ user := preInsertUser(t, ctx, q, "header@example.com", "correct-horse-12")
+ cookieVal, _, err := store.Create(ctx, user.ID)
+ if err != nil {
+ t.Fatalf("store.Create: %v", err)
+ }
+ sessionCookie := &http.Cookie{Name: auth.SessionCookieName, Value: cookieVal}
+
+ req := httptest.NewRequest(http.MethodGet, "/", nil)
+ req.AddCookie(sessionCookie)
+ rec := httptest.NewRecorder()
+ router.ServeHTTP(rec, req)
+
+ if rec.Code != http.StatusOK {
+ t.Fatalf("GET / status = %d; want 200", rec.Code)
+ }
+
+ body := rec.Body.String()
+ if !strings.Contains(body, "page-header") {
+ t.Errorf("body missing 'page-header'; body: %.300s", body)
+ }
+ if !strings.Contains(body, "header-avatar-menu") {
+ t.Errorf("body missing 'header-avatar-menu'; body: %.300s", body)
+ }
+ if !strings.Contains(body, "Dashboard") {
+ t.Errorf("body missing breadcrumb label 'Dashboard'; body: %.300s", body)
+ }
+ if !strings.Contains(body, "header-search-placeholder") {
+ t.Errorf("body missing 'header-search-placeholder'; body: %.300s", body)
+ }
}
// ---- TestTablosDashboard_ProjectCards ----
diff --git a/backend/internal/web/router.go b/backend/internal/web/router.go
index 33e8e18..a051e73 100644
--- a/backend/internal/web/router.go
+++ b/backend/internal/web/router.go
@@ -87,6 +87,10 @@ func NewRouter(pinger Pinger, staticFS fs.FS, deps AuthDeps, tabloDeps TablosDep
r.Get("/", TablosListHandler(tabloDeps))
r.Post("/logout", LogoutHandler(deps))
r.Get("/account/providers", AccountProvidersHandler(deps))
+ r.Get("/settings", func(w http.ResponseWriter, r *http.Request) {
+ w.Header().Set("Content-Type", "text/html; charset=utf-8")
+ _, _ = w.Write([]byte(`
Settings - XtabloSettings
Coming soon.
Back to dashboard`))
+ })
r.Get("/planning", PlanningPageHandler(planningDeps))
// Static segments BEFORE parametric (Pitfall 1 — chi v5 route resolution).
r.Get("/tablos/new", TablosNewHandler(tabloDeps))
diff --git a/backend/internal/web/ui/app.css b/backend/internal/web/ui/app.css
index cb3e462..bedfafa 100644
--- a/backend/internal/web/ui/app.css
+++ b/backend/internal/web/ui/app.css
@@ -357,6 +357,215 @@
transform: rotate(180deg);
}
+/* ── Page header bar ───────────────────────────────────────────────── */
+
+.page-header {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ padding: 0.75rem 1.5rem;
+ background: var(--color-surface-elevated);
+ border-bottom: 1px solid var(--color-border-panel);
+ margin: -2rem -2rem 1.5rem -2rem; /* cancel .dashboard-main padding on three sides, add bottom gap */
+}
+
+.page-header-left {
+ flex: 0 0 auto;
+}
+
+.page-header-center {
+ flex: 1 1 auto;
+ display: flex;
+ justify-content: center;
+}
+
+.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 */
+.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);
+}
+
+/* Search placeholder */
+.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;
+}
+
+/* Icon buttons (bell, inbox) */
+.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;
+}
+
+/* Avatar dropdown */
+.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; /* red — logout action; no token for this; matches Figma red logout */
+}
+
+.avatar-dropdown-item--danger:hover {
+ background: #fef2f2;
+}
+
+.avatar-dropdown-logout-form {
+ display: contents; /* form element itself doesn't affect layout */
+}
+
/* ============================================================
Section 12 — Dashboard main content area
============================================================ */
diff --git a/backend/static/tailwind.css b/backend/static/tailwind.css
index 8ac7571..c129647 100644
--- a/backend/static/tailwind.css
+++ b/backend/static/tailwind.css
@@ -1,2 +1,4194 @@
/*! tailwindcss v4.0.0 | MIT License | https://tailwindcss.com */
-@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(.971 .013 17.38);--color-red-100:oklch(.936 .032 17.717);--color-red-200:oklch(.885 .062 18.334);--color-red-300:oklch(.808 .114 19.571);--color-red-400:oklch(.704 .191 22.216);--color-red-500:oklch(.637 .237 25.331);--color-red-600:oklch(.577 .245 27.325);--color-red-700:oklch(.505 .213 27.518);--color-red-800:oklch(.444 .177 26.899);--color-red-900:oklch(.396 .141 25.723);--color-red-950:oklch(.258 .092 26.042);--color-orange-50:oklch(.98 .016 73.684);--color-orange-100:oklch(.954 .038 75.164);--color-orange-200:oklch(.901 .076 70.697);--color-orange-300:oklch(.837 .128 66.29);--color-orange-400:oklch(.75 .183 55.934);--color-orange-500:oklch(.705 .213 47.604);--color-orange-600:oklch(.646 .222 41.116);--color-orange-700:oklch(.553 .195 38.402);--color-orange-800:oklch(.47 .157 37.304);--color-orange-900:oklch(.408 .123 38.172);--color-orange-950:oklch(.266 .079 36.259);--color-amber-50:oklch(.987 .022 95.277);--color-amber-100:oklch(.962 .059 95.617);--color-amber-200:oklch(.924 .12 95.746);--color-amber-300:oklch(.879 .169 91.605);--color-amber-400:oklch(.828 .189 84.429);--color-amber-500:oklch(.769 .188 70.08);--color-amber-600:oklch(.666 .179 58.318);--color-amber-700:oklch(.555 .163 48.998);--color-amber-800:oklch(.473 .137 46.201);--color-amber-900:oklch(.414 .112 45.904);--color-amber-950:oklch(.279 .077 45.635);--color-yellow-50:oklch(.987 .026 102.212);--color-yellow-100:oklch(.973 .071 103.193);--color-yellow-200:oklch(.945 .129 101.54);--color-yellow-300:oklch(.905 .182 98.111);--color-yellow-400:oklch(.852 .199 91.936);--color-yellow-500:oklch(.795 .184 86.047);--color-yellow-600:oklch(.681 .162 75.834);--color-yellow-700:oklch(.554 .135 66.442);--color-yellow-800:oklch(.476 .114 61.907);--color-yellow-900:oklch(.421 .095 57.708);--color-yellow-950:oklch(.286 .066 53.813);--color-lime-50:oklch(.986 .031 120.757);--color-lime-100:oklch(.967 .067 122.328);--color-lime-200:oklch(.938 .127 124.321);--color-lime-300:oklch(.897 .196 126.665);--color-lime-400:oklch(.841 .238 128.85);--color-lime-500:oklch(.768 .233 130.85);--color-lime-600:oklch(.648 .2 131.684);--color-lime-700:oklch(.532 .157 131.589);--color-lime-800:oklch(.453 .124 130.933);--color-lime-900:oklch(.405 .101 131.063);--color-lime-950:oklch(.274 .072 132.109);--color-green-50:oklch(.982 .018 155.826);--color-green-100:oklch(.962 .044 156.743);--color-green-200:oklch(.925 .084 155.995);--color-green-300:oklch(.871 .15 154.449);--color-green-400:oklch(.792 .209 151.711);--color-green-500:oklch(.723 .219 149.579);--color-green-600:oklch(.627 .194 149.214);--color-green-700:oklch(.527 .154 150.069);--color-green-800:oklch(.448 .119 151.328);--color-green-900:oklch(.393 .095 152.535);--color-green-950:oklch(.266 .065 152.934);--color-emerald-50:oklch(.979 .021 166.113);--color-emerald-100:oklch(.95 .052 163.051);--color-emerald-200:oklch(.905 .093 164.15);--color-emerald-300:oklch(.845 .143 164.978);--color-emerald-400:oklch(.765 .177 163.223);--color-emerald-500:oklch(.696 .17 162.48);--color-emerald-600:oklch(.596 .145 163.225);--color-emerald-700:oklch(.508 .118 165.612);--color-emerald-800:oklch(.432 .095 166.913);--color-emerald-900:oklch(.378 .077 168.94);--color-emerald-950:oklch(.262 .051 172.552);--color-teal-50:oklch(.984 .014 180.72);--color-teal-100:oklch(.953 .051 180.801);--color-teal-200:oklch(.91 .096 180.426);--color-teal-300:oklch(.855 .138 181.071);--color-teal-400:oklch(.777 .152 181.912);--color-teal-500:oklch(.704 .14 182.503);--color-teal-600:oklch(.6 .118 184.704);--color-teal-700:oklch(.511 .096 186.391);--color-teal-800:oklch(.437 .078 188.216);--color-teal-900:oklch(.386 .063 188.416);--color-teal-950:oklch(.277 .046 192.524);--color-cyan-50:oklch(.984 .019 200.873);--color-cyan-100:oklch(.956 .045 203.388);--color-cyan-200:oklch(.917 .08 205.041);--color-cyan-300:oklch(.865 .127 207.078);--color-cyan-400:oklch(.789 .154 211.53);--color-cyan-500:oklch(.715 .143 215.221);--color-cyan-600:oklch(.609 .126 221.723);--color-cyan-700:oklch(.52 .105 223.128);--color-cyan-800:oklch(.45 .085 224.283);--color-cyan-900:oklch(.398 .07 227.392);--color-cyan-950:oklch(.302 .056 229.695);--color-sky-50:oklch(.977 .013 236.62);--color-sky-100:oklch(.951 .026 236.824);--color-sky-200:oklch(.901 .058 230.902);--color-sky-300:oklch(.828 .111 230.318);--color-sky-400:oklch(.746 .16 232.661);--color-sky-500:oklch(.685 .169 237.323);--color-sky-600:oklch(.588 .158 241.966);--color-sky-700:oklch(.5 .134 242.749);--color-sky-800:oklch(.443 .11 240.79);--color-sky-900:oklch(.391 .09 240.876);--color-sky-950:oklch(.293 .066 243.157);--color-blue-50:oklch(.97 .014 254.604);--color-blue-100:oklch(.932 .032 255.585);--color-blue-200:oklch(.882 .059 254.128);--color-blue-300:oklch(.809 .105 251.813);--color-blue-400:oklch(.707 .165 254.624);--color-blue-500:oklch(.623 .214 259.815);--color-blue-600:oklch(.546 .245 262.881);--color-blue-700:oklch(.488 .243 264.376);--color-blue-800:oklch(.424 .199 265.638);--color-blue-900:oklch(.379 .146 265.522);--color-blue-950:oklch(.282 .091 267.935);--color-indigo-50:oklch(.962 .018 272.314);--color-indigo-100:oklch(.93 .034 272.788);--color-indigo-200:oklch(.87 .065 274.039);--color-indigo-300:oklch(.785 .115 274.713);--color-indigo-400:oklch(.673 .182 276.935);--color-indigo-500:oklch(.585 .233 277.117);--color-indigo-600:oklch(.511 .262 276.966);--color-indigo-700:oklch(.457 .24 277.023);--color-indigo-800:oklch(.398 .195 277.366);--color-indigo-900:oklch(.359 .144 278.697);--color-indigo-950:oklch(.257 .09 281.288);--color-violet-50:oklch(.969 .016 293.756);--color-violet-100:oklch(.943 .029 294.588);--color-violet-200:oklch(.894 .057 293.283);--color-violet-300:oklch(.811 .111 293.571);--color-violet-400:oklch(.702 .183 293.541);--color-violet-500:oklch(.606 .25 292.717);--color-violet-600:oklch(.541 .281 293.009);--color-violet-700:oklch(.491 .27 292.581);--color-violet-800:oklch(.432 .232 292.759);--color-violet-900:oklch(.38 .189 293.745);--color-violet-950:oklch(.283 .141 291.089);--color-purple-50:oklch(.977 .014 308.299);--color-purple-100:oklch(.946 .033 307.174);--color-purple-200:oklch(.902 .063 306.703);--color-purple-300:oklch(.827 .119 306.383);--color-purple-400:oklch(.714 .203 305.504);--color-purple-500:oklch(.627 .265 303.9);--color-purple-600:oklch(.558 .288 302.321);--color-purple-700:oklch(.496 .265 301.924);--color-purple-800:oklch(.438 .218 303.724);--color-purple-900:oklch(.381 .176 304.987);--color-purple-950:oklch(.291 .149 302.717);--color-fuchsia-50:oklch(.977 .017 320.058);--color-fuchsia-100:oklch(.952 .037 318.852);--color-fuchsia-200:oklch(.903 .076 319.62);--color-fuchsia-300:oklch(.833 .145 321.434);--color-fuchsia-400:oklch(.74 .238 322.16);--color-fuchsia-500:oklch(.667 .295 322.15);--color-fuchsia-600:oklch(.591 .293 322.896);--color-fuchsia-700:oklch(.518 .253 323.949);--color-fuchsia-800:oklch(.452 .211 324.591);--color-fuchsia-900:oklch(.401 .17 325.612);--color-fuchsia-950:oklch(.293 .136 325.661);--color-pink-50:oklch(.971 .014 343.198);--color-pink-100:oklch(.948 .028 342.258);--color-pink-200:oklch(.899 .061 343.231);--color-pink-300:oklch(.823 .12 346.018);--color-pink-400:oklch(.718 .202 349.761);--color-pink-500:oklch(.656 .241 354.308);--color-pink-600:oklch(.592 .249 .584);--color-pink-700:oklch(.525 .223 3.958);--color-pink-800:oklch(.459 .187 3.815);--color-pink-900:oklch(.408 .153 2.432);--color-pink-950:oklch(.284 .109 3.907);--color-rose-50:oklch(.969 .015 12.422);--color-rose-100:oklch(.941 .03 12.58);--color-rose-200:oklch(.892 .058 10.001);--color-rose-300:oklch(.81 .117 11.638);--color-rose-400:oklch(.712 .194 13.428);--color-rose-500:oklch(.645 .246 16.439);--color-rose-600:oklch(.586 .253 17.585);--color-rose-700:oklch(.514 .222 16.935);--color-rose-800:oklch(.455 .188 13.697);--color-rose-900:oklch(.41 .159 10.272);--color-rose-950:oklch(.271 .105 12.094);--color-slate-50:oklch(.984 .003 247.858);--color-slate-100:oklch(.968 .007 247.896);--color-slate-200:oklch(.929 .013 255.508);--color-slate-300:oklch(.869 .022 252.894);--color-slate-400:oklch(.704 .04 256.788);--color-slate-500:oklch(.554 .046 257.417);--color-slate-600:oklch(.446 .043 257.281);--color-slate-700:oklch(.372 .044 257.287);--color-slate-800:oklch(.279 .041 260.031);--color-slate-900:oklch(.208 .042 265.755);--color-slate-950:oklch(.129 .042 264.695);--color-gray-50:oklch(.985 .002 247.839);--color-gray-100:oklch(.967 .003 264.542);--color-gray-200:oklch(.928 .006 264.531);--color-gray-300:oklch(.872 .01 258.338);--color-gray-400:oklch(.707 .022 261.325);--color-gray-500:oklch(.551 .027 264.364);--color-gray-600:oklch(.446 .03 256.802);--color-gray-700:oklch(.373 .034 259.733);--color-gray-800:oklch(.278 .033 256.848);--color-gray-900:oklch(.21 .034 264.665);--color-gray-950:oklch(.13 .028 261.692);--color-zinc-50:oklch(.985 0 0);--color-zinc-100:oklch(.967 .001 286.375);--color-zinc-200:oklch(.92 .004 286.32);--color-zinc-300:oklch(.871 .006 286.286);--color-zinc-400:oklch(.705 .015 286.067);--color-zinc-500:oklch(.552 .016 285.938);--color-zinc-600:oklch(.442 .017 285.786);--color-zinc-700:oklch(.37 .013 285.805);--color-zinc-800:oklch(.274 .006 286.033);--color-zinc-900:oklch(.21 .006 285.885);--color-zinc-950:oklch(.141 .005 285.823);--color-neutral-50:oklch(.985 0 0);--color-neutral-100:oklch(.97 0 0);--color-neutral-200:oklch(.922 0 0);--color-neutral-300:oklch(.87 0 0);--color-neutral-400:oklch(.708 0 0);--color-neutral-500:oklch(.556 0 0);--color-neutral-600:oklch(.439 0 0);--color-neutral-700:oklch(.371 0 0);--color-neutral-800:oklch(.269 0 0);--color-neutral-900:oklch(.205 0 0);--color-neutral-950:oklch(.145 0 0);--color-stone-50:oklch(.985 .001 106.423);--color-stone-100:oklch(.97 .001 106.424);--color-stone-200:oklch(.923 .003 48.717);--color-stone-300:oklch(.869 .005 56.366);--color-stone-400:oklch(.709 .01 56.259);--color-stone-500:oklch(.553 .013 58.071);--color-stone-600:oklch(.444 .011 73.639);--color-stone-700:oklch(.374 .01 67.558);--color-stone-800:oklch(.268 .007 34.298);--color-stone-900:oklch(.216 .006 56.043);--color-stone-950:oklch(.147 .004 49.25);--color-black:#000;--color-white:#fff;--spacing:.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:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.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:-.05em;--tracking-tight:-.025em;--tracking-normal:0em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-normal:1.5;--leading-relaxed:1.625;--leading-loose:2;--radius-xs:.125rem;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--radius-4xl:2rem;--shadow-2xs:0 1px #0000000d;--shadow-xs:0 1px 2px 0 #0000000d;--shadow-sm:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;--shadow-2xl:0 25px 50px -12px #00000040;--inset-shadow-2xs:inset 0 1px #0000000d;--inset-shadow-xs:inset 0 1px 1px #0000000d;--inset-shadow-sm:inset 0 2px 4px #0000000d;--drop-shadow-xs:0 1px 1px #0000000d;--drop-shadow-sm:0 1px 2px #00000026;--drop-shadow-md:0 3px 3px #0000001f;--drop-shadow-lg:0 4px 4px #00000026;--drop-shadow-xl:0 9px 7px #0000001a;--drop-shadow-2xl:0 25px 25px #00000026;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,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:.15s;--default-transition-timing-function:cubic-bezier(.4,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{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;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;-webkit-text-decoration: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{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.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{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}: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{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.top-10{top:calc(var(--spacing)*10)}.left-10{left:calc(var(--spacing)*10)}.z-40{z-index:40}.\!container{width:100%!important}@media (width>=40rem){.\!container{max-width:40rem!important}}@media (width>=48rem){.\!container{max-width:48rem!important}}@media (width>=64rem){.\!container{max-width:64rem!important}}@media (width>=80rem){.\!container{max-width:80rem!important}}@media (width>=96rem){.\!container{max-width:96rem!important}}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.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)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.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-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-4{height:calc(var(--spacing)*4)}.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-2\.5{width:calc(var(--spacing)*2.5)}.w-4{width:calc(var(--spacing)*4)}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.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-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.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}.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}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-px{gap:1px}:where(.space-y-1>: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)))}:where(.space-y-2>: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)))}:where(.space-y-3>: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)))}:where(.space-y-4>: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)))}:where(.space-y-6>: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)))}:where(.divide-y>: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)))}:where(.divide-slate-100>:not(:last-child)){border-color:var(--color-slate-100)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-y{border-block-style:var(--tw-border-style);border-block-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-200{border-color:var(--color-blue-200)}.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-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-white{background-color:var(--color-white)}.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\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.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-12{padding-block:calc(var(--spacing)*12)}.py-16{padding-block:calc(var(--spacing)*16)}.pt-4{padding-top:calc(var(--spacing)*4)}.pt-6{padding-top:calc(var(--spacing)*6)}.pb-1{padding-bottom:calc(var(--spacing)*1)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-8{padding-bottom:calc(var(--spacing)*8)}.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-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))}.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-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.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-slate-400::placeholder{color:var(--color-slate-400)}.opacity-50{opacity:.5}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);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-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))}.file\:mr-3::file-selector-button{margin-right:calc(var(--spacing)*3)}.file\:rounded::file-selector-button{border-radius:.25rem}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.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)}@media (hover:hover){.hover\:border-slate-400:hover{border-color:var(--color-slate-400)}.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}.hover\:text-slate-600:hover{color:var(--color-slate-600)}.hover\:text-slate-800:hover{color:var(--color-slate-800)}.hover\:underline:hover{text-decoration-line:underline}.hover\:file\:bg-slate-300: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-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}@media (width>=40rem){.sm\:mt-0{margin-top:calc(var(--spacing)*0)}.sm\:flex{display:flex}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-3{gap:calc(var(--spacing)*3)}.sm\:px-6{padding-inline:calc(var(--spacing)*6)}.sm\:text-right{text-align:right}}@media (width>=48rem){.md\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}}}:root{--color-text-primary:#171717;--color-text-secondary:#475467;--color-text-muted:#6f6f6f;--color-text-faint:#9ca3af;--color-text-inverse:#fff;--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:#fff;--color-surface-default:#fff;--color-surface-card:#fffc;--color-surface-subtle:#f5f5f5;--color-surface-muted:#f3f4f6;--color-surface-muted-hover:#e5e7eb;--color-surface-muted-active:#d1d5db;--color-surface-muted-inverse:#111827;--color-surface-elevated:#ffffffeb;--color-surface-elevated-strong:#fffffff2;--color-surface-elevated-soft:#ffffffe6;--color-surface-overlay:#ffffffe0;--color-surface-overlay-strong:#fffffff5;--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:#f9fafbe6;--color-surface-page-tint:#f8f7ff;--color-surface-page-tint-alt:#f4f7fb;--color-border-default:#e8e8e8;--color-border-strong:#d1d5db;--color-border-muted:#e5e7eb;--color-border-subtle:#d0d5dd;--color-border-google:#747775;--color-border-panel:#1e1b2e14;--color-border-panel-muted:#6b728038;--color-border-panel-strong:#6b728059;--color-border-overlay:#94a3b838;--color-border-overlay-strong:#94a3b84d;--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:#7c3aed33;--color-focus-ring-strong:#8b5cf629;--color-ring-subtle:#1e1b2e59;--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:#fff;--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:#fff;--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:#ecfdf3;--color-status-success-banner-border:#bffcd9;--color-status-success-banner-foreground:#008a2e;--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:#fff;--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:#fff0f0;--color-status-danger-banner-border:#ffe0e1;--color-status-danger-banner-foreground:#e60000;--overlay-backdrop-default:#11182785;--overlay-dark-soft:#1e1b2e0d;--overlay-dark-soft-alt:#1e1b2e0f;--overlay-dark-border:#1e1b2e14;--overlay-dark-strong:#1e1b2e24;--overlay-brand-soft:#7c3aed1a;--overlay-brand-soft-strong:#7c3aed24;--overlay-brand-muted:#804eec14;--overlay-brand-faint:#804eec0a;--overlay-brand-glow:#804eec1a;--overlay-google-state:#303030;--shadow-auth-card:0 20px 45px #0000001a;--shadow-surface-sm:0 10px 30px #0f172a0d;--shadow-surface-md:0 10px 30px #0f172a0f;--shadow-surface-hover:0 12px 30px #0f172a14;--shadow-surface-lg:0 24px 48px #0f172a2e;--shadow-surface-xl:0 32px 70px #0f172a1f;--shadow-sidebar:20px 0 45px #1e1b2e0f;--shadow-floating-control:0 10px 24px #1e1b2e24;--shadow-google-button:0 1px 2px 0 #3c40434d,0 1px 3px 1px #3c404326;--shadow-brand-action:0 18px 35px #7c3aed40;--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,#1e1b2e1a,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{min-height:100%;margin:0}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{clip:rect(0 0 0 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.login-screen{background:var(--gradient-shell);justify-content:center;align-items:center;min-height:100vh;padding:2rem 1rem;display:flex;position:relative;overflow:hidden}.background-layer{pointer-events:none;position:absolute;inset:0;overflow:hidden}.background-logo{position:absolute}.logo-asset{object-fit:contain;width:100%;height:auto;display:block}.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:.2}.opacity-03{opacity:.3}.opacity-04{opacity:.4}.opacity-05{opacity:.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{top:50%;left: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{z-index:1;width:100%;max-width:32rem;transition:transform .2s ease-out;position:relative}.card-glow{background:var(--gradient-card-glow);filter:blur(24px);z-index:-1;border-radius:1rem;position:absolute;inset:0}.auth-card-shell{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow-auth-card);border-radius:1rem;padding:1.25rem;position:relative}.auth-card-topbar{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.brand-header{justify-content:center;margin-bottom:1.5rem;display:flex}.brand-logo{object-fit:contain;width:4rem;height:4rem;display:block}.title-group{text-align:center;margin-bottom:1.5rem}.title-group h1{margin:0;font-size:clamp(1.5rem,4vw,1.875rem);font-weight:700}.auth-body{flex-direction:column;align-items:center;gap:1rem;display:flex}.login-form{flex-direction:column;gap:1rem;width:100%;max-width:28rem;margin:0 auto;display:flex}.divider-row{align-items:center;gap:.25rem;width:100%;margin:.5rem 0 0;display:flex;position:relative}.divider-line{border-top:1px solid var(--border);flex:1}.divider-pill{background:var(--background);color:var(--muted-foreground);z-index:1;border-radius:999px;padding:.25rem 1rem;font-size:.875rem;font-weight:500;position:relative}.signup-copy{color:var(--muted-foreground);text-align:center;margin:0;font-size:.875rem}.signup-link{color:var(--foreground);border-radius:.375rem;margin-left:.2rem;padding:.25rem .5rem;font-weight:500;transition:color .2s,background-color .2s;display:inline-block}.signup-link:hover{background:var(--accent)}.status-slot{min-height:.25rem}.status-banner{border:1px solid;border-radius:.5rem;padding:.75rem .875rem;font-size:.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{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-appearance:none;background-color:var(--color-surface-default);border:1px solid var(--color-border-google);box-sizing:border-box;color:var(--color-text-google);cursor:pointer;letter-spacing:.25px;text-align:center;vertical-align:middle;white-space:nowrap;background-image:none;border-radius:20px;outline:none;width:max-content;min-width:min-content;height:40px;margin:0 auto;padding:0 12px;font-family:Roboto,Arial,sans-serif;font-size:14px;text-decoration:none;transition:background-color .218s,border-color .218s,box-shadow .218s;display:block;position:relative;overflow:hidden}.gsi-material-button .gsi-material-button-icon{width:20px;min-width:20px;height:20px;margin-right:12px}.gsi-material-button .gsi-material-button-icon svg{width:100%;height:100%;display:block}.gsi-material-button .gsi-material-button-content-wrapper{flex-flow:row;justify-content:space-between;align-items:center;width:100%;height:100%;display:flex;position:relative}.gsi-material-button .gsi-material-button-contents{text-overflow:ellipsis;vertical-align:top;flex-grow:0;font-family:Roboto,Arial,sans-serif;font-weight:500;overflow:hidden}.gsi-material-button .gsi-material-button-state{opacity:0;transition:opacity .218s;position:absolute;inset:0}.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:.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:.08}.auth-provider-stack{gap:8px;margin-bottom:16px;display:grid}.auth-provider-button{color:#0f172a;text-align:center;background-color:#fff;border:1px solid #e2e8f0;border-radius:.375rem;justify-content:center;align-items:center;width:100%;min-height:44px;padding:.625rem 1rem;font-size:1rem;font-weight:600;line-height:1.25;text-decoration:none;display:inline-flex}.auth-provider-button:hover{background-color:#f8fafc}.auth-provider-button:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.auth-provider-button-disabled,.auth-provider-button-disabled:hover{color:#94a3b8;cursor:not-allowed;background-color:#f1f5f9}.auth-provider-separator{color:#64748b;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin:16px 0;font-size:.875rem;line-height:1.4;display:grid}.auth-provider-separator span{background-color:#e2e8f0;height:1px}.auth-provider-separator em{font-style:normal}@keyframes move-right-slow{0%{transform:translate(-6rem)}to{transform:translate(calc(100vw + 6rem))}}@keyframes move-right-medium{0%{transform:translate(-5rem)}to{transform:translate(calc(100vw + 5rem))}}@keyframes move-right-fast{0%{transform:translate(-7rem)}to{transform:translate(calc(100vw + 7rem))}}@keyframes move-down-slow{0%{transform:translateY(-6rem)}to{transform:translateY(calc(100vh + 6rem))}}@keyframes move-down-medium{0%{transform:translateY(-5rem)}to{transform:translateY(calc(100vh + 5rem))}}@keyframes move-diagonal-1{0%{transform:translate(-4rem,-4rem)}to{transform:translate(52vw,70vh)}}@keyframes move-diagonal-2{0%{transform:translateY(-4rem)}to{transform:translate(-18vw,76vh)}}@keyframes move-diagonal-3{0%{transform:translateY(-4rem)}to{transform:translate(12vw,72vh)}}@keyframes orbit-1{0%{transform:translate(-50%,-50%)rotate(0)translate(11rem)}to{transform:translate(-50%,-50%)rotate(360deg)translate(11rem)}}@keyframes orbit-2{0%{transform:translate(-50%,-50%)rotate(0)translate(7rem)}to{transform:translate(-50%,-50%)rotate(-360deg)translate(7rem)}}@keyframes orbit-3{0%{transform:translate(-50%,-50%)rotate(0)translate(5rem)}to{transform:translate(-50%,-50%)rotate(360deg)translate(5rem)}}@keyframes orbit-4{0%{transform:translate(-50%,-50%)rotate(0)translate(15rem)}to{transform:translate(-50%,-50%)rotate(360deg)translate(15rem)}}@keyframes orbit-5{0%{transform:translate(-50%,-50%)rotate(0)translate(8rem)}to{transform:translate(-50%,-50%)rotate(-360deg)translate(8rem)}}@keyframes zigzag-1{0%{transform:translate(-6rem)translateY(0)}25%{transform:translate(25vw)translateY(-3rem)}50%{transform:translate(50vw)translateY(3rem)}75%{transform:translate(75vw)translateY(-2rem)}to{transform:translate(calc(100vw + 6rem))translateY(1rem)}}@keyframes zigzag-2{0%{transform:translate(-5rem)translateY(0)}25%{transform:translate(25vw)translateY(2rem)}50%{transform:translate(50vw)translateY(-3rem)}75%{transform:translate(75vw)translateY(1.5rem)}to{transform:translate(calc(100vw + 5rem))translateY(0)}}@keyframes zigzag-3{0%{transform:translate(-7rem)translateY(0)}20%{transform:translate(20vw)translateY(-4rem)}40%{transform:translate(40vw)translateY(4rem)}60%{transform:translate(60vw)translateY(-2rem)}80%{transform:translate(80vw)translateY(3rem)}to{transform:translate(calc(100vw + 7rem))translateY(0)}}@keyframes spiral-1{0%{transform:translate(0)rotate(0)scale(.6)}to{transform:translate(90vw,90vh)rotate(360deg)scale(1.3)}}@keyframes spiral-2{0%{transform:translate(0)rotate(0)scale(1.4)}to{transform:translate(-70vw,90vh)rotate(-360deg)scale(.7)}}@keyframes float-random-1{0%,to{transform:translate(0)}50%{transform:translate(1.4rem,-1rem)}}@keyframes float-random-2{0%,to{transform:translate(0)}50%{transform:translate(-1.2rem,1.1rem)}}@keyframes float-random-3{0%,to{transform:translate(0)}50%{transform:translate(.9rem,-1.4rem)}}@keyframes float-random-4{0%,to{transform:translate(0)}50%{transform:translate(-1rem,.8rem)}}@keyframes wave-1{0%{transform:translate(-4rem)}to{transform:translate(calc(100vw + 4rem))}}@keyframes wave-2{0%{transform:translate(-5rem)}to{transform:translate(calc(100vw + 5rem))}}@keyframes wave-3{0%{transform:translate(-4rem)}to{transform:translate(calc(100vw + 4rem))}}@keyframes wave-4{0%{transform:translate(-6rem)}to{transform:translate(calc(100vw + 6rem))}}@keyframes corner-shoot-1{0%{transform:translate(0)}to{transform:translate(110vw,110vh)}}@keyframes corner-shoot-2{0%{transform:translate(0)}to{transform:translate(-110vw,110vh)}}@keyframes corner-shoot-3{0%{transform:translate(0)}to{transform:translate(110vw,-110vh)}}@keyframes corner-shoot-4{0%{transform:translate(0)}to{transform:translate(-110vw,-110vh)}}@keyframes bounce-ball-1{0%,to{transform:translateY(0)translate(0)}50%{transform:translateY(-5rem)translate(2rem)}}@keyframes bounce-ball-2{0%,to{transform:translateY(0)translate(0)}50%{transform:translateY(4rem)translate(-2rem)}}@keyframes bounce-ball-3{0%,to{transform:translateY(0)translate(0)}50%{transform:translateY(-4rem)translate(1.5rem)}}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin-reverse{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}@keyframes bounce-gentle{0%,to{transform:translateY(0)}50%{transform:translateY(-.6rem)}}@keyframes pulse-gentle{0%,to{opacity:1;transform:scale(1)}50%{opacity:.85;transform:scale(1.08)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}@keyframes float-gentle{0%,to{transform:translateY(0)}50%{transform:translateY(-.8rem)}}@keyframes scale-gentle{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}@keyframes rotate-gentle{0%,to{transform:rotate(0)}50%{transform:rotate(12deg)}}@keyframes bounce-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-.9rem)}}@keyframes sway{0%,to{transform:translate(0)}50%{transform:translate(.8rem)}}@keyframes spin-fast{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse-fast{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}@keyframes wobble{0%,to{transform:translate(0)}15%{transform:translate(-.35rem)rotate(-5deg)}30%{transform:translate(.25rem)rotate(4deg)}45%{transform:translate(-.2rem)rotate(-2deg)}60%{transform:translate(.12rem)rotate(1deg)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-.12rem)}75%{transform:translate(.12rem)}}@keyframes bounce-crazy{0%,to{transform:translateY(0)scale(1)}25%{transform:translateY(-.5rem)scale(1.05)}75%{transform:translateY(.2rem)scale(.98)}}@keyframes spin-wobble{0%{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.12)}to{transform:rotate(360deg)scale(1)}}@keyframes flip{0%,to{transform:rotateY(0)}50%{transform:rotateY(180deg)}}@keyframes twirl{0%,to{transform:rotate(0)scale(1)}50%{transform:rotate(180deg)scale(1.15)}}@keyframes dance{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-.3rem)rotate(-6deg)}75%{transform:translateY(.3rem)rotate(6deg)}}@keyframes jiggle{0%,to{transform:translate(0)}25%{transform:translate(-.18rem)}50%{transform:translate(.18rem)}75%{transform:translate(-.1rem)}}@keyframes vibrate{0%,to{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%,to{transform:rotate(0)}50%{transform:rotate(10deg)}}@keyframes pendulum{0%,to{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}@keyframes elastic{0%,to{transform:scale(1)}30%{transform:scale(1.15,.9)}60%{transform:scale(.95,1.08)}}@keyframes rubber{0%,to{transform:scale(1)}35%{transform:scale(1.2,.9)}65%{transform:scale(.9,1.15)}}@keyframes rocket{0%,to{transform:translateY(0)rotate(-8deg)}50%{transform:translateY(-.8rem)rotate(-12deg)}}@keyframes comet{0%,to{transform:translate(0)rotate(12deg)}50%{transform:translate(.8rem)rotate(18deg)}}@keyframes meteor{0%,to{transform:translateY(0)rotate(8deg)}50%{transform:translateY(-.7rem)rotate(14deg)}}@keyframes blast{0%,to{transform:scale(1)}50%{transform:scale(1.2)rotate(10deg)}}@keyframes spin-bounce{0%,to{transform:rotate(0)translateY(0)}50%{transform:rotate(180deg)translateY(-.5rem)}}@keyframes flip-bounce{0%,to{transform:rotateY(0)translateY(0)}50%{transform:rotateY(180deg)translateY(-.5rem)}}@keyframes scale-bounce{0%,to{transform:scale(1)translateY(0)}50%{transform:scale(1.14)translateY(-.55rem)}}.animate-move-right-slow{animation:25s linear infinite move-right-slow}.animate-move-right-medium{animation:20s linear infinite move-right-medium}.animate-move-right-fast{animation:15s linear infinite move-right-fast}.animate-move-down-slow{animation:30s linear infinite move-down-slow}.animate-move-down-medium{animation:25s linear infinite move-down-medium}.animate-move-diagonal-1{animation:35s linear infinite move-diagonal-1}.animate-move-diagonal-2{animation:28s linear infinite move-diagonal-2}.animate-move-diagonal-3{animation:32s linear infinite move-diagonal-3}.animate-orbit-1{animation:20s linear infinite orbit-1}.animate-orbit-2{animation:25s linear infinite reverse orbit-2}.animate-orbit-3{animation:15s linear infinite orbit-3}.animate-orbit-4{animation:22s linear infinite orbit-4}.animate-orbit-5{animation:18s linear infinite orbit-5}.animate-zigzag-1{animation:18s linear infinite zigzag-1}.animate-zigzag-2{animation:22s linear infinite zigzag-2}.animate-zigzag-3{animation:16s linear infinite zigzag-3}.animate-spiral-1{animation:30s linear infinite spiral-1}.animate-spiral-2{animation:25s linear infinite spiral-2}.animate-float-random-1{animation:8s ease-in-out infinite float-random-1}.animate-float-random-2{animation:10s ease-in-out infinite float-random-2}.animate-float-random-3{animation:12s ease-in-out infinite float-random-3}.animate-float-random-4{animation:9s ease-in-out infinite float-random-4}.animate-wave-1{animation:20s linear infinite wave-1}.animate-wave-2{animation:24s linear infinite wave-2}.animate-wave-3{animation:18s linear infinite wave-3}.animate-wave-4{animation:26s linear infinite wave-4}.animate-corner-shoot-1{animation:15s linear infinite corner-shoot-1}.animate-corner-shoot-2{animation:18s linear infinite corner-shoot-2}.animate-corner-shoot-3{animation:20s linear infinite corner-shoot-3}.animate-corner-shoot-4{animation:16s linear infinite corner-shoot-4}.animate-bounce-ball-1{animation:12s ease-in-out infinite bounce-ball-1}.animate-bounce-ball-2{animation:14s ease-in-out infinite bounce-ball-2}.animate-bounce-ball-3{animation:10s ease-in-out infinite bounce-ball-3}.animate-spin-slow{animation:8s linear infinite spin-slow}.animate-spin-reverse{animation:6s linear infinite spin-reverse}.animate-bounce-gentle{animation:3s ease-in-out infinite bounce-gentle}.animate-bounce-soft{animation:4s ease-in-out infinite bounce-soft}.animate-pulse-gentle{animation:4s ease-in-out infinite pulse-gentle}.animate-wiggle{animation:2s ease-in-out infinite wiggle}.animate-float-gentle{animation:5s ease-in-out infinite float-gentle}.animate-scale-gentle{animation:6s ease-in-out infinite scale-gentle}.animate-rotate-gentle{animation:8s ease-in-out infinite rotate-gentle}.animate-sway{animation:3s ease-in-out infinite sway}.animate-spin-fast{animation:2s linear infinite spin-fast}.animate-pulse-fast{animation:1.5s ease-in-out infinite pulse-fast}.animate-wobble{animation:2s ease-in-out infinite wobble}.animate-shake{animation:.5s ease-in-out infinite shake}.animate-bounce-crazy{animation:1s ease-in-out infinite bounce-crazy}.animate-spin-wobble{animation:4s ease-in-out infinite spin-wobble}.animate-flip{animation:3s ease-in-out infinite flip}.animate-twirl{animation:5s ease-in-out infinite twirl}.animate-dance{animation:3s ease-in-out infinite dance}.animate-jiggle{animation:1s ease-in-out infinite jiggle}.animate-vibrate{animation:.3s ease-in-out infinite vibrate}.animate-swing{animation:2.8s ease-in-out infinite swing}.animate-pendulum{animation:2.4s ease-in-out infinite pendulum}.animate-elastic{animation:2.2s ease-in-out infinite elastic}.animate-rubber{animation:2.5s ease-in-out infinite rubber}.animate-rocket{animation:1.8s ease-in-out infinite rocket}.animate-comet{animation:2s ease-in-out infinite comet}.animate-meteor{animation:1.7s ease-in-out infinite meteor}.animate-blast{animation:2.2s ease-in-out infinite blast}.animate-spin-bounce{animation:2.4s ease-in-out infinite spin-bounce}.animate-flip-bounce{animation:2.6s ease-in-out infinite flip-bounce}.animate-scale-bounce{animation:2.1s ease-in-out infinite scale-bounce}.ui-button{cursor:pointer;border:0;border-radius:.35rem;justify-content:center;align-items:center;gap:.5rem;min-height:44px;font-weight:600;line-height:1;text-decoration:none;transition:background-color .2s,color .2s,box-shadow .2s,opacity .2s;display:inline-flex}.ui-button-icon,.ui-button-icon svg{width:1rem;height:1rem}.ui-button:focus-visible{box-shadow:0 0 0 3px var(--color-focus-ring);outline:none}.ui-button-sm{min-height:40px;padding:.625rem .9rem;font-size:.875rem}.ui-button-md{padding:.7rem 1rem;font-size:.95rem}.ui-button-lg{padding:.82rem 1.15rem;font-size:1rem}.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{color:var(--color-brand-primary);background:0 0}.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 #0000;border-radius:999px;padding:.3rem .75rem;font-size:.75rem;font-weight:600;line-height:1.2;display:inline-flex}.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);color:var(--color-text-brand);border-color:#804eec4d}.ui-card{background:var(--color-surface-default);border:1px solid var(--color-border-default);box-shadow:var(--shadow-surface-md);border-radius:1rem}.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);color:var(--color-text-primary);font:inherit;border-radius:.75rem;width:100%;min-height:44px;padding:.75rem .95rem;line-height:1.4}.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);color:var(--color-text-primary);font:inherit;resize:vertical;border-radius:.75rem;width:100%;min-height:7rem;padding:.85rem .95rem;line-height:1.4}.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{width:100%;position:relative}.ui-select-native{opacity:0;pointer-events:none;width:0;height:0;position:absolute;top:0;left:0}.ui-select-control{appearance:none;background:var(--color-surface-default);border:1px solid var(--color-border-default);color:var(--color-text-primary);cursor:pointer;text-align:left;border-radius:.75rem;justify-content:space-between;align-items:center;gap:.75rem;width:100%;min-height:44px;padding:.55rem .75rem .55rem .95rem;transition:border-color .2s,box-shadow .2s;display:flex}.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{flex-wrap:wrap;flex:auto;align-items:center;gap:.35rem;min-width:0;display:flex}.ui-select-placeholder{color:var(--color-text-faint)}.ui-select-chip{background:var(--color-surface-muted);color:var(--color-text-primary);border-radius:999px;padding:.35rem .6rem;font-size:.875rem;line-height:1;display:inline-flex}.ui-select-arrow-zone{color:var(--color-text-secondary);flex:none;justify-content:center;align-items:center;display:inline-flex}.ui-select-arrow-icon{width:1rem;height:1rem;transition:transform .2s}.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);box-shadow:var(--shadow-surface-md);z-index:30;border-radius:.9rem;gap:.25rem;max-height:16rem;margin-top:.45rem;padding:.4rem;display:grid;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.ui-select-menu[hidden]{display:none}.ui-select-option{appearance:none;color:var(--color-text-primary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;border-radius:.7rem;justify-content:space-between;align-items:center;gap:.75rem;width:100%;padding:.7rem .8rem;display:flex}.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:auto}.ui-select-option-check{color:currentColor;opacity:0}.ui-select-option.is-selected .ui-select-option-check{opacity:1}.ui-modal-backdrop{background:var(--overlay-backdrop-default);z-index:40;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.ui-modal-panel{background:var(--color-surface-default);border:1px solid var(--color-border-default);box-shadow:var(--shadow-surface-lg);border-radius:1rem;width:min(100%,32rem);max-width: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-top:1.25rem;padding-bottom:1rem}.ui-modal-header h2{color:var(--color-text-primary);margin:0;font-size:1.125rem;font-weight:700}.ui-modal-body{padding-top:1.25rem;padding-bottom:1.25rem}.ui-modal-actions{border-top:1px solid var(--color-border-default);justify-content:flex-end;gap:.75rem;padding-top:1rem;padding-bottom:1rem;display:flex}.ui-empty-state{border:1px dashed var(--color-border-subtle);color:var(--color-text-muted);text-align:center;border-radius:1rem;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;padding:3rem 1.5rem;display:flex}.ui-empty-state-title{color:var(--color-text-primary);margin:0;font-size:1.125rem;font-weight:700}.ui-empty-state-icon{background:var(--color-surface-muted);color:var(--color-text-faint);border-radius:999px;justify-content:center;align-items:center;width:4rem;height:4rem;display:inline-flex}.ui-empty-state-icon svg{width:2rem;height:2rem}.ui-empty-state-description{max-width:32rem;margin:0}.ui-table-shell{width:100%;overflow-x:auto}.ui-table{border-collapse:collapse;width:100%;min-width:100%}.ui-icon-button{appearance:none;cursor:pointer;background:0 0;border:0;border-radius:.5rem;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:.5rem;transition:background-color .2s,color .2s;display:inline-flex}.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;box-shadow:none;cursor:pointer;background:0 0;border:0;outline:none}.ui-icon-button-ghost.ui-icon-button-neutral,.ui-icon-button-ghost.ui-icon-button-danger,.ui-icon-button-ghost.ui-icon-button-warning,.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{width:1rem;height:1rem}.ui-form-field{gap:.5rem;display:grid}.ui-form-label{color:var(--color-text-primary);font-size:.95rem;font-weight:600}.ui-form-hint{color:var(--color-text-muted);margin:0;font-size:.875rem}.ui-form-error{color:var(--color-status-danger-foreground);margin:0;font-size:.875rem}.ui-space-x{flex-shrink:0;display:inline-block}.ui-space-y{display:block}.ui-space-x-xs{width:.25rem}.ui-space-x-sm{width:.5rem}.ui-space-x-md{width:.75rem}.ui-space-x-lg{width:1rem}.ui-space-x-xl{width:1.5rem}.ui-space-y-xs{height:.25rem}.ui-space-y-sm{height:.5rem}.ui-space-y-md{height:.75rem}.ui-space-y-lg{height:1rem}.ui-space-y-xl{height:1.5rem}.dashboard-shell{background:var(--gradient-shell);color:var(--foreground);grid-template-columns:minmax(16rem,18rem) 1fr;min-height:100vh;display:grid}.dashboard-sidebar{padding-left:env(safe-area-inset-left,0px)}.sidebar-nav-shell{background:var(--color-surface-elevated);border-right:1px solid var(--color-border-panel);box-shadow:var(--shadow-sidebar);height:100vh;padding:env(safe-area-inset-top,0px).75rem env(safe-area-inset-bottom,0px)0;flex-direction:column;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar-brand{justify-content:center;align-items:center;padding:.75rem .5rem;display:flex;position:relative}.sidebar-brand-link{flex-direction:column;align-items:center;gap:.5rem;width:100%;display:flex}.sidebar-brand-logo{object-fit:cover;border-radius:.75rem;width:4rem;height:4rem}.sidebar-brand-title{color:var(--color-text-heading-alt);margin:0;font-size:1.125rem;font-weight:700}.sidebar-collapse-button{background:var(--color-surface-elevated-strong);box-shadow:var(--shadow-floating-control);color:var(--color-text-muted);cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;padding:.25rem;display:inline-flex;position:absolute;top:.5rem;right:.75rem}.sidebar-collapse-button svg{width:1rem;height:1rem}.sidebar-primary{flex-direction:column;flex:1;display:flex}.sidebar-list{gap:0;margin:0;padding:.75rem 0 0;list-style:none;display:grid}.sidebar-divider{margin:.5rem 0;padding:0 .875rem}.sidebar-divider hr,.sidebar-projects hr{border:0;border-top:1px solid var(--color-border-panel-muted);margin:0}.sidebar-nav-item{color:var(--color-text-muted);border-radius:.9rem;margin:0 .5rem;padding:.15rem 0;font-weight:500;transition:background-color .2s,color .2s}.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{width:100%;display:block}.sidebar-nav-link-inner{align-items:center;gap:.75rem;padding:.6rem .95rem;display:flex}.sidebar-nav-icon{justify-content:center;align-items:center;display:inline-flex}.sidebar-nav-icon svg{width:1.35rem;height:1.35rem}.sidebar-nav-label{font-size:1rem}.sidebar-projects{margin-top:.4rem;padding:0 .75rem .75rem}.sidebar-section-label{color:var(--color-text-muted);letter-spacing:.14em;text-transform:uppercase;margin:.9rem 0 .65rem;padding:0 .5rem;font-size:.625rem;font-weight:700}.sidebar-project-list{gap:.1rem;margin:0;padding:0;list-style:none;display:grid}.sidebar-project-link{color:var(--color-text-muted);border-radius:.85rem;align-items:center;gap:.65rem;padding:.48rem .5rem;transition:background-color .2s,color .2s;display:flex}.sidebar-project-link:hover{background:var(--overlay-dark-soft);color:var(--color-surface-muted-inverse)}.sidebar-project-icon{border:1px solid var(--color-border-panel-strong);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:1.55rem;height:1.55rem;display:inline-flex}.sidebar-project-icon svg{width:.9rem;height:.9rem}.sidebar-project-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.9rem;overflow:hidden}.sidebar-footer-links{margin-top:auto;padding-bottom:.25rem}.sidebar-organization{background:var(--color-surface-elevated);padding:0 .5rem .9rem}.organization-button{cursor:pointer;text-align:left;background:0 0;border:0;border-radius:.95rem;align-items:center;gap:.65rem;width:100%;padding:.55rem .65rem;transition:background-color .2s;display:flex}.organization-button:hover{background:var(--overlay-dark-soft)}.organization-avatar{border-radius:999px;flex-shrink:0;width:1.75rem;height:1.75rem;display:inline-flex;overflow:hidden}.organization-avatar img{aspect-ratio:1;object-fit:cover;width:100%;height:100%}.organization-copy{flex-direction:column;min-width:0;display:flex}.organization-name{color:var(--color-text-body-subtle);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:600;overflow:hidden}.organization-meta{color:var(--color-text-muted);font-size:.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)}.dashboard-main{flex-direction:column;gap:1.5rem;min-width:0;padding:2rem;display:flex}.overview-section{padding:.25rem 0 0}.overview-section-heading{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.overview-section-heading h1,.overview-section-heading h3,.tasks-section-header h3{color:var(--color-surface-muted-inverse);margin:0;font-size:1.6rem;font-weight:600}.project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.project-card{background:var(--color-surface-default);border:1px solid var(--color-border-subtle);cursor:pointer;border-radius:1rem;padding:1rem;transition:box-shadow .2s}.project-card-top{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.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;gap:.75rem;margin-bottom:1rem;display:flex}.project-avatar{background:var(--project-color,var(--color-project-fallback));color:var(--color-text-inverse);border-radius:.85rem;flex-shrink:0;justify-content:center;align-items:center;width:3rem;height:3rem;font-size:1.1rem;font-weight:700;display:inline-flex}.project-avatar>svg{width:1.25rem;height:1.25rem}.project-date-row{color:var(--color-text-muted);align-items:center;gap:.5rem;margin-bottom:1rem;font-size:.875rem;display:flex}.tasks-section{background:var(--color-surface-default);border:1px solid var(--color-border-subtle);border-radius:1rem;overflow:hidden}.tasks-section-header{border-bottom:1px solid var(--color-border-muted);justify-content:space-between;align-items:center;padding:1.2rem 1rem;display:flex}.tasks-add-button{background:var(--color-surface-default);border:1px solid var(--color-border-muted);color:var(--color-text-secondary);cursor:pointer;border-radius:.7rem;align-items:center;gap:.5rem;min-height:2.75rem;padding:.7rem 1rem;font-weight:500;display:inline-flex}.task-list{flex-direction:column;display:flex}.task-drag-handle{color:var(--color-text-faint);cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;line-height:1}.task-drag-handle:active{cursor:grabbing}.task-row{border-bottom:1px solid var(--color-border-muted);cursor:pointer;align-items:center;gap:.75rem;padding:.9rem 1rem;transition:background-color .2s;display:flex}.task-row:hover{background:var(--color-surface-neutral-hover)}.task-check{background:var(--color-surface-default);border:2px solid var(--color-border-strong);color:var(--color-text-inverse);cursor:pointer;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:2rem;height:2rem;display:inline-flex}.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);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:.95rem;font-weight:500;overflow:hidden}.task-row.is-complete .task-body p{color:var(--color-text-faint);text-decoration:line-through}.task-meta{color:var(--color-text-muted);flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.3rem;font-size:.75rem;display:flex}.project-progress-track{background:var(--color-surface-muted);border-radius:999px;height:.5rem;overflow:hidden}.project-progress-bar{background:var(--project-color,var(--color-project-fallback));border-radius:999px;height:100%}.tab-nav{border-bottom:1px solid var(--color-border-muted);align-items:center;gap:1.5rem;margin-bottom:1.5rem;display:flex;overflow-x:auto}.tab-nav-item{color:var(--color-text-muted);padding-bottom:.75rem;border-bottom:2px solid #0000;align-items:center;gap:.5rem;min-height:44px;padding-inline:.25rem;font-size:.875rem;font-weight:400;transition:color .15s,border-color .15s;display:flex}.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{border-bottom:1px solid var(--color-border-muted);flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;padding-bottom:1rem;display:flex}.tablo-metadata-date{color:var(--color-text-muted);align-items:center;gap:.5rem;font-size:.875rem;display:flex}.tablo-metadata-date svg{width:1rem;height:1rem}.kanban-column{flex-shrink:0;width:18rem}.kanban-column .tasks-section-header h3{font-size:1rem}.etape-group-header{background:var(--color-surface-muted);border-bottom:1px solid var(--color-border-muted);align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.etape-group-color-dot{background:var(--project-color,var(--color-project-fallback));border-radius:999px;flex-shrink:0;width:.5rem;height:.5rem}.etape-group-label{color:var(--color-text-secondary);font-size:.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);padding:.75rem 1rem;font-size:.875rem;font-style:italic}#discussion-messages{scroll-behavior:smooth;max-height:32rem;overflow-y:auto}.message-row{flex-direction:column;padding:.75rem 1rem;display:flex}.message-row.message-own{align-items:flex-end}.message-row.message-other{align-items:flex-start}.message-meta{align-items:baseline;gap:.5rem;margin-bottom:.25rem;display:flex}.message-author{color:var(--color-text-primary);font-size:.875rem;font-weight:600}.message-timestamp{color:var(--color-text-muted);font-size:.75rem}.message-bubble{white-space:pre-wrap;max-width:70%;word-break:break-words;border-radius:.25rem .75rem .75rem;padding:.75rem 1rem;font-size:1rem;line-height:1.5}.message-row.message-own .message-bubble{background-color:color-mix(in srgb,var(--color-brand-primary)10%,transparent);color:var(--color-text-primary);border-radius:.75rem .75rem .25rem}.message-row.message-other .message-bubble{background-color:var(--color-surface-default,#fff);border:1px solid var(--color-border-default,#e2e8f0);color:var(--color-text-primary)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@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-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:"";inherits:false;initial-value:0}@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}
\ No newline at end of file
+@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 {
+ .collapse {
+ visibility: collapse;
+ }
+ .visible {
+ visibility: visible;
+ }
+ .absolute {
+ position: absolute;
+ }
+ .fixed {
+ position: fixed;
+ }
+ .relative {
+ position: relative;
+ }
+ .static {
+ position: static;
+ }
+ .sticky {
+ position: sticky;
+ }
+ .top-0 {
+ top: calc(var(--spacing) * 0);
+ }
+ .top-10 {
+ top: calc(var(--spacing) * 10);
+ }
+ .left-10 {
+ left: calc(var(--spacing) * 10);
+ }
+ .z-40 {
+ z-index: 40;
+ }
+ .\!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;
+ }
+ .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);
+ }
+ .mb-1 {
+ margin-bottom: calc(var(--spacing) * 1);
+ }
+ .mb-4 {
+ margin-bottom: calc(var(--spacing) * 4);
+ }
+ .mb-6 {
+ margin-bottom: calc(var(--spacing) * 6);
+ }
+ .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-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-4 {
+ height: calc(var(--spacing) * 4);
+ }
+ .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-2\.5 {
+ width: calc(var(--spacing) * 2.5);
+ }
+ .w-4 {
+ width: calc(var(--spacing) * 4);
+ }
+ .w-full {
+ width: 100%;
+ }
+ .max-w-5xl {
+ max-width: var(--container-5xl);
+ }
+ .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-shrink {
+ flex-shrink: 1;
+ }
+ .flex-shrink-0 {
+ flex-shrink: 0;
+ }
+ .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;
+ }
+ .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;
+ }
+ .gap-1 {
+ gap: calc(var(--spacing) * 1);
+ }
+ .gap-2 {
+ gap: calc(var(--spacing) * 2);
+ }
+ .gap-3 {
+ gap: calc(var(--spacing) * 3);
+ }
+ .gap-4 {
+ gap: calc(var(--spacing) * 4);
+ }
+ .gap-px {
+ gap: 1px;
+ }
+ .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-x-auto {
+ overflow-x: auto;
+ }
+ .rounded {
+ border-radius: 0.25rem;
+ }
+ .rounded-full {
+ border-radius: calc(infinity * 1px);
+ }
+ .border {
+ border-style: var(--tw-border-style);
+ border-width: 1px;
+ }
+ .border-y {
+ border-block-style: var(--tw-border-style);
+ border-block-width: 1px;
+ }
+ .border-t {
+ border-top-style: var(--tw-border-style);
+ border-top-width: 1px;
+ }
+ .border-b {
+ border-bottom-style: var(--tw-border-style);
+ border-bottom-width: 1px;
+ }
+ .border-blue-200 {
+ border-color: var(--color-blue-200);
+ }
+ .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-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-white {
+ background-color: var(--color-white);
+ }
+ .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\.5 {
+ padding-inline: calc(var(--spacing) * 1.5);
+ }
+ .px-2 {
+ padding-inline: calc(var(--spacing) * 2);
+ }
+ .px-3 {
+ padding-inline: calc(var(--spacing) * 3);
+ }
+ .px-4 {
+ padding-inline: calc(var(--spacing) * 4);
+ }
+ .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-12 {
+ padding-block: calc(var(--spacing) * 12);
+ }
+ .py-16 {
+ padding-block: calc(var(--spacing) * 16);
+ }
+ .pt-4 {
+ padding-top: calc(var(--spacing) * 4);
+ }
+ .pt-6 {
+ padding-top: calc(var(--spacing) * 6);
+ }
+ .pb-1 {
+ padding-bottom: calc(var(--spacing) * 1);
+ }
+ .pb-4 {
+ padding-bottom: calc(var(--spacing) * 4);
+ }
+ .pb-8 {
+ padding-bottom: calc(var(--spacing) * 8);
+ }
+ .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-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));
+ }
+ .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-semibold {
+ --tw-font-weight: var(--font-weight-semibold);
+ font-weight: var(--font-weight-semibold);
+ }
+ .whitespace-nowrap {
+ white-space: nowrap;
+ }
+ .text-blue-600 {
+ color: var(--color-blue-600);
+ }
+ .text-blue-700 {
+ color: var(--color-blue-700);
+ }
+ .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-slate-400 {
+ &::placeholder {
+ color: var(--color-slate-400);
+ }
+ }
+ .opacity-50 {
+ opacity: 50%;
+ }
+ .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-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));
+ }
+ .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\:border-slate-400 {
+ &:hover {
+ @media (hover: hover) {
+ border-color: var(--color-slate-400);
+ }
+ }
+ }
+ .hover\:bg-slate-50 {
+ &:hover {
+ @media (hover: hover) {
+ background-color: var(--color-slate-50);
+ }
+ }
+ }
+ .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-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));
+ }
+ }
+}
+:root {
+ --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 {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.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: grid;
+ grid-template-columns: minmax(16rem, 18rem) 1fr;
+ min-height: 100vh;
+}
+.dashboard-sidebar {
+ padding-left: env(safe-area-inset-left, 0px);
+}
+.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 {
+ display: flex;
+ align-items: center;
+ gap: 1rem;
+ padding: 0.75rem 1.5rem;
+ background: var(--color-surface-elevated);
+ border-bottom: 1px solid var(--color-border-panel);
+ margin: -2rem -2rem 1.5rem -2rem;
+}
+.page-header-left {
+ flex: 0 0 auto;
+}
+.page-header-center {
+ flex: 1 1 auto;
+ display: flex;
+ justify-content: center;
+}
+.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;
+ gap: 1.5rem;
+ min-width: 0;
+ padding: 2rem;
+}
+.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%;
+}
+.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);
+}
+@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-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-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: "";
+ 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;
+}