Py-detect / src /app /view-details-page /view-details-page.component.css
pykara's picture
bugfix
8c5e80c
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700&display=swap');
:root {
--bg-dark: #011329;
--accent: #008cff;
--accent-strong: #006bb3;
--accent-soft: #a8dcff;
--accent-emerald: #0ea5a4;
--muted: #6b7280;
--muted-2: #94a3b8;
--card-bg: #ffffff;
--card-border: #e6f2ff;
--card-border-hover: rgba(0,140,255,0.18);
--soft-blue: rgba(3,102,214,0.06);
--shadow-strong: 08px24px rgba(3,102,214,0.08);
--gap: 18px;
--transition-fast: 160ms;
--transition-medium: 280ms;
--transition-slow: 420ms;
}
/* Modern UI header styles from infopage */
.site-header {
background: #011329;
box-shadow: 0 2px 12px #38bdf844;
margin-bottom: 0;
position: relative;
z-index: 10;
padding-bottom: 0;
}
.header-inner {
display: flex;
align-items: center;
justify-content: space-between;
padding: 18px 32px 0 32px;
position: relative;
}
.logo-cluster {
display: flex;
align-items: center;
gap: 18px;
}
.logo-img-header {
width: 54px;
height: 54px;
border-radius: 50%;
background: #fff;
box-shadow: 0 2px 8px rgba(0,0,0,0.18);
padding: 4px;
margin-top: -6px;
margin-bottom: 1vh;
}
.py-detect-title-header {
font-size: 2.1rem;
font-family: 'Segoe UI', 'Arial', 'Roboto', sans-serif;
font-weight: 900;
letter-spacing: 6px;
color: #38bdf8;
display: flex;
align-items: center;
gap: 2px;
margin-bottom: 1.5vh;
}
.py-detect-title-header .py-letter.p {
color: #e3f6ff;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-letter.y {
color: #38bdf8;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-shape {
color: #e3f6ff;
background: #e3f6ff;
text-shadow: 0 0 6px #38bdf8;
box-shadow: 0 0 6px #38bdf8, 0 0 2px #fff;
border: 2px solid #23272b;
width: 18px;
height: 4px;
display: inline-block;
margin: 0 8px;
border-radius: 2px;
}
.py-detect-title-header .py-letter.d {
color: #e3f6ff;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-letter.e {
color: #38bdf8;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-letter.t {
color: #e3f6ff;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-letter.e2 {
color: #38bdf8;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-letter.c {
color: #e3f6ff;
text-shadow: 0 0 6px #38bdf8;
}
.py-detect-title-header .py-letter.t2 {
color: #38bdf8;
text-shadow: 0 0 6px #38bdf8;
}
/* Overall layout spacing */
.details-layout {
display: flex;
gap: 28px;
align-items: flex-start;
padding: 18px 20px 80px;
background: linear-gradient(120deg, #f7fbff, #fafcff);
}
.details-sidebar {
width: 270px;
background: linear-gradient(180deg,#091427,#0b1a33);
border-radius: 18px;
padding: 28px 18px;
box-shadow: 0 12px 36px rgba(2,24,64,0.06);
color: #fff;
}
.sidebar-section-heading {
padding: 10px 12px;
border-radius: 10px;
background: rgba(255,255,255,0.02);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);
font-weight: 700;
}
.sidebar-btn-group {
margin-top: 12px;
display: flex;
flex-direction: column;
gap: 10px;
}
.sidebar-btn2 {
padding: 12px;
border-radius: 10px;
text-align: left;
font-weight: 700;
transition: background var(--transition-fast) ease, transform var(--transition-fast) ease;
}
.sidebar-btn2:hover {
background: rgba(255,255,255,0.02);
transform: translateY(-1px);
}
/* Color and animation enhancements for clearer visual hierarchy */
.details-sidebar .sidebar-btn2 {
color: var(--muted-2);
background: transparent;
border-left: 4px solid transparent;
}
.details-sidebar .sidebar-btn2:hover {
background: rgba(255,255,255,0.02);
color: #e6f7ff;
transform: translateY(-1px);
}
.details-sidebar .sidebar-btn2.active {
background: linear-gradient(90deg, rgba(0,140,255,0.06), rgba(56,189,248,0.03));
color: #e8f8ff;
border-left-color: var(--accent);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);
}
/* Main card */
.indigo-main-card {
background: var(--card-bg);
border-radius: 18px;
padding: 24px;
box-shadow: var(--shadow-strong);
border: 1px solid var(--soft-blue);
width: 100%;
max-width: calc(100% - 320px);
box-sizing: border-box;
overflow: auto;
transition: box-shadow var(--transition-medium) ease, transform var(--transition-medium) ease;
}
.indigo-main-card:hover {
box-shadow: 0 18px 48px rgba(3,102,214,0.08);
transform: translateY(-2px);
}
.indigo-main-card.wide {
background: #f7fbff;
border-radius: 18px;
box-shadow: 0 8px 32px rgba(56,189,248,0.10);
padding: 32px 32px 28px 32px;
max-width: 1600px;
margin: 32px auto 0 auto;
width: 100%;
}
.indigo-main-card,
.indigo-main-card.wide {
overflow-x: visible !important;
overflow-y: visible !important;
}
.case-header {
padding: 8px 6px 14px 6px;
}
.case-qa {
display: flex;
flex-direction: column;
gap: 8px;
font-weight: 600;
color: #0b3b72;
}
.case-qa strong {
color: #0b3b72;
}
/* Layout toggle */
.layout-toggle-row {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 12px;
}
.toggle-btn {
padding: 6px 10px;
border-radius: 8px;
border: 1px solid rgba(2,24,64,0.06);
background: transparent;
cursor: pointer;
transition: all var(--transition-fast) ease;
}
.toggle-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 12px rgba(2,24,64,0.04);
}
.toggle-btn.active {
background: var(--accent);
color: #fff;
box-shadow: 0 6px 16px rgba(3,102,214,0.12);
}
/* Metrics card appearance */
.metrics-card {
background: #fff;
border-radius: 18px;
padding: 32px 28px 28px 28px;
box-shadow: 0 4px 24px rgba(56,189,248,0.10);
border: 1.5px solid #e6f2ff;
min-height: 320px;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
width: 100%;
margin-bottom: 0;
}
.metrics-card-heading {
background: #f7fbff;
padding: 14px 24px;
border-radius: 14px;
display: inline-block;
color: #232a3d;
font-size: 1.22rem;
font-weight: 700;
margin-bottom: 22px;
box-shadow: 0 2px 12px #e0e7ff;
text-align: left;
}
.metrics-card-heading.audio-analysis,
.metrics-card-heading.video-analysis {
color: #2563eb !important;
}
.metric-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 10px;
gap: 18px;
border-bottom: 1px solid #e6eaf3;
font-size: 1.12rem;
background: none;
}
.metric-label, .metric-name {
background: none;
border: none;
color: #232a3d;
font-weight: 600;
padding: 0;
margin-bottom: 0;
font-size: 1.04rem;
box-shadow: none;
display: inline-block;
text-align: left;
}
.metric-value {
color: #05204a;
font-weight: 900;
text-align: right;
font-size: 1.18rem;
}
/* Responsive tweaks for smaller screens */
@media (max-width: 1200px) {
.audio-cards-row {
grid-template-columns: 1fr 1fr;
gap: 24px;
}
.indigo-main-card.wide {
padding: 18px 8px 12px 8px;
max-width: 100%;
}
}
@media (max-width: 900px) {
.audio-cards-row {
flex-direction: column;
gap: 18px;
align-items: stretch;
}
.audio-cards-row .metrics-card {
max-width: 100%;
min-width: 0;
}
}
@media (max-width: 700px) {
.audio-cards-row {
grid-template-columns: 1fr;
gap: 18px;
}
.metrics-card {
min-height: 180px;
padding: 16px 8px;
}
}
/* Ensure four cards are always displayed in a single horizontal row */
.audio-cards-row {
display: flex;
flex-direction: row;
gap: 32px;
justify-content: center;
align-items: stretch;
width: 100%;
margin-top: 0;
}
.audio-cards-row .metrics-card {
flex: 1 1 0;
max-width: 340px;
min-width: 220px;
}
/* Fix: Make audio cards row fill available horizontal space and align cards in a single row */
.metrics-grid {
display: grid;
grid-template-columns: repeat(4,1fr);
gap: 32px;
}
.metrics-col {
display: flex;
flex-direction: column;
gap: 10px;
min-width: 0;
}
.metrics-card-heading {
font-size: 1.08rem;
color: var(--accent);
}
.metrics-list-plain {
list-style: none;
padding: 0;
margin: 0;
}
.metrics-list-plain li {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 6px;
border-bottom: 1px dashed rgba(3,102,214,0.04);
}
.metrics-list-plain li .value {
min-width: 72px;
text-align: right;
color: #0b3b72;
font-weight: 700;
}
/* Multiple cards layout */
.metrics-grid-multiple {
display: flex;
gap: 18px;
flex-wrap: wrap;
}
.metrics-grid-multiple .metrics-card {
min-width: 311px;
flex: auto;
transition: transform var(--transition-fast) ease, box-shadow var(--transition-fast) ease;
}
.metrics-grid-multiple .metrics-card:hover {
transform: translateY(-6px);
box-shadow: 0 20px 40px rgba(3,102,214,0.08);
}
/* Charts and table styles */
.charts-row {
display: flex;
gap: 16px;
margin-top: 18px;
flex-wrap: wrap;
}
.chart-card {
flex: 11420px;
background: #fff;
border-radius: 12px;
padding: 12px;
border: 1px solid var(--soft-blue);
box-shadow: 0 4px 12px rgba(3,102,214,0.04);
}
.simple-bar {
width: 100%;
height: 180px;
display: block;
}
.summary-table {
width: 100%;
border-collapse: collapse;
font-size: 0.95rem;
}
.summary-table th, .summary-table td {
border: 1px solid rgba(224,231,239,0.6);
padding: 8px 12px;
text-align: left;
}
.summary-table thead th {
background: #fbfdff;
color: var(--accent);
font-weight: 700;
}
.summary-table tbody tr:nth-child(even) {
background: #fbfbff;
}
/* Audio / video summary rows */
.audio-summary-row {
display: flex;
gap: 16px;
margin-top: 8px;
flex-wrap: wrap;
}
.audio-summary-row .summary-item {
font-weight: 700;
color: #0b3b72;
padding: 6px 8px;
border-radius: 8px;
background: rgba(56,189,248,0.04);
transition: background var(--transition-fast) ease, transform var(--transition-fast) ease;
}
.audio-summary-row .summary-item:hover {
background: rgba(56,189,248,0.08);
transform: translateY(-3px);
}
/* Scrollable details area for cards that allow internal scrolling */
.audio-card-body, .audio-details-card, .video-details-card, .metrics-card-body {
max-height: 340px;
overflow: auto;
}
.audio-card-body::-webkit-scrollbar, .audio-details-card::-webkit-scrollbar, .video-details-card::-webkit-scrollbar {
height: 8px;
width: 8px;
}
.audio-card-body::-webkit-scrollbar-thumb, .audio-details-card::-webkit-scrollbar-thumb, .video-details-card::-webkit-scrollbar-thumb {
background: rgba(2,24,64,0.12);
border-radius: 6px;
}
/* Back button styling (matches page accent and animated glow) */
.back-btn {
display: inline-flex;
align-items: center;
gap: 8px;
background: linear-gradient(90deg, rgba(0,140,255,0.14), rgba(3,102,214,0.10));
color: #01243a;
font-weight: 800;
padding: 8px 14px;
border-radius: 10px;
border: 1px solid rgba(3,102,214,0.12);
box-shadow: 0 6px 18px rgba(3,102,214,0.06);
cursor: pointer;
transition: transform var(--transition-fast) ease, box-shadow var(--transition-fast) ease, border-color var(--transition-fast) ease;
}
.back-btn:hover {
transform: translateY(-3px);
box-shadow: 0 14px 30px rgba(3,102,214,0.12);
border-color: rgba(0,140,255,0.22);
}
.back-btn:active {
transform: translateY(-1px) scale(0.995);
}
.back-btn:focus {
outline: none;
box-shadow: 0004px rgba(0,140,255,0.12);
}
/* small icon styling */
.back-icon {
display: inline-block;
font-weight: 900;
color: var(--accent-strong);
transform: translateX(-1px);
}
/* subtle pulse animation to draw attention when on verification page */
@keyframes backPulse {
0% {
box-shadow: 0 6px 18px rgba(3,102,214,0.06);
}
50% {
box-shadow: 0 20px 40px rgba(3,102,214,0.08);
}
100% {
box-shadow: 0 6px 18px rgba(3,102,214,0.06);
}
}
/* Apply pulse conditionally — you can add `.pulse` class in template if needed */
.back-btn.pulse {
animation: backPulse3.6s ease-in-out infinite;
}
/* Dark mode inverse for header area */
.site-header .back-btn {
background: linear-gradient(90deg, #38bdf8, rgba(255, 255, 255, 0.02));
color: #e6f7ff;
border: 1px solid rgba(255,255,255,0.04);
box-shadow: 0 6px 18px rgba(0,0,0,0.18);
margin-bottom: 16px;
}
.site-header .back-btn:hover {
box-shadow: 0 14px 30px rgba(0,0,0,0.28);
transform: translateY(-2px);
}
.nav-btn {
padding: 8px 12px;
border-radius: 8px;
border: 1px solid rgba(2,24,64,0.06);
background: linear-gradient(90deg, rgba(0,140,255,0.06), rgba(56,189,248,0.03));
color: #044a91;
font-weight: 700;
cursor: pointer;
transition: transform 160ms cubic-bezier(.2,.8,.2,1), box-shadow 160ms cubic-bezier(.2,.8,.2,1), background 220ms ease;
}
.nav-btn:hover:not([disabled]) {
transform: translateY(-3px);
box-shadow:0 12px 22px rgba(3,102,214,0.10);
background: linear-gradient(90deg, rgba(0,140,255,0.12), rgba(56,189,248,0.06));
}
.nav-btn[disabled] {
opacity:0.5;
cursor: default;
transform: none;
box-shadow: none;
}
/* During click/navigation animation we keep transform but remove any shadow to avoid background glow */
.nav-btn.prev-anim {
transform: translateX(-6px) scale(0.98);
box-shadow: none !important;
background: linear-gradient(90deg, rgba(3,102,214,0.14), rgba(56,189,248,0.06));
}
.nav-btn.next-anim {
transform: translateX(6px) scale(0.98);
box-shadow: none !important;
background: linear-gradient(90deg, rgba(3,102,214,0.14), rgba(56,189,248,0.06));
}
/* Also ensure active state does not show shadow */
.nav-btn:active {
box-shadow: none !important;
}
/* Footer */
footer {
background: linear-gradient(to right, #011022, #01030a);
color: #fff;
text-align: center;
padding: 10px 0px;
position: fixed;
left: 0;
bottom: 0;
width: 100%;
z-index: 100;
margin-top: 0;
}
/* Indigo container style for Verified Scores (refined to match screenshot) */
.indigo-main-card.verified-scores {
background: linear-gradient(180deg,#f7fbff, #ffffff);
border-radius: 18px;
padding: 20px;
box-shadow: 0 14px 40px rgba(3,102,214,0.06), inset 0 1px 0 rgba(255,255,255,0.6);
border: 1px solid rgba(3,102,214,0.08);
margin-bottom: 18px;
position: relative;
overflow: auto;
}
/* subtle divider under the main heading inside the indigo container */
.indigo-main-card.verified-scores > .metrics-card-heading {
color: #2563eb;
font-size: 1.08rem;
margin-bottom: 10px;
padding: 10px 8px;
border-radius: 8px;
display: inline-block;
}
.indigo-main-card.verified-scores .metrics-card-heading + .metrics-grid-card {
margin-top: 12px;
}
/* thin top rule under the overall heading (full width) */
.indigo-main-card.verified-scores .heading-divider {
content: '';
display: block;
height: 1px;
background: rgba(6,30,70,0.06);
margin: 12px 0 18px 0;
}
/* custom scrollbar styling to match screenshot cyan thumb */
.indigo-main-card.verified-scores::-webkit-scrollbar {
width: 12px;
}
.indigo-main-card.verified-scores::-webkit-scrollbar-track {
background: rgba(0,0,0,0.03);
border-radius: 8px;
}
.indigo-main-card.verified-scores::-webkit-scrollbar-thumb {
background: linear-gradient(180deg,#00e0ff,#00c0f0);
border-radius: 8px 5px 0 9px;
}
/* ensure inner validation card blends and keeps same rounded edges */
.metrics-card.validation-card {
background: rgba(250,252,255,0.98);
border-radius: 12px;
padding: 18px;
border: 1px solid rgba(3,102,214,0.04);
}
/* Make the three-column grid appear with soft separators similar to screenshot */
.metrics-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 32px;
}
.metrics-grid .metrics-col {
padding: 12px;
background: rgba(255,255,255,0.6);
border-radius: 10px;
}
.metrics-grid .metrics-col .metrics-card-heading {
background: rgba(3,102,214,0.03);
padding: 8px 10px;
border-radius: 8px;
}
/* Small tweak: emphasize metric separators inside the grid */
.metrics-grid .metric-row {
border-bottom: 1px solid rgba(6,30,70,0.04);
}
/* Scoped: remove internal scrollbar only for the video details metrics card */
.video-details-card {
/* allow content to expand and avoid internal scroll */
overflow: visible !important;
max-height: none !important;
}
/* Hide any WebKit scrollbars that might still appear inside the video card */
.video-details-card::-webkit-scrollbar {
width:0px;
height:0px;
display: none;
}
/* Hide scrollbars in Firefox/IE for the video card */
.video-details-card {
-ms-overflow-style: none; /* IE and Edge */
scrollbar-width: none; /* Firefox */
}