diff --git a/assets/style.css b/assets/style.css
index 9bdb99c..0407264 100644
--- a/assets/style.css
+++ b/assets/style.css
@@ -1,6 +1,13 @@
-/* Base styles */
+/* Reset */
+*, *::before, *::after {
+ box-sizing: border-box;
+ margin: 0;
+ padding: 0;
+}
+
+/* Variables */
:root {
- /* Light mode colors */
+ /* Colors */
--background: 200 30% 97%;
--foreground: 200 50% 20%;
--card: 0 0% 100%;
@@ -10,9 +17,28 @@
--muted: 200 30% 96%;
--muted-foreground: 200 30% 40%;
--border: 200 30% 90%;
- --radius: 0.75rem;
+
+ /* Spacing */
+ --space-1: 0.25rem;
+ --space-2: 0.5rem;
+ --space-3: 0.75rem;
+ --space-4: 1rem;
+ --space-5: 1.25rem;
+ --space-6: 1.5rem;
+ --space-8: 2rem;
+ --space-10: 2.5rem;
+ --space-12: 3rem;
+
+ /* Radius */
+ --radius-sm: 0.375rem;
+ --radius-md: 0.5rem;
+ --radius-lg: 0.75rem;
+
+ /* Container */
+ --container-width: 64rem;
}
+/* Dark mode */
@media (prefers-color-scheme: dark) {
:root {
--background: 200 30% 8%;
@@ -27,18 +53,17 @@
}
}
-/* Reset */
-* {
- margin: 0;
- padding: 0;
- box-sizing: border-box;
-}
-
-/* Global styles */
-body {
+/* Base styles */
+html {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, sans-serif;
line-height: 1.5;
+ -webkit-text-size-adjust: 100%;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+body {
color: hsl(var(--foreground));
background: hsl(var(--background));
min-height: 100vh;
@@ -46,71 +71,193 @@ body {
isolation: isolate;
}
-/* Background Elements */
+/* Background */
body::before {
content: '';
- position: absolute;
+ position: fixed;
inset: 0;
- z-index: -1;
- background: linear-gradient(to bottom,
- hsl(var(--background)),
- hsl(var(--primary) / 0.1),
+ z-index: -2;
+ background: linear-gradient(
+ to bottom,
+ hsl(var(--background)),
+ hsl(var(--primary) / 0.1),
hsl(var(--background))
);
}
body::after {
content: '';
- position: absolute;
+ position: fixed;
inset: 0;
z-index: -1;
opacity: 0.35;
background-image: radial-gradient(
- circle at 1px 1px,
- hsl(var(--primary) / 0.5) 1px,
+ circle at 1px 1px,
+ hsl(var(--primary) / 0.5) 1px,
transparent 0
);
background-size: 32px 32px;
mask-image: linear-gradient(
- to bottom,
- transparent,
- black 10%,
- black 90%,
+ to bottom,
+ transparent,
+ black 10%,
+ black 90%,
transparent
);
}
-/* Layout */
+/* Grid System */
.container {
- max-width: 64rem;
- margin: 0 auto;
- padding: 2rem 1.5rem;
-}
-
-.content {
- display: flex;
- flex-direction: column;
- gap: 2rem;
-}
-
-.main {
- display: flex;
- flex-direction: column;
- gap: 2rem;
+ width: min(var(--container-width), 100% - var(--space-8));
+ margin-inline: auto;
+ padding-block: var(--space-8);
}
.grid {
display: grid;
- grid-template-columns: repeat(2, 1fr);
- gap: 2rem;
+ gap: var(--space-6);
}
+.grid-cols-1 { grid-template-columns: repeat(1, 1fr); }
+.grid-cols-2 { grid-template-columns: repeat(2, 1fr); }
+.grid-cols-3 { grid-template-columns: repeat(3, 1fr); }
+.grid-cols-4 { grid-template-columns: repeat(4, 1fr); }
+
@media (max-width: 768px) {
- .grid {
+ .grid-cols-2,
+ .grid-cols-3,
+ .grid-cols-4 {
grid-template-columns: 1fr;
}
}
+/* Card Components */
+.card {
+ position: relative;
+ background: hsl(var(--card) / 0.5);
+ border: 1px solid hsl(var(--border));
+ border-radius: var(--radius-lg);
+ overflow: hidden;
+ backdrop-filter: blur(8px);
+}
+
+.card-header {
+ padding: var(--space-6);
+ border-bottom: 1px solid hsl(var(--border));
+}
+
+.card-title {
+ font-size: 1.25rem;
+ font-weight: 600;
+ line-height: 1.2;
+ letter-spacing: -0.025em;
+}
+
+.card-description {
+ margin-top: var(--space-2);
+ font-size: 0.875rem;
+ color: hsl(var(--muted-foreground));
+}
+
+.card-content {
+ padding: var(--space-6);
+}
+
+/* Typography */
+h1 {
+ font-size: 2rem;
+ font-weight: 600;
+ line-height: 1.2;
+ letter-spacing: -0.025em;
+}
+
+h2 {
+ font-size: 1.5rem;
+ font-weight: 600;
+ line-height: 1.2;
+ letter-spacing: -0.025em;
+}
+
+h3 {
+ font-size: 1.25rem;
+ font-weight: 600;
+ line-height: 1.2;
+ letter-spacing: -0.025em;
+}
+
+/* Icons */
+.icon {
+ width: 1.25rem;
+ height: 1.25rem;
+ stroke: currentColor;
+ stroke-width: 2;
+ stroke-linecap: round;
+ stroke-linejoin: round;
+ fill: none;
+}
+
+/* Badges */
+.badge {
+ display: inline-flex;
+ align-items: center;
+ height: 1.5rem;
+ padding: 0 var(--space-3);
+ font-size: 0.75rem;
+ font-weight: 500;
+ line-height: 1;
+ border-radius: 9999px;
+ background: hsl(var(--primary));
+ color: hsl(var(--primary-foreground));
+ white-space: nowrap;
+}
+
+.badge-secondary {
+ background: hsl(var(--muted));
+ color: hsl(var(--muted-foreground));
+}
+
+/* Loading State */
+.loading {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ min-height: 20rem;
+ font-size: 1rem;
+ color: hsl(var(--muted-foreground));
+}
+
+/* Utilities */
+.hidden {
+ display: none;
+}
+
+.flex {
+ display: flex;
+}
+
+.items-center {
+ align-items: center;
+}
+
+.justify-between {
+ justify-content: space-between;
+}
+
+.gap-2 { gap: var(--space-2); }
+.gap-3 { gap: var(--space-3); }
+.gap-4 { gap: var(--space-4); }
+.gap-6 { gap: var(--space-6); }
+
+.mb-2 { margin-bottom: var(--space-2); }
+.mb-4 { margin-bottom: var(--space-4); }
+.mb-6 { margin-bottom: var(--space-6); }
+.mb-8 { margin-bottom: var(--space-8); }
+
+.mt-2 { margin-top: var(--space-2); }
+.mt-4 { margin-top: var(--space-4); }
+.mt-6 { margin-top: var(--space-6); }
+.mt-8 { margin-top: var(--space-8); }
+
/* Header */
.header {
text-align: center;
@@ -124,14 +271,14 @@ body::after {
padding: 1.5rem 2rem;
background: hsl(var(--card) / 0.5);
border: 1px solid hsl(var(--border));
- border-radius: var(--radius);
+ border-radius: var(--radius-lg);
backdrop-filter: blur(8px);
}
.header-icon {
width: 4rem;
height: 4rem;
- border-radius: var(--radius);
+ border-radius: var(--radius-lg);
object-fit: contain;
background: hsl(var(--muted));
padding: 0.5rem;
@@ -158,7 +305,7 @@ body::after {
.banner {
width: 100%;
height: 16rem;
- border-radius: var(--radius);
+ border-radius: var(--radius-lg);
object-fit: cover;
border: 1px solid hsl(var(--border));
background: hsl(var(--muted));
@@ -178,7 +325,7 @@ body::after {
padding: 1.5rem;
background: hsl(var(--card) / 0.5);
border: 1px solid hsl(var(--border));
- border-radius: var(--radius);
+ border-radius: var(--radius-lg);
backdrop-filter: blur(8px);
}
@@ -205,25 +352,6 @@ body::after {
line-height: 1;
}
-/* Cards */
-.card {
- background: hsl(var(--card) / 0.5);
- border: 1px solid hsl(var(--border));
- border-radius: var(--radius);
- backdrop-filter: blur(8px);
-}
-
-.card-title {
- padding: 1.5rem;
- font-size: 1.25rem;
- font-weight: 600;
- border-bottom: 1px solid hsl(var(--border));
-}
-
-.card-content {
- padding: 1.5rem;
-}
-
/* Info Lists */
.info-list {
display: flex;
@@ -300,7 +428,6 @@ body::after {
gap: 0.5rem;
}
-.badge,
.tag {
display: inline-flex;
align-items: center;
@@ -314,29 +441,11 @@ body::after {
white-space: nowrap;
}
-.badge {
- background: hsl(var(--primary));
- color: hsl(var(--primary-foreground));
-}
-
/* Code */
code {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
font-size: 0.875rem;
background: hsl(var(--muted));
padding: 0.25rem 0.5rem;
- border-radius: calc(var(--radius) - 0.25rem);
-}
-
-/* Loading State */
-.loading {
- text-align: center;
- padding: 3rem;
- color: hsl(var(--muted-foreground));
- font-size: 1.125rem;
-}
-
-/* Utilities */
-.hidden {
- display: none;
+ border-radius: calc(var(--radius-lg) - 0.25rem);
}
\ No newline at end of file
diff --git a/index.html b/index.html
index d7d26e8..6a002f9 100644
--- a/index.html
+++ b/index.html
@@ -10,158 +10,181 @@
Loading repository data...
-
-