Files
UniVerse/frontend/src/assets/main.css
T
serega404 5a1ddb82e6
🚀 Create and publish a Docker image / Detect changes in backend and frontend (push) Successful in 11s
🚀 Create and publish a Docker image / Build & publish backend image (push) Successful in 1m24s
🚀 Create and publish a Docker image / Build & publish frontend image (push) Failing after 29s
🚀 Create and publish a Docker image / Update stack on Portainer (push) Successful in 9s
fix: ui fixes
2026-05-14 02:02:02 +03:00

324 lines
7.8 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* UniVerse Aero Green Design System */
:root {
--color-primary: #22C55E;
--color-primary-dark: #16A34A;
--color-primary-light: #86EFAC;
--color-aqua: #06B6D4;
--color-sky: #7DD3FC;
--color-white-glass: rgba(255, 255, 255, 0.75);
--color-surface: rgba(255, 255, 255, 0.85);
--color-border-glass: rgba(255, 255, 255, 0.8);
--color-text: #1E293B;
--color-text-secondary: #64748B;
--color-bg-start: #E0F2FE;
--color-bg-mid: #DCFCE7;
--color-error: #EF4444;
--color-success: #22C55E;
--color-warning: #F59E0B;
--gradient-bg: linear-gradient(135deg, #E0F2FE 0%, #DCFCE7 50%, #E0F2FE 100%);
--gradient-brand: linear-gradient(135deg, #22C55E 0%, #06B6D4 60%, #7DD3FC 100%);
--radius-sm: 8px;
--radius-md: 12px;
--radius-lg: 16px;
--shadow-glass: 0 8px 32px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.9);
--shadow-card: 0 4px 16px rgba(0, 0, 0, 0.06);
--sidebar-width: 240px;
--topbar-height: 60px;
}
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html, body {
height: 100%;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
font-size: 14px;
color: var(--color-text);
-webkit-font-smoothing: antialiased;
}
body {
background: var(--gradient-bg);
background-attachment: fixed;
min-height: 100vh;
}
a {
color: var(--color-primary-dark);
text-decoration: none;
}
button {
font-family: inherit;
cursor: pointer;
border: none;
outline: none;
}
input, textarea, select {
font-family: inherit;
outline: none;
}
/* Scrollbar */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: rgba(0,0,0,0.04); border-radius: 3px; }
::-webkit-scrollbar-thumb { background: rgba(34,197,94,0.3); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(34,197,94,0.5); }
/* Glass panel utility */
.glass-panel {
background: var(--color-white-glass);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid var(--color-border-glass);
border-radius: var(--radius-md);
box-shadow: var(--shadow-glass);
}
/* Primary glossy button */
.btn-primary {
background: linear-gradient(180deg, #4ADE80 0%, #22C55E 50%, #16A34A 100%);
border: 1px solid #15803D;
border-radius: var(--radius-sm);
color: white;
padding: 10px 20px;
font-weight: 600;
font-size: 14px;
position: relative;
overflow: hidden;
cursor: pointer;
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: 6px;
}
.btn-primary::before {
content: '';
position: absolute;
top: 0; left: 0; right: 0;
height: 50%;
background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, rgba(255,255,255,0.1) 100%);
border-radius: 8px 8px 0 0;
pointer-events: none;
}
.btn-primary:hover {
transform: translateY(-1px);
box-shadow: 0 6px 20px rgba(34,197,94,0.4);
}
.btn-primary:active {
transform: translateY(0);
}
.btn-primary:disabled {
opacity: 0.5;
cursor: not-allowed;
transform: none;
}
.btn-sm {
padding: 6px 12px;
font-size: 12px;
}
/* Secondary button */
.btn-secondary {
background: rgba(255,255,255,0.7);
border: 1px solid rgba(34,197,94,0.4);
border-radius: var(--radius-sm);
color: var(--color-primary-dark);
padding: 10px 20px;
font-weight: 600;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: 6px;
backdrop-filter: blur(8px);
}
.btn-secondary:hover {
background: rgba(34,197,94,0.1);
border-color: var(--color-primary);
}
/* Danger button */
.btn-danger {
background: linear-gradient(180deg, #FCA5A5 0%, #EF4444 50%, #DC2626 100%);
border: 1px solid #B91C1C;
border-radius: var(--radius-sm);
color: white;
padding: 10px 20px;
font-weight: 600;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: 6px;
}
.btn-danger:hover {
transform: translateY(-1px);
box-shadow: 0 6px 20px rgba(239,68,68,0.4);
}
/* Ghost button */
.btn-ghost {
background: transparent;
border: 1px solid transparent;
border-radius: var(--radius-sm);
color: var(--color-text-secondary);
padding: 8px 14px;
font-weight: 500;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
display: inline-flex;
align-items: center;
gap: 6px;
}
.btn-ghost:hover {
background: rgba(0,0,0,0.05);
color: var(--color-text);
}
/* Glass input */
.glass-input {
background: rgba(255,255,255,0.6);
border: 1px solid rgba(255,255,255,0.8);
border-radius: var(--radius-sm);
padding: 10px 14px;
font-size: 14px;
color: var(--color-text);
width: 100%;
transition: all 0.2s;
backdrop-filter: blur(8px);
}
.glass-input:focus {
background: rgba(255,255,255,0.85);
border-color: var(--color-primary);
box-shadow: 0 0 0 3px rgba(34,197,94,0.15);
}
.glass-input::placeholder {
color: var(--color-text-secondary);
}
/* Badge */
.badge {
display: inline-flex;
align-items: center;
padding: 3px 10px;
border-radius: 20px;
font-size: 12px;
font-weight: 600;
white-space: nowrap;
}
.badge-green { color: #15803D; border: 1.3px solid rgba(34,197,94,0.3); }
.badge-blue { background: rgba(6,182,212,0.15); color: #0E7490; border: 1px solid rgba(6,182,212,0.3); }
.badge-orange { background: rgba(251,146,60,0.15); color: #C2410C; border: 1px solid rgba(251,146,60,0.3); }
.badge-gray { background: rgba(100,116,139,0.1); color: #64748B; border: 1px solid rgba(100,116,139,0.2); }
.badge-red { background: rgba(239,68,68,0.12); color: #B91C1C; border: 1px solid rgba(239,68,68,0.2); }
.badge-purple { background: rgba(139,92,246,0.12); color: #6D28D9; border: 1px solid rgba(139,92,246,0.2); }
/* Tag chip */
.tag-chip {
display: inline-flex;
align-items: center;
padding: 3px 10px;
background: rgba(34,197,94,0.1);
border: 1px solid rgba(34,197,94,0.25);
border-radius: 20px;
font-size: 12px;
color: var(--color-primary-dark);
font-weight: 500;
cursor: pointer;
transition: all 0.15s;
white-space: nowrap;
}
.tag-chip:hover,
.tag-chip.active {
background: rgba(34,197,94,0.2);
border-color: var(--color-primary);
}
/* Page layout helpers */
.page-content {
padding: 24px;
max-width: 1200px;
margin: 0 auto;
}
.page-title {
font-size: 22px;
font-weight: 700;
color: var(--color-text);
margin-bottom: 20px;
}
.section-title {
font-size: 16px;
font-weight: 700;
color: var(--color-text);
margin-bottom: 14px;
}
/* Grid helpers */
.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
@media (max-width: 768px) {
.grid-2, .grid-3, .grid-4 { grid-template-columns: 1fr; }
.page-content { padding: 16px; }
}
/* Flex helpers */
.flex { display: flex; }
.flex-col { display: flex; flex-direction: column; }
.items-center { align-items: center; }
.justify-between { justify-content: space-between; }
.gap-2 { gap: 8px; }
.gap-3 { gap: 12px; }
.gap-4 { gap: 16px; }
/* Text helpers */
.text-sm { font-size: 12px; }
.text-secondary { color: var(--color-text-secondary); }
.font-bold { font-weight: 700; }
.font-semibold { font-weight: 600; }
/* Stars rating */
.stars { color: #FBBF24; font-size: 14px; letter-spacing: 1px; }
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
.fade-in { animation: fadeIn 0.3s ease; }
@keyframes spin {
to { transform: rotate(360deg); }
}
.spinner {
width: 20px; height: 20px;
border: 2px solid rgba(255,255,255,0.3);
border-top-color: white;
border-radius: 50%;
animation: spin 0.8s linear infinite;
display: inline-block;
}
.spinner-green {
border-color: rgba(34,197,94,0.2);
border-top-color: var(--color-primary);
}
#app {
min-height: 100vh;
}