/* 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; } /* CSS variables for positioning */ :root { --validation-result-top:140px; /* distance from top for the result container */ --header-question-height:64px; /* approximate height of the header-question-summary box */ --header-question-gap:12px; /* gap between question box and result container */ } /* Validation Report Template Styles */ .validation-template-main { margin-top:32px; width:100%; display: flex; justify-content: flex-start; /* moved to left side */ } .validation-template-flex { display: grid; /* increased left column width from360px to420px to give more room for case summary */ grid-template-columns:420px 1fr; gap:28px; align-items: start; max-width:1200px; margin:0; /* remove auto centering so layout sits on the left */ } .validation-side-left { width:420px; /* increased from360px */ display: flex; flex-direction: column; gap:16px; align-items: stretch; } .validation-template-left { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; gap:32px; min-width:180px; } .validation-circle { width:140px; height:140px; border-radius:50%; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow:0 2px 16px #38bdf844; margin-bottom:8px; } .validation-circle.truth { background: linear-gradient(135deg, #bae6fd 0%, #38bdf8 100%); } .validation-circle.inconsistency { background: linear-gradient(135deg, #fee2e2 0%, #991b1b 100%); } .circle-value { font-size:2.4rem; font-weight:900; color: #2563eb; margin-bottom:8px; } .validation-circle.inconsistency .circle-value { color: #991b1b; } .circle-label { font-size:1rem; color: #6366f1; text-align: center; } .validation-template-right { flex:1; display: flex; flex-direction: column; gap:24px; } /* Action buttons row below the main validation template */ .validation-actions { display:flex; gap:35px; justify-content:flex-end; align-items:center; padding:18px 24px; max-width:1200px; margin:-9px 0 24px 42px; /* align with main content area (left column420px) */ } .action-btn { display:inline-flex; align-items:center; gap:8px; background:#fff; border:1px solid rgba(2,24,64,0.06); padding:6px 10px; border-radius:8px; cursor:pointer; font-weight:700; box-shadow:0 8px 18px rgba(2,24,64,0.04); } .action-icon { width:14px; height:14px; border-radius:999px; display:inline-block; } .action-icon.blue { background:#1e40af; } .action-icon.purple { background:#7c3aed; } .action-icon.green { background:#059669; } .action-btn.action-download .action-label { color:#0f172a; } .action-btn.action-email .action-label { color:#0f172a; } .action-btn.action-reanalyze .action-label { color:#0f172a; } .action-btn:hover { transform:translateY(-2px); box-shadow:012px32px rgba(2,24,64,0.06); } @media (max-width:900px) { .validation-actions { justify-content:center; margin-left:0; } } .validation-section { background: #fff; border-radius:12px; box-shadow:0 2px 16px #2563eb22; margin-bottom:0; padding-bottom:0; } .section-header { font-size:1.15rem; font-weight:700; padding:12px 24px; border-radius:12px 12px 0 0; letter-spacing:1px; } .details-header { background: #fbbf24; color: #23272b; } .incident-header { background: #ef4444; color: #fff; } .followup-header { background: #14b8a6; color: #fff; } .section-table { width:100%; display: flex; flex-direction: column; padding:0 24px 18px 24px; } .section-row { display: flex; border-bottom:1px solid #e5e7eb; padding:8px 0; } .section-row:last-child { border-bottom: none; } .section-cell { flex:1; font-size:1rem; color: #23272b; padding-right:16px; word-break: break-word; } .section-cell[colspan="3"] { flex:3; } @media (max-width:900px) { .validation-template-flex { flex-direction: column; align-items: center; } .validation-template-right { width:100%; } } .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:006px #38bdf8; } .py-detect-title-header .py-letter.y { color: #38bdf8; text-shadow:006px #38bdf8; } .py-detect-title-header .py-shape { color: #e3f6ff; background: #e3f6ff; text-shadow:006px #38bdf8; box-shadow:006px #38bdf8,002px #fff; border:2px solid #23272b; width:18px; height:4px; display: inline-block; margin:08px; border-radius:2px; } .py-detect-title-header .py-letter.d { color: #e3f6ff; text-shadow:006px #38bdf8; } .py-detect-title-header .py-letter.e { color: #38bdf8; text-shadow:006px #38bdf8; } .py-detect-title-header .py-letter.t { color: #e3f6ff; text-shadow:006px #38bdf8; } .py-detect-title-header .py-letter.e2 { color: #38bdf8; text-shadow:006px #38bdf8; } .py-detect-title-header .py-letter.c { color: #e3f6ff; text-shadow:006px #38bdf8; } .py-detect-title-header .py-letter.t2 { color: #38bdf8; text-shadow:006px #38bdf8; } .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; } /* Back button styling — gradient and subtle animation to match page design */ .back-btn { background: linear-gradient(90deg,#38bdf8,#2563eb); color: #fff; border: none; border-radius:12px; padding:8px 14px; font-size:0.98rem; font-weight:800; letter-spacing:0.6px; cursor: pointer; box-shadow:0 6px 18px rgba(56,189,248,0.12); transition: transform 220ms cubic-bezier(.2,.9,.2,1), box-shadow 220ms ease, filter 220ms ease; display: inline-flex; gap:8px; align-items: center; justify-content: center; position: relative; overflow: hidden; margin-bottom:16px; } /* Professional, modern look for validation results */ .validation-result-container { position: sticky; right:0; top:110px; width:360px; background: linear-gradient(180deg, #ffffff, #f1fbff); padding:18px; border-radius:12px; box-shadow:0 12px 36px rgba(3,102,214,0.06); z-index:60; } /* adjust percentage-box border color so it reads on the lighter container */ .percentage-box { background: rgba(3,102,214,0.06); border-radius:14px; box-shadow:0 8px 32px rgba(30,41,59,0.06),0018px rgba(56,189,248,0.04); border:1px solid rgba(56,189,248,0.08); padding:20px 26px; /* reduced */ min-width:260px; max-width:320px; display: flex; flex-direction: column; align-items: center; gap:12px; } /* Radial diagram sizing inside the compact box */ .radial-chart-wrapper { width:212px; height:177px; display:flex; align-items:center; justify-content:center; } .radial-number { font-size:1.2rem; } /* Radial animation styles */ .radial-chart-wrapper { width:212px; height:177px; display: flex; align-items: center; justify-content: center; } .radial-svg { width:100%; height:124%; overflow:visible; } .radial-bg { stroke: rgba(0,0,0,0.06); } .radial-anim { transition: stroke-dashoffset 3000ms cubic-bezier(.2,.9,.2,1); transform-origin: center; } /* Color the animated strokes to match labels */ .outer-fg { stroke: #6366f1; } .middle-fg { stroke: #059669; } .inner-fg { stroke: #ef4444; } /* Color the radial percentage values per modality: audio (blue), video (green), verified (red) */ .radial-values .radial-item:nth-child(1) .radial-number { color: #2563eb; /* blue for audio */ } .radial-values .radial-item:nth-child(2) .radial-number { color: #059669; /* green for video */ } .radial-values .radial-item:nth-child(3) .radial-number { color: #ef4444; /* red for verified */ } /* Ensure circles use correct stroke-dasharray values via binding; initial dashoffset set in component to circumference (hidden) */ .radial-values { display:flex; flex-direction:row; gap:53px; } .radial-item { display:flex; gap:10px; align-items:center; } .radial-icon { width:28px; height:28px; display:flex; align-items:center; justify-content:center; border-radius:999px; } .icon-audio { background: linear-gradient(90deg,#eef2ff,#e0f2fe); color:#0550ff; padding:4px; border-radius:6px; } .icon-video { background: linear-gradient(90deg,#ecfdf5,#d1fae5); color:#059669; padding:4px; border-radius:6px; } .icon-verified { background: linear-gradient(90deg,#fff1f2,#fee2e2); color:#ef4444; padding:4px; border-radius:6px; } .radial-number { font-size:1.4rem; font-weight:800; color:#0f172a; } .radial-label { font-size:0.95rem; color:#475569; } .radial-detail { font-size:0.9rem; color:#6b7280; margin-top:4px; } /* Reduced motion */ @media (prefers-reduced-motion: reduce) { .radial-anim { transition: none !important; } } /* Ensure layout is responsive: on small screens keep it centered and full-width */ @media (max-width:900px) { .validation-result-container { position: static; right: auto; top: auto; width:100%; max-width:100%; padding:18px 12px; border-radius:12px; margin:0 12px 18px 12px; } .percentage-box { min-width: auto; max-width:100%; padding:18px; } .radial-chart-wrapper { width:212px; height:177px; } } .validation-template-left .validation-result-container { position: relative; right: auto; top: auto; width:100%; max-width:900px; margin:12px 0 4px 0; padding:16px; border-radius:12px; box-shadow:0 8px 32px rgba(3,102,214,0.06); background: linear-gradient(180deg, #ffffff, #f7fbff); } .validation-template-left .percentage-box { max-width:100%; min-width: auto; padding:16px; } .radial-chart-wrapper { width:212px; height:177px; } /* Responsive adjustments: ensure left panel width is respected on smaller screens */ @media (max-width:1200px) { .validation-template-flex { grid-template-columns:48%1fr; } .validation-side-left { width:48%; } } @media (max-width:1000px) { .validation-template-right { display: none; } .validation-template-flex { grid-template-columns:1fr; } .validation-template-left .radial-chart-wrapper { width:212px; height:177px; } } /* 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; } /* Summary card for investigation evaluation */ .summary-card { margin-top:32px; background: rgba(56,189,248,0.08); border-radius:12px; border:2px solid rgba(99,102,241,0.15); box-shadow:0024px rgba(99,102,241,0.12); padding:24px 32px; max-width:420px; text-align: left; display: flex; flex-direction: column; align-items: flex-start; } .summary-title { font-size:1.25rem; font-weight:700; color: #2563eb; margin-bottom:10px; letter-spacing:1px; } .summary-text { font-size:1.08rem; color: #23272b; font-weight:500; margin:0; } /* Status chips/badges for result */ .status-chip { display: inline-block; font-size:0.85rem; padding:4px 10px; border-radius:8px; font-weight:600; } .status-chip.active { background: #dcfce7; color: #15803d; } .status-chip.archived { background: #fee2e2; color: #991b1b; } /* Modal styles for report summary */ .modal-overlay { position: fixed; top:0; left:0; right:0; bottom:0; background: rgba(30,41,59,0.65); z-index:2000; display: flex; align-items: center; justify-content: center; animation: fadeInUp0.4s; } .modal-content { background: #fff; border-radius:18px; box-shadow:0 8px 32px #38bdf844,0 2px 16px #6366f144; padding:36px 44px 28px 44px; min-width:340px; max-width:480px; color: #23272b; position: relative; outline: none; } .modal-title { font-size:2rem; font-weight:800; color: #2563eb; margin-bottom:18px; letter-spacing:1px; } .modal-section { margin-bottom:18px; } .modal-close { position: absolute; top:18px; right:24px; background: none; border: none; font-size:2rem; color: #2563eb; cursor: pointer; z-index:10; } .report-actions, .modal-section h3 { margin-top:18px; } .report-btn { background: linear-gradient(90deg, #2563eb 0%, #38bdf8 100%); color: #fff; font-weight:700; border: none; border-radius:999px; padding:0.5rem 1.4rem; margin-right:12px; margin-bottom:8px; cursor: pointer; box-shadow:0 2px 16px #38bdf888; display: inline-flex; align-items: center; gap:8px; font-size:1rem; transition: background 0.2s, box-shadow 0.2s; } .report-btn:hover { background: linear-gradient(90deg, #38bdf8 0%, #2563eb 100%); color: #bae6fd; box-shadow:0 2px 24px #bae6fd88; } .icon-report::before { content: "\1F4C4"; font-size:1.2em; margin-right:4px; } .icon-download::before { content: "\1F4BE"; font-size:1.2em; margin-right:4px; } .icon-email::before { content: "\2709"; font-size:1.2em; margin-right:4px; } .modal-content h3 { font-size:1.1rem; color: #2563eb; font-weight:700; margin-bottom:6px; } .modal-content p { font-size:1rem; color: #23272b; margin-bottom:0; } /* Dashboard header styles */ .dashboard-header { background: linear-gradient(90deg, rgba(30,41,59,0.92) 0%, #38bdf8 100%); padding:12px 0 10px 0; color: #fff; box-shadow:0 2px 16px #2563eb44; position: relative; } .dashboard-header-content { display: flex; align-items: center; justify-content: center; max-width:1200px; margin:0 auto; padding:032px; } .dashboard-logo { width:64px; height:64px; border-radius:50%; background: #fff; box-shadow:0 2px 8px #38bdf844; margin-right:24px; } .dashboard-title-block { display: flex; flex-direction: column; align-items: flex-start; } .dashboard-title { font-size:1.45rem; font-weight:900; letter-spacing:2px; color: #fff; } .dashboard-date { font-size:0.95rem; color: #bae6fd; margin-top:2px; } .header-btns-right { display: flex; align-items: center; gap:16px; } /* Top hero bar */ .hero-bar { width:100%; background: linear-gradient(90deg, #64748b, #00d4ff); color: #e6f2ff; padding:0px 0; box-shadow:0 8px 36px #bae6fd; } .hero-inner { max-width:1200px; margin:0 auto; display: flex; align-items: center; justify-content: space-between; gap:12px; padding:024px; } .hero-title h1 { margin:0; font-size:1.6rem; font-weight:900; letter-spacing:1px; background: linear-gradient(90deg, #fff, #cceeff); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; color: transparent; /* fallback for browsers respecting color */ } .hero-sub { color: #bcd9f8; font-size:0.95rem; margin-top:4px; } .hero-actions { display:flex; align-items:center; gap:8px; } /* Ensure hero-inner is a positioning context for absolute button */ .hero-inner { position: relative; } /* Place the More details pill at the right-side corner of the hero bar */ .hero-more-btn { position: absolute; right: 150px; top: 50%; transform: translateY(-50%); z-index: 30; /* keep existing visual styles */ background: linear-gradient(90deg, #0ea5ff, #23272b); color: #fff; border: none; padding: 6px 12px; border-radius: 999px; display: inline-flex; align-items: center; gap: 8px; font-weight: 700; cursor: pointer; box-shadow: 0 6px 18px rgba(37,99,235,0.18); } .hero-more-btn:hover { transform: translateY(-52%); box-shadow:0 10px 26px rgba(37,99,235,0.22); } /* Ensure hero title and actions appear inline and centered as a group */ .hero-bar .hero-inner { justify-content: center !important; position: relative; } .hero-bar .hero-title { text-align: center; } .hero-bar .hero-actions { position: static !important; display: flex; gap:8px; align-items: center; margin-left:16px; /* space between title and actions */ } .hero-bar .hero-more-btn { right: -285px; top: auto !important; transform: none !important; } /* Responsive: keep actions inline on small screens but allow wrapping */ @media (max-width:900px) { .hero-bar .hero-inner { flex-direction: column; gap:12px; } .hero-bar .hero-actions { margin-left:0; } } /* Layout containers (left content / right analytics) */ .validation-template-main { padding:18px 20px; } .validation-template-flex { display: grid; grid-template-columns:360px 1fr; gap:28px; align-items: start; max-width:1200px; margin:0 auto; } /* Summary cards grid */ .summary-cards { display: grid; grid-template-columns: repeat(2, minmax(220px,1fr)); gap:16px; width:100%; } .summary-card { padding:14px; border-radius:12px; min-height:100px; display:flex; flex-direction:column; gap:8px; justify-content:center; } .summary-card .card-top { font-weight:700; color:#075985; font-size:0.95rem; } .summary-card .card-value { font-size:1.25rem; font-weight:800; color:#0f3b72; } .summary-card .card-sub { font-size:0.9rem; color:#64748b; } /* Metrics pane */ .metrics-pane { width:100%; margin-top:18px; } .metrics-title { font-size:1.05rem; color:#075985; margin-bottom:10px; font-weight:800; } .metrics-bars { display:flex; flex-direction:column; gap:10px; } .metrics-row-item { display:flex; align-items:center; gap:12px; } .metrics-label { width:120px; font-weight: 700; color: #475569;} .metrics-bar-bg { flex:1; background:#e6eef8; border-radius:12px; height:12px; overflow:hidden; } .metrics-bar-fill { height:100%; width:0%; background: linear-gradient(90deg,#38bdf8,#2aa89f); border-radius:12px; transition: width 0.9s cubic-bezier(.2,.9,.2,1); } .metrics-bar-fill.cyan { background: linear-gradient(90deg,#60a5fa,#06b6d4); } .metrics-bar-fill.amber { background: linear-gradient(90deg,#fbbf24,#f97316); } .metrics-value { width:56px; text-align:right; font-weight:700; color:#075985; } /* Case summary refinements */ .case-summary-section { padding:18px; background: rgba(255,255,255,0.95); border-radius:12px; box-shadow:0 8px 32px rgba(2,6,23,0.04); margin-top:18px; width:100%; max-width:100%; } .case-summary-grid { display:flex; gap:16px; align-items:flex-start; } .case-summary-fields { display:flex; flex-direction:column; gap:6px; color:#334155; margin-bottom:12px; } .case-summary-text { color:#334155; flex:1; margin-top:12px; } /* Ensure card-modal-case defaults align with wider left panel when present */ .card-modal-case { --w:34%; /* default flex width for the card row version */ --h: calc(100vh - 160px); min-width:300px; align-self: flex-start; } /* Validation results when moved into left column */ .validation-template-left .validation-result-container { position: relative; right: auto; top: auto; width:100%; max-width:900px; margin:12px 0 4px 0; padding:16px; border-radius:12px; box-shadow:0 8px 32px rgba(3,102,214,0.06); background: linear-gradient(180deg, #ffffff, #f7fbff); } /* small tweak: ensure radial box scales within left column */ .validation-template-left .percentage-box { max-width:100%; min-width: auto; padding:16px; } .radial-chart-wrapper { width:212px; height:177px; } /* Keep original right-column behaviour but lower priority (in case other pages use it) */ .validation-result-container { position: sticky; top:110px; right:0; width:360px; } /* Horizontal main row to place validation results and cards side-by-side */ .main-row { display:flex; gap:20px; align-items:flex-start; width:100%; } .cards-col { flex:1; display:flex; flex-direction:column; gap:16px; } /* Make validation-result-container take intrinsic width and let cards-col expand */ .validation-result-container { width:auto; max-width:420px; } /* Align summary-cards to be a vertical stack in cards-col */ .summary-cards { display:flex; flex-direction:column; gap:16px; } .summary-card { max-width:100%; } @media (max-width:1000px) { .main-row { flex-direction:column; } .validation-result-container { max-width:100%; } .cards-col { width:100%; } } /* Cards row: horizontal layout to fit page width */ .cards-row { display: grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:20px; align-items: start; width:100%; justify-items: stretch; margin-left:0; padding-left:0; position: relative; left:0; } .card-modal { background: linear-gradient(120deg,#ffffff,#f6faff); border-radius:12px; box-shadow:0 8px 32px rgba(2,6,23,0.04); padding:12px; display:flex; flex-direction:column; } /* Make all card-modals expand to fill available horizontal space evenly */ .cards-row .card-modal { min-width:280px; height:auto; overflow:hidden; } /* Remove previous rigid per-card max-widths (selectors kept for compatibility) */ .card-modal-case, .card-modal-metrics, .card-modal-results, .card-modal-summary { /* sized by .cards-row .card-modal */ } .card-modal-header { font-weight:800; color:#075985; margin-bottom:8px; } .card-modal-body { flex:1; overflow:h; padding-right:8px; } .card-modal-footer { display:flex; gap:8px; justify-content:flex-end; margin-top:8px; } /* Specific inner layouts */ .results-horizontal { display:flex; gap:12px; align-items:center; } .results-values { display:flex; flex-direction:row; gap:12px; } /* Summary grid inside summary card modal */ .summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 12px; margin-top: -8px; } /* Ensure metrics bars keep original look */ .metrics-bars { display:flex; flex-direction:column; gap:10px; } .metrics-row-item { display:flex; align-items:center; gap:12px; } /* Hide scrollbars where possible and ensure page height fits viewport */ :host { margin:0; padding:0; width:100%; height:100%; /* Hide both horizontal and vertical scrollbars for this validation page only */ overflow: hidden; } .validation-template-main { height: calc(100vh - 120px); overflow: hidden; } .validation-template-flex { height:100%; display: flex; flex-direction: column; } .cards-row .card-modal-body { max-height: calc(100vh - 260px); overflow-y: auto; } /* Responsive: stack cards vertically on small screens */ @media (max-width:1200px) { .card-modal-case, .card-modal-metrics, .card-modal-results, .card-modal-summary { flex:1145%; max-width:48%; } } @media (max-width:900px) { .cards-row { flex-direction:column; } .card-modal-case, .card-modal-metrics, .card-modal-results, .card-modal-summary { width:100%; max-width:100%; min-width:unset; height:auto; } .card-modal-body { overflow: visible; max-height: none; } .validation-template-main { height: auto; } } /* Animations and transitions */ .card-glass { /* existing definitions remain applied */ } /* small touch: animate radial numbers and card entries */ .summary-card { transform: translateY(6px); animation: enterCard0.48s cubic-bezier(.2,.9,.2,1) both; } @keyframes enterCard { from { opacity:0; transform: translateY(12px) scale(0.995);} to { opacity:1; transform: translateY(0) scale(1);} } /* Ensure metrics fills update smoothly on load */ .metrics-bar-fill { will-change: width; } /* ensure footer won't overlap sticky right panel on small screens */ @media (max-width:600px) { footer { position: static; } } /* place pre-question summary inside validation header at top-right */ .validation-header { position: relative; } .validation-header .header-question-summary { position: absolute; right:24px; /* place inside the header (top-right) */ top:18px; background: linear-gradient(90deg, #ffffff, #f1fbff); border:1px solid rgba(3,102,214,0.06); padding:8px 12px; border-radius:10px; box-shadow:0 6px 18px rgba(3,102,214,0.06); display: flex; flex-direction: column; align-items: center; min-width:160px; z-index:60; } .validation-header .header-question-summary .question-summary-title { font-size:1rem; font-weight:800; color: #075985; margin-bottom:6px; } .validation-header .header-question-summary .action-btn { padding:6px 10px; font-size:0.95rem; border-radius:8px; } @media (max-width:900px) { .validation-header .header-question-summary { position: static; margin-top:12px; right: auto; top: auto; transform: none; min-width: auto; } } /* Horizontal main row to place validation results and cards side-by-side */ .main-row { display:flex; gap:20px; align-items:flex-start; width:100%; } .cards-col { flex:1; display:flex; flex-direction:column; gap:16px; } /* Make validation-result-container take intrinsic width and let cards-col expand */ .validation-result-container { width:auto; max-width:420px; } /* Align summary-cards to be a vertical stack in cards-col */ .summary-cards { display:flex; flex-direction:column; gap:16px; } .summary-card { max-width:100%; } @media (max-width:1000px) { .main-row { flex-direction:column; } .validation-result-container { max-width:100%; } .cards-col { width:100%; } } /* Cards row: horizontal layout to fit page width */ .cards-row { display:flex; gap:16px; align-items:flex-start; width:100%; justify-content:flex-start; grid-column:1 / -1; justify-self: start; margin-left:0; padding-left:0; position: relative; left:0; } .card-modal { background: linear-gradient(120deg,#ffffff,#f6faff); border-radius:12px; box-shadow:0 8px 32px rgba(2,6,23,0.04); padding:12px; display:flex; flex-direction:column; } /* Make all card-modals expand to fill available horizontal space evenly */ .cards-row .card-modal { flex:1 1 0; min-width:200px; overflow:hidden; } /* Remove previous rigid per-card max-widths (selectors kept for compatibility) */ .card-modal-case, .card-modal-metrics, .card-modal-results, .card-modal-summary { /* sized by .cards-row .card-modal */ } .card-modal-header { font-weight:800; color:#075985; margin-bottom:8px; } .card-modal-body { flex:1; overflow:auto; padding-right:8px; } .card-modal-footer { display:flex; gap:8px; justify-content:flex-end; margin-top:8px; } .cards-row { /* Use CSS Grid for a clean3-column layout */ display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); /*3 columns on wide screens */ gap:20px; align-items: start; justify-items: stretch; width:153%; margin-left:-340px; /* ensure it's flush to left */ } /* Responsive grid breakpoints */ @media (max-width:1200px) { .cards-row { grid-template-columns: repeat(2, minmax(0,1fr)); /*2 columns on medium screens */ } } @media (max-width:800px) { .cards-row { grid-template-columns:1fr; /* stack on small screens */ } } /* Base card styling used by all dashboard cards */ .case-summary-card, .metrics-card, .result-chart-card, .summary-card { /* Per-card variables (can be set inline or with additional classes): --card-offset-x: shift left/right (example: "-12px" or "8px") --card-margin-left: extra margin-left if preferred (example: "8px") --card-width: explicit width (e.g. "100%" or "480px"); grid keeps this flexible --card-height: explicit height (e.g. "480px") */ --card-offset-x:0px; --card-margin-left:0px; --card-width: auto; --card-height:0px; background: linear-gradient(180deg, #ffffff, #f7fbff); border-radius:12px; box-shadow:0 10px 30px rgba(2,6,23,0.06); padding:16px; box-sizing: border-box; /* Allow nudging via transform (preferred) and margin as fallback */ transform: translateX(var(--card-offset-x)); margin-left: var(--card-margin-left); /* Width/height controls - width in grid context should usually be "auto" or100% */ width: var(--card-width); min-width:0; /* important for grid children to allow shrinking */ height: var(--card-height); /* Smooth animations when position/size changes */ transition: transform 280ms cubic-bezier(.2,.9,.2,1), margin 280ms cubic-bezier(.2,.9,.2,1), width 340ms cubic-bezier(.2,.9,.2,1), height 340ms cubic-bezier(.2,.9,.2,1), box-shadow 220ms ease; /* Ensure content can scroll internally if height is constrained */ display: flex; flex-direction: column; overflow: hidden; } /* Content area inside card that may scroll if content is taller than allowed height */ .case-summary-card .card-body, .metrics-card .card-body, .result-chart-card .card-body, .summary-card .card-body { overflow: auto; padding-right:8px; } /* Utility classes for quick nudges (small adjustments) */ .nudge-left { --card-offset-x: - 12px; } .nudge-right { --card-offset-x:12px; } .nudge-more-left { --card-offset-x: - 24px; } .nudge-more-right { --card-offset-x:24px; } /* Utility classes to increase card size */ .card-tall { --card-height:560px; } .card-taller { --card-height:680px; } .card-wide { /* span two columns in the grid */ grid-column: span2; /* makes the card occupy two columns */ } /* Hover elevation effect to indicate interactivity */ .case-summary-card:hover, .metrics-card:hover, .result-chart-card:hover, .summary-card:hover { box-shadow:0 18px 40px rgba(2,6,23,0.10); transform: translateX(calc(var(--card-offset-x) *1.2)) translateY(-6px); } /* Focus or active state for keyboard users */ .case-summary-card:focus, .metrics-card:focus, .result-chart-card:focus, .summary-card:focus { outline:3px solid rgba(59,130,246,0.12); outline-offset:4px; } /* Example specific defaults (can be overridden inline or with utility classes) - These make the case summary slightly wider by default and metrics a bit narrower */ .case-summary-card { --card-width: auto; --card-height:0px; } .metrics-card { --card-width: auto; --card-height:0px; } .result-chart-card { --card-width: auto; --card-height:0px; } .summary-card { --card-width: auto; --card-height:0px; } /* Ensure card content areas handle internal layout gracefully */ .card-title { font-weight:800; color: #075985; margin-bottom:8px; } .card-subtitle { color: #64748b; font-size:0.95rem; margin-bottom:12px; } /* Accessibility: ensure sufficient contrast for borders/shadows when scaled */ @media (prefers-reduced-motion: reduce) { .case-summary-card, .metrics-card, .result-chart-card, .summary-card { transition: none; } } /* End of dashboard card layout controls */ /* Scoped: Remove internal scrollbar only for the Validation Results card */ .card-modal-results, .card-modal-results .card-modal-body { /* Prevent internal scrollbars from appearing inside the results card */ overflow: visible !important; max-height: none !important; } /* Hide WebKit scrollbars if any still appear inside results card */ .card-modal-results::-webkit-scrollbar, .card-modal-results .card-modal-body::-webkit-scrollbar { width:0px; height:0px; display: none; } /* Hide scrollbars in Firefox/IE for results card */ .card-modal-results, .card-modal-results .card-modal-body { -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ } /* Case summary heading */ .case-summary-heading { font-weight:800; color: #075985; margin-bottom:8px; font-size:1rem; } /* Ensure the Py-Detect Summary heading has spacing above it when present */ .case-summary-heading.pydetect { margin-top:6px; } /* Nudge the Summary card slightly upward to better align with screenshot */ .card-modal-summary { transform: translateY(-12px); /* ensure smooth transition and promote to its own layer */ will-change: transform; z-index:5; } @media (max-width:900px) { /* remove nudge on small screens to prevent overlap */ .card-modal-summary { transform: none; z-index: auto; } }