This commit is contained in:
2026-02-16 19:34:35 +00:00
commit 9ab0940ca4
784 changed files with 41710 additions and 0 deletions
+526
View File
@@ -0,0 +1,526 @@
@import "tailwindcss";
@plugin 'tailwindcss-animate';
@custom-variant dark (&:is(.dark *));
@utility container {
margin-inline: auto;
padding-inline: 2rem;
@media (width >= --theme(--breakpoint-sm)) {
max-width: none;
}
@media (width >= 1400px) {
max-width: 1400px;
}
}
@theme {
/* Duck Landing Page Colors */
--color-duck-yellow: #F4C430;
--color-duck-orange: #EA580C;
--color-duck-teal: #0891B2;
--color-duck-forest: #166534;
--color-duck-dark: #14532D;
--color-duck-beige: #E7D4B5;
--color-border: hsl(var(--border));
--color-input: hsl(var(--input));
--color-ring: hsl(var(--ring));
--color-background: hsl(var(--background));
--color-foreground: hsl(var(--foreground));
--color-brand: hsl(var(--brand));
--color-brand-foreground: hsl(var(--brand-foreground));
--color-brand-muted: hsl(var(--brand-muted));
--color-primary: hsl(var(--primary));
--color-primary-foreground: hsl(var(--primary-foreground));
--color-secondary: hsl(var(--secondary));
--color-secondary-foreground: hsl(var(--secondary-foreground));
--color-destructive: hsl(var(--destructive));
--color-destructive-foreground: hsl(var(--destructive-foreground));
--color-success: hsl(var(--success));
--color-success-foreground: hsl(var(--success-foreground));
--color-warning: hsl(var(--warning));
--color-warning-foreground: hsl(var(--warning-foreground));
--color-muted: hsl(var(--muted));
--color-muted-foreground: hsl(var(--muted-foreground));
--color-accent: hsl(var(--accent));
--color-accent-foreground: hsl(var(--accent-foreground));
--color-popover: hsl(var(--popover));
--color-popover-foreground: hsl(var(--popover-foreground));
--color-card: hsl(var(--card));
--color-card-foreground: hsl(var(--card-foreground));
--color-sidebar: hsl(var(--sidebar-background));
--color-sidebar-foreground: hsl(var(--sidebar-foreground));
--color-sidebar-primary: hsl(var(--sidebar-primary));
--color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground));
--color-sidebar-accent: hsl(var(--sidebar-accent));
--color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground));
--color-sidebar-border: hsl(var(--sidebar-border));
--color-sidebar-ring: hsl(var(--sidebar-ring));
--color-cta: hsl(var(--cta));
--color-cta-foreground: hsl(var(--cta-foreground));
--color-ctahover: hsl(var(--ctahover));
--color-naturegreen: hsl(var(--naturegreen));
--color-naturegreen-foreground: hsl(var(--naturegreen-foreground));
--radius-lg: var(--radius);
--radius-md: calc(var(--radius) - 2px);
--radius-sm: calc(var(--radius) - 4px);
--animate-accordion-down: accordion-down 0.2s ease-out forwards;
--animate-accordion-up: accordion-up 0.2s ease-out forwards;
@keyframes accordion-down {
from {
height: 0;
}
to {
height: var(--radix-accordion-content-height);
}
}
@keyframes accordion-up {
from {
height: var(--radix-accordion-content-height);
}
to {
height: 0;
}
}
}
/*
The default border color has changed to `currentcolor` in Tailwind CSS v4,
so we've added these compatibility styles to make sure everything still
looks the same as it did with Tailwind CSS v3.
If we ever want to remove these styles, we need to add an explicit border
color utility to any element that depends on these defaults.
*/
@layer base {
*,
::after,
::before,
::backdrop,
::file-selector-button {
border-color: var(--color-gray-200, currentcolor);
}
}
/* Definition of the design system. All colors, gradients, fonts, etc should be defined here.
All colors MUST be HSL.
*/
@layer base {
:root {
--cta: 211 74.77% 45.58%;
--cta-foreground: 0 0% 100%;
--naturegreen: 145 79% 38%;
--naturegreen-foreground: 0 0% 100%;
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--accent: 211 74.77% 45.58%;
--accent-foreground: 0 0% 0%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--radius: 0.5rem;
/* Chart gradients */
--chart-primary: 211 82% 64%;
--chart-secondary: 211 82% 84%;
/* Status colors */
--status-success: 142 76% 36%;
--status-warning: 43 96% 56%;
--status-in-progress: 211 82% 64%;
--sidebar-background: 0 0% 98%;
--sidebar-foreground: 240 5.3% 26.1%;
--sidebar-primary: 240 5.9% 10%;
--sidebar-primary-foreground: 0 0% 98%;
--sidebar-accent: 240 4.8% 95.9%;
--sidebar-accent-foreground: 240 5.9% 10%;
--sidebar-border: 220 13% 91%;
--sidebar-ring: 217.2 91.2% 59.8%;
/* Hover Effect */
--ctahover: 211 91.53% 34.82%;
}
.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--accent: 211 82% 64%;
--accent-foreground: 0 0% 0%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
/* Chart gradients */
--chart-primary: 211 82% 64%;
--chart-secondary: 211 82% 84%;
/* Status colors */
--status-success: 142 76% 36%;
--status-warning: 43 96% 56%;
--status-in-progress: 211 82% 64%;
--sidebar-background: 240 5.9% 10%;
--sidebar-foreground: 240 4.8% 95.9%;
--sidebar-primary: 224.3 76.3% 48%;
--sidebar-primary-foreground: 0 0% 100%;
--sidebar-accent: 240 3.7% 15.9%;
--sidebar-accent-foreground: 240 4.8% 95.9%;
--sidebar-border: 240 3.7% 15.9%;
--sidebar-ring: 217.2 91.2% 59.8%;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
}
[data-sonner-toaster] {
z-index: 700 !important;
}
/* File Browser — Context menu hover behavior */
.file-grid:has([data-state="open"]) [data-file-item]:not([data-state="open"]) {
pointer-events: none;
}
.file-grid:has([data-state="open"]) [data-file-item]:not([data-state="open"]) .file-item-ellipsis {
opacity: 0 !important;
}
.file-grid [data-file-item][data-state="open"] .file-item-ellipsis {
opacity: 1 !important;
}
/* File Viewer — Markdown Prose */
.file-viewer-md {
color: #14532d;
font-size: 0.95rem;
line-height: 1.75;
}
.file-viewer-md h1 {
font-size: 2em;
font-weight: 700;
margin: 1.5em 0 0.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid rgba(20, 83, 45, 0.12);
letter-spacing: -0.02em;
}
.file-viewer-md h2 {
font-size: 1.5em;
font-weight: 600;
margin: 1.4em 0 0.4em;
padding-bottom: 0.25em;
border-bottom: 1px solid rgba(20, 83, 45, 0.08);
}
.file-viewer-md h3 {
font-size: 1.25em;
font-weight: 600;
margin: 1.2em 0 0.4em;
}
.file-viewer-md h4, .file-viewer-md h5, .file-viewer-md h6 {
font-size: 1.05em;
font-weight: 600;
margin: 1em 0 0.3em;
}
.file-viewer-md p {
margin: 0.75em 0;
}
.file-viewer-md a {
color: #0891b2;
text-decoration: underline;
text-underline-offset: 2px;
}
.file-viewer-md a:hover {
color: #0e7490;
}
.file-viewer-md strong {
font-weight: 600;
color: #14532d;
}
.file-viewer-md blockquote {
margin: 1em 0;
padding: 0.5em 1em;
border-left: 3px solid #0891b2;
background: rgba(8, 145, 178, 0.05);
border-radius: 0 0.5rem 0.5rem 0;
color: #166534;
}
.file-viewer-md ul, .file-viewer-md ol {
margin: 0.75em 0;
padding-left: 1.75em;
}
.file-viewer-md li {
margin: 0.25em 0;
}
.file-viewer-md li::marker {
color: #0891b2;
}
.file-viewer-md hr {
border: none;
height: 1px;
background: rgba(20, 83, 45, 0.12);
margin: 2em 0;
}
.file-viewer-md table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: 0.9em;
}
.file-viewer-md th {
background: rgba(8, 145, 178, 0.08);
font-weight: 600;
text-align: left;
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.12);
}
.file-viewer-md td {
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.08);
}
.file-viewer-md tr:nth-child(even) {
background: rgba(20, 83, 45, 0.02);
}
.file-viewer-md img {
max-width: 100%;
border-radius: 0.5rem;
margin: 1em 0;
}
.file-viewer-md input[type="checkbox"] {
accent-color: #0891b2;
margin-right: 0.5em;
}
/* Skills — Markdown Prose */
.skill-md {
color: #14532d;
font-size: 0.95rem;
line-height: 1.75;
}
.skill-md h1 {
font-size: 2em;
font-weight: 700;
margin: 1.5em 0 0.5em;
padding-bottom: 0.3em;
border-bottom: 2px solid rgba(20, 83, 45, 0.12);
letter-spacing: -0.02em;
}
.skill-md h2 {
font-size: 1.5em;
font-weight: 600;
margin: 1.4em 0 0.4em;
padding-bottom: 0.25em;
border-bottom: 1px solid rgba(20, 83, 45, 0.08);
}
.skill-md h3 {
font-size: 1.25em;
font-weight: 600;
margin: 1.2em 0 0.4em;
}
.skill-md h4, .skill-md h5, .skill-md h6 {
font-size: 1.05em;
font-weight: 600;
margin: 1em 0 0.3em;
}
.skill-md p {
margin: 0.75em 0;
}
.skill-md a {
color: #0891b2;
text-decoration: underline;
text-underline-offset: 2px;
}
.skill-md a:hover {
color: #0e7490;
}
.skill-md strong {
font-weight: 600;
color: #14532d;
}
.skill-md blockquote {
margin: 1em 0;
padding: 0.5em 1em;
border-left: 3px solid #0891b2;
background: rgba(8, 145, 178, 0.05);
border-radius: 0 0.5rem 0.5rem 0;
color: #166534;
}
.skill-md ul, .skill-md ol {
margin: 0.75em 0;
padding-left: 1.75em;
}
.skill-md li {
margin: 0.25em 0;
}
.skill-md li::marker {
color: #0891b2;
}
.skill-md code {
padding: 0.15em 0.4em;
border-radius: 0.25rem;
background: rgba(8, 145, 178, 0.1);
color: #0891b2;
font-size: 0.85em;
font-family: ui-monospace, monospace;
}
.skill-md pre {
margin: 1em 0;
padding: 1em;
border-radius: 0.5rem;
background: #0d1117;
overflow-x: auto;
font-size: 0.875rem;
line-height: 1.6;
}
.skill-md pre code {
padding: 0;
border-radius: 0;
background: none;
color: #e6edf3;
font-size: inherit;
}
.skill-md hr {
border: none;
height: 1px;
background: rgba(20, 83, 45, 0.12);
margin: 2em 0;
}
.skill-md table {
width: 100%;
border-collapse: collapse;
margin: 1em 0;
font-size: 0.9em;
}
.skill-md th {
background: rgba(8, 145, 178, 0.08);
font-weight: 600;
text-align: left;
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.12);
}
.skill-md td {
padding: 0.5em 0.75em;
border: 1px solid rgba(20, 83, 45, 0.08);
}
.skill-md tr:nth-child(even) {
background: rgba(20, 83, 45, 0.02);
}
.skill-md img {
max-width: 100%;
border-radius: 0.5rem;
margin: 1em 0;
}
.skill-md input[type="checkbox"] {
accent-color: #0891b2;
margin-right: 0.5em;
}
+1
View File
@@ -0,0 +1 @@
@import "./globals.css";