Files
watcher-visio/static/css/main.css
Nikolay Tatarinov 76eae52d2a
Some checks failed
CI / ci (push) Has been cancelled
Enhance tooltip functionality for CPU standard deviation in dashboard
- Updated the tooltip for the CPU standard deviation metric to include a detailed explanation of the calculation, preserving newlines for better readability.
- Added CSS styles to support multi-line tooltips, improving user comprehension of the displayed data.
2026-02-12 19:38:12 +03:00

349 lines
9.6 KiB
CSS
Raw Permalink 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.

/* DM Sans local webfonts (no external requests) */
@font-face {
font-family: 'DM Sans';
font-style: normal;
font-display: swap;
font-weight: 400;
src: url('../fonts/dm-sans-latin-400-normal.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: normal;
font-display: swap;
font-weight: 500;
src: url('../fonts/dm-sans-latin-500-normal.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: normal;
font-display: swap;
font-weight: 600;
src: url('../fonts/dm-sans-latin-600-normal.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: normal;
font-display: swap;
font-weight: 700;
src: url('../fonts/dm-sans-latin-700-normal.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: italic;
font-display: swap;
font-weight: 400;
src: url('../fonts/dm-sans-latin-400-italic.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: italic;
font-display: swap;
font-weight: 500;
src: url('../fonts/dm-sans-latin-500-italic.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: italic;
font-display: swap;
font-weight: 600;
src: url('../fonts/dm-sans-latin-600-italic.woff2') format('woff2');
}
@font-face {
font-family: 'DM Sans';
font-style: italic;
font-display: swap;
font-weight: 700;
src: url('../fonts/dm-sans-latin-700-italic.woff2') format('woff2');
}
@import "tailwindcss";
@plugin "daisyui";
@theme {
--font-sans: "DM Sans", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
@plugin "daisyui/theme" {
name: "light";
default: true;
prefersdark: false;
color-scheme: "light";
--color-base-100: oklch(100% 0.004 260);
--color-base-200: oklch(98% 0.004 260);
--color-base-300: oklch(95% 0.004 260);
--color-base-content: oklch(22% 0.02 260);
--color-primary: #0a2973;
--color-primary-content: #ffffff;
--color-secondary: #009fdf;
--color-secondary-content: #ffffff;
--color-accent: #009fdf;
--color-accent-content: #ffffff;
--color-neutral: #333333;
--color-neutral-content: oklch(92% 0.004 286.32);
--color-info: oklch(74% 0.16 232.661);
--color-info-content: oklch(29% 0.066 243.157);
--color-success: oklch(76% 0.177 163.223);
--color-success-content: oklch(37% 0.077 168.94);
--color-warning: oklch(82% 0.189 84.429);
--color-warning-content: oklch(41% 0.112 45.904);
--color-error: oklch(71% 0.194 13.428);
--color-error-content: oklch(27% 0.105 12.094);
--radius-selector: 0.5rem;
--radius-field: 0.25rem;
--radius-box: 0.5rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 1;
--noise: 0;
--chart-grid-color: color-mix(in oklch, var(--color-base-content) 10%, transparent);
}
@plugin "daisyui/theme" {
name: "dark";
default: false;
prefersdark: true;
color-scheme: "dark";
--color-base-100: oklch(22% 0.014 260);
--color-base-200: oklch(19% 0.012 260);
--color-base-300: oklch(16% 0.01 260);
--color-base-content: oklch(96% 0.01 260);
/* Lighter primary/secondary for readability on dark background (cards, progress, %) */
--color-primary: oklch(65% 0.2 260);
--color-primary-content: #ffffff;
--color-secondary: oklch(72% 0.16 230);
--color-secondary-content: #ffffff;
--color-accent: oklch(72% 0.16 230);
--color-accent-content: #ffffff;
--color-neutral: oklch(28% 0.02 260);
--color-neutral-content: oklch(92% 0.004 286.32);
--color-info: oklch(74% 0.16 232.661);
--color-info-content: oklch(29% 0.066 243.157);
--color-success: oklch(76% 0.177 163.223);
--color-success-content: oklch(37% 0.077 168.94);
--color-warning: oklch(82% 0.189 84.429);
--color-warning-content: oklch(41% 0.112 45.904);
--color-error: oklch(71% 0.194 13.428);
--color-error-content: oklch(27% 0.105 12.094);
--radius-selector: 0.5rem;
--radius-field: 0.25rem;
--radius-box: 0.5rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 1;
--noise: 0;
--chart-grid-color: color-mix(in oklch, var(--color-base-content) 10%, transparent);
}
/* VTB gradient (both themes) */
:root {
--gradient-vtb: linear-gradient(135deg, #0a2973 0%, #009fdf 100%);
}
/* Gradient top border for cards */
.border-t-gradient-vtb {
position: relative;
}
.border-t-gradient-vtb::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
background: var(--gradient-vtb);
border-radius: var(--radius-box) var(--radius-box) 0 0;
}
/* Gradient button (e.g. Load Analysis) */
.btn-gradient-vtb {
background: var(--gradient-vtb);
color: #ffffff;
border: none;
}
.btn-gradient-vtb:hover {
opacity: 0.9;
color: #ffffff;
}
/* Main content area: distinct background so cards (base-100) stand out */
[data-theme=light] main {
background-color: var(--color-base-200);
}
[data-theme=dark] main {
background-color: var(--color-base-200);
}
/* Dark theme: improve contrast for muted text and controls */
[data-theme=dark] .text-base-content\/60 {
color: color-mix(in oklch, var(--color-base-content) 88%, transparent);
}
[data-theme=dark] .text-base-content\/70 {
color: color-mix(in oklch, var(--color-base-content) 92%, transparent);
}
[data-theme=dark] .text-base-content\/30 {
color: color-mix(in oklch, var(--color-base-content) 55%, transparent);
}
[data-theme=dark] .badge-outline {
border-color: color-mix(in oklch, var(--color-base-content) 75%, transparent);
color: color-mix(in oklch, var(--color-base-content) 90%, transparent);
}
[data-theme=dark] .badge-neutral {
background-color: var(--color-base-300);
color: var(--color-base-content);
border-color: transparent;
}
[data-theme=dark] .btn-ghost {
color: color-mix(in oklch, var(--color-base-content) 90%, transparent);
}
[data-theme=dark] .btn-ghost:hover {
color: var(--color-base-content);
background-color: color-mix(in oklch, var(--color-base-content) 12%, transparent);
}
/* Dark theme: better contrast for CPU chart stats (Mean, ±0.5σ) */
[data-theme=dark] section[aria-label="CPU distribution chart"] .text-success {
color: oklch(85% 0.16 163);
}
[data-theme=dark] section[aria-label="CPU distribution chart"] .text-error\/60 {
color: oklch(82% 0.18 13);
}
/* Accessibility: ensure focus ring is visible on key controls */
.btn:focus-visible,
.select:focus-within,
label.swap:focus-within:not(.theme-toggle) {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
/* Light theme: slightly stronger card shadow for depth */
[data-theme=light] .card.shadow-sm {
box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.08), 0 1px 2px -1px rgb(0 0 0 / 0.06);
}
[data-theme=light] .card.shadow-sm:hover {
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.08), 0 2px 4px -2px rgb(0 0 0 / 0.06);
}
@source "../../templates";
/* --- Print (Save as PDF) --- */
@page {
size: A4;
margin: 15mm;
}
@media print {
/* Force printable area width (A4 minus margins) so layout doesn't use screen width */
html {
width: 180mm !important;
min-width: 180mm !important;
max-width: 180mm !important;
margin: 0 !important;
padding: 0 !important;
overflow-x: hidden !important;
}
body {
width: 180mm !important;
min-width: 180mm !important;
max-width: 180mm !important;
margin: 0 !important;
padding: 0 !important;
overflow-x: hidden !important;
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
box-sizing: border-box !important;
}
body *,
body *::before,
body *::after {
box-sizing: border-box !important;
}
/* Allow flex/grid children to shrink so they don't force overflow */
body * {
min-width: 0 !important;
}
.no-print {
display: none !important;
}
.print-only {
display: block !important;
}
/* Main and content: stay within body width */
main.container {
width: 100% !important;
max-width: 100% !important;
margin: 0 !important;
padding: 0.5rem 0.5rem 0 !important;
min-width: 0 !important;
}
#dashboard-content {
width: 100% !important;
max-width: 100% !important;
min-width: 0 !important;
overflow-x: hidden !important;
padding: 0.5rem 0 !important;
}
/* Keep card backgrounds and colors when printing */
.card,
.badge,
.progress {
-webkit-print-color-adjust: exact;
print-color-adjust: exact;
}
/* Avoid breaking cards and sections across pages */
.card {
break-inside: avoid;
page-break-inside: avoid;
}
section {
break-inside: avoid;
page-break-inside: avoid;
}
/* Tables: fit to page, allow column shrink */
.overflow-x-auto {
max-width: 100% !important;
overflow-x: visible !important;
}
.table {
table-layout: fixed !important;
width: 100% !important;
max-width: 100% !important;
}
.table td,
.table th {
overflow: hidden;
text-overflow: ellipsis;
}
/* Chart: constrain so it doesn't overflow (canvas has fixed size from Chart.js) */
section[aria-label="CPU distribution chart"] .card-body {
max-width: 100% !important;
overflow: hidden !important;
}
section[aria-label="CPU distribution chart"] .h-48,
section[aria-label="CPU distribution chart"] [class*="h-48"] {
max-width: 100% !important;
min-height: 10rem !important;
}
section[aria-label="CPU distribution chart"] canvas {
max-width: 100% !important;
height: auto !important;
}
/* Navbar fits page width */
.navbar {
width: 100% !important;
max-width: 100% !important;
}
}
@media screen {
.print-only {
display: none !important;
}
}
/* Multi-line tooltip (formula): preserve newlines from data-tip */
.tooltip-formula[data-tip]::before {
white-space: pre-line;
text-align: left;
}