mihirmithani
.
ffd0276
Raw History Blame
12.8 kB
@import "tailwindcss";
@import url('https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600;700&family=Fira+Sans:wght@300;400;500;600;700&display=swap');
:root {
/* Claymorphism Color System - Light Mode */
--color-primary: #4F46E5;
--color-on-primary: #FFFFFF;
--color-secondary: #818CF8;
--color-accent: #EA580C;
--color-background: #EEF2FF;
--color-foreground: #1E1B4B;
--color-muted: #EBEEF8;
--color-border: #C7D2FE;
--color-destructive: #DC2626;
--color-ring: #4F46E5;
/* Semantic colors */
--color-success: #16A34A;
--color-warning: #F59E0B;
--color-info: #3B82F6;
/* Claymorphism shadows */
--shadow-clay-sm: 2px 2px 4px #C7D2FE, -2px -2px 4px #FFFFFF;
--shadow-clay-md: 4px 4px 8px #C7D2FE, -4px -4px 8px #FFFFFF;
--shadow-clay-lg: 8px 8px 16px #C7D2FE, -8px -8px 16px #FFFFFF;
--shadow-clay-inset: inset 2px 2px 4px #C7D2FE, inset -2px -2px 4px #FFFFFF;
--shadow-clay-press: inset 4px 4px 8px #C7D2FE, inset -4px -4px 8px #FFFFFF;
/* Dark mode Claymorphism shadows */
--shadow-clay-dark-sm: 2px 2px 4px #1E1B4B, -2px -2px 4px #3730A3;
--shadow-clay-dark-md: 4px 4px 8px #1E1B4B, -4px -4px 8px #3730A3;
--shadow-clay-dark-lg: 8px 8px 16px #1E1B4B, -8px -8px 16px #3730A3;
--shadow-clay-dark-inset: inset 2px 2px 4px #1E1B4B, inset -2px -2px 4px #3730A3;
--shadow-clay-dark-press: inset 4px 4px 8px #1E1B4B, inset -4px -4px 8px #3730A3;
/* Typography */
--font-sans: 'Fira Sans', system-ui, sans-serif;
--font-mono: 'Fira Code', monospace;
--font-base: 1rem;
--leading-normal: 1.5;
/* Spacing scale */
--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;
--space-16: 4rem;
}
@media (prefers-color-scheme: dark) {
:root {
/* Claymorphism Color System - Dark Mode */
--color-primary: #818CF8;
--color-on-primary: #1E1B4B;
--color-secondary: #A5B4FC;
--color-accent: #FB923C;
--color-background: #1E1B4B;
--color-foreground: #EEF2FF;
--color-muted: #312E81;
--color-border: #3730A3;
--color-destructive: #EF4444;
--color-ring: #818CF8;
--color-success: #22C55E;
--color-warning: #FBBF24;
--color-info: #60A5FA;
}
}
@theme inline {
--color-background: var(--color-background);
--color-foreground: var(--color-foreground);
--color-primary: var(--color-primary);
--color-on-primary: var(--color-on-primary);
--color-secondary: var(--color-secondary);
--color-accent: var(--color-accent);
--color-muted: var(--color-muted);
--color-border: var(--color-border);
--color-destructive: var(--color-destructive);
--color-ring: var(--color-ring);
--font-sans: var(--font-sans);
--font-mono: var(--font-mono);
}
* {
box-sizing: border-box;
}
html {
font-family: var(--font-sans);
font-size: var(--font-base);
line-height: var(--leading-normal);
}
body {
background: var(--color-background);
color: var(--color-foreground);
font-family: var(--font-sans);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Claymorphism utility classes */
.clay-card {
background: var(--color-background);
border: 2px solid var(--color-border);
border-radius: 16px;
box-shadow: var(--shadow-clay-md);
transition: box-shadow 200ms ease-out, transform 150ms ease-out;
}
@media (prefers-color-scheme: dark) {
.clay-card {
box-shadow: var(--shadow-clay-dark-md);
}
}
.clay-card:hover {
box-shadow: var(--shadow-clay-lg);
transform: translateY(-2px);
}
@media (prefers-color-scheme: dark) {
.clay-card:hover {
box-shadow: var(--shadow-clay-dark-lg);
}
}
.clay-card:active {
box-shadow: var(--shadow-clay-press);
transform: translateY(0);
}
@media (prefers-color-scheme: dark) {
.clay-card:active {
box-shadow: var(--shadow-clay-dark-press);
}
}
.clay-button {
background: var(--color-background);
border: 2px solid var(--color-border);
border-radius: 12px;
box-shadow: var(--shadow-clay-sm);
color: var(--color-foreground);
font-family: var(--font-sans);
font-weight: 500;
transition: all 150ms ease-out;
cursor: pointer;
}
@media (prefers-color-scheme: dark) {
.clay-button {
box-shadow: var(--shadow-clay-dark-sm);
}
}
.clay-button:hover {
box-shadow: var(--shadow-clay-md);
transform: translateY(-1px);
}
@media (prefers-color-scheme: dark) {
.clay-button:hover {
box-shadow: var(--shadow-clay-dark-md);
}
}
.clay-button:active {
box-shadow: var(--shadow-clay-press);
transform: translateY(0);
}
@media (prefers-color-scheme: dark) {
.clay-button:active {
box-shadow: var(--shadow-clay-dark-press);
}
}
.clay-button-primary {
background: var(--color-primary);
border: 2px solid var(--color-primary);
color: var(--color-on-primary);
box-shadow: var(--shadow-clay-sm);
}
@media (prefers-color-scheme: dark) {
.clay-button-primary {
box-shadow: var(--shadow-clay-dark-sm);
}
}
.clay-button-primary:hover {
box-shadow: var(--shadow-clay-md);
filter: brightness(1.1);
}
@media (prefers-color-scheme: dark) {
.clay-button-primary:hover {
box-shadow: var(--shadow-clay-dark-md);
}
}
.clay-button-primary:active {
box-shadow: var(--shadow-clay-press);
}
@media (prefers-color-scheme: dark) {
.clay-button-primary:active {
box-shadow: var(--shadow-clay-dark-press);
}
}
.clay-button-accent {
background: var(--color-accent);
border: 2px solid var(--color-accent);
color: #FFFFFF;
box-shadow: var(--shadow-clay-sm);
}
@media (prefers-color-scheme: dark) {
.clay-button-accent {
box-shadow: var(--shadow-clay-dark-sm);
}
}
.clay-button-accent:hover {
box-shadow: var(--shadow-clay-md);
filter: brightness(1.1);
}
@media (prefers-color-scheme: dark) {
.clay-button-accent:hover {
box-shadow: var(--shadow-clay-dark-md);
}
}
.clay-button-accent:active {
box-shadow: var(--shadow-clay-press);
}
@media (prefers-color-scheme: dark) {
.clay-button-accent:active {
box-shadow: var(--shadow-clay-dark-press);
}
}
.clay-input {
background: var(--color-muted);
border: 2px solid var(--color-border);
border-radius: 10px;
color: var(--color-foreground);
font-family: var(--font-mono);
padding: 0.5rem 0.75rem;
box-shadow: var(--shadow-clay-inset);
transition: all 150ms ease-out;
}
@media (prefers-color-scheme: dark) {
.clay-input {
box-shadow: var(--shadow-clay-dark-inset);
}
}
.clay-input:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: var(--shadow-clay-inset), 0 0 0 3px var(--color-ring);
}
@media (prefers-color-scheme: dark) {
.clay-input:focus {
box-shadow: var(--shadow-clay-dark-inset), 0 0 0 3px var(--color-ring);
}
}
.clay-slider {
-webkit-appearance: none;
appearance: none;
background: var(--color-muted);
border-radius: 9999px;
height: 8px;
outline: none;
}
.clay-slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--color-primary);
cursor: pointer;
border: 3px solid var(--color-background);
box-shadow: var(--shadow-clay-sm);
transition: all 150ms ease-out;
}
@media (prefers-color-scheme: dark) {
.clay-slider::-webkit-slider-thumb {
box-shadow: var(--shadow-clay-dark-sm);
}
}
.clay-slider::-webkit-slider-thumb:hover {
transform: scale(1.15);
box-shadow: var(--shadow-clay-md);
}
@media (prefers-color-scheme: dark) {
.clay-slider::-webkit-slider-thumb:hover {
box-shadow: var(--shadow-clay-dark-md);
}
}
.clay-slider::-moz-range-thumb {
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--color-primary);
cursor: pointer;
border: 3px solid var(--color-background);
box-shadow: var(--shadow-clay-sm);
}
@media (prefers-color-scheme: dark) {
.clay-slider::-moz-range-thumb {
box-shadow: var(--shadow-clay-dark-sm);
}
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--color-border);
border-radius: 4px;
border: 2px solid var(--color-background);
}
@media (prefers-color-scheme: dark) {
::-webkit-scrollbar-thumb {
border: 2px solid var(--color-background);
}
}
::-webkit-scrollbar-thumb:hover {
background: var(--color-primary);
}
/* Focus visible styles */
:focus-visible {
outline: 2px solid var(--color-ring);
outline-offset: 2px;
}
/* Animations */
@keyframes slide-in {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fade-in {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes scale-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
@keyframes pulse-soft {
0%, 100% { opacity: 1; }
50% { opacity: 0.7; }
}
.animate-slide-in {
animation: slide-in 0.3s ease-out;
}
.animate-fade-in {
animation: fade-in 0.2s ease-out;
}
.animate-scale-in {
animation: scale-in 0.2s ease-out;
}
.animate-pulse-soft {
animation: pulse-soft 2s ease-in-out infinite;
}
/* Canvas styles */
canvas {
display: block;
}
/* Selection styles */
::selection {
background: var(--color-primary);
color: var(--color-on-primary);
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
/* Claymorphism number input */
input[type="number"].clay-number {
-webkit-appearance: none;
appearance: none;
}
input[type="number"].clay-number::-webkit-inner-spin-button,
input[type="number"].clay-number::-webkit-outer-spin-button {
-webkit-appearance: none;
appearance: none;
margin: 0;
width: 20px;
height: 20px;
background: var(--color-muted);
border: 2px solid var(--color-border);
border-radius: 8px;
color: var(--color-primary);
font-family: var(--font-mono);
display: flex;
align-items: center;
justify-content: center;
}
@media (prefers-color-scheme: dark) {
input[type="number"].clay-number::-webkit-inner-spin-button,
input[type="number"].clay-number::-webkit-outer-spin-button {
background: var(--color-muted);
border-color: var(--color-border);
}
}
/* Tooltip styles */
.tooltip {
position: relative;
}
.tooltip::before {
content: attr(data-tooltip);
position: absolute;
bottom: 100%;
left: 50%;
transform: translateX(-50%);
padding: 0.5rem 0.75rem;
background: var(--color-foreground);
color: var(--color-background);
font-size: 0.75rem;
font-family: var(--font-sans);
border-radius: 8px;
white-space: nowrap;
opacity: 0;
visibility: hidden;
transition: all 200ms ease-out;
pointer-events: none;
z-index: 50;
margin-bottom: 0.5rem;
box-shadow: var(--shadow-clay-lg);
}
@media (prefers-color-scheme: dark) {
.tooltip::before {
box-shadow: var(--shadow-clay-dark-lg);
}
}
.tooltip:hover::before,
.tooltip:focus-within::before {
opacity: 1;
visibility: visible;
}
/* Badge styles */
.badge {
display: inline-flex;
align-items: center;
padding: 0.25rem 0.5rem;
font-size: 0.7rem;
font-weight: 600;
border-radius: 9999px;
font-family: var(--font-sans);
}
.badge-primary {
background: var(--color-primary);
color: var(--color-on-primary);
}
.badge-secondary {
background: var(--color-secondary);
color: var(--color-on-primary);
}
.badge-accent {
background: var(--color-accent);
color: white;
}
.badge-muted {
background: var(--color-muted);
color: var(--color-foreground);
border: 1px solid var(--color-border);
}
.badge-outline {
background: transparent;
color: var(--color-foreground);
border: 1px solid var(--color-border);
}
/* Card header */
.card-header {
padding: var(--space-4) var(--space-4) var(--space-2);
border-bottom: 1px solid var(--color-border);
}
/* Divider */
.divider {
height: 1px;
background: var(--color-border);
border: none;
}
/* Code block */
.code-block {
background: var(--color-muted);
border: 1px solid var(--color-border);
border-radius: 10px;
padding: var(--space-4);
font-family: var(--font-mono);
font-size: 0.875rem;
overflow-x: auto;
box-shadow: var(--shadow-clay-inset);
}
@media (prefers-color-scheme: dark) {
.code-block {
box-shadow: var(--shadow-clay-dark-inset);
}
}
/* Loading spinner */
.spinner {
width: 32px;
height: 32px;
border: 3px solid var(--color-border);
border-top-color: var(--color-primary);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
to { transform: rotate(360deg); }
}