Initial commit
This commit is contained in:
@@ -0,0 +1,245 @@
|
||||
@import 'tailwindcss';
|
||||
|
||||
@source '../**/*.blade.php';
|
||||
@source '../../app/**/*.php';
|
||||
@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';
|
||||
|
||||
/*
|
||||
| SoftSPM 2 - system "SoftSPM Industrial" (tokeny z uj_dashboard/DESIGN.md).
|
||||
| Corporate Modern + Glassmorphism, karty "Bento", przyciski-pigułki.
|
||||
| Tailwind v4: konfiguracja w CSS przez @theme.
|
||||
*/
|
||||
@theme {
|
||||
/* Fonty (rodziny) */
|
||||
--font-sans: 'Inter', system-ui, sans-serif;
|
||||
--font-headline-lg: 'Inter', system-ui, sans-serif;
|
||||
--font-headline-md: 'Inter', system-ui, sans-serif;
|
||||
--font-title-sm: 'Inter', system-ui, sans-serif;
|
||||
--font-body-md: 'Inter', system-ui, sans-serif;
|
||||
--font-body-sm: 'Inter', system-ui, sans-serif;
|
||||
--font-data-label: 'JetBrains Mono', monospace;
|
||||
|
||||
/* Typografia (rozmiary) */
|
||||
--text-headline-lg: 24px;
|
||||
--text-headline-lg--line-height: 32px;
|
||||
--text-headline-lg--font-weight: 700;
|
||||
--text-headline-md: 20px;
|
||||
--text-headline-md--line-height: 28px;
|
||||
--text-headline-md--font-weight: 600;
|
||||
--text-title-sm: 16px;
|
||||
--text-title-sm--line-height: 24px;
|
||||
--text-title-sm--font-weight: 600;
|
||||
--text-body-md: 14px;
|
||||
--text-body-md--line-height: 20px;
|
||||
--text-body-sm: 12px;
|
||||
--text-body-sm--line-height: 18px;
|
||||
--text-data-label: 12px;
|
||||
--text-data-label--line-height: 16px;
|
||||
--text-data-label--font-weight: 500;
|
||||
--text-data-label--letter-spacing: 0.02em;
|
||||
|
||||
/* Odstępy nazwane */
|
||||
--spacing-gutter: 1rem;
|
||||
--spacing-stack-gap: 0.75rem;
|
||||
--spacing-container-padding: 1rem;
|
||||
--spacing-card-inner-padding: 1rem;
|
||||
--spacing-touch-target-min: 44px;
|
||||
|
||||
/* Cień karty "Bento" */
|
||||
--shadow-card: 0 4px 12px rgb(0 0 0 / 0.08);
|
||||
|
||||
/* Kolory - Surface / neutralne */
|
||||
--color-surface: #f7fafb;
|
||||
--color-surface-bright: #f7fafb;
|
||||
--color-surface-dim: #d7dadc;
|
||||
--color-surface-container-lowest: #ffffff;
|
||||
--color-surface-container-low: #f1f4f5;
|
||||
--color-surface-container: #ebeeef;
|
||||
--color-surface-container-high: #e5e9ea;
|
||||
--color-surface-container-highest: #e0e3e4;
|
||||
--color-surface-variant: #e0e3e4;
|
||||
--color-surface-tint: #b72221;
|
||||
--color-on-surface: #181c1d;
|
||||
--color-on-surface-variant: #5b403d;
|
||||
--color-inverse-surface: #2d3132;
|
||||
--color-inverse-on-surface: #eef1f2;
|
||||
--color-outline: #8f706c;
|
||||
--color-outline-variant: #e3beba;
|
||||
--color-background: #f7fafb;
|
||||
--color-on-background: #181c1d;
|
||||
|
||||
/* Primary - ciemna czerwień przemysłowa */
|
||||
--color-primary: #7f0009;
|
||||
--color-on-primary: #ffffff;
|
||||
--color-primary-container: #a61317;
|
||||
--color-on-primary-container: #ffb4ac;
|
||||
--color-inverse-primary: #ffb4ab;
|
||||
--color-primary-fixed: #ffdad6;
|
||||
--color-primary-fixed-dim: #ffb4ab;
|
||||
--color-on-primary-fixed: #410002;
|
||||
--color-on-primary-fixed-variant: #93000d;
|
||||
|
||||
/* Secondary - teal */
|
||||
--color-secondary: #006876;
|
||||
--color-on-secondary: #ffffff;
|
||||
--color-secondary-container: #9fecfc;
|
||||
--color-on-secondary-container: #0d6d7b;
|
||||
--color-secondary-fixed: #a2efff;
|
||||
--color-secondary-fixed-dim: #85d2e2;
|
||||
--color-on-secondary-fixed: #001f25;
|
||||
--color-on-secondary-fixed-variant: #004e59;
|
||||
|
||||
/* Tertiary */
|
||||
--color-tertiary: #2f3e45;
|
||||
--color-on-tertiary: #ffffff;
|
||||
--color-tertiary-container: #46555d;
|
||||
--color-on-tertiary-container: #b9c9d3;
|
||||
--color-tertiary-fixed: #d5e5ef;
|
||||
--color-tertiary-fixed-dim: #b9c9d2;
|
||||
--color-on-tertiary-fixed: #0e1d24;
|
||||
--color-on-tertiary-fixed-variant: #3a4951;
|
||||
|
||||
/* Error / statusy */
|
||||
--color-error: #ba1a1a;
|
||||
--color-on-error: #ffffff;
|
||||
--color-error-container: #ffdad6;
|
||||
--color-on-error-container: #93000a;
|
||||
--color-success-active: #006876;
|
||||
--color-error-alert: #ba1a1a;
|
||||
}
|
||||
|
||||
/* Wariant 'dark' sterowany klasą na <html> (strategia class, nie media). */
|
||||
@custom-variant dark (&:where(.dark, .dark *));
|
||||
|
||||
/* Kolory neutralne wykresów SVG (adaptują się do motywu). */
|
||||
:root {
|
||||
--chart-grid: #eceff0;
|
||||
--chart-axis: #9aa6a8;
|
||||
--chart-tick: #888888;
|
||||
--chart-label: #555555;
|
||||
--chart-raw: #1565c0;
|
||||
}
|
||||
|
||||
/*
|
||||
| ===== MOTYW CIEMNY =====
|
||||
| Nadpisujemy tylko WARTOŚCI tokenów - wszystkie utility (bg-surface,
|
||||
| text-on-surface, border-outline-variant...) używają var(--color-*), więc
|
||||
| cały interfejs przełącza się automatycznie. Paleta wg Material 3 (dark)
|
||||
| spójna z jasną (czerwień przemysłowa + teal). Tokeny *-fixed są wspólne
|
||||
| dla obu motywów - nie nadpisujemy ich.
|
||||
*/
|
||||
html.dark {
|
||||
/* Surface / neutralne */
|
||||
--color-surface: #0f1314;
|
||||
--color-surface-bright: #353a3b;
|
||||
--color-surface-dim: #0f1314;
|
||||
--color-surface-container-lowest: #090d0e;
|
||||
--color-surface-container-low: #181c1d;
|
||||
--color-surface-container: #1c2021;
|
||||
--color-surface-container-high: #262a2b;
|
||||
--color-surface-container-highest: #313536;
|
||||
--color-surface-variant: #414b4c;
|
||||
--color-surface-tint: #ffb4ab;
|
||||
--color-on-surface: #e0e3e4;
|
||||
--color-on-surface-variant: #c4c7c8;
|
||||
--color-inverse-surface: #e0e3e4;
|
||||
--color-inverse-on-surface: #2d3132;
|
||||
--color-outline: #899293;
|
||||
--color-outline-variant: #3f4849;
|
||||
--color-background: #0f1314;
|
||||
--color-on-background: #e0e3e4;
|
||||
|
||||
/* Primary - jaśniejsza czerwień na ciemnym tle */
|
||||
--color-primary: #ffb4ab;
|
||||
--color-on-primary: #690005;
|
||||
--color-primary-container: #93000d;
|
||||
--color-on-primary-container: #ffdad6;
|
||||
--color-inverse-primary: #a61317;
|
||||
|
||||
/* Secondary - jaśniejszy teal */
|
||||
--color-secondary: #85d2e2;
|
||||
--color-on-secondary: #00363f;
|
||||
--color-secondary-container: #004e59;
|
||||
--color-on-secondary-container: #a2efff;
|
||||
|
||||
/* Tertiary */
|
||||
--color-tertiary: #b9c9d3;
|
||||
--color-on-tertiary: #243139;
|
||||
--color-tertiary-container: #3a4951;
|
||||
--color-on-tertiary-container: #d5e5ef;
|
||||
|
||||
/* Error / statusy */
|
||||
--color-error: #ffb4ab;
|
||||
--color-on-error: #690005;
|
||||
--color-error-container: #93000a;
|
||||
--color-on-error-container: #ffdad6;
|
||||
--color-success-active: #85d2e2;
|
||||
--color-error-alert: #ffb4ab;
|
||||
|
||||
/* Wykresy */
|
||||
--chart-grid: #2a2f30;
|
||||
--chart-axis: #566061;
|
||||
--chart-tick: #8a9293;
|
||||
--chart-label: #9aa3a4;
|
||||
--chart-raw: #7fb3ff;
|
||||
}
|
||||
|
||||
/* ===== Fonty self-hosted (air-gap: pliki w public/fonts/) ===== */
|
||||
@font-face {
|
||||
font-family: 'Inter';
|
||||
font-style: normal;
|
||||
font-weight: 100 900;
|
||||
font-display: swap;
|
||||
src: url('/fonts/inter/Inter-Variable.woff2') format('woff2');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'JetBrains Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url('/fonts/jetbrains-mono/JetBrainsMono-Variable.woff2') format('woff2');
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Material Symbols Outlined';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
font-display: block;
|
||||
src: url('/fonts/material-symbols/MaterialSymbolsOutlined.woff2') format('woff2');
|
||||
}
|
||||
|
||||
/* ===== Komponenty ===== */
|
||||
.material-symbols-outlined {
|
||||
font-family: 'Material Symbols Outlined';
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
line-height: 1;
|
||||
letter-spacing: normal;
|
||||
text-transform: none;
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
word-wrap: normal;
|
||||
direction: ltr;
|
||||
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
||||
}
|
||||
|
||||
/* Glassmorfizm - szklane panele/paski (mapa, wyszukiwarka) */
|
||||
.glass-panel {
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
backdrop-filter: blur(12px);
|
||||
-webkit-backdrop-filter: blur(12px);
|
||||
border: 1px solid rgba(227, 190, 186, 0.3);
|
||||
}
|
||||
html.dark .glass-panel {
|
||||
background: rgba(24, 28, 29, 0.7);
|
||||
border-color: rgba(137, 146, 147, 0.25);
|
||||
}
|
||||
|
||||
/* Pill-chipy statusów (OK / Warning / Alert) */
|
||||
.status-chip {
|
||||
@apply inline-flex items-center gap-1 px-2 py-0.5 rounded-full font-data-label text-data-label;
|
||||
}
|
||||
.status-chip-ok { @apply bg-green-100 text-green-800; }
|
||||
.status-chip-warn { @apply bg-amber-100 text-amber-800; }
|
||||
.status-chip-alert { @apply bg-error-container text-on-error-container; }
|
||||
html.dark .status-chip-ok { @apply bg-green-900/40 text-green-300; }
|
||||
html.dark .status-chip-warn { @apply bg-amber-900/40 text-amber-300; }
|
||||
Reference in New Issue
Block a user