diff --git a/package.json b/package.json index 7dd6083..9b62e56 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "main": "index.js", "scripts": { "dev": "vite", + "refs": "npx serve refs", "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { diff --git a/refs/index.html b/refs/index.html new file mode 100644 index 0000000..271a093 --- /dev/null +++ b/refs/index.html @@ -0,0 +1,33 @@ + + + + + + Refs + + + + + + + + \ No newline at end of file diff --git a/refs/ref1/index.html b/refs/ref1/index.html new file mode 100644 index 0000000..2db5c95 --- /dev/null +++ b/refs/ref1/index.html @@ -0,0 +1,399 @@ + + + + + + DUCKDEBUG.gg — Rubber Duck Debugging as a Service + + + + + + +
+
+ + + + + +
+
+
+ RUBBER DUCK DEBUGGING AS A SERVICE +
+ +

+ ТВОЙ УТЁНОК
+ ВСЕГДА НА СВЯЗИ +

+ +

+ Объясни проблему утёнку.
+ Получи решение. Или хотя бы quack. +

+ + +
+ +
+ +
+
+ + Бесплатный tier +
+
+ + 24/7 онлайн +
+
+ + Voice + Text +
+
+
+ + +
🦆
+
+ + +
+
+

WHY DUCKDEBUG?

+ +
+
+
🦆
+

Классический Rubber Duck

+

Просто расскажи проблему. Утёнок слушает внимательно.

+
+
+
🤖
+

AI + Duck Hybrid

+

Иногда утёнок даёт реальные подсказки (на базе AI).

+
+
+
📡
+

Multiplayer Debug

+

Делитесь сессией с командой. Все смотрят на одного утёнка.

+
+
+
+
+ + +
+
+
+

ROADMAP v0.1 → v1.0

+ +
+
+
+ 01 +
+
+
MVP (Сейчас)
+
Базовый веб-утёнок + чат + voice-to-text
+
+
LIVE
+
+ +
+
+ 02 +
+
+
MCP Сервер
+
+ Подключай свой Minecraft сервер — утёнок будет дебажить моды и плагины в реальном времени +
+
+
Q3 2026
+
+ +
+
+ 03 +
+
+
Скины и Кастомизация
+
Cyberduck, Steampunk Duck, Matrix Duck, Gentoo Duck и др.
+
+
Q4 2026
+
+ +
+
+ 04 +
+
+
Battle Pass
+
Еженедельные челленджи: "Debug 50 bugs", "Объясни legacy код без мата"
+
+
Q1 2027
+
+ +
+
+ 05 +
+
+
Лутбоксы
+
+ Rare скины, voice packs ("Quack but Russian", "Quack but Rust"), эксклюзивные ошибки +
+
+
Q2 2027
+
+
+
+
+
+ + + + + + + diff --git a/refs/ref2/index.html b/refs/ref2/index.html new file mode 100644 index 0000000..a5da23f --- /dev/null +++ b/refs/ref2/index.html @@ -0,0 +1,1371 @@ + + + + + + DuckDebug.as – Rubber Duck Debugging as a Service + + + + + + +
+ + + + + +
+
+
+ + v0.1.0 – MVP Live +
+

+ 🦆 Rubber Duck
+ Debugging as a Service +

+

+ // Explain your code line by line to our virtual duck.
+ // 90% of bugs disappear when you do. +

+ + 🦆 Start Debugging Now + + +
+
+ + + + duckdebug-terminal — zsh +
+
+
+ $ duckdebug init --project my-app +
+
🦆 Duck initialized! Ready to listen.
+
+ $ duckdebug explain ./src/buggy.ts +
+
+ "Hmm, check line 42. That null looks suspicious..." +
+
+ ✨ Bug fixed! Confidence: 99.7% +
+
+
+
+
+ + +
+
+ +

Why Duck Debugging?

+

Proven by decades of programmer folklore, now powered by modern tech.

+
+
+
+
🦆
+

Virtual Duck Listener

+

+ Explain your code line-by-line to our AI-powered rubber duck. It never judges, only listens and helps you + find the bug. +

+
+
+
🔍
+

Smart Bug Detection

+

Our duck analyzes your explanation in real-time and spots logical errors before you finish typing.

+
+
+
💬
+

Interactive Sessions

+

Ask follow-up questions, paste snippets, and get rubber-duck-style guidance in real-time conversations.

+
+
+
📊
+

Debug Analytics

+

Track your debugging sessions, common bug patterns, and your "aha!" moments over time.

+
+
+
🔌
+

IDE Integration

+

Connect directly from VS Code, JetBrains, or Neovim. No context switching needed during deep debugging.

+
+
+
🎮
+

Gamified Debugging

+

Earn XP, unlock duck skins, and climb the leaderboard as you squash more bugs every day.

+
+
+
+ + +
+
+ +

What's Coming Next

+

We're just getting started. Here's what's on the horizon.

+
+ +
+ +
+
+
Q1 2026 – Completed
+

🦆 MVP Launch

+

+ Core rubber duck debugging session with AI-powered listener, basic analytics dashboard, and web interface. + The duck is alive! +

+
+ Web App + AI Duck Listener + Basic Analytics +
+
+ + +
+
+
Q2 2026 – In Development
+

🔌 MCP Server

+

+ Model Context Protocol support — connect DuckDebug to any MCP-compatible AI tool. Seamless integration with + your existing dev toolchain, Claude, Cursor, and other AI agents. +

+
+ MCP Protocol + Agent Integration + API v2 +
+
+ + +
+
+
Q3 2026 – Planned
+

🎨 Duck Skins & Customization

+

+ Customize your duck with skins: Hacker Duck, Ninja Duck, Astronaut Duck, Cyberpunk Duck, and more. Express + your debugging personality with custom quack sounds. +

+
+ Cosmetic Skins + Custom Quacks + Duck Avatar Builder +
+
+ + +
+
+
Q3 2026 – Planned
+

⚔️ Battle Pass

+

+ Seasonal battle pass with debugging challenges, weekly missions, and exclusive rewards. Debug more, earn + more. Limited-time legendary duck skins and titles await top debuggers! +

+
+ Season 1 + Daily Challenges + Exclusive Rewards +
+
+ + +
+
+
Q4 2026 – Planned
+

📦 Loot Boxes

+

+ Randomized loot boxes containing rare duck skins, debugging power-ups, XP boosters, and legendary items. + Open with debug tokens earned from your debugging sessions. +

+
+ Loot Boxes + Rare Items + Trading System +
+
+
+
+ + +
+
+ +

Choose Your Debug Tier

+

From free quacks to enterprise-level debugging.

+
+
+
+

Free Quack

+
$0/mo
+
    +
  • 5 debug sessions/day
  • +
  • Basic duck listener
  • +
  • Standard skins
  • +
  • Community support
  • +
+ Get Started +
+ +
+

Team Flock

+
$29/mo
+
    +
  • Everything in Pro
  • +
  • Up to 10 seats
  • +
  • Shared duck sessions
  • +
  • Team analytics
  • +
  • SSO & API access
  • +
+ Contact Sales +
+
+
+ + +
+
+

Ready to Debug with a Duck? 🦆

+

Join thousands of developers who fixed their bugs by explaining them to a rubber duck.

+ + 🦆 Start Now — It's Free + +
+
+ + + + + + + diff --git a/refs/ref3/debug.html b/refs/ref3/debug.html new file mode 100644 index 0000000..2fb8a04 --- /dev/null +++ b/refs/ref3/debug.html @@ -0,0 +1,367 @@ + + + + Rubber Duck Debugging as a service + + + + + + +
+
+ + +
+
+
+
+
+ Rubber debug duck +
+ booting session... +
+
+
+
+

+ > RubberDuck.debug() +

+

Explain the bug. Follow the path. Ship the fix.

+
+
+
+
+
+
+ +
+
+ + duck-session — bash +
+
+
+

duck@debug:~$ ./start-session.sh

+

$ describe issue --env production

+

> analysing stack trace...

+

$ git log --oneline -10

+

> narrowing root cause...

+

$ strace -p $PID

+

> check

+
+
+
+
+ $ +
+ +
+

+ rubber duck debugging as a service · v0.1.0-mvp +

+
+
+
+
+
+
+ + diff --git a/refs/ref3/duck.css b/refs/ref3/duck.css new file mode 100644 index 0000000..1919012 --- /dev/null +++ b/refs/ref3/duck.css @@ -0,0 +1,2258 @@ +@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&family=Source+Serif+4:wght@400;600&display=swap"); + +*, +::before, +::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +/* +! tailwindcss v3.4.16 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +} + +::before, +::after { + --tw-content: ""; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -moz-tab-size: 4; /* 3 */ + tab-size: 4; /* 3 */ + font-family: "IBM Plex Sans", sans-serif; /* 4 */ + font-feature-settings: normal; /* 5 */ + font-variation-settings: normal; /* 6 */ + -webkit-tap-highlight-color: transparent; /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: "JetBrains Mono", monospace; /* 1 */ + font-feature-settings: normal; /* 2 */ + font-variation-settings: normal; /* 3 */ + font-size: 1em; /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + font-size: 100%; /* 1 */ + font-weight: inherit; /* 1 */ + line-height: inherit; /* 1 */ + letter-spacing: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type="button"]), +input:where([type="reset"]), +input:where([type="submit"]) { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden]:where(:not([hidden="until-found"])) { + display: none; +} + +html { + color: var(--color-foreground); + background-color: var(--color-background); + scroll-behavior: smooth; +} + +body { + color: var(--color-foreground); + background-color: var(--color-background); + font-family: var(--font-sans); + font-weight: 300; +} + +* { + border-color: var(--color-border); +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +span, +a, +li, +label, +input, +textarea, +button, +div { + color: inherit; +} + +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.pointer-events-none { + pointer-events: none; +} + +.pointer-events-auto { + pointer-events: auto; +} + +.visible { + visibility: visible; +} + +.fixed { + position: fixed; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.sticky { + position: sticky; +} + +.inset-0 { + inset: 0px; +} + +.inset-x-0 { + left: 0px; + right: 0px; +} + +.inset-y-0 { + top: 0px; + bottom: 0px; +} + +.bottom-0 { + bottom: 0px; +} + +.left-0 { + left: 0px; +} + +.right-0 { + right: 0px; +} + +.right-1 { + right: 0.25rem; +} + +.right-4 { + right: 1rem; +} + +.top-0 { + top: 0px; +} + +.top-1 { + top: 0.25rem; +} + +.top-4 { + top: 1rem; +} + +.top-\[1px\] { + top: 1px; +} + +.top-\[60\%\] { + top: 60%; +} + +.top-full { + top: 100%; +} + +.isolate { + isolation: isolate; +} + +.-z-10 { + z-index: -10; +} + +.z-0 { + z-index: 0; +} + +.z-10 { + z-index: 10; +} + +.z-20 { + z-index: 20; +} + +.z-30 { + z-index: 30; +} + +.z-50 { + z-index: 50; +} + +.z-\[100\] { + z-index: 100; +} + +.z-\[1\] { + z-index: 1; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.mb-10 { + margin-bottom: 2.5rem; +} + +.ml-1 { + margin-left: 0.25rem; +} + +.ml-2 { + margin-left: 0.5rem; +} + +.mr-2 { + margin-right: 0.5rem; +} + +.mt-1 { + margin-top: 0.25rem; +} + +.mt-1\.5 { + margin-top: 0.375rem; +} + +.mt-2 { + margin-top: 0.5rem; +} + +.mt-3 { + margin-top: 0.75rem; +} + +.mt-4 { + margin-top: 1rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.block { + display: block; +} + +.flex { + display: flex; +} + +.inline-flex { + display: inline-flex; +} + +.grid { + display: grid; +} + +.hidden { + display: none; +} + +.h-1\.5 { + height: 0.375rem; +} + +.h-10 { + height: 2.5rem; +} + +.h-12 { + height: 3rem; +} + +.h-2 { + height: 0.5rem; +} + +.h-2\.5 { + height: 0.625rem; +} + +.h-3 { + height: 0.75rem; +} + +.h-4 { + height: 1rem; +} + +.h-44 { + height: 11rem; +} + +.h-64 { + height: 16rem; +} + +.h-8 { + height: 2rem; +} + +.h-9 { + height: 2.25rem; +} + +.h-\[1px\] { + height: 1px; +} + +.h-\[var\(--radix-navigation-menu-viewport-height\)\] { + height: var(--radix-navigation-menu-viewport-height); +} + +.h-auto { + height: auto; +} + +.h-full { + height: 100%; +} + +.max-h-screen { + max-height: 100vh; +} + +.min-h-10 { + min-height: 2.5rem; +} + +.min-h-11 { + min-height: 2.75rem; +} + +.min-h-12 { + min-height: 3rem; +} + +.min-h-14 { + min-height: 3.5rem; +} + +.min-h-16 { + min-height: 4rem; +} + +.min-h-\[calc\(100vh-64px\)\] { + min-height: calc(100vh - 64px); +} + +.min-h-screen { + min-height: 100vh; +} + +.w-12 { + width: 3rem; +} + +.w-2 { + width: 0.5rem; +} + +.w-2\.5 { + width: 0.625rem; +} + +.w-3 { + width: 0.75rem; +} + +.w-3\/4 { + width: 75%; +} + +.w-4 { + width: 1rem; +} + +.w-64 { + width: 16rem; +} + +.w-9 { + width: 2.25rem; +} + +.w-\[1px\] { + width: 1px; +} + +.w-\[88vw\] { + width: 88vw; +} + +.w-full { + width: 100%; +} + +.w-max { + width: max-content; +} + +.min-w-11 { + min-width: 2.75rem; +} + +.max-w-2xl { + max-width: 42rem; +} + +.max-w-4xl { + max-width: 56rem; +} + +.max-w-5xl { + max-width: 64rem; +} + +.max-w-7xl { + max-width: 80rem; +} + +.max-w-\[14ch\] { + max-width: 14ch; +} + +.max-w-\[34ch\] { + max-width: 34ch; +} + +.max-w-full { + max-width: 100%; +} + +.max-w-max { + max-width: max-content; +} + +.max-w-sm { + max-width: 24rem; +} + +.flex-1 { + flex: 1 1 0%; +} + +.shrink-0 { + flex-shrink: 0; +} + +.rotate-45 { + --tw-rotate: 45deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.scale-125 { + --tw-scale-x: 1.25; + --tw-scale-y: 1.25; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +@keyframes ping { + 75%, + 100% { + transform: scale(2); + opacity: 0; + } +} + +.animate-ping { + animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; +} + +@keyframes pulse { + 50% { + opacity: 0.5; + } +} + +.animate-pulse { + animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.animate-spin { + animation: spin 1s linear infinite; +} + +.list-none { + list-style-type: none; +} + +.flex-col { + flex-direction: column; +} + +.flex-col-reverse { + flex-direction: column-reverse; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.items-start { + align-items: flex-start; +} + +.items-end { + align-items: flex-end; +} + +.items-center { + align-items: center; +} + +.items-stretch { + align-items: stretch; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.gap-1 { + gap: 0.25rem; +} + +.gap-1\.5 { + gap: 0.375rem; +} + +.gap-10 { + gap: 2.5rem; +} + +.gap-2 { + gap: 0.5rem; +} + +.gap-3 { + gap: 0.75rem; +} + +.gap-4 { + gap: 1rem; +} + +.gap-5 { + gap: 1.25rem; +} + +.gap-6 { + gap: 1.5rem; +} + +.gap-8 { + gap: 2rem; +} + +.space-x-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.25rem * var(--tw-space-x-reverse)); + margin-left: calc(0.25rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +} + +.space-y-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); +} + +.space-y-1\.5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.375rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.375rem * var(--tw-space-y-reverse)); +} + +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); +} + +.space-y-3 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.75rem * var(--tw-space-y-reverse)); +} + +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); +} + +.space-y-5 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.25rem * var(--tw-space-y-reverse)); +} + +.space-y-6 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1.5rem * var(--tw-space-y-reverse)); +} + +.space-y-8 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(2rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(2rem * var(--tw-space-y-reverse)); +} + +.overflow-hidden { + overflow: hidden; +} + +.overflow-y-auto { + overflow-y: auto; +} + +.overflow-x-hidden { + overflow-x: hidden; +} + +.whitespace-nowrap { + white-space: nowrap; +} + +.text-balance { + text-wrap: balance; +} + +.rounded-2xl { + border-radius: 16px; +} + +.rounded-3xl { + border-radius: 20px; +} + +.rounded-full { + border-radius: 9999px; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.rounded-sm { + border-radius: 0.125rem; +} + +.rounded-xl { + border-radius: 12px; +} + +.rounded-tl-sm { + border-top-left-radius: 0.125rem; +} + +.border { + border-width: 1px; +} + +.border-0 { + border-width: 0px; +} + +.border-b { + border-bottom-width: 1px; +} + +.border-l { + border-left-width: 1px; +} + +.border-r { + border-right-width: 1px; +} + +.border-t { + border-top-width: 1px; +} + +.border-border { + border-color: var(--color-border); +} + +.border-destructive { + border-color: var(--color-destructive); +} + +.border-input { + border-color: var(--color-input); +} + +.border-transparent { + border-color: transparent; +} + +.bg-background { + background-color: var(--color-background); +} + +.bg-black\/80 { + background-color: rgb(0 0 0 / 0.8); +} + +.bg-border { + background-color: var(--color-border); +} + +.bg-card { + background-color: var(--color-card); +} + +.bg-cta-panel { + background-color: var(--color-cta-panel); +} + +.bg-destructive { + background-color: var(--color-destructive); +} + +.bg-footer { + background-color: var(--color-footer); +} + +.bg-input { + background-color: var(--color-input); +} + +.bg-muted { + background-color: var(--color-muted); +} + +.bg-panel { + background-color: var(--color-panel); +} + +.bg-popover { + background-color: var(--color-popover); +} + +.bg-primary { + background-color: var(--color-primary); +} + +.bg-roadmap-card { + background-color: var(--color-roadmap-card); +} + +.bg-secondary { + background-color: var(--color-secondary); +} + +.bg-section-subtle { + background-color: var(--color-section-subtle); +} + +.bg-status-backlog { + background-color: var(--color-status-backlog); +} + +.bg-status-completed { + background-color: var(--color-status-completed); +} + +.bg-status-planned { + background-color: var(--color-status-planned); +} + +.bg-status-progress { + background-color: var(--color-status-progress); +} + +.bg-transparent { + background-color: transparent; +} + +.bg-terminal-panel { + background-image: var(--color-terminal-panel); +} + +.object-cover { + object-fit: cover; +} + +.p-1 { + padding: 0.25rem; +} + +.p-4 { + padding: 1rem; +} + +.p-6 { + padding: 1.5rem; +} + +.px-2\.5 { + padding-left: 0.625rem; + padding-right: 0.625rem; +} + +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.px-8 { + padding-left: 2rem; + padding-right: 2rem; +} + +.py-0\.5 { + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} + +.py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} + +.py-14 { + padding-top: 3.5rem; + padding-bottom: 3.5rem; +} + +.py-16 { + padding-top: 4rem; + padding-bottom: 4rem; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} + +.py-8 { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.pb-4 { + padding-bottom: 1rem; +} + +.pb-5 { + padding-bottom: 1.25rem; +} + +.pl-2 { + padding-left: 0.5rem; +} + +.pr-4 { + padding-right: 1rem; +} + +.pr-6 { + padding-right: 1.5rem; +} + +.pt-0 { + padding-top: 0px; +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.font-mono { + font-family: "JetBrains Mono", monospace; +} + +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + +.text-\[clamp\(2\.75rem\2c 8vw\2c 5rem\)\] { + font-size: clamp(2.75rem, 8vw, 5rem); +} + +.text-\[clamp\(2rem\2c 5vw\2c 3rem\)\] { + font-size: clamp(2rem, 5vw, 3rem); +} + +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + +.font-light { + font-weight: 300; +} + +.font-medium { + font-weight: 500; +} + +.font-normal { + font-weight: 400; +} + +.font-semibold { + font-weight: 600; +} + +.leading-6 { + line-height: 1.5rem; +} + +.leading-7 { + line-height: 1.75rem; +} + +.leading-\[1\.15\] { + line-height: 1.15; +} + +.leading-none { + line-height: 1; +} + +.tracking-\[-0\.025em\] { + letter-spacing: -0.025em; +} + +.tracking-tight { + letter-spacing: -0.025em; +} + +.text-card-foreground { + color: var(--color-card-foreground); +} + +.text-code-float { + color: var(--color-code-float); +} + +.text-destructive { + color: var(--color-destructive); +} + +.text-foreground { + color: var(--color-foreground); +} + +.text-muted-foreground { + color: var(--color-muted-foreground); +} + +.text-popover-foreground { + color: var(--color-popover-foreground); +} + +.text-primary { + color: var(--color-primary); +} + +.text-primary-foreground { + color: var(--color-primary-foreground); +} + +.text-secondary-foreground { + color: var(--color-secondary-foreground); +} + +.text-status-backlog-foreground { + color: var(--color-status-backlog-foreground); +} + +.text-status-completed-foreground { + color: var(--color-status-completed-foreground); +} + +.text-status-planned-foreground { + color: var(--color-status-planned-foreground); +} + +.text-status-progress-foreground { + color: var(--color-status-progress-foreground); +} + +.text-success { + color: var(--color-success); +} + +.text-tertiary { + color: var(--color-tertiary); +} + +.text-tertiary-foreground { + color: var(--color-tertiary-foreground); +} + +.text-warning { + color: var(--color-warning); +} + +.underline-offset-4 { + text-underline-offset: 4px; +} + +.opacity-0 { + opacity: 0; +} + +.opacity-40 { + opacity: 0.4; +} + +.opacity-70 { + opacity: 0.7; +} + +.opacity-75 { + opacity: 0.75; +} + +.opacity-90 { + opacity: 0.9; +} + +.shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-2xl { + --tw-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25); + --tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-\[0_0_18px_-4px_var\(--color-primary\)\] { + --tw-shadow: 0 0 18px -4px var(--color-primary); + --tw-shadow-colored: 0 0 18px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-\[0_0_28px_-4px_var\(--color-primary\)\] { + --tw-shadow: 0 0 28px -4px var(--color-primary); + --tw-shadow-colored: 0 0 28px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.outline { + outline-style: solid; +} + +.ring { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.ring-offset-background { + --tw-ring-offset-color: var(--color-background); +} + +.blur-3xl { + --tw-blur: blur(64px); + 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); +} + +.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); +} + +.backdrop-blur-md { + --tw-backdrop-blur: blur(12px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) + var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) + var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) + var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) + var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} + +.backdrop-blur-sm { + --tw-backdrop-blur: blur(4px); + -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) + var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) + var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); + backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) + var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) + var(--tw-backdrop-saturate) var(--tw-backdrop-sepia); +} + +.transition { + transition-property: + color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, + backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-colors { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-shadow { + transition-property: box-shadow; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.transition-transform { + transition-property: transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.duration-200 { + transition-duration: 200ms; +} + +.duration-300 { + transition-duration: 300ms; +} + +.ease-in { + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.code-line { + white-space: nowrap; + opacity: 1; + animation-name: float-code; + animation-timing-function: linear; + animation-iteration-count: infinite; +} + +@keyframes float-code { + 0% { + transform: translateX(0); + opacity: 0; + } + 5% { + opacity: 1; + } + 95% { + opacity: 1; + } + 100% { + transform: translateX(105vw); + opacity: 0; + } +} + +@media (prefers-reduced-motion: reduce) { + .code-line { + animation: none; + } + + html { + scroll-behavior: auto; + } +} + +:root { + --font-sans: "IBM Plex Sans", sans-serif; + --font-mono: "JetBrains Mono", monospace; + --font-serif: "Source Serif 4", serif; + + --color-background: hsl(210 20% 98%); + --color-foreground: hsl(222 28% 14%); + --color-header: hsl(210 20% 98% / 0.86); + --color-footer: hsl(210 18% 95%); + --color-card: hsl(0 0% 100%); + --color-card-foreground: hsl(222 28% 14%); + --color-popover: hsl(0 0% 100%); + --color-popover-foreground: hsl(222 28% 14%); + --color-panel: hsl(210 18% 97%); + --color-terminal-panel: linear-gradient(135deg, hsl(210 40% 99%) 0%, hsl(190 60% 96%) 52%, hsl(145 55% 94%) 100%); + --color-roadmap-card: hsl(0 0% 100%); + --color-cta-panel: hsl(190 60% 96%); + --color-section-subtle: hsl(210 18% 95%); + --color-muted: hsl(210 18% 95%); + --color-muted-hover: hsl(214 16% 88%); + --color-muted-foreground: hsl(217 12% 46%); + --color-border: hsl(214 16% 88%); + --color-input: hsl(0 0% 100%); + --color-ring: hsl(190 90% 46%); + --color-primary: hsl(145 84% 52%); + --color-primary-hover: hsl(145 72% 44%); + --color-primary-foreground: hsl(222 35% 10%); + --color-secondary: hsl(145 72% 34%); + --color-secondary-hover: hsl(145 68% 28%); + --color-secondary-foreground: hsl(0 0% 98%); + --color-tertiary: hsl(190 90% 46%); + --color-tertiary-foreground: hsl(222 35% 10%); + --color-link-hover: hsl(190 86% 38%); + --color-success: hsl(145 70% 40%); + --color-warning: hsl(38 92% 52%); + --color-destructive: hsl(0 72% 42%); + --color-code-float: hsl(222 28% 18% / 0.1); + --color-status-progress: hsl(190 90% 46%); + --color-status-progress-foreground: hsl(222 35% 10%); + --color-status-completed: hsl(145 70% 40%); + --color-status-completed-foreground: hsl(210 20% 98%); + --color-status-planned: hsl(145 84% 52%); + --color-status-planned-foreground: hsl(222 35% 10%); + --color-status-backlog: hsl(38 92% 52%); + --color-status-backlog-foreground: hsl(222 35% 10%); +} + +.dark { + --color-background: hsl(224 30% 9%); + --color-foreground: hsl(210 25% 94%); + --color-header: hsl(224 30% 9% / 0.82); + --color-footer: hsl(222 24% 14%); + --color-card: hsl(220 18% 24%); + --color-card-foreground: hsl(210 20% 92%); + --color-popover: hsl(222 24% 14%); + --color-popover-foreground: hsl(210 20% 92%); + --color-panel: hsl(222 30% 12%); + --color-terminal-panel: linear-gradient(135deg, hsl(224 30% 9%) 0%, hsl(218 32% 12%) 45%, hsl(145 35% 16%) 100%); + --color-roadmap-card: hsl(220 18% 24%); + --color-cta-panel: hsl(218 32% 12%); + --color-section-subtle: hsl(222 24% 14%); + --color-muted: hsl(222 30% 12%); + --color-muted-hover: hsl(220 18% 24%); + --color-muted-foreground: hsl(216 12% 72%); + --color-border: hsl(218 14% 34%); + --color-input: hsl(222 30% 12%); + --color-ring: hsl(190 90% 46%); + --color-primary: hsl(145 78% 46%); + --color-primary-hover: hsl(145 72% 52%); + --color-primary-foreground: hsl(220 30% 8%); + --color-secondary: hsl(145 68% 30%); + --color-secondary-hover: hsl(145 64% 36%); + --color-secondary-foreground: hsl(210 25% 96%); + --color-tertiary: hsl(190 86% 40%); + --color-tertiary-foreground: hsl(210 25% 98%); + --color-link-hover: hsl(190 90% 52%); + --color-success: hsl(145 70% 44%); + --color-warning: hsl(38 92% 52%); + --color-destructive: hsl(0 75% 64%); + --color-code-float: hsl(145 84% 52% / 0.22); + --color-status-progress: hsl(190 86% 40%); + --color-status-progress-foreground: hsl(210 25% 98%); + --color-status-completed: hsl(145 70% 40%); + --color-status-completed-foreground: hsl(210 25% 98%); + --color-status-planned: hsl(145 78% 46%); + --color-status-planned-foreground: hsl(220 30% 8%); + --color-status-backlog: hsl(38 92% 52%); + --color-status-backlog-foreground: hsl(222 35% 10%); +} + +.placeholder\:text-muted-foreground::placeholder { + color: var(--color-muted-foreground); +} + +.focus-within\:border-primary:focus-within { + border-color: var(--color-primary); +} + +.focus-within\:ring-1:focus-within { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus-within\:ring-primary:focus-within { + --tw-ring-color: var(--color-primary); +} + +.hover\:bg-muted:hover { + background-color: var(--color-muted); +} + +.hover\:bg-muted-hover:hover { + background-color: var(--color-muted-hover); +} + +.hover\:bg-primary-hover:hover { + background-color: var(--color-primary-hover); +} + +.hover\:bg-secondary:hover { + background-color: var(--color-secondary); +} + +.hover\:bg-secondary-hover:hover { + background-color: var(--color-secondary-hover); +} + +.hover\:text-foreground:hover { + color: var(--color-foreground); +} + +.hover\:text-link-hover:hover { + color: var(--color-link-hover); +} + +.hover\:underline:hover { + text-decoration-line: underline; +} + +.hover\:no-underline:hover { + text-decoration-line: none; +} + +.hover\:opacity-100:hover { + opacity: 1; +} + +.hover\:shadow-\[0_0_28px_-2px_var\(--color-primary\)\]:hover { + --tw-shadow: 0 0 28px -2px var(--color-primary); + --tw-shadow-colored: 0 0 28px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.hover\:shadow-\[0_0_38px_-2px_var\(--color-primary\)\]:hover { + --tw-shadow: 0 0 38px -2px var(--color-primary); + --tw-shadow-colored: 0 0 38px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} + +.focus\:opacity-100:focus { + opacity: 1; +} + +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus\:ring-1:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus\:ring-ring:focus { + --tw-ring-color: var(--color-ring); +} + +.focus\:ring-offset-2:focus { + --tw-ring-offset-width: 2px; +} + +.focus-visible\:outline-none:focus-visible { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus-visible\:outline:focus-visible { + outline-style: solid; +} + +.focus-visible\:outline-2:focus-visible { + outline-width: 2px; +} + +.focus-visible\:outline-offset-2:focus-visible { + outline-offset: 2px; +} + +.focus-visible\:outline-ring:focus-visible { + outline-color: var(--color-ring); +} + +.focus-visible\:ring-1:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus-visible\:ring-ring:focus-visible { + --tw-ring-color: var(--color-ring); +} + +.disabled\:pointer-events-none:disabled { + pointer-events: none; +} + +.disabled\:opacity-40:disabled { + opacity: 0.4; +} + +.disabled\:opacity-50:disabled { + opacity: 0.5; +} + +.group:hover .group-hover\:opacity-100 { + opacity: 1; +} + +.group.destructive .group-\[\.destructive\]\:text-red-300 { + --tw-text-opacity: 1; + color: rgb(252 165 165 / var(--tw-text-opacity, 1)); +} + +.group.destructive .group-\[\.destructive\]\:hover\:bg-destructive:hover { + background-color: var(--color-destructive); +} + +.group.destructive .group-\[\.destructive\]\:hover\:text-red-50:hover { + --tw-text-opacity: 1; + color: rgb(254 242 242 / var(--tw-text-opacity, 1)); +} + +.group.destructive .group-\[\.destructive\]\:focus\:ring-destructive:focus { + --tw-ring-color: var(--color-destructive); +} + +.group.destructive .group-\[\.destructive\]\:focus\:ring-red-400:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(248 113 113 / var(--tw-ring-opacity, 1)); +} + +.group.destructive .group-\[\.destructive\]\:focus\:ring-offset-red-600:focus { + --tw-ring-offset-color: #dc2626; +} + +.data-\[swipe\=cancel\]\:translate-x-0[data-swipe="cancel"] { + --tw-translate-x: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.data-\[swipe\=end\]\:translate-x-\[var\(--radix-toast-swipe-end-x\)\][data-swipe="end"] { + --tw-translate-x: var(--radix-toast-swipe-end-x); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.data-\[swipe\=move\]\:translate-x-\[var\(--radix-toast-swipe-move-x\)\][data-swipe="move"] { + --tw-translate-x: var(--radix-toast-swipe-move-x); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.data-\[state\=open\]\:bg-secondary[data-state="open"] { + background-color: var(--color-secondary); +} + +.data-\[swipe\=move\]\:transition-none[data-swipe="move"] { + transition-property: none; +} + +.data-\[state\=closed\]\:duration-300[data-state="closed"] { + transition-duration: 300ms; +} + +.data-\[state\=open\]\:duration-500[data-state="open"] { + transition-duration: 500ms; +} + +.group[data-state="open"] .group-data-\[state\=open\]\:rotate-180 { + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +@media (prefers-reduced-motion: no-preference) { + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + + .motion-safe\:animate-\[pulse_4s_ease-in-out_infinite\] { + animation: pulse 4s ease-in-out infinite; + } +} + +@media (min-width: 640px) { + .sm\:bottom-0 { + bottom: 0px; + } + + .sm\:right-0 { + right: 0px; + } + + .sm\:top-auto { + top: auto; + } + + .sm\:max-w-sm { + max-width: 24rem; + } + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:flex-col { + flex-direction: column; + } + + .sm\:justify-end { + justify-content: flex-end; + } + + .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); + } + + .sm\:text-left { + text-align: left; + } +} + +@media (min-width: 768px) { + .md\:absolute { + position: absolute; + } + + .md\:h-80 { + height: 20rem; + } + + .md\:w-80 { + width: 20rem; + } + + .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] { + width: var(--radix-navigation-menu-viewport-width); + } + + .md\:w-auto { + width: auto; + } + + .md\:max-w-\[420px\] { + max-width: 420px; + } + + .md\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .md\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .md\:flex-row { + flex-direction: row; + } + + .md\:items-center { + align-items: center; + } + + .md\:justify-between { + justify-content: space-between; + } + + .md\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .md\:py-12 { + padding-top: 3rem; + padding-bottom: 3rem; + } + + .md\:py-20 { + padding-top: 5rem; + padding-bottom: 5rem; + } + + .md\:text-lg { + font-size: 1.125rem; + line-height: 1.75rem; + } +} + +@media (min-width: 1024px) { + .lg\:flex { + display: flex; + } + + .lg\:hidden { + display: none; + } + + .lg\:w-\[40\%\] { + width: 40%; + } + + .lg\:w-\[55\%\] { + width: 55%; + } + + .lg\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .lg\:grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .lg\:grid-cols-\[0\.9fr_1\.1fr\] { + grid-template-columns: 0.9fr 1.1fr; + } + + .lg\:grid-cols-\[1\.15fr_0\.85fr\] { + grid-template-columns: 1.15fr 0.85fr; + } + + .lg\:flex-row { + flex-direction: row; + } + + .lg\:items-center { + align-items: center; + } + + .lg\:justify-between { + justify-content: space-between; + } + + .lg\:gap-12 { + gap: 3rem; + } + + .lg\:px-12 { + padding-left: 3rem; + padding-right: 3rem; + } + + .lg\:py-24 { + padding-top: 6rem; + padding-bottom: 6rem; + } +} + +.\[\&\+div\]\:text-xs + div { + font-size: 0.75rem; + line-height: 1rem; +} + +.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state="open"] > svg { + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.\[\&_svg\]\:pointer-events-none svg { + pointer-events: none; +} + +.\[\&_svg\]\:size-4 svg { + width: 1rem; + height: 1rem; +} + +.\[\&_svg\]\:shrink-0 svg { + flex-shrink: 0; +} diff --git a/refs/ref3/img/ai_1.png b/refs/ref3/img/ai_1.png new file mode 100644 index 0000000..5609168 Binary files /dev/null and b/refs/ref3/img/ai_1.png differ diff --git a/refs/ref3/img/ai_2.png b/refs/ref3/img/ai_2.png new file mode 100644 index 0000000..d8a9efd Binary files /dev/null and b/refs/ref3/img/ai_2.png differ diff --git a/refs/ref3/img/ai_3.png b/refs/ref3/img/ai_3.png new file mode 100644 index 0000000..36e42cb Binary files /dev/null and b/refs/ref3/img/ai_3.png differ diff --git a/refs/ref3/img/ai_4.png b/refs/ref3/img/ai_4.png new file mode 100644 index 0000000..846b3e8 Binary files /dev/null and b/refs/ref3/img/ai_4.png differ diff --git a/refs/ref3/img/ai_5.png b/refs/ref3/img/ai_5.png new file mode 100644 index 0000000..6645318 Binary files /dev/null and b/refs/ref3/img/ai_5.png differ diff --git a/refs/ref3/index.html b/refs/ref3/index.html new file mode 100644 index 0000000..c18d918 --- /dev/null +++ b/refs/ref3/index.html @@ -0,0 +1,1333 @@ + + + + Rubber Duck Debugging as a service + + + + + + + +
+
+ +
+
+ duck://debug + +
+ +
+
+
+
+
+
+
+
+ rubber duck debugging service +
+
+

+ Debug faster with an AI duck that thinks in steps +

+

+ Explain the bug out loud, get a structured debugging path, and stop losing time in loops of vague + guesses. +

+
+
+ + $Start now + +

No install. Start debugging in 30 seconds.

+
+
+
+
+
+
+
+ terminal://session +
+
+
+
+
+ $ describe issue --env production --symptom intermittent +
+
+ > assistant: what changed before the failures started? +
+
+ $ plan.next() +
+ 1. Reproduce with clean input2. Compare environment flags3. Trace state mutation before render +
+
+
+ Abstract duck and code flow +
+
+
+
+
+
+
+
+

workflow

+

+ How it works +

+

+ A short path from confusion to the next useful debugging action. +

+
+
+
+ Abstract bug signal network +
+
+
+ + + +
+ 01 +
+
+

Describe problem

+

+ Write what is broken, when it happens, and what you already checked. +

+
+
+
+
+ Abstract duck dialogue waves +
+
+
+ + + +
+ 02 +
+
+

Talk to duck assistant

+

+ The assistant asks clarifying questions and keeps the debugging thread focused. +

+
+
+
+
+ Abstract structured debug path +
+
+
+ + + +
+ 03 +
+
+

Get structured debugging path

+

+ Receive clear next steps, likely branches, and a practical order of investigation. +

+
+
+
+
+
+
+
+
+
+

features

+

+ Built for real debugging work +

+

+ Practical outputs for developers who need clarity, not motivational noise. +

+
+
+
+
+
+ + + +
+
+

Structured debugging paths

+

+ Turn vague bug reports into reproducible, ordered next steps you can follow without losing + context. +

+
+
debug://feature
+
+
+
+
+
+ + + +
+
+

Conversation-first diagnosis

+

+ Talk through the issue with a debugging assistant that keeps your assumptions, signals, and dead + ends organized. +

+
+
debug://feature
+
+
+
+
+
+ + + +
+
+

Fast root-cause isolation

+

+ Narrow scope quickly by separating symptoms, environment changes, and likely failure points. +

+
+
debug://feature
+
+
+
+
+
+ + + +
+
+

Terminal-native atmosphere

+

+ Built for developers who think in traces, commands, logs, and compact actionable output. +

+
+
debug://feature
+
+
+
+
+
+ + + +
+
+

Useful team handoff

+

+ Share a clear debugging path instead of a scattered thread of guesses and screenshots. +

+
+
debug://feature
+
+
+
+
+
+ + + +
+
+

Zero setup start

+

+ No install, no local configuration, and no onboarding maze before your first debugging session. +

+
+
debug://feature
+
+
+
+
+
+
+
+
+

roadmap

+

+ Public roadmap +

+

+ Clear product direction with explicit milestones and status tags. +

+
+
+
+
+
+ 01 +
+ In progress +
+
+
+

MCP server

+

+ Connect the assistant to richer developer workflows and external tooling. +

+
+
+ ETAQ3 +
+
+
+
+
+
+ 02 +
+ Planned +
+
+
+

Skins

+

+ Theme packs and visual personalization for your debugging workspace. +

+
+
+ ETAQ3 +
+
+
+
+
+
+ 03 +
+ Planned +
+
+
+

Battlepass

+

+ Progression mechanics for debugging sessions, streaks, and milestones. +

+
+
+ ETAQ4 +
+
+
+
+
+
+ 04 +
+ Backlog +
+
+
+

Lootboxes

+

+ Experimental unlockables for playful engagement without blocking core utility. +

+
+
+ ETALater +
+
+
+
+
+ Abstract four track roadmap +
+
+
+
+
+
+

faq

+

+ Questions developers ask before they try it +

+

+ Short answers for common objections, setup worries, and workflow questions. +

+
+
+
+

+ +

+ +
+
+

+ +

+ +
+
+

+ +

+ +
+
+

+ +

+ +
+
+

+ +

+ +
+
+

+ +

+ +
+
+
+
+
+
+
+
+

ready

+

+ Explain the bug. Follow the path. Ship the fix. +

+

+ Built for developers who want a calm debugging assistant instead of more noise. +

+
+ +
+
+
+
+
+
+

contacts

+

+ Need a custom rollout or have product questions? +

+

+ Send a note and we will reply with the best next step for your team, workflow, or partnership. +

+
+

Email

+ hello@duckdebug.dev +
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+
+
+ +
+
+ + diff --git a/refs/ref4/assets/avatar-1.jpg b/refs/ref4/assets/avatar-1.jpg new file mode 100644 index 0000000..ba13f6e Binary files /dev/null and b/refs/ref4/assets/avatar-1.jpg differ diff --git a/refs/ref4/assets/avatar-2.jpg b/refs/ref4/assets/avatar-2.jpg new file mode 100644 index 0000000..4eed26e Binary files /dev/null and b/refs/ref4/assets/avatar-2.jpg differ diff --git a/refs/ref4/assets/avatar-3.jpg b/refs/ref4/assets/avatar-3.jpg new file mode 100644 index 0000000..01f0d0c Binary files /dev/null and b/refs/ref4/assets/avatar-3.jpg differ diff --git a/refs/ref4/assets/avatar-4.jpg b/refs/ref4/assets/avatar-4.jpg new file mode 100644 index 0000000..b886380 Binary files /dev/null and b/refs/ref4/assets/avatar-4.jpg differ diff --git a/refs/ref4/assets/avatar-5.jpg b/refs/ref4/assets/avatar-5.jpg new file mode 100644 index 0000000..003cdec Binary files /dev/null and b/refs/ref4/assets/avatar-5.jpg differ diff --git a/refs/ref4/assets/avatar-6.jpg b/refs/ref4/assets/avatar-6.jpg new file mode 100644 index 0000000..f15c5b4 Binary files /dev/null and b/refs/ref4/assets/avatar-6.jpg differ diff --git a/refs/ref4/assets/avatar-7.jpg b/refs/ref4/assets/avatar-7.jpg new file mode 100644 index 0000000..342dab8 Binary files /dev/null and b/refs/ref4/assets/avatar-7.jpg differ diff --git a/refs/ref4/assets/avatar-8.jpg b/refs/ref4/assets/avatar-8.jpg new file mode 100644 index 0000000..d6acbab Binary files /dev/null and b/refs/ref4/assets/avatar-8.jpg differ diff --git a/refs/ref4/duck.css b/refs/ref4/duck.css new file mode 100644 index 0000000..a60b38d --- /dev/null +++ b/refs/ref4/duck.css @@ -0,0 +1,3514 @@ +*, +::before, +::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; + --tw-contain-size: ; + --tw-contain-layout: ; + --tw-contain-paint: ; + --tw-contain-style: ; +} /* +! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com +*/ /* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +} + +::before, +::after { + --tw-content: ""; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -moz-tab-size: 4; /* 3 */ + -o-tab-size: 4; + tab-size: 4; /* 3 */ + font-family: + ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ + font-feature-settings: normal; /* 5 */ + font-variation-settings: normal; /* 6 */ + -webkit-tap-highlight-color: transparent; /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: "IBM Plex Mono", monospace; /* 1 */ + font-feature-settings: normal; /* 2 */ + font-variation-settings: normal; /* 3 */ + font-size: 1em; /* 4 */ +} + +/* +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + font-size: 100%; /* 1 */ + font-weight: inherit; /* 1 */ + line-height: inherit; /* 1 */ + letter-spacing: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +} + +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +input:where([type="button"]), +input:where([type="reset"]), +input:where([type="submit"]) { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +} + +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +fieldset { + margin: 0; + padding: 0; +} + +legend { + padding: 0; +} + +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +} + +/* +Reset default styling for dialogs. +*/ +dialog { + padding: 0; +} + +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, +textarea::-moz-placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} + +input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +} + +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; +} + +/* +Make sure disabled buttons don't get the pointer cursor. +*/ +:disabled { + cursor: default; +} + +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* Make elements with the HTML hidden attribute stay hidden by default */ +[hidden]:where(:not([hidden="until-found"])) { + display: none; +} +:root { + --background: #f4f4f5; + --surface: #ffffff; + --surface-alt: #e4e4e7; + --foreground: #0f1115; + --muted: #52525b; + --muted-alt: #a1a1aa; + --primary: #4f6ef7; + --primary-hover: #3b5be0; + --secondary: #22c55e; + --secondary-hover: #4ade80; + --terminal: #0f1115; + --terminal-text: #22c55e; + --border-color: #e4e4e7; + --border-subtle: #f4f4f5; + --card-shadow: 0 2px 12px rgba(0, 0, 0, 0.06); + --button-glow: 0 0 20px rgba(79, 110, 247, 0.3); + --radius: 0.625rem; +} + +[data-theme="dark"] { + --background: #121212; + --surface: #1e1e1e; + --surface-alt: #2a2a2a; + --foreground: #f4f4f5; + --muted: #a1a1aa; + --muted-alt: #52525b; + --primary: #6b83f9; + --primary-hover: #8b9fff; + --secondary: #4ade80; + --secondary-hover: #22c55e; + --terminal: #0a0a0a; + --terminal-text: #4ade80; + --border-color: #27272a; + --border-subtle: #1e1e1e; + --card-shadow: 0 2px 12px rgba(0, 0, 0, 0.25); + --button-glow: 0 0 20px rgba(107, 131, 249, 0.25); +} + +body { + font-family: "IBM Plex Mono", monospace; + background-color: var(--background); + color: var(--foreground); + transition: + background-color 500ms ease, + color 500ms ease; + overflow-x: hidden; +} + +* { + border-color: var(--border-color); +} +@keyframes blink { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0; + } +} + +@keyframes bounce-scroll { + 0%, + 100% { + transform: translateY(0); + } + 50% { + transform: translateY(8px); + } +} + +.animate-blink { + animation: blink 1s step-end infinite; +} + +.animate-bounce-scroll { + animation: bounce-scroll 2s ease-in-out infinite; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} +.pointer-events-none { + pointer-events: none; +} +.visible { + visibility: visible; +} +.invisible { + visibility: hidden; +} +.fixed { + position: fixed; +} +.absolute { + position: absolute; +} +.relative { + position: relative; +} +.inset-0 { + inset: 0px; +} +.inset-x-0 { + left: 0px; + right: 0px; +} +.inset-y-0 { + top: 0px; + bottom: 0px; +} +.-bottom-12 { + bottom: -3rem; +} +.-left-12 { + left: -3rem; +} +.-right-12 { + right: -3rem; +} +.-top-12 { + top: -3rem; +} +.bottom-0 { + bottom: 0px; +} +.left-0 { + left: 0px; +} +.left-1\/2 { + left: 50%; +} +.left-2 { + left: 0.5rem; +} +.left-\[50\%\] { + left: 50%; +} +.right-0 { + right: 0px; +} +.right-1 { + right: 0.25rem; +} +.right-2 { + right: 0.5rem; +} +.right-3 { + right: 0.75rem; +} +.right-4 { + right: 1rem; +} +.top-0 { + top: 0px; +} +.top-1\.5 { + top: 0.375rem; +} +.top-1\/2 { + top: 50%; +} +.top-14 { + top: 3.5rem; +} +.top-3\.5 { + top: 0.875rem; +} +.top-4 { + top: 1rem; +} +.top-\[1px\] { + top: 1px; +} +.top-\[50\%\] { + top: 50%; +} +.top-\[60\%\] { + top: 60%; +} +.top-full { + top: 100%; +} +.isolate { + isolation: isolate; +} +.z-10 { + z-index: 10; +} +.z-20 { + z-index: 20; +} +.z-40 { + z-index: 40; +} +.z-50 { + z-index: 50; +} +.z-\[1\] { + z-index: 1; +} +.order-first { + order: -9999; +} +.order-last { + order: 9999; +} +.col-start-2 { + grid-column-start: 2; +} +.row-span-2 { + grid-row: span 2 / span 2; +} +.row-start-1 { + grid-row-start: 1; +} +.\!m-0 { + margin: 0px !important; +} +.-mx-1 { + margin-left: -0.25rem; + margin-right: -0.25rem; +} +.-my-2 { + margin-top: -0.5rem; + margin-bottom: -0.5rem; +} +.mx-2 { + margin-left: 0.5rem; + margin-right: 0.5rem; +} +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; +} +.mx-3\.5 { + margin-left: 0.875rem; + margin-right: 0.875rem; +} +.mx-auto { + margin-left: auto; + margin-right: auto; +} +.my-0 { + margin-top: 0px; + margin-bottom: 0px; +} +.my-0\.5 { + margin-top: 0.125rem; + margin-bottom: 0.125rem; +} +.my-1 { + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} +.-ml-4 { + margin-left: -1rem; +} +.-mt-4 { + margin-top: -1rem; +} +.mb-10 { + margin-bottom: 2.5rem; +} +.mb-12 { + margin-bottom: 3rem; +} +.mb-16 { + margin-bottom: 4rem; +} +.mb-2 { + margin-bottom: 0.5rem; +} +.mb-3 { + margin-bottom: 0.75rem; +} +.mb-4 { + margin-bottom: 1rem; +} +.mb-5 { + margin-bottom: 1.25rem; +} +.mb-6 { + margin-bottom: 1.5rem; +} +.ml-1 { + margin-left: 0.25rem; +} +.ml-2 { + margin-left: 0.5rem; +} +.ml-4 { + margin-left: 1rem; +} +.ml-auto { + margin-left: auto; +} +.mt-1 { + margin-top: 0.25rem; +} +.mt-1\.5 { + margin-top: 0.375rem; +} +.mt-10 { + margin-top: 2.5rem; +} +.mt-16 { + margin-top: 4rem; +} +.mt-2 { + margin-top: 0.5rem; +} +.mt-4 { + margin-top: 1rem; +} +.mt-5 { + margin-top: 1.25rem; +} +.mt-6 { + margin-top: 1.5rem; +} +.mt-auto { + margin-top: auto; +} +.line-clamp-1 { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; +} +.line-clamp-2 { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} +.block { + display: block; +} +.inline-block { + display: inline-block; +} +.flex { + display: flex; +} +.inline-flex { + display: inline-flex; +} +.table { + display: table; +} +.table-caption { + display: table-caption; +} +.table-cell { + display: table-cell; +} +.table-row { + display: table-row; +} +.grid { + display: grid; +} +.hidden { + display: none; +} +.aspect-square { + aspect-ratio: 1 / 1; +} +.aspect-video { + aspect-ratio: 16 / 9; +} +.size-10 { + width: 2.5rem; + height: 2.5rem; +} +.size-2 { + width: 0.5rem; + height: 0.5rem; +} +.size-2\.5 { + width: 0.625rem; + height: 0.625rem; +} +.size-3 { + width: 0.75rem; + height: 0.75rem; +} +.size-3\.5 { + width: 0.875rem; + height: 0.875rem; +} +.size-4 { + width: 1rem; + height: 1rem; +} +.size-6 { + width: 1.5rem; + height: 1.5rem; +} +.size-7 { + width: 1.75rem; + height: 1.75rem; +} +.size-8 { + width: 2rem; + height: 2rem; +} +.size-9 { + width: 2.25rem; + height: 2.25rem; +} +.size-auto { + width: auto; + height: auto; +} +.size-full { + width: 100%; + height: 100%; +} +.h-1\.5 { + height: 0.375rem; +} +.h-10 { + height: 2.5rem; +} +.h-12 { + height: 3rem; +} +.h-14 { + height: 3.5rem; +} +.h-16 { + height: 4rem; +} +.h-2 { + height: 0.5rem; +} +.h-2\.5 { + height: 0.625rem; +} +.h-4 { + height: 1rem; +} +.h-5 { + height: 1.25rem; +} +.h-6 { + height: 1.5rem; +} +.h-7 { + height: 1.75rem; +} +.h-8 { + height: 2rem; +} +.h-9 { + height: 2.25rem; +} +.h-\[1\.15rem\] { + height: 1.15rem; +} +.h-\[1\.5px\] { + height: 1.5px; +} +.h-\[calc\(100\%-1px\)\] { + height: calc(100% - 1px); +} +.h-\[var\(--radix-navigation-menu-viewport-height\)\] { + height: var(--radix-navigation-menu-viewport-height); +} +.h-\[var\(--radix-select-trigger-height\)\] { + height: var(--radix-select-trigger-height); +} +.h-auto { + height: auto; +} +.h-full { + height: 100%; +} +.h-px { + height: 1px; +} +.h-svh { + height: 100svh; +} +.max-h-\[300px\] { + max-height: 300px; +} +.min-h-0 { + min-height: 0px; +} +.min-h-16 { + min-height: 4rem; +} +.min-h-4 { + min-height: 1rem; +} +.min-h-screen { + min-height: 100vh; +} +.min-h-svh { + min-height: 100svh; +} +.w-0 { + width: 0px; +} +.w-1 { + width: 0.25rem; +} +.w-1\.5 { + width: 0.375rem; +} +.w-2 { + width: 0.5rem; +} +.w-2\.5 { + width: 0.625rem; +} +.w-3 { + width: 0.75rem; +} +.w-3\/4 { + width: 75%; +} +.w-4 { + width: 1rem; +} +.w-5 { + width: 1.25rem; +} +.w-64 { + width: 16rem; +} +.w-72 { + width: 18rem; +} +.w-8 { + width: 2rem; +} +.w-9 { + width: 2.25rem; +} +.w-\[100px\] { + width: 100px; +} +.w-auto { + width: auto; +} +.w-fit { + width: -moz-fit-content; + width: fit-content; +} +.w-full { + width: 100%; +} +.w-max { + width: -moz-max-content; + width: max-content; +} +.w-px { + width: 1px; +} +.min-w-0 { + min-width: 0px; +} +.min-w-10 { + min-width: 2.5rem; +} +.min-w-5 { + min-width: 1.25rem; +} +.min-w-8 { + min-width: 2rem; +} +.min-w-9 { + min-width: 2.25rem; +} +.min-w-\[12rem\] { + min-width: 12rem; +} +.min-w-\[6px\] { + min-width: 6px; +} +.min-w-\[8rem\] { + min-width: 8rem; +} +.min-w-\[var\(--radix-select-trigger-width\)\] { + min-width: var(--radix-select-trigger-width); +} +.max-w-\[1200px\] { + max-width: 1200px; +} +.max-w-\[520px\] { + max-width: 520px; +} +.max-w-\[560px\] { + max-width: 560px; +} +.max-w-\[600px\] { + max-width: 600px; +} +.max-w-\[900px\] { + max-width: 900px; +} +.max-w-\[calc\(100\%-2rem\)\] { + max-width: calc(100% - 2rem); +} +.max-w-max { + max-width: -moz-max-content; + max-width: max-content; +} +.max-w-sm { + max-width: 24rem; +} +.flex-1 { + flex: 1 1 0%; +} +.shrink-0 { + flex-shrink: 0; +} +.grow { + flex-grow: 1; +} +.grow-0 { + flex-grow: 0; +} +.basis-full { + flex-basis: 100%; +} +.caption-bottom { + caption-side: bottom; +} +.border-collapse { + border-collapse: collapse; +} +.origin-left { + transform-origin: left; +} +.-translate-x-1\/2 { + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-x-px { + --tw-translate-x: -1px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.-translate-y-1\/2 { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-x-\[-50\%\] { + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-x-px { + --tw-translate-x: 1px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-y-0\.5 { + --tw-translate-y: 0.125rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-y-\[-50\%\] { + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-y-\[calc\(-50\%_-_2px\)\] { + --tw-translate-y: calc(-50% - 2px); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.translate-y-full { + --tw-translate-y: 100%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.rotate-45 { + --tw-rotate: 45deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.rotate-90 { + --tw-rotate: 90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.scale-x-0 { + --tw-scale-x: 0; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +@keyframes caret-blink { + 0%, + 70%, + 100% { + opacity: 1; + } + + 20%, + 50% { + opacity: 0; + } +} +.animate-caret-blink { + animation: caret-blink 1.25s ease-out infinite; +} +@keyframes pulse { + 50% { + opacity: 0.5; + } +} +.animate-pulse { + animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; +} +@keyframes spin { + to { + transform: rotate(360deg); + } +} +.animate-spin { + animation: spin 1s linear infinite; +} +.cursor-default { + cursor: default; +} +.cursor-text { + cursor: text; +} +.touch-none { + touch-action: none; +} +.select-none { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} +.resize-none { + resize: none; +} +.resize { + resize: both; +} +.scroll-my-1 { + scroll-margin-top: 0.25rem; + scroll-margin-bottom: 0.25rem; +} +.scroll-py-1 { + scroll-padding-top: 0.25rem; + scroll-padding-bottom: 0.25rem; +} +.list-disc { + list-style-type: disc; +} +.list-none { + list-style-type: none; +} +.auto-rows-min { + grid-auto-rows: min-content; +} +.grid-cols-1 { + grid-template-columns: repeat(1, minmax(0, 1fr)); +} +.grid-cols-\[0_1fr\] { + grid-template-columns: 0 1fr; +} +.grid-rows-\[auto_auto\] { + grid-template-rows: auto auto; +} +.flex-row { + flex-direction: row; +} +.flex-col { + flex-direction: column; +} +.flex-col-reverse { + flex-direction: column-reverse; +} +.flex-wrap { + flex-wrap: wrap; +} +.place-content-center { + place-content: center; +} +.items-start { + align-items: flex-start; +} +.items-end { + align-items: flex-end; +} +.items-center { + align-items: center; +} +.items-stretch { + align-items: stretch; +} +.justify-start { + justify-content: flex-start; +} +.justify-center { + justify-content: center; +} +.justify-between { + justify-content: space-between; +} +.justify-items-start { + justify-items: start; +} +.gap-0\.5 { + gap: 0.125rem; +} +.gap-1 { + gap: 0.25rem; +} +.gap-1\.5 { + gap: 0.375rem; +} +.gap-12 { + gap: 3rem; +} +.gap-16 { + gap: 4rem; +} +.gap-2 { + gap: 0.5rem; +} +.gap-2\.5 { + gap: 0.625rem; +} +.gap-3 { + gap: 0.75rem; +} +.gap-4 { + gap: 1rem; +} +.gap-6 { + gap: 1.5rem; +} +.gap-7 { + gap: 1.75rem; +} +.gap-8 { + gap: 2rem; +} +.gap-\[--spacing\(var\(--gap\)\)\] { + gap: var(--spacing(var(--gap))); +} +.gap-\[6px\] { + gap: 6px; +} +.gap-y-0\.5 { + row-gap: 0.125rem; +} +.self-start { + align-self: flex-start; +} +.self-stretch { + align-self: stretch; +} +.justify-self-end { + justify-self: end; +} +.overflow-auto { + overflow: auto; +} +.overflow-hidden { + overflow: hidden; +} +.overflow-x-auto { + overflow-x: auto; +} +.overflow-y-auto { + overflow-y: auto; +} +.overflow-x-hidden { + overflow-x: hidden; +} +.whitespace-nowrap { + white-space: nowrap; +} +.text-balance { + text-wrap: balance; +} +.break-words { + overflow-wrap: break-word; +} +.rounded-\[2px\] { + border-radius: 2px; +} +.rounded-\[4px\] { + border-radius: 4px; +} +.rounded-\[calc\(var\(--radius\)-5px\)\] { + border-radius: calc(var(--radius) - 5px); +} +.rounded-\[inherit\] { + border-radius: inherit; +} +.rounded-full { + border-radius: 9999px; +} +.rounded-lg { + border-radius: var(--radius); +} +.rounded-md { + border-radius: calc(var(--radius) - 2px); +} +.rounded-none { + border-radius: 0px; +} +.rounded-sm { + border-radius: calc(var(--radius) - 4px); +} +.rounded-xl { + border-radius: calc(var(--radius) + 4px); +} +.rounded-xs { + border-radius: calc(var(--radius) - 6px); +} +.rounded-l-md { + border-top-left-radius: calc(var(--radius) - 2px); + border-bottom-left-radius: calc(var(--radius) - 2px); +} +.rounded-r-md { + border-top-right-radius: calc(var(--radius) - 2px); + border-bottom-right-radius: calc(var(--radius) - 2px); +} +.rounded-tl-sm { + border-top-left-radius: calc(var(--radius) - 4px); +} +.border { + border-width: 1px; +} +.border-0 { + border-width: 0px; +} +.border-2 { + border-width: 2px; +} +.border-\[1\.5px\] { + border-width: 1.5px; +} +.border-y { + border-top-width: 1px; + border-bottom-width: 1px; +} +.border-b { + border-bottom-width: 1px; +} +.border-l { + border-left-width: 1px; +} +.border-r { + border-right-width: 1px; +} +.border-t { + border-top-width: 1px; +} +.border-dashed { + border-style: dashed; +} +.border-border { + border-color: var(--border-color); +} +.border-primary { + border-color: var(--primary); +} +.border-transparent { + border-color: transparent; +} +.border-l-transparent { + border-left-color: transparent; +} +.border-t-transparent { + border-top-color: transparent; +} +.bg-background { + background-color: var(--background); +} +.bg-black\/50 { + background-color: rgb(0 0 0 / 0.5); +} +.bg-border { + background-color: var(--border-color); +} +.bg-foreground { + background-color: var(--foreground); +} +.bg-muted { + background-color: var(--muted); +} +.bg-primary { + background-color: var(--primary); +} +.bg-secondary { + background-color: var(--secondary); +} +.bg-transparent { + background-color: transparent; +} +.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); +} +.fill-current { + fill: currentColor; +} +.fill-foreground { + fill: var(--foreground); +} +.fill-primary { + fill: var(--primary); +} +.object-cover { + -o-object-fit: cover; + object-fit: cover; +} +.p-0 { + padding: 0px; +} +.p-1 { + padding: 0.25rem; +} +.p-2 { + padding: 0.5rem; +} +.p-3 { + padding: 0.75rem; +} +.p-4 { + padding: 1rem; +} +.p-6 { + padding: 1.5rem; +} +.p-8 { + padding: 2rem; +} +.p-\[3px\] { + padding: 3px; +} +.p-px { + padding: 1px; +} +.px-1 { + padding-left: 0.25rem; + padding-right: 0.25rem; +} +.px-1\.5 { + padding-left: 0.375rem; + padding-right: 0.375rem; +} +.px-10 { + padding-left: 2.5rem; + padding-right: 2.5rem; +} +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.px-2\.5 { + padding-left: 0.625rem; + padding-right: 0.625rem; +} +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.px-3\.5 { + padding-left: 0.875rem; + padding-right: 0.875rem; +} +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} +.px-7 { + padding-left: 1.75rem; + padding-right: 1.75rem; +} +.px-9 { + padding-left: 2.25rem; + padding-right: 2.25rem; +} +.py-0\.5 { + padding-top: 0.125rem; + padding-bottom: 0.125rem; +} +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} +.py-1\.5 { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.py-10 { + padding-top: 2.5rem; + padding-bottom: 2.5rem; +} +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.py-2\.5 { + padding-top: 0.625rem; + padding-bottom: 0.625rem; +} +.py-20 { + padding-top: 5rem; + padding-bottom: 5rem; +} +.py-3 { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} +.py-5 { + padding-top: 1.25rem; + padding-bottom: 1.25rem; +} +.py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; +} +.py-\[120px\] { + padding-top: 120px; + padding-bottom: 120px; +} +.pb-10 { + padding-bottom: 2.5rem; +} +.pb-16 { + padding-bottom: 4rem; +} +.pb-3 { + padding-bottom: 0.75rem; +} +.pb-4 { + padding-bottom: 1rem; +} +.pl-2 { + padding-left: 0.5rem; +} +.pl-3 { + padding-left: 0.75rem; +} +.pl-4 { + padding-left: 1rem; +} +.pl-8 { + padding-left: 2rem; +} +.pr-1 { + padding-right: 0.25rem; +} +.pr-2 { + padding-right: 0.5rem; +} +.pr-2\.5 { + padding-right: 0.625rem; +} +.pr-3 { + padding-right: 0.75rem; +} +.pr-8 { + padding-right: 2rem; +} +.pt-0 { + padding-top: 0px; +} +.pt-16 { + padding-top: 4rem; +} +.pt-20 { + padding-top: 5rem; +} +.pt-3 { + padding-top: 0.75rem; +} +.pt-4 { + padding-top: 1rem; +} +.pt-6 { + padding-top: 1.5rem; +} +.text-left { + text-align: left; +} +.text-center { + text-align: center; +} +.align-middle { + vertical-align: middle; +} +.font-mono { + font-family: "IBM Plex Mono", monospace; +} +.font-sans { + font-family: + ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} +.font-serif { + font-family: "IBM Plex Serif", serif; +} +.text-\[0\.8rem\] { + font-size: 0.8rem; +} +.text-\[11px\] { + font-size: 11px; +} +.text-\[13px\] { + font-size: 13px; +} +.text-\[15px\] { + font-size: 15px; +} +.text-\[28px\] { + font-size: 28px; +} +.text-\[36px\] { + font-size: 36px; +} +.text-\[42px\] { + font-size: 42px; +} +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} +.text-sm\/relaxed { + font-size: 0.875rem; + line-height: 1.625; +} +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} +.font-light { + font-weight: 300; +} +.font-medium { + font-weight: 500; +} +.font-normal { + font-weight: 400; +} +.font-semibold { + font-weight: 600; +} +.italic { + font-style: italic; +} +.tabular-nums { + --tw-numeric-spacing: tabular-nums; + font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) + var(--tw-numeric-fraction); +} +.leading-\[1\.15\] { + line-height: 1.15; +} +.leading-\[1\.25\] { + line-height: 1.25; +} +.leading-\[1\.35\] { + line-height: 1.35; +} +.leading-\[1\.65\] { + line-height: 1.65; +} +.leading-\[1\.7\] { + line-height: 1.7; +} +.leading-none { + line-height: 1; +} +.leading-normal { + line-height: 1.5; +} +.leading-relaxed { + line-height: 1.625; +} +.leading-snug { + line-height: 1.375; +} +.tracking-\[-0\.5px\] { + letter-spacing: -0.5px; +} +.tracking-\[0\.05em\] { + letter-spacing: 0.05em; +} +.tracking-tight { + letter-spacing: -0.025em; +} +.tracking-wide { + letter-spacing: 0.025em; +} +.tracking-wider { + letter-spacing: 0.05em; +} +.tracking-widest { + letter-spacing: 0.1em; +} +.text-background { + color: var(--background); +} +.text-current { + color: currentColor; +} +.text-foreground { + color: var(--foreground); +} +.text-primary { + color: var(--primary); +} +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity, 1)); +} +.underline-offset-4 { + text-underline-offset: 4px; +} +.opacity-0 { + opacity: 0; +} +.opacity-50 { + opacity: 0.5; +} +.opacity-70 { + opacity: 0.7; +} +.shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\] { + --tw-shadow: 0 0 0 1px hsl(var(--sidebar-border)); + --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-lg { + --tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-md { + --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-none { + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-xl { + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.shadow-xs { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.outline-none { + outline: 2px solid transparent; + outline-offset: 2px; +} +.outline { + outline-style: solid; +} +.ring-0 { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.ring-offset-background { + --tw-ring-offset-color: var(--background); +} +.blur { + --tw-blur: blur(8px); + 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); +} +.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, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, + backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-\[color\2c box-shadow\] { + transition-property: color, box-shadow; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-\[left\2c right\2c width\] { + transition-property: left, right, width; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-\[margin\2c opacity\] { + transition-property: margin, opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-\[width\2c height\2c padding\] { + transition-property: width, height, padding; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-\[width\] { + transition-property: width; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-all { + transition-property: all; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-colors { + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-none { + transition-property: none; +} +.transition-opacity { + transition-property: opacity; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-shadow { + transition-property: box-shadow; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.transition-transform { + transition-property: transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} +.duration-100 { + transition-duration: 100ms; +} +.duration-1000 { + transition-duration: 1000ms; +} +.duration-150 { + transition-duration: 150ms; +} +.duration-200 { + transition-duration: 200ms; +} +.duration-300 { + transition-duration: 300ms; +} +.duration-500 { + transition-duration: 500ms; +} +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.ease-linear { + transition-timing-function: linear; +} +.ease-out { + transition-timing-function: cubic-bezier(0, 0, 0.2, 1); +} +@keyframes enter { + from { + opacity: var(--tw-enter-opacity, 1); + transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) + scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) + rotate(var(--tw-enter-rotate, 0)); + } +} +@keyframes exit { + to { + opacity: var(--tw-exit-opacity, 1); + transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) + scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) + rotate(var(--tw-exit-rotate, 0)); + } +} +.animate-in { + animation-name: enter; + animation-duration: 150ms; + --tw-enter-opacity: initial; + --tw-enter-scale: initial; + --tw-enter-rotate: initial; + --tw-enter-translate-x: initial; + --tw-enter-translate-y: initial; +} +.fade-in-0 { + --tw-enter-opacity: 0; +} +.zoom-in-95 { + --tw-enter-scale: 0.95; +} +.duration-100 { + animation-duration: 100ms; +} +.duration-1000 { + animation-duration: 1000ms; +} +.duration-150 { + animation-duration: 150ms; +} +.duration-200 { + animation-duration: 200ms; +} +.duration-300 { + animation-duration: 300ms; +} +.duration-500 { + animation-duration: 500ms; +} +.ease-in-out { + animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} +.ease-linear { + animation-timing-function: linear; +} +.ease-out { + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); +} +.\[--cell-size\:--spacing\(8\)\] { + --cell-size: var(--spacing(8)); +} +.selection\:bg-primary *::-moz-selection { + background-color: var(--primary); +} +.selection\:bg-primary *::selection { + background-color: var(--primary); +} +.selection\:bg-primary::-moz-selection { + background-color: var(--primary); +} +.selection\:bg-primary::selection { + background-color: var(--primary); +} +.file\:inline-flex::file-selector-button { + display: inline-flex; +} +.file\:h-7::file-selector-button { + height: 1.75rem; +} +.file\:border-0::file-selector-button { + border-width: 0px; +} +.file\:bg-transparent::file-selector-button { + background-color: transparent; +} +.file\:text-sm::file-selector-button { + font-size: 0.875rem; + line-height: 1.25rem; +} +.file\:font-medium::file-selector-button { + font-weight: 500; +} +.file\:text-foreground::file-selector-button { + color: var(--foreground); +} +.after\:absolute::after { + content: var(--tw-content); + position: absolute; +} +.after\:-inset-2::after { + content: var(--tw-content); + inset: -0.5rem; +} +.after\:inset-y-0::after { + content: var(--tw-content); + top: 0px; + bottom: 0px; +} +.after\:left-1\/2::after { + content: var(--tw-content); + left: 50%; +} +.after\:w-1::after { + content: var(--tw-content); + width: 0.25rem; +} +.after\:w-\[2px\]::after { + content: var(--tw-content); + width: 2px; +} +.after\:-translate-x-1\/2::after { + content: var(--tw-content); + --tw-translate-x: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.first\:rounded-l-md:first-child { + border-top-left-radius: calc(var(--radius) - 2px); + border-bottom-left-radius: calc(var(--radius) - 2px); +} +.first\:border-l:first-child { + border-left-width: 1px; +} +.last\:mt-0:last-child { + margin-top: 0px; +} +.last\:rounded-r-md:last-child { + border-top-right-radius: calc(var(--radius) - 2px); + border-bottom-right-radius: calc(var(--radius) - 2px); +} +.last\:border-b-0:last-child { + border-bottom-width: 0px; +} +.hover\:scale-\[1\.03\]:hover { + --tw-scale-x: 1.03; + --tw-scale-y: 1.03; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.hover\:bg-muted:hover { + background-color: var(--muted); +} +.hover\:text-\[var\(--foreground\)\]:hover { + color: var(--foreground); +} +.hover\:text-\[var\(--primary\)\]:hover { + color: var(--primary); +} +.hover\:text-foreground:hover { + color: var(--foreground); +} +.hover\:underline:hover { + text-decoration-line: underline; +} +.hover\:opacity-100:hover { + opacity: 1; +} +.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover { + --tw-shadow: 0 0 0 1px hsl(var(--sidebar-accent)); + --tw-shadow-colored: 0 0 0 1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.hover\:ring-4:hover { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus\:z-10:focus { + z-index: 10; +} +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus\:ring-offset-2:focus { + --tw-ring-offset-width: 2px; +} +.focus-visible\:z-10:focus-visible { + z-index: 10; +} +.focus-visible\:outline-1:focus-visible { + outline-width: 1px; +} +.focus-visible\:ring-0:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus-visible\:ring-1:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus-visible\:ring-2:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus-visible\:ring-4:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus-visible\:ring-\[3px\]:focus-visible { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.focus-visible\:ring-offset-1:focus-visible { + --tw-ring-offset-width: 1px; +} +.disabled\:pointer-events-none:disabled { + pointer-events: none; +} +.disabled\:cursor-not-allowed:disabled { + cursor: not-allowed; +} +.disabled\:opacity-50:disabled { + opacity: 0.5; +} +.group\/menu-item:focus-within .group-focus-within\/menu-item\:opacity-100 { + opacity: 1; +} +.group:hover .group-hover\:scale-x-100 { + --tw-scale-x: 1; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.group\/menu-item:hover .group-hover\/menu-item\:opacity-100 { + opacity: 1; +} +.peer:disabled ~ .peer-disabled\:cursor-not-allowed { + cursor: not-allowed; +} +.peer:disabled ~ .peer-disabled\:opacity-50 { + opacity: 0.5; +} +.has-\[\>button\]\:ml-\[-0\.45rem\]:has(> button) { + margin-left: -0.45rem; +} +.has-\[\>button\]\:mr-\[-0\.45rem\]:has(> button) { + margin-right: -0.45rem; +} +.has-\[\>kbd\]\:ml-\[-0\.35rem\]:has(> kbd) { + margin-left: -0.35rem; +} +.has-\[\>kbd\]\:mr-\[-0\.35rem\]:has(> kbd) { + margin-right: -0.35rem; +} +.has-\[\>\[data-align\=block-end\]\]\:h-auto:has(> [data-align="block-end"]) { + height: auto; +} +.has-\[\>\[data-align\=block-start\]\]\:h-auto:has(> [data-align="block-start"]) { + height: auto; +} +.has-\[\>textarea\]\:h-auto:has(> textarea) { + height: auto; +} +.has-\[\>\[data-slot\=field\]\]\:w-full:has(> [data-slot="field"]) { + width: 100%; +} +.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(> svg) { + grid-template-columns: calc(var(--spacing) * 4) 1fr; +} +.has-\[\>\[data-align\=block-end\]\]\:flex-col:has(> [data-align="block-end"]) { + flex-direction: column; +} +.has-\[\>\[data-align\=block-start\]\]\:flex-col:has(> [data-align="block-start"]) { + flex-direction: column; +} +.has-\[\>\[data-slot\=field\]\]\:flex-col:has(> [data-slot="field"]) { + flex-direction: column; +} +.has-\[\>\[data-slot\=field-content\]\]\:items-start:has(> [data-slot="field-content"]) { + align-items: flex-start; +} +.has-\[\>\[data-slot\=button-group\]\]\:gap-2:has(> [data-slot="button-group"]) { + gap: 0.5rem; +} +.has-\[\>\[data-slot\=checkbox-group\]\]\:gap-3:has(> [data-slot="checkbox-group"]) { + gap: 0.75rem; +} +.has-\[\>\[data-slot\=radio-group\]\]\:gap-3:has(> [data-slot="radio-group"]) { + gap: 0.75rem; +} +.has-\[\>svg\]\:gap-x-3:has(> svg) { + -moz-column-gap: 0.75rem; + column-gap: 0.75rem; +} +.has-\[\>\[data-slot\=field\]\]\:rounded-md:has(> [data-slot="field"]) { + border-radius: calc(var(--radius) - 2px); +} +.has-\[\>\[data-slot\=field\]\]\:border:has(> [data-slot="field"]) { + border-width: 1px; +} +.has-\[\>svg\]\:p-0:has(> svg) { + padding: 0px; +} +.has-\[\>svg\]\:px-2:has(> svg) { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.has-\[\>svg\]\:px-2\.5:has(> svg) { + padding-left: 0.625rem; + padding-right: 0.625rem; +} +.has-\[\>svg\]\:px-3:has(> svg) { + padding-left: 0.75rem; + padding-right: 0.75rem; +} +.has-\[\>svg\]\:px-4:has(> svg) { + padding-left: 1rem; + padding-right: 1rem; +} +.has-\[\[data-slot\=input-group-control\]\:focus-visible\]\:ring-\[3px\]:has( + [data-slot="input-group-control"]:focus-visible +) { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.group\/item:has([data-slot="item-description"]) + .group-has-\[\[data-slot\=item-description\]\]\/item\:translate-y-0\.5 { + --tw-translate-y: 0.125rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.group\/item:has([data-slot="item-description"]) .group-has-\[\[data-slot\=item-description\]\]\/item\:self-start { + align-self: flex-start; +} +.group\/field:has([data-orientation="horizontal"]) + .group-has-\[\[data-orientation\=horizontal\]\]\/field\:text-balance { + text-wrap: balance; +} +.group\/input-group:has(> input) .group-has-\[\>input\]\/input-group\:pb-2\.5 { + padding-bottom: 0.625rem; +} +.group\/input-group:has(> input) .group-has-\[\>input\]\/input-group\:pt-2\.5 { + padding-top: 0.625rem; +} +.aria-disabled\:pointer-events-none[aria-disabled="true"] { + pointer-events: none; +} +.aria-disabled\:opacity-50[aria-disabled="true"] { + opacity: 0.5; +} +.data-\[disabled\=true\]\:pointer-events-none[data-disabled="true"] { + pointer-events: none; +} +.data-\[disabled\]\:pointer-events-none[data-disabled] { + pointer-events: none; +} +.data-\[vaul-drawer-direction\=bottom\]\:inset-x-0[data-vaul-drawer-direction="bottom"] { + left: 0px; + right: 0px; +} +.data-\[vaul-drawer-direction\=left\]\:inset-y-0[data-vaul-drawer-direction="left"] { + top: 0px; + bottom: 0px; +} +.data-\[vaul-drawer-direction\=right\]\:inset-y-0[data-vaul-drawer-direction="right"] { + top: 0px; + bottom: 0px; +} +.data-\[vaul-drawer-direction\=top\]\:inset-x-0[data-vaul-drawer-direction="top"] { + left: 0px; + right: 0px; +} +.data-\[vaul-drawer-direction\=bottom\]\:bottom-0[data-vaul-drawer-direction="bottom"] { + bottom: 0px; +} +.data-\[vaul-drawer-direction\=left\]\:left-0[data-vaul-drawer-direction="left"] { + left: 0px; +} +.data-\[vaul-drawer-direction\=right\]\:right-0[data-vaul-drawer-direction="right"] { + right: 0px; +} +.data-\[vaul-drawer-direction\=top\]\:top-0[data-vaul-drawer-direction="top"] { + top: 0px; +} +.data-\[active\=true\]\:z-10[data-active="true"] { + z-index: 10; +} +.data-\[vaul-drawer-direction\=bottom\]\:mt-24[data-vaul-drawer-direction="bottom"] { + margin-top: 6rem; +} +.data-\[vaul-drawer-direction\=top\]\:mb-24[data-vaul-drawer-direction="top"] { + margin-bottom: 6rem; +} +.data-\[orientation\=horizontal\]\:h-1\.5[data-orientation="horizontal"] { + height: 0.375rem; +} +.data-\[orientation\=horizontal\]\:h-full[data-orientation="horizontal"] { + height: 100%; +} +.data-\[orientation\=horizontal\]\:h-px[data-orientation="horizontal"] { + height: 1px; +} +.data-\[orientation\=vertical\]\:h-auto[data-orientation="vertical"] { + height: auto; +} +.data-\[orientation\=vertical\]\:h-full[data-orientation="vertical"] { + height: 100%; +} +.data-\[panel-group-direction\=vertical\]\:h-px[data-panel-group-direction="vertical"] { + height: 1px; +} +.data-\[size\=default\]\:h-9[data-size="default"] { + height: 2.25rem; +} +.data-\[size\=sm\]\:h-8[data-size="sm"] { + height: 2rem; +} +.data-\[vaul-drawer-direction\=bottom\]\:max-h-\[80vh\][data-vaul-drawer-direction="bottom"] { + max-height: 80vh; +} +.data-\[vaul-drawer-direction\=top\]\:max-h-\[80vh\][data-vaul-drawer-direction="top"] { + max-height: 80vh; +} +.data-\[orientation\=vertical\]\:min-h-44[data-orientation="vertical"] { + min-height: 11rem; +} +.data-\[orientation\=horizontal\]\:w-full[data-orientation="horizontal"] { + width: 100%; +} +.data-\[orientation\=vertical\]\:w-1\.5[data-orientation="vertical"] { + width: 0.375rem; +} +.data-\[orientation\=vertical\]\:w-auto[data-orientation="vertical"] { + width: auto; +} +.data-\[orientation\=vertical\]\:w-full[data-orientation="vertical"] { + width: 100%; +} +.data-\[orientation\=vertical\]\:w-px[data-orientation="vertical"] { + width: 1px; +} +.data-\[panel-group-direction\=vertical\]\:w-full[data-panel-group-direction="vertical"] { + width: 100%; +} +.data-\[vaul-drawer-direction\=left\]\:w-3\/4[data-vaul-drawer-direction="left"] { + width: 75%; +} +.data-\[vaul-drawer-direction\=right\]\:w-3\/4[data-vaul-drawer-direction="right"] { + width: 75%; +} +.data-\[side\=bottom\]\:translate-y-1[data-side="bottom"] { + --tw-translate-y: 0.25rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[side\=left\]\:-translate-x-1[data-side="left"] { + --tw-translate-x: -0.25rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[side\=right\]\:translate-x-1[data-side="right"] { + --tw-translate-x: 0.25rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[side\=top\]\:-translate-y-1[data-side="top"] { + --tw-translate-y: -0.25rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[state\=checked\]\:translate-x-\[calc\(100\%-2px\)\][data-state="checked"] { + --tw-translate-x: calc(100% - 2px); + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[state\=unchecked\]\:translate-x-0[data-state="unchecked"] { + --tw-translate-x: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +@keyframes accordion-up { + from { + height: var(--radix-accordion-content-height); + } + + to { + height: 0; + } +} +.data-\[state\=closed\]\:animate-accordion-up[data-state="closed"] { + animation: accordion-up 0.2s ease-out; +} +@keyframes accordion-down { + from { + height: 0; + } + + to { + height: var(--radix-accordion-content-height); + } +} +.data-\[state\=open\]\:animate-accordion-down[data-state="open"] { + animation: accordion-down 0.2s ease-out; +} +.data-\[orientation\=vertical\]\:flex-col[data-orientation="vertical"] { + flex-direction: column; +} +.data-\[panel-group-direction\=vertical\]\:flex-col[data-panel-group-direction="vertical"] { + flex-direction: column; +} +.data-\[slot\=checkbox-group\]\:gap-3[data-slot="checkbox-group"] { + gap: 0.75rem; +} +.data-\[range-end\=true\]\:rounded-md[data-range-end="true"] { + border-radius: calc(var(--radius) - 2px); +} +.data-\[range-middle\=true\]\:rounded-none[data-range-middle="true"] { + border-radius: 0px; +} +.data-\[range-start\=true\]\:rounded-md[data-range-start="true"] { + border-radius: calc(var(--radius) - 2px); +} +.data-\[selected\=true\]\:rounded-none[data-selected="true"] { + border-radius: 0px; +} +.data-\[spacing\=0\]\:rounded-none[data-spacing="0"] { + border-radius: 0px; +} +.data-\[range-end\=true\]\:rounded-r-md[data-range-end="true"] { + border-top-right-radius: calc(var(--radius) - 2px); + border-bottom-right-radius: calc(var(--radius) - 2px); +} +.data-\[range-start\=true\]\:rounded-l-md[data-range-start="true"] { + border-top-left-radius: calc(var(--radius) - 2px); + border-bottom-left-radius: calc(var(--radius) - 2px); +} +.data-\[vaul-drawer-direction\=bottom\]\:rounded-t-lg[data-vaul-drawer-direction="bottom"] { + border-top-left-radius: var(--radius); + border-top-right-radius: var(--radius); +} +.data-\[vaul-drawer-direction\=top\]\:rounded-b-lg[data-vaul-drawer-direction="top"] { + border-bottom-right-radius: var(--radius); + border-bottom-left-radius: var(--radius); +} +.data-\[spacing\=0\]\:data-\[variant\=outline\]\:border-l-0[data-variant="outline"][data-spacing="0"] { + border-left-width: 0px; +} +.data-\[vaul-drawer-direction\=bottom\]\:border-t[data-vaul-drawer-direction="bottom"] { + border-top-width: 1px; +} +.data-\[vaul-drawer-direction\=left\]\:border-r[data-vaul-drawer-direction="left"] { + border-right-width: 1px; +} +.data-\[vaul-drawer-direction\=right\]\:border-l[data-vaul-drawer-direction="right"] { + border-left-width: 1px; +} +.data-\[vaul-drawer-direction\=top\]\:border-b[data-vaul-drawer-direction="top"] { + border-bottom-width: 1px; +} +.data-\[state\=checked\]\:border-primary[data-state="checked"] { + border-color: var(--primary); +} +.data-\[range-end\=true\]\:bg-primary[data-range-end="true"] { + background-color: var(--primary); +} +.data-\[range-start\=true\]\:bg-primary[data-range-start="true"] { + background-color: var(--primary); +} +.data-\[selected-single\=true\]\:bg-primary[data-selected-single="true"] { + background-color: var(--primary); +} +.data-\[state\=active\]\:bg-background[data-state="active"] { + background-color: var(--background); +} +.data-\[state\=checked\]\:bg-primary[data-state="checked"] { + background-color: var(--primary); +} +.data-\[state\=open\]\:bg-secondary[data-state="open"] { + background-color: var(--secondary); +} +.data-\[state\=selected\]\:bg-muted[data-state="selected"] { + background-color: var(--muted); +} +.data-\[inset\]\:pl-8[data-inset] { + padding-left: 2rem; +} +.data-\[variant\=label\]\:text-sm[data-variant="label"] { + font-size: 0.875rem; + line-height: 1.25rem; +} +.data-\[variant\=legend\]\:text-base[data-variant="legend"] { + font-size: 1rem; + line-height: 1.5rem; +} +.data-\[active\=true\]\:font-medium[data-active="true"] { + font-weight: 500; +} +.data-\[disabled\=true\]\:opacity-50[data-disabled="true"] { + opacity: 0.5; +} +.data-\[disabled\]\:opacity-50[data-disabled] { + opacity: 0.5; +} +.data-\[state\=open\]\:opacity-100[data-state="open"] { + opacity: 1; +} +.data-\[spacing\=0\]\:shadow-none[data-spacing="0"] { + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.data-\[spacing\=default\]\:data-\[variant\=outline\]\:shadow-xs[data-variant="outline"][data-spacing="default"] { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.data-\[state\=active\]\:shadow-sm[data-state="active"] { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.data-\[active\=true\]\:ring-\[3px\][data-active="true"] { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.data-\[state\=closed\]\:duration-300[data-state="closed"] { + transition-duration: 300ms; +} +.data-\[state\=open\]\:duration-500[data-state="open"] { + transition-duration: 500ms; +} +.data-\[motion\^\=from-\]\:animate-in[data-motion^="from-"] { + animation-name: enter; + animation-duration: 150ms; + --tw-enter-opacity: initial; + --tw-enter-scale: initial; + --tw-enter-rotate: initial; + --tw-enter-translate-x: initial; + --tw-enter-translate-y: initial; +} +.data-\[state\=open\]\:animate-in[data-state="open"] { + animation-name: enter; + animation-duration: 150ms; + --tw-enter-opacity: initial; + --tw-enter-scale: initial; + --tw-enter-rotate: initial; + --tw-enter-translate-x: initial; + --tw-enter-translate-y: initial; +} +.data-\[state\=visible\]\:animate-in[data-state="visible"] { + animation-name: enter; + animation-duration: 150ms; + --tw-enter-opacity: initial; + --tw-enter-scale: initial; + --tw-enter-rotate: initial; + --tw-enter-translate-x: initial; + --tw-enter-translate-y: initial; +} +.data-\[motion\^\=to-\]\:animate-out[data-motion^="to-"] { + animation-name: exit; + animation-duration: 150ms; + --tw-exit-opacity: initial; + --tw-exit-scale: initial; + --tw-exit-rotate: initial; + --tw-exit-translate-x: initial; + --tw-exit-translate-y: initial; +} +.data-\[state\=closed\]\:animate-out[data-state="closed"] { + animation-name: exit; + animation-duration: 150ms; + --tw-exit-opacity: initial; + --tw-exit-scale: initial; + --tw-exit-rotate: initial; + --tw-exit-translate-x: initial; + --tw-exit-translate-y: initial; +} +.data-\[state\=hidden\]\:animate-out[data-state="hidden"] { + animation-name: exit; + animation-duration: 150ms; + --tw-exit-opacity: initial; + --tw-exit-scale: initial; + --tw-exit-rotate: initial; + --tw-exit-translate-x: initial; + --tw-exit-translate-y: initial; +} +.data-\[motion\^\=from-\]\:fade-in[data-motion^="from-"] { + --tw-enter-opacity: 0; +} +.data-\[motion\^\=to-\]\:fade-out[data-motion^="to-"] { + --tw-exit-opacity: 0; +} +.data-\[state\=closed\]\:fade-out-0[data-state="closed"] { + --tw-exit-opacity: 0; +} +.data-\[state\=hidden\]\:fade-out[data-state="hidden"] { + --tw-exit-opacity: 0; +} +.data-\[state\=open\]\:fade-in-0[data-state="open"] { + --tw-enter-opacity: 0; +} +.data-\[state\=visible\]\:fade-in[data-state="visible"] { + --tw-enter-opacity: 0; +} +.data-\[state\=closed\]\:zoom-out-95[data-state="closed"] { + --tw-exit-scale: 0.95; +} +.data-\[state\=open\]\:zoom-in-90[data-state="open"] { + --tw-enter-scale: 0.9; +} +.data-\[state\=open\]\:zoom-in-95[data-state="open"] { + --tw-enter-scale: 0.95; +} +.data-\[motion\=from-end\]\:slide-in-from-right-52[data-motion="from-end"] { + --tw-enter-translate-x: 13rem; +} +.data-\[motion\=from-start\]\:slide-in-from-left-52[data-motion="from-start"] { + --tw-enter-translate-x: -13rem; +} +.data-\[motion\=to-end\]\:slide-out-to-right-52[data-motion="to-end"] { + --tw-exit-translate-x: 13rem; +} +.data-\[motion\=to-start\]\:slide-out-to-left-52[data-motion="to-start"] { + --tw-exit-translate-x: -13rem; +} +.data-\[side\=bottom\]\:slide-in-from-top-2[data-side="bottom"] { + --tw-enter-translate-y: -0.5rem; +} +.data-\[side\=left\]\:slide-in-from-right-2[data-side="left"] { + --tw-enter-translate-x: 0.5rem; +} +.data-\[side\=right\]\:slide-in-from-left-2[data-side="right"] { + --tw-enter-translate-x: -0.5rem; +} +.data-\[side\=top\]\:slide-in-from-bottom-2[data-side="top"] { + --tw-enter-translate-y: 0.5rem; +} +.data-\[state\=closed\]\:slide-out-to-bottom[data-state="closed"] { + --tw-exit-translate-y: 100%; +} +.data-\[state\=closed\]\:slide-out-to-left[data-state="closed"] { + --tw-exit-translate-x: -100%; +} +.data-\[state\=closed\]\:slide-out-to-right[data-state="closed"] { + --tw-exit-translate-x: 100%; +} +.data-\[state\=closed\]\:slide-out-to-top[data-state="closed"] { + --tw-exit-translate-y: -100%; +} +.data-\[state\=open\]\:slide-in-from-bottom[data-state="open"] { + --tw-enter-translate-y: 100%; +} +.data-\[state\=open\]\:slide-in-from-left[data-state="open"] { + --tw-enter-translate-x: -100%; +} +.data-\[state\=open\]\:slide-in-from-right[data-state="open"] { + --tw-enter-translate-x: 100%; +} +.data-\[state\=open\]\:slide-in-from-top[data-state="open"] { + --tw-enter-translate-y: -100%; +} +.data-\[state\=closed\]\:duration-300[data-state="closed"] { + animation-duration: 300ms; +} +.data-\[state\=open\]\:duration-500[data-state="open"] { + animation-duration: 500ms; +} +.\*\:data-\[slot\=select-value\]\:line-clamp-1[data-slot="select-value"] > * { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 1; +} +.\*\:data-\[slot\=select-value\]\:flex[data-slot="select-value"] > * { + display: flex; +} +.\*\:data-\[slot\=select-value\]\:items-center[data-slot="select-value"] > * { + align-items: center; +} +.\*\:data-\[slot\=select-value\]\:gap-2[data-slot="select-value"] > * { + gap: 0.5rem; +} +.data-\[panel-group-direction\=vertical\]\:after\:left-0[data-panel-group-direction="vertical"]::after { + content: var(--tw-content); + left: 0px; +} +.data-\[panel-group-direction\=vertical\]\:after\:h-1[data-panel-group-direction="vertical"]::after { + content: var(--tw-content); + height: 0.25rem; +} +.data-\[panel-group-direction\=vertical\]\:after\:w-full[data-panel-group-direction="vertical"]::after { + content: var(--tw-content); + width: 100%; +} +.data-\[panel-group-direction\=vertical\]\:after\:-translate-y-1\/2[data-panel-group-direction="vertical"]::after { + content: var(--tw-content); + --tw-translate-y: -50%; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[panel-group-direction\=vertical\]\:after\:translate-x-0[data-panel-group-direction="vertical"]::after { + content: var(--tw-content); + --tw-translate-x: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.data-\[spacing\=0\]\:first\:rounded-l-md:first-child[data-spacing="0"] { + border-top-left-radius: calc(var(--radius) - 2px); + border-bottom-left-radius: calc(var(--radius) - 2px); +} +.data-\[spacing\=0\]\:data-\[variant\=outline\]\:first\:border-l:first-child[data-variant="outline"][data-spacing="0"] { + border-left-width: 1px; +} +.data-\[spacing\=0\]\:last\:rounded-r-md:last-child[data-spacing="0"] { + border-top-right-radius: calc(var(--radius) - 2px); + border-bottom-right-radius: calc(var(--radius) - 2px); +} +.group[data-disabled="true"] .group-data-\[disabled\=true\]\:pointer-events-none { + pointer-events: none; +} +.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:relative { + position: relative; +} +.group[data-collapsible="offcanvas"] + .group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\] { + left: calc(var(--sidebar-width) * -1); +} +.group[data-collapsible="offcanvas"] + .group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\] { + right: calc(var(--sidebar-width) * -1); +} +.group[data-side="left"] .group-data-\[side\=left\]\:-right-4 { + right: -1rem; +} +.group[data-side="right"] .group-data-\[side\=right\]\:left-0 { + left: 0px; +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:top-full { + top: 100%; +} +.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:z-10 { + z-index: 10; +} +.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:-mt-8 { + margin-top: -2rem; +} +.group\/field-group[data-variant="outline"] .group-data-\[variant\=outline\]\/field-group\:-mb-2 { + margin-bottom: -0.5rem; +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:mt-1\.5 { + margin-top: 0.375rem; +} +.group\/drawer-content[data-vaul-drawer-direction="bottom"] + .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:block { + display: block; +} +.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:hidden { + display: none; +} +.group[data-collapsible="icon"] + .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\] { + width: calc(var(--sidebar-width-icon) + (--spacing(4))); +} +.group[data-collapsible="icon"] + .group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\] { + width: calc(var(--sidebar-width-icon) + (--spacing(4)) + 2px); +} +.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:w-0 { + width: 0px; +} +.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:translate-x-0 { + --tw-translate-x: 0px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.group[data-side="right"] .group-data-\[side\=right\]\:rotate-180 { + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.group[data-state="open"] .group-data-\[state\=open\]\:rotate-180 { + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:overflow-hidden { + overflow: hidden; +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:overflow-hidden { + overflow: hidden; +} +.group[data-variant="floating"] .group-data-\[variant\=floating\]\:rounded-lg { + border-radius: var(--radius); +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:rounded-md { + border-radius: calc(var(--radius) - 2px); +} +.group[data-variant="floating"] .group-data-\[variant\=floating\]\:border { + border-width: 1px; +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:border { + border-width: 1px; +} +.group[data-side="left"] .group-data-\[side\=left\]\:border-r { + border-right-width: 1px; +} +.group[data-side="right"] .group-data-\[side\=right\]\:border-l { + border-left-width: 1px; +} +.group\/drawer-content[data-vaul-drawer-direction="bottom"] + .group-data-\[vaul-drawer-direction\=bottom\]\/drawer-content\:text-center { + text-align: center; +} +.group\/drawer-content[data-vaul-drawer-direction="top"] + .group-data-\[vaul-drawer-direction\=top\]\/drawer-content\:text-center { + text-align: center; +} +.group[data-collapsible="icon"] .group-data-\[collapsible\=icon\]\:opacity-0 { + opacity: 0; +} +.group\/field[data-disabled="true"] .group-data-\[disabled\=true\]\/field\:opacity-50 { + opacity: 0.5; +} +.group\/input-group[data-disabled="true"] .group-data-\[disabled\=true\]\/input-group\:opacity-50 { + opacity: 0.5; +} +.group[data-disabled="true"] .group-data-\[disabled\=true\]\:opacity-50 { + opacity: 0.5; +} +.group[data-variant="floating"] .group-data-\[variant\=floating\]\:shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:shadow { + --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); +} +.group\/day[data-focused="true"] .group-data-\[focused\=true\]\/day\:ring-\[3px\] { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} +.group\/navigation-menu[data-viewport="false"] .group-data-\[viewport\=false\]\/navigation-menu\:duration-200 { + transition-duration: 200ms; + animation-duration: 200ms; +} +.group[data-collapsible="offcanvas"] .group-data-\[collapsible\=offcanvas\]\:after\:left-full::after { + content: var(--tw-content); + left: 100%; +} +.group\/navigation-menu[data-viewport="false"] + .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:animate-in[data-state="open"] { + animation-name: enter; + animation-duration: 150ms; + --tw-enter-opacity: initial; + --tw-enter-scale: initial; + --tw-enter-rotate: initial; + --tw-enter-translate-x: initial; + --tw-enter-translate-y: initial; +} +.group\/navigation-menu[data-viewport="false"] + .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:animate-out[data-state="closed"] { + animation-name: exit; + animation-duration: 150ms; + --tw-exit-opacity: initial; + --tw-exit-scale: initial; + --tw-exit-rotate: initial; + --tw-exit-translate-x: initial; + --tw-exit-translate-y: initial; +} +.group\/navigation-menu[data-viewport="false"] + .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:fade-out-0[data-state="closed"] { + --tw-exit-opacity: 0; +} +.group\/navigation-menu[data-viewport="false"] + .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:fade-in-0[data-state="open"] { + --tw-enter-opacity: 0; +} +.group\/navigation-menu[data-viewport="false"] + .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=closed\]\:zoom-out-95[data-state="closed"] { + --tw-exit-scale: 0.95; +} +.group\/navigation-menu[data-viewport="false"] + .group-data-\[viewport\=false\]\/navigation-menu\:data-\[state\=open\]\:zoom-in-95[data-state="open"] { + --tw-enter-scale: 0.95; +} +.peer\/menu-button[data-size="default"] ~ .peer-data-\[size\=default\]\/menu-button\:top-1\.5 { + top: 0.375rem; +} +.peer\/menu-button[data-size="lg"] ~ .peer-data-\[size\=lg\]\/menu-button\:top-2\.5 { + top: 0.625rem; +} +.peer\/menu-button[data-size="sm"] ~ .peer-data-\[size\=sm\]\/menu-button\:top-1 { + top: 0.25rem; +} +.dark\:bg-transparent:is(.dark *) { + background-color: transparent; +} +.dark\:data-\[state\=checked\]\:bg-primary[data-state="checked"]:is(.dark *) { + background-color: var(--primary); +} +.dark\:data-\[state\=unchecked\]\:bg-foreground[data-state="unchecked"]:is(.dark *) { + background-color: var(--foreground); +} +.dark\:data-\[state\=active\]\:text-foreground[data-state="active"]:is(.dark *) { + color: var(--foreground); +} +@media not all and (min-width: 768px) { + .max-md\:gap-10 { + gap: 2.5rem; + } + + .max-md\:py-20 { + padding-top: 5rem; + padding-bottom: 5rem; + } + + .max-md\:text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; + } + + .max-md\:text-\[28px\] { + font-size: 28px; + } +} +@media (min-width: 640px) { + .sm\:block { + display: block; + } + + .sm\:flex { + display: flex; + } + + .sm\:max-w-lg { + max-width: 32rem; + } + + .sm\:max-w-sm { + max-width: 24rem; + } + + .sm\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:justify-end { + justify-content: flex-end; + } + + .sm\:gap-2\.5 { + gap: 0.625rem; + } + + .sm\:pl-2\.5 { + padding-left: 0.625rem; + } + + .sm\:pr-2\.5 { + padding-right: 0.625rem; + } + + .sm\:text-left { + text-align: left; + } + + .data-\[vaul-drawer-direction\=left\]\:sm\:max-w-sm[data-vaul-drawer-direction="left"] { + max-width: 24rem; + } + + .data-\[vaul-drawer-direction\=right\]\:sm\:max-w-sm[data-vaul-drawer-direction="right"] { + max-width: 24rem; + } +} +@media (min-width: 768px) { + .md\:absolute { + position: absolute; + } + + .md\:block { + display: block; + } + + .md\:flex { + display: flex; + } + + .md\:hidden { + display: none; + } + + .md\:w-\[var\(--radix-navigation-menu-viewport-width\)\] { + width: var(--radix-navigation-menu-viewport-width); + } + + .md\:w-auto { + width: auto; + } + + .md\:grid-cols-2 { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + + .md\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .md\:flex-row { + flex-direction: row; + } + + .md\:gap-1\.5 { + gap: 0.375rem; + } + + .md\:p-12 { + padding: 3rem; + } + + .md\:text-left { + text-align: left; + } + + .md\:text-\[52px\] { + font-size: 52px; + } + + .md\:text-sm { + font-size: 0.875rem; + line-height: 1.25rem; + } + + .md\:opacity-0 { + opacity: 0; + } + + .md\:after\:hidden::after { + content: var(--tw-content); + display: none; + } + + .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:m-2 { + margin: 0.5rem; + } + + .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:ml-0 { + margin-left: 0px; + } + + .peer[data-variant="inset"][data-state="collapsed"] + ~ .md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2 { + margin-left: 0.5rem; + } + + .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:rounded-xl { + border-radius: calc(var(--radius) + 4px); + } + + .peer[data-variant="inset"] ~ .md\:peer-data-\[variant\=inset\]\:shadow-sm { + --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); + } +} +@media (min-width: 1024px) { + .lg\:grid-cols-4 { + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .lg\:text-\[72px\] { + font-size: 72px; + } +} +.\[\&\+\[data-slot\=item-content\]\]\:flex-none + [data-slot="item-content"] { + flex: none; +} +.\[\&\:first-child\[data-selected\=true\]_button\]\:rounded-l-md:first-child[data-selected="true"] button { + border-top-left-radius: calc(var(--radius) - 2px); + border-bottom-left-radius: calc(var(--radius) - 2px); +} +.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role="checkbox"]) { + padding-right: 0px; +} +.\[\&\:last-child\[data-selected\=true\]_button\]\:rounded-r-md:last-child[data-selected="true"] button { + border-top-right-radius: calc(var(--radius) - 2px); + border-bottom-right-radius: calc(var(--radius) - 2px); +} +.\[\&\:nth-child\(2\)\[data-selected\=true\]_button\]\:rounded-l-md:nth-child(2)[data-selected="true"] button { + border-top-left-radius: calc(var(--radius) - 2px); + border-bottom-left-radius: calc(var(--radius) - 2px); +} +.\[\&\>\*\:not\(\:first-child\)\]\:rounded-l-none > *:not(:first-child) { + border-top-left-radius: 0px; + border-bottom-left-radius: 0px; +} +.\[\&\>\*\:not\(\:first-child\)\]\:rounded-t-none > *:not(:first-child) { + border-top-left-radius: 0px; + border-top-right-radius: 0px; +} +.\[\&\>\*\:not\(\:first-child\)\]\:border-l-0 > *:not(:first-child) { + border-left-width: 0px; +} +.\[\&\>\*\:not\(\:first-child\)\]\:border-t-0 > *:not(:first-child) { + border-top-width: 0px; +} +.\[\&\>\*\:not\(\:last-child\)\]\:rounded-b-none > *:not(:last-child) { + border-bottom-right-radius: 0px; + border-bottom-left-radius: 0px; +} +.\[\&\>\*\:not\(\:last-child\)\]\:rounded-r-none > *:not(:last-child) { + border-top-right-radius: 0px; + border-bottom-right-radius: 0px; +} +.\[\&\>\*\]\:w-full > * { + width: 100%; +} +.\[\&\>\*\]\:focus-visible\:relative:focus-visible > * { + position: relative; +} +.\[\&\>\*\]\:focus-visible\:z-10:focus-visible > * { + z-index: 10; +} +.\[\&\>\*\]\:data-\[slot\=field\]\:p-4[data-slot="field"] > * { + padding: 1rem; +} +.\[\&\>\.sr-only\]\:w-auto > .sr-only { + width: auto; +} +.\[\&\>\[data-slot\=field-group\]\]\:gap-4 > [data-slot="field-group"] { + gap: 1rem; +} +.\[\&\>\[data-slot\=field-label\]\]\:flex-auto > [data-slot="field-label"] { + flex: 1 1 auto; +} +.has-\[select\[aria-hidden\=true\]\:last-child\]\:\[\&\>\[data-slot\=select-trigger\]\:last-of-type\]\:rounded-r-md + > [data-slot="select-trigger"]:last-of-type:has(select[aria-hidden="true"]:last-child) { + border-top-right-radius: calc(var(--radius) - 2px); + border-bottom-right-radius: calc(var(--radius) - 2px); +} +.\[\&\>\[data-slot\=select-trigger\]\:not\(\[class\*\=\'w-\'\]\)\]\:w-fit + > [data-slot="select-trigger"]:not([class*="w-"]) { + width: -moz-fit-content; + width: fit-content; +} +.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\] > [role="checkbox"] { + --tw-translate-y: 2px; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.\[\&\>a\:hover\]\:text-primary > a:hover { + color: var(--primary); +} +.\[\&\>a\]\:underline > a { + text-decoration-line: underline; +} +.\[\&\>a\]\:underline-offset-4 > a { + text-underline-offset: 4px; +} +.\[\&\>button\]\:hidden > button { + display: none; +} +.\[\&\>input\]\:flex-1 > input { + flex: 1 1 0%; +} +.has-\[\>\[data-align\=block-end\]\]\:\[\&\>input\]\:pt-3 > input:has(> [data-align="block-end"]) { + padding-top: 0.75rem; +} +.has-\[\>\[data-align\=block-start\]\]\:\[\&\>input\]\:pb-3 > input:has(> [data-align="block-start"]) { + padding-bottom: 0.75rem; +} +.has-\[\>\[data-align\=inline-end\]\]\:\[\&\>input\]\:pr-2 > input:has(> [data-align="inline-end"]) { + padding-right: 0.5rem; +} +.has-\[\>\[data-align\=inline-start\]\]\:\[\&\>input\]\:pl-2 > input:has(> [data-align="inline-start"]) { + padding-left: 0.5rem; +} +.\[\&\>kbd\]\:rounded-\[calc\(var\(--radius\)-5px\)\] > kbd { + border-radius: calc(var(--radius) - 5px); +} +.\[\&\>span\:last-child\]\:truncate > span:last-child { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.\[\&\>span\]\:text-xs > span { + font-size: 0.75rem; + line-height: 1rem; +} +.\[\&\>span\]\:opacity-70 > span { + opacity: 0.7; +} +.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3\.5 > svg:not([class*="size-"]) { + width: 0.875rem; + height: 0.875rem; +} +.\[\&\>svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 > svg:not([class*="size-"]) { + width: 1rem; + height: 1rem; +} +.\[\&\>svg\]\:pointer-events-none > svg { + pointer-events: none; +} +.\[\&\>svg\]\:size-3 > svg { + width: 0.75rem; + height: 0.75rem; +} +.\[\&\>svg\]\:size-3\.5 > svg { + width: 0.875rem; + height: 0.875rem; +} +.\[\&\>svg\]\:size-4 > svg { + width: 1rem; + height: 1rem; +} +.\[\&\>svg\]\:h-2\.5 > svg { + height: 0.625rem; +} +.\[\&\>svg\]\:h-3 > svg { + height: 0.75rem; +} +.\[\&\>svg\]\:w-2\.5 > svg { + width: 0.625rem; +} +.\[\&\>svg\]\:w-3 > svg { + width: 0.75rem; +} +.\[\&\>svg\]\:shrink-0 > svg { + flex-shrink: 0; +} +.\[\&\>svg\]\:translate-y-0\.5 > svg { + --tw-translate-y: 0.125rem; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.\[\&\>svg\]\:text-current > svg { + color: currentColor; +} +.\[\&\>tr\]\:last\:border-b-0:last-child > tr { + border-bottom-width: 0px; +} +.\[\&\[data-panel-group-direction\=vertical\]\>div\]\:rotate-90[data-panel-group-direction="vertical"] > div { + --tw-rotate: 90deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state="open"] > svg { + --tw-rotate: 180deg; + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) + skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} +.\[\&_\.recharts-curve\.recharts-tooltip-cursor\]\:stroke-border .recharts-curve.recharts-tooltip-cursor { + stroke: var(--border-color); +} +.\[\&_\.recharts-dot\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-dot[stroke="#fff"] { + stroke: transparent; +} +.\[\&_\.recharts-polar-grid_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-polar-grid [stroke="#ccc"] { + stroke: var(--border-color); +} +.\[\&_\.recharts-radial-bar-background-sector\]\:fill-muted .recharts-radial-bar-background-sector { + fill: var(--muted); +} +.\[\&_\.recharts-rectangle\.recharts-tooltip-cursor\]\:fill-muted .recharts-rectangle.recharts-tooltip-cursor { + fill: var(--muted); +} +.\[\&_\.recharts-reference-line_\[stroke\=\'\#ccc\'\]\]\:stroke-border .recharts-reference-line [stroke="#ccc"] { + stroke: var(--border-color); +} +.\[\&_\.recharts-sector\[stroke\=\'\#fff\'\]\]\:stroke-transparent .recharts-sector[stroke="#fff"] { + stroke: transparent; +} +.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading] { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading] { + padding-top: 0.375rem; + padding-bottom: 0.375rem; +} +.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading] { + font-size: 0.75rem; + line-height: 1rem; +} +.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading] { + font-weight: 500; +} +.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden]) ~ [cmdk-group] { + padding-top: 0px; +} +.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group] { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg { + height: 1.25rem; +} +.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg { + width: 1.25rem; +} +.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input] { + height: 3rem; +} +.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item] { + padding-left: 0.5rem; + padding-right: 0.5rem; +} +.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item] { + padding-top: 0.75rem; + padding-bottom: 0.75rem; +} +.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg { + height: 1.25rem; +} +.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg { + width: 1.25rem; +} +.\[\&_img\]\:size-full img { + width: 100%; + height: 100%; +} +.\[\&_img\]\:object-cover img { + -o-object-fit: cover; + object-fit: cover; +} +.\[\&_p\]\:leading-relaxed p { + line-height: 1.625; +} +.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-3 svg:not([class*="size-"]) { + width: 0.75rem; + height: 0.75rem; +} +.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*="size-"]) { + width: 1rem; + height: 1rem; +} +.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-6 svg:not([class*="size-"]) { + width: 1.5rem; + height: 1.5rem; +} +.\[\&_svg\]\:pointer-events-none svg { + pointer-events: none; +} +.\[\&_svg\]\:shrink-0 svg { + flex-shrink: 0; +} +.\[\&_tr\:last-child\]\:border-0 tr:last-child { + border-width: 0px; +} +.\[\&_tr\]\:border-b tr { + border-bottom-width: 1px; +} +[data-side="left"][data-collapsible="offcanvas"] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2 { + right: -0.5rem; +} +[data-side="left"][data-state="collapsed"] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize { + cursor: e-resize; +} +[data-side="right"][data-collapsible="offcanvas"] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2 { + left: -0.5rem; +} +[data-side="right"][data-state="collapsed"] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize { + cursor: w-resize; +} +[data-slot="card-content"] .\[\[data-slot\=card-content\]_\&\]\:bg-transparent { + background-color: transparent; +} +[data-slot="popover-content"] .\[\[data-slot\=popover-content\]_\&\]\:bg-transparent { + background-color: transparent; +} +[data-slot="tooltip-content"] .\[\[data-slot\=tooltip-content\]_\&\]\:text-background { + color: var(--background); +} +[data-variant="legend"] + .\[\[data-variant\=legend\]\+\&\]\:-mt-1\.5 { + margin-top: -0.375rem; +} diff --git a/refs/ref4/duck2.css b/refs/ref4/duck2.css new file mode 100644 index 0000000..eaf86fc --- /dev/null +++ b/refs/ref4/duck2.css @@ -0,0 +1,73 @@ +.rfm-marquee-container { + overflow-x: hidden; + display: flex; + flex-direction: row; + position: relative; + width: var(--width); + transform: var(--transform); +} +.rfm-marquee-container:hover div { + animation-play-state: var(--pause-on-hover); +} +.rfm-marquee-container:active div { + animation-play-state: var(--pause-on-click); +} + +.rfm-overlay { + position: absolute; + width: 100%; + height: 100%; +} +.rfm-overlay::before, +.rfm-overlay::after { + background: linear-gradient(to right, var(--gradient-color), rgba(255, 255, 255, 0)); + content: ""; + height: 100%; + position: absolute; + width: var(--gradient-width); + z-index: 2; + pointer-events: none; + touch-action: none; +} +.rfm-overlay::after { + right: 0; + top: 0; + transform: rotateZ(180deg); +} +.rfm-overlay::before { + left: 0; + top: 0; +} + +.rfm-marquee { + flex: 0 0 auto; + min-width: var(--min-width); + z-index: 1; + display: flex; + flex-direction: row; + align-items: center; + animation: scroll var(--duration) linear var(--delay) var(--iteration-count); + animation-play-state: var(--play); + animation-delay: var(--delay); + animation-direction: var(--direction); +} +@keyframes scroll { + 0% { + transform: translateX(0%); + } + 100% { + transform: translateX(-100%); + } +} + +.rfm-initial-child-container { + flex: 0 0 auto; + display: flex; + min-width: auto; + flex-direction: row; + align-items: center; +} + +.rfm-child { + transform: var(--transform); +} diff --git a/refs/ref4/index.html b/refs/ref4/index.html new file mode 100644 index 0000000..9bfbd56 --- /dev/null +++ b/refs/ref4/index.html @@ -0,0 +1,2230 @@ + + + + + RDaaS — Rubber Duck Debugging as a Service + + + + + + + + +
+
+ +
+
+ +
+
+ // RUBBER DUCK DEBUGGING AS A SERVICE +
+

+ Stuck on a bug?
Talk it out with your duck. +

+

+ The world's first on-demand rubber duck debugging service. Explain your code line by line. Watch the + solution appear. No judgment, just quacks. +

+
+
+ +
+
+
+ $ + rdaas init +
+
+ > + Initializing debugging session... +
+
+ > + Duck is listening... +
+
+ > + Explain your problem. +
+
+
+ +
+ +
+
+
+ +
+
+
+
+ // HOW IT WORKS +
+

+ Three steps to enlightenment +

+
+
+
+
+ 01 +
+ +

+ Describe your bug +

+

+ Paste your code, explain the error, describe what you expected. Our duck is a patient listener. +

+
+
+
+ 02 +
+ +

+ Explain line by line +

+

+ Walk through your logic step by step. The act of explaining often reveals the solution. Your duck + nods along. +

+
+
+
+ 03 +
+ +

+ Find the solution +

+

+ That moment of clarity hits. The bug was a missing semicolon, a wrong variable name, or a logical + oversight. You got this. +

+
+
+
+
+
+
+
+
+ // FEATURES +
+

+ Everything you need to debug +

+
+
+
+
+ +
+
+ +

+ Syntax Highlighting +

+

+ Your code is beautifully highlighted as you paste it. 40+ languages supported. Your duck + appreciates clean formatting. +

+
+
+
+
+ +
+
+ +

+ Session History +

+

+ Every debugging session is saved. Revisit past bugs, see your thought process, build a personal + knowledge base. +

+
+
+
+
+ +
+
+ +

+ Multi-Duck Support +

+

+ Switch between different duck personas. The strict professor. The calm zen master. The chaotic + energy duck. +

+
+
+
+
+ +
+
+ +

+ API Access +

+

+ Integrate debugging into your workflow. RESTful API with webhooks. Debug programmatically when + words fail. +

+
+
+
+
+
+
+
+
+
+ // ROADMAP +
+

+ What's coming next +

+

+ The MVP is live. Here's what we're building next to make your debugging experience even more powerful. +

+
+
+
+ IN PROGRESS +

+ MCP Server +

+

+ Model Context Protocol server for IDE integration. Connect your editor directly to your duck. +

+
    +
  • + VS Code extension +
  • +
  • + JetBrains plugin +
  • +
  • + Neovim integration +
  • +
+
+
+ PLANNED +

+ Duck Skins +

+

+ Customize your debugging companion. From cyberpunk neon to retro CRT aesthetics. +

+
    +
  • + 20+ unique skins +
  • +
  • + Community marketplace +
  • +
  • + Seasonal collections +
  • +
+
+
+ COMING SOON +

+ Battlepass +

+

+ Gamify your debugging journey. Earn XP for every bug squashed. Unlock exclusive rewards. +

+
    +
  • + Weekly challenges +
  • +
  • + Exclusive duck skins +
  • +
  • + Leaderboard rankings +
  • +
+
+
+ COMING SOON +

+ Lootboxes +

+

+ Mystery debugging power-ups. Random boosts, rare skins, and surprise features. +

+
    +
  • + Common to Legendary tiers +
  • +
  • + Guaranteed no duplicates +
  • +
  • + Trade with fellow debuggers +
  • +
+
+
+
+
+
+
+

+ $ rdaas status +

+
+
+ > Service status: ONLINE +
+
+ > Active debuggers: 12 847 +
+
+ > Bugs solved today: 3 291 +
+
+ +
+
+
+ + +
+
+ + + + +