docu_test / css /styles.css
cryogenic22's picture
Update css/styles.css
0046a47 verified
/* Doc_Map_Agent Styles */
:root {
--primary-color: #2c3e50;
--secondary-color: #3498db;
--accent-color: #e74c3c;
--light-color: #ecf0f1;
--dark-color: #2c3e50;
--success-color: #2ecc71;
--warning-color: #f39c12;
--danger-color: #e74c3c;
--text-color: #333;
--border-radius: 4px;
--box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
--transition: all 0.3s ease;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: 'Roboto', Arial, sans-serif;
line-height: 1.6;
color: var(--text-color);
background-color: #f5f7fa;
}
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
padding: 0 15px;
}
/* Header Styles */
header {
background-color: var(--primary-color);
color: white;
padding: 1rem 0;
box-shadow: var(--box-shadow);
}
.header-container {
display: flex;
justify-content: space-between;
align-items: center;
}
.logo {
display: flex;
align-items: center;
}
.logo img {
height: 40px;
margin-right: 10px;
background-color: #fff; /* Add background for placeholder visibility */
border-radius: 50%;
}
.logo h1 {
font-size: 1.5rem;
font-weight: 500;
}
.header-actions {
display: flex;
align-items: center;
}
.search-bar {
margin-right: 15px;
position: relative;
}
.search-bar input {
padding: 8px 15px;
border-radius: 20px;
border: none;
width: 200px;
font-size: 0.9rem;
}
.search-bar button {
position: absolute;
right: 0px;
top: 0;
height: 100%;
width: 40px;
background: var(--secondary-color);
border: none;
color: white;
border-radius: 0 20px 20px 0;
cursor: pointer;
transition: var(--transition);
}
.search-bar button:hover {
background: #2980b9;
}
.settings-btn {
background: none;
border: none;
color: white;
cursor: pointer;
font-size: 1.2rem;
}
/* Breadcrumb */
.breadcrumb {
padding: 0.8rem 0;
background-color: #fff;
border-bottom: 1px solid #ddd;
font-size: 0.9rem;
}
.breadcrumb ul {
list-style: none;
display: flex;
flex-wrap: wrap; /* Allow wrapping on small screens */
}
.breadcrumb li {
margin-right: 8px;
white-space: nowrap;
}
.breadcrumb li:after {
content: ">";
margin-left: 8px;
color: #999;
}
.breadcrumb li:last-child:after {
content: "";
}
.breadcrumb a {
text-decoration: none;
color: var(--secondary-color);
cursor: pointer;
}
.breadcrumb a:hover {
text-decoration: underline;
}
.breadcrumb li:last-child a {
color: var(--text-color);
font-weight: 500;
cursor: default;
pointer-events: none; /* Prevent click on last item */
}
/* Main Content */
main {
padding: 2rem 0;
}
.page-section {
animation: fadeIn 0.5s ease-in-out;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
.page-title {
margin-bottom: 1.5rem;
font-size: 1.8rem;
color: var(--primary-color);
border-bottom: 2px solid var(--secondary-color);
padding-bottom: 0.5rem;
}
/* Card Styles */
.card {
background-color: #fff;
border-radius: var(--border-radius);
box-shadow: var(--box-shadow);
margin-bottom: 1.5rem;
overflow: hidden; /* Important for child margins */
}
.card-header {
padding: 1rem 1.2rem;
background-color: var(--light-color);
border-bottom: 1px solid #ddd;
font-weight: 500;
color: var(--primary-color);
}
.card-body {
padding: 1.2rem;
}
.card-body p, .card-body ul {
margin-bottom: 0.8rem;
}
.card-body ul {
padding-left: 20px;
}
.card-body h4 {
margin-top: 1rem;
margin-bottom: 0.5rem;
color: var(--primary-color);
}
.card-body li {
margin-bottom: 0.3rem;
}
/* Grid Layout */
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 1.5rem;
}
/* Dashboard Cards */
.dashboard-card {
background-color: #fff;
border-radius: var(--border-radius);
box-shadow: var(--box-shadow);
padding: 1.5rem;
text-align: center;
transition: var(--transition);
cursor: pointer;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.dashboard-card:hover {
transform: translateY(-5px);
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
}
.dashboard-card i {
font-size: 2.5rem;
color: var(--secondary-color);
margin-bottom: 1rem;
}
.dashboard-card h3 {
margin-bottom: 0.5rem;
color: var(--primary-color);
}
.dashboard-card p {
color: #777;
font-size: 0.9rem;
flex-grow: 1; /* Push button down */
margin-bottom: 1rem;
}
/* Two Column Layout */
.two-column {
display: grid;
grid-template-columns: 250px 1fr; /* Fixed sidebar width */
gap: 1.5rem;
}
@media (max-width: 768px) {
.two-column {
grid-template-columns: 1fr;
}
.sidebar {
margin-bottom: 1.5rem; /* Add space when stacked */
}
}
/* Sidebar */
.sidebar {
background-color: #fff;
border-radius: var(--border-radius);
box-shadow: var(--box-shadow);
padding: 1.2rem;
height: fit-content; /* Stop sidebar stretching */
}
.sidebar-title {
margin-bottom: 1rem;
padding-bottom: 0.5rem;
border-bottom: 1px solid #ddd;
font-size: 1.2rem;
}
/* Filter Groups */
.filter-group {
margin-bottom: 1.5rem;
}
.filter-group h4 {
margin-bottom: 0.5rem;
font-size: 1rem;
}
.filter-options {
display: flex;
flex-direction: column;
max-height: 200px; /* Limit height for long lists */
overflow-y: auto; /* Add scroll if needed */
}
.filter-option {
margin-bottom: 0.5rem;
}
.filter-option label {
display: flex;
align-items: center;
cursor: pointer;
font-size: 0.9rem;
}
.filter-option input {
margin-right: 0.5rem;
}
/* Buttons */
.btn {
display: inline-block;
padding: 8px 15px;
border-radius: var(--border-radius);
border: none;
cursor: pointer;
font-size: 0.9rem;
transition: var(--transition);
text-decoration: none;
text-align: center;
font-weight: 500;
}
.btn-primary {
background-color: var(--secondary-color);
color: white;
}
.btn-primary:hover {
background-color: #2980b9;
}
.btn-secondary {
background-color: var(--light-color);
color: var(--text-color);
border: 1px solid #ccc;
}
.btn-secondary:hover {
background-color: #e0e0e0;
}
.btn-danger {
background-color: var(--danger-color);
color: white;
}
.btn-danger:hover {
background-color: #c0392b;
}
.btn-block {
display: block;
width: 100%;
}
/* Document Cards Container */
.document-card-container {
display: grid;
grid-template-columns: 1fr; /* Default single column */
gap: 1rem;
}
/* Adjust container for wider screens if desired */
/* @media (min-width: 992px) {
.document-card-container {
grid-template-columns: repeat(2, 1fr);
gap: 1.5rem;
}
} */
/* Document Cards */
.document-card {
background-color: #fff;
border-radius: var(--border-radius);
box-shadow: var(--box-shadow);
padding: 1.2rem;
transition: var(--transition);
border-left: 4px solid var(--light-color); /* Default border */
}
/* Add phase-specific colors */
.document-card[data-phase="Discovery"] { border-left-color: #1abc9c; }
.document-card[data-phase="Preclinical"] { border-left-color: #2ecc71; }
.document-card[data-phase="Preclinical/Clinical"] { border-left-color: #3498db; }
.document-card[data-phase="Clinical"] { border-left-color: #3498db; }
.document-card[data-phase="Regulatory"] { border-left-color: #9b59b6; }
.document-card[data-phase="Clinical/Regulatory"] { border-left-color: #9b59b6; }
.document-card[data-phase="Post-Marketing"] { border-left-color: #e67e22; }
.document-card[data-phase="Medical Affairs"] { border-left-color: #f1c40f; }
.document-card:hover {
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
transform: scale(1.01);
}
.document-card h3 {
margin-bottom: 0.5rem;
color: var(--primary-color);
font-size: 1.1rem;
}
.document-card-meta {
display: flex;
flex-wrap: wrap;
gap: 0.5rem 1rem;
margin-bottom: 0.7rem;
}
.document-card-meta span {
font-size: 0.85rem;
color: #777;
display: flex;
align-items: center;
}
.document-card-meta i {
margin-right: 5px;
color: var(--secondary-color);
}
.document-card p.purpose {
font-size: 0.9rem;
color: #555;
margin-bottom: 1rem;
}
.document-card-actions {
margin-top: 1rem;
text-align: right;
}
.document-card-actions .btn {
font-size: 0.85rem;
padding: 6px 12px;
}
/* Forms */
.form-group {
margin-bottom: 1rem;
}
.form-group label {
display: block;
margin-bottom: 0.5rem;
font-weight: 500;
}
.form-control {
width: 100%;
padding: 8px 12px;
border-radius: var(--border-radius);
border: 1px solid #ddd;
font-size: 0.9rem;
}
.form-control:focus {
outline: none;
border-color: var(--secondary-color);
box-shadow: 0 0 0 2px rgba(52, 152, 219, 0.2);
}
textarea.form-control {
min-height: 100px;
resize: vertical;
}
/* Visualization Containers & Tabs */
.tabs {
border-bottom: 1px solid #ddd;
margin-bottom: 1.5rem;
}
.tab-button {
padding: 10px 15px;
cursor: pointer;
border: none;
background-color: transparent;
border-bottom: 3px solid transparent;
margin-bottom: -1px; /* Overlap border */
font-size: 1rem;
transition: var(--transition);
}
.tab-button:hover {
color: var(--secondary-color);
}
.tab-button.active {
border-bottom-color: var(--secondary-color);
color: var(--primary-color);
font-weight: 500;
}
.visualization-container {
min-height: 500px; /* Ensure space for the graph */
position: relative;
overflow: hidden; /* Contain SVG */
}
/* D3 Visualization Styles */
#dependency-network, #process-flow {
width: 100%;
height: 500px; /* Default height */
overflow: hidden; /* Hide scrollbars if SVG is larger */
}
#dependency-network svg, #process-flow svg {
display: block; /* Remove extra space below SVG */
width: 100%;
height: 100%;
}
/* D3 Dependency Graph Specifics */
.links line {
stroke-opacity: 0.6;
}
.nodes circle {
stroke: #fff;
stroke-width: 1.5px;
cursor: pointer;
}
.nodes circle:hover {
stroke: var(--primary-color);
}
.nodes text {
font-size: 10px;
pointer-events: none; /* Allow clicking through text to node */
fill: #333;
}
.nodes .node-label-bg { /* Optional background for better readability */
stroke: white;
stroke-width: 3px;
opacity: 0.8;
}
.legend {
font-size: 10px;
}
.legend rect, .legend line {
margin-right: 5px;
}
/* D3 Process Flow Specifics */
#process-flow .node rect {
fill: var(--secondary-color);
stroke: #2980b9;
stroke-width: 1px;
rx: 5; /* Rounded corners */
ry: 5;
}
#process-flow .node text {
fill: white;
font-size: 11px;
text-anchor: middle;
dominant-baseline: middle;
}
#process-flow .link {
fill: none;
stroke: #95a5a6;
stroke-width: 2px;
}
#process-flow marker path {
fill: #95a5a6;
}
/* Footer */
footer {
background-color: var(--dark-color); /* Use dark color */
color: var(--light-color); /* Light text */
padding: 1.5rem 0;
margin-top: 3rem;
}
.footer-container {
display: flex;
justify-content: space-between;
align-items: center;
flex-wrap: wrap; /* Allow wrapping */
gap: 1rem;
}
.footer-links a {
color: var(--light-color);
margin-left: 1rem;
text-decoration: none;
font-size: 0.9rem;
}
.footer-links a:hover {
text-decoration: underline;
color: var(--secondary-color);
}
/* Responsive Adjustments */
@media (max-width: 768px) {
.header-container {
flex-direction: column;
align-items: flex-start;
}
.header-actions {
margin-top: 1rem;
width: 100%;
flex-direction: column;
align-items: stretch;
}
.search-bar {
width: 100%;
margin-right: 0;
margin-bottom: 0.5rem;
}
.search-bar input {
width: 100%;
}
.search-bar button {
border-radius: 20px; /* Adjust button on mobile */
width: 100%;
position: static;
margin-top: 5px;
}
.settings-btn {
align-self: flex-end; /* Move settings button to right */
}
.grid {
grid-template-columns: 1fr;
}
.footer-container {
flex-direction: column;
text-align: center;
}
.footer-links {
margin-top: 1rem;
}
.footer-links a {
margin: 0 0.5rem;
}
}
/* Utility Classes */
.text-center { text-align: center; }
.mt-1 { margin-top: 0.5rem; }
.mt-2 { margin-top: 1rem; }
.mt-3 { margin-top: 1.5rem; }
.mb-1 { margin-bottom: 0.5rem; }
.mb-2 { margin-bottom: 1rem; }
.mb-3 { margin-bottom: 1.5rem; }
.p-1 { padding: 0.5rem; }
.p-2 { padding: 1rem; }
.p-3 { padding: 1.5rem; }
/* Visually hidden class for accessibility */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}