.thw-scroll-top {
position: fixed;
bottom: 20px;
right: 20px;
left: auto !important;
width: 44px;
height: 44px;
background: rgba(15, 20, 25, 0.95);
border: 1px solid rgba(0, 217, 163, 0.4);
border-radius: 10px;
color: #00D9A3;
display: none;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s ease;
z-index: 999;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
padding: 0;
}
.thw-scroll-top svg {
width: 20px;
height: 20px;
display: block;
stroke: currentColor;
fill: none;
}
.thw-scroll-top:hover {
background: #00D9A3;
color: #000;
border-color: #00D9A3;
transform: translateY(-2px);
}
.thw-scroll-top.visible {
display: flex !important;
} .thw-line-chart {
position: relative;
width: 100%;
min-height: 150px;
}
.thw-line-svg {
display: block !important;
width: 100% !important;
height: 150px !important;
overflow: visible !important;
} .thw-chart-lines {
display: block !important;
}
.thw-chart-labels {
display: block !important;
}
.thw-chart-line {
fill: none !important;
stroke-width: 2 !important;
}
.thw-chart-line.critical {
stroke: #ff0000 !important;
}
.thw-chart-line.high {
stroke: #ff8c00 !important;
}
.thw-chart-line.medium {
stroke: #ffeb3b !important;
}
.thw-chart-dot {
fill: #0a0a0a !important;
stroke-width: 2 !important;
}
.thw-chart-dot.critical {
stroke: #ff0000 !important;
}
.thw-chart-dot.high {
stroke: #ff8c00 !important;
}
.thw-chart-dot.medium {
stroke: #ffeb3b !important;
} @media (max-width: 768px) { .thw-analytics-grid {
grid-template-columns: 1fr !important;
gap: 16px !important;
} .thw-chart-card {
padding: 16px !important;
}
.thw-chart-card h5 {
font-size: 0.75em !important;
margin-bottom: 12px !important;
} .thw-donut-chart {
width: 120px !important;
height: 120px !important;
}
.thw-donut-total {
font-size: 1.6em !important;
} .thw-line-chart {
min-height: 140px !important;
height: 140px !important;
}
.thw-line-svg {
height: 140px !important;
min-height: 140px !important;
} .thw-chart-legend {
flex-direction: row !important;
flex-wrap: wrap !important;
justify-content: center !important;
gap: 8px 12px !important;
}
.thw-legend-item {
font-size: 0.7em !important;
} .thw-cve-container .thw-list-export-container,
div.thw-list-export-container {
display: flex !important;
flex-direction: row !important;
flex-wrap: nowrap !important;
gap: 8px !important;
align-items: center !important;
}
.thw-cve-container .thw-list-export-container > span,
div.thw-list-export-container > span {
flex-shrink: 0 !important;
font-size: 0.75em !important;
white-space: nowrap !important;
width: auto !important;
margin-bottom: 0 !important;
}
.thw-cve-container .thw-list-export-container .thw-export-btn,
div.thw-list-export-container .thw-export-btn,
.thw-list-export-btn.thw-export-btn {
flex: 1 1 auto !important;
min-width: 70px !important;
max-width: 120px !important;
padding: 8px 12px !important;
font-size: 0.75em !important;
white-space: nowrap !important;
}
.thw-list-export-container .thw-export-btn svg {
width: 12px !important;
height: 12px !important;
} .thw-scroll-top {
bottom: 80px !important;
right: 16px !important;
} .thw-cve-container {
padding: 12px !important;
} .thw-severity-tabs {
display: flex !important;
flex-wrap: nowrap !important;
overflow-x: auto !important;
-webkit-overflow-scrolling: touch !important;
gap: 8px !important;
padding: 10px !important;
scrollbar-width: none !important;
}
.thw-severity-tabs::-webkit-scrollbar {
display: none !important;
}
.thw-severity-tab {
flex-shrink: 0 !important;
white-space: nowrap !important;
padding: 8px 14px !important;
font-size: 0.8em !important;
min-height: 40px !important;
} .thw-cve-card {
padding: 14px !important;
}
.thw-cve-id {
font-size: 0.9em !important;
}
.thw-cve-badge {
font-size: 0.7em !important;
padding: 3px 6px !important;
}
.thw-cve-body p {
font-size: 0.85em !important;
line-height: 1.5 !important;
} .thw-cve-search-bar form {
flex-direction: column !important;
gap: 10px !important;
}
.thw-cve-search-bar input[type="text"] {
width: 100% !important;
font-size: 16px !important; padding: 12px 14px !important;
}
.thw-cve-search-bar button {
width: 100% !important;
padding: 12px !important;
min-height: 44px !important;
}
} @media (max-width: 374px) {
.thw-donut-chart {
width: 100px !important;
height: 100px !important;
}
.thw-donut-total {
font-size: 1.4em !important;
}
.thw-severity-tab {
padding: 6px 10px !important;
font-size: 0.75em !important;
}
.thw-list-export-container .thw-export-btn {
padding: 6px 8px !important;
font-size: 0.7em !important;
min-width: 60px !important;
}
} @media (prefers-reduced-motion: reduce) {
.thw-scroll-top,
.thw-chart-line,
.thw-donut-segment {
transition: none !important;
animation: none !important;
}
} .thw-chart-loading {
position: relative;
min-height: 150px;
}
.thw-chart-skeleton {
display: flex;
align-items: center;
justify-content: center;
height: 150px;
}
.thw-skeleton-circle {
width: 120px;
height: 120px;
border-radius: 50%;
background: linear-gradient(90deg, #1a1a1a 25%, #252525 50%, #1a1a1a 75%);
background-size: 200% 100%;
animation: thw-skeleton-shimmer 1.5s infinite;
}
.thw-skeleton-lines {
width: 100%;
height: 100px;
background: linear-gradient(90deg, #1a1a1a 25%, #252525 50%, #1a1a1a 75%);
background-size: 200% 100%;
animation: thw-skeleton-shimmer 1.5s infinite;
border-radius: 4px;
}
@keyframes thw-skeleton-shimmer {
0% {
background-position: -200% 0;
}
100% {
background-position: 200% 0;
}
} .thw-donut-chart:not(.thw-chart-loading),
.thw-line-chart:not(.thw-chart-loading) {
animation: thw-chart-fadein 0.3s ease-out;
}
@keyframes thw-chart-fadein {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}