.comprehensive-demo {
max-width: 1600px;
margin: 0 auto;
padding: 20px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
}
.demo-header {
text-align: center;
margin-bottom: 30px;
padding: 25px;
background: white;
border-radius: 16px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1);
}
.demo-header h1 {
color: #2c3e50;
margin: 0 0 15px 0;
font-size: 2.8rem;
font-weight: 700;
}
.demo-description {
color: #7f8c8d;
font-size: 1.2rem;
margin: 0 0 20px 0;
line-height: 1.5;
}
.stats-summary {
display: flex;
justify-content: center;
gap: 30px;
flex-wrap: wrap;
}
.stat-item {
display: flex;
flex-direction: column;
align-items: center;
padding: 10px 20px;
background: #f8f9fa;
border-radius: 8px;
border-left: 4px solid #3498db;
}
.stat-label {
font-size: 0.9rem;
color: #7f8c8d;
margin-bottom: 5px;
}
.stat-value {
font-size: 1.4rem;
font-weight: 700;
color: #2c3e50;
}
.stat-value.error {
color: #e74c3c;
}
.demo-controls {
background: white;
padding: 25px;
border-radius: 16px;
margin-bottom: 25px;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.1);
}
.demo-controls h3 {
margin: 0 0 20px 0;
color: #2c3e50;
font-size: 1.4rem;
}
.control-sections {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 25px;
}
.control-section h4 {
margin: 0 0 15px 0;
color: #34495e;
font-size: 1.1rem;
border-bottom: 2px solid #ecf0f1;
padding-bottom: 8px;
}
.button-group {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.control-btn {
padding: 10px 16px;
border: none;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
font-size: 0.9rem;
color: white;
}
.control-btn.metrics {
background: #e74c3c;
}
.control-btn.dashboard {
background: #3498db;
}
.control-btn.analytics {
background: #9b59b6;
}
.control-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2);
}
.param-controls {
display: flex;
gap: 15px;
flex-wrap: wrap;
}
.param-group {
display: flex;
flex-direction: column;
gap: 5px;
}
.param-group label {
font-weight: 600;
color: #2c3e50;
font-size: 0.9rem;
}
.param-group input {
padding: 8px 12px;
border: 2px solid #bdc3c7;
border-radius: 6px;
font-size: 1rem;
min-width: 120px;
}
.param-group input:focus {
outline: none;
border-color: #3498db;
}
.toggle-controls {
display: flex;
gap: 10px;
flex-wrap: wrap;
}
.toggle-btn {
padding: 10px 20px;
border: none;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
}
.toggle-btn.active {
background: #2ecc71;
color: white;
}
.toggle-btn.inactive {
background: #95a5a6;
color: white;
}
.toggle-btn:hover {
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
gap: 20px;
margin-bottom: 25px;
}
.feature-card {
background: white;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.feature-card:hover {
transform: translateY(-4px);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
}
.feature-card.metrics {
border-top: 5px solid #e74c3c;
}
.feature-card.dashboard {
border-top: 5px solid #3498db;
}
.feature-card.analytics {
border-top: 5px solid #9b59b6;
}
.feature-card.temp {
border-top: 5px solid #f39c12;
}
.feature-card.chat {
border-top: 5px solid #2ecc71;
}
.card-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
padding: 20px;
background: #f8f9fa;
border-bottom: 1px solid #ecf0f1;
}
.card-title-section {
flex: 1;
}
.card-title {
margin: 0 0 8px 0;
color: #2c3e50;
font-size: 1.2rem;
font-weight: 600;
}
.card-strategy {
margin: 0;
color: #7f8c8d;
font-size: 0.9rem;
font-style: italic;
}
.status-indicator {
font-size: 1.5rem;
padding: 5px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
min-width: 40px;
min-height: 40px;
}
.status-indicator.loading {
background: #f39c12;
animation: pulse 1.5s infinite;
}
.status-indicator.success {
background: #2ecc71;
}
.status-indicator.error {
background: #e74c3c;
}
@keyframes pulse {
0%,
100% {
opacity: 1;
}
50% {
opacity: 0.7;
}
}
.card-content {
padding: 20px;
}
.loading-state {
display: flex;
align-items: center;
gap: 10px;
justify-content: center;
padding: 20px;
}
.loading-spinner {
width: 24px;
height: 24px;
border: 3px solid #ecf0f1;
border-top: 3px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.error-state {
display: flex;
align-items: center;
gap: 10px;
padding: 15px;
background: #fdf2f2;
border: 1px solid #fecaca;
border-radius: 8px;
color: #dc2626;
}
.error-icon {
font-size: 1.2rem;
}
.metrics-content {
display: flex;
flex-direction: column;
gap: 15px;
}
.metric-item {
display: flex;
flex-direction: column;
gap: 8px;
}
.metric-label {
font-weight: 600;
color: #2c3e50;
font-size: 0.9rem;
}
.metric-bar {
position: relative;
background: #ecf0f1;
height: 24px;
border-radius: 12px;
overflow: hidden;
display: flex;
align-items: center;
}
.metric-fill {
height: 100%;
border-radius: 12px;
transition: width 0.3s ease;
}
.metric-fill.cpu {
background: linear-gradient(90deg, #e74c3c, #c0392b);
}
.metric-fill.memory {
background: linear-gradient(90deg, #3498db, #2980b9);
}
.metric-value {
position: absolute;
right: 10px;
color: white;
font-weight: 600;
font-size: 0.8rem;
z-index: 1;
}
.refresh-info {
font-size: 0.8rem;
color: #7f8c8d;
font-style: italic;
text-align: center;
padding-top: 10px;
border-top: 1px solid #ecf0f1;
}
.dashboard-content {
display: flex;
flex-direction: column;
gap: 15px;
}
.preferences {
background: #f8f9fa;
padding: 12px;
border-radius: 8px;
}
.preferences h5 {
margin: 0 0 8px 0;
color: #2c3e50;
}
.preferences p {
margin: 3px 0;
color: #7f8c8d;
font-size: 0.9rem;
}
.notifications h5 {
margin: 0 0 10px 0;
color: #2c3e50;
}
.notification {
padding: 8px 12px;
margin: 5px 0;
border-radius: 6px;
font-size: 0.9rem;
}
.notification.high {
background: #fdf2f2;
border-left: 4px solid #e74c3c;
color: #c0392b;
}
.notification.normal {
background: #f0f8ff;
border-left: 4px solid #3498db;
color: #2980b9;
}
.fetch-info {
font-size: 0.8rem;
color: #7f8c8d;
font-style: italic;
text-align: center;
padding-top: 10px;
border-top: 1px solid #ecf0f1;
}
.analytics-content {
display: flex;
flex-direction: column;
gap: 15px;
}
.analytics-summary {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
gap: 15px;
}
.summary-item {
text-align: center;
padding: 10px;
background: #f8f9fa;
border-radius: 8px;
}
.summary-label {
display: block;
font-size: 0.8rem;
color: #7f8c8d;
margin-bottom: 5px;
}
.summary-value {
display: block;
font-size: 1.2rem;
font-weight: 600;
color: #2c3e50;
}
.top-pages h5 {
margin: 0 0 10px 0;
color: #2c3e50;
}
.page-stat {
display: flex;
justify-content: space-between;
padding: 5px 0;
border-bottom: 1px solid #ecf0f1;
}
.page-path {
font-weight: 500;
color: #2c3e50;
}
.page-views {
color: #7f8c8d;
font-size: 0.9rem;
}
.report-info {
font-size: 0.8rem;
color: #7f8c8d;
font-style: italic;
text-align: center;
padding-top: 10px;
border-top: 1px solid #ecf0f1;
}
.temp-content {
display: flex;
flex-direction: column;
gap: 12px;
}
.session-id {
font-weight: 600;
color: #2c3e50;
margin: 0;
}
.memory-usage {
color: #e74c3c;
font-weight: 500;
margin: 0;
}
.temp-files h5 {
margin: 0 0 8px 0;
color: #2c3e50;
}
.temp-file {
display: flex;
justify-content: space-between;
padding: 5px 10px;
background: #f8f9fa;
border-radius: 4px;
margin: 3px 0;
}
.file-name {
font-family: monospace;
font-size: 0.8rem;
color: #2c3e50;
}
.file-size {
color: #7f8c8d;
font-size: 0.8rem;
}
.instance-info {
font-size: 0.8rem;
color: #7f8c8d;
font-style: italic;
text-align: center;
padding-top: 10px;
border-top: 1px solid #ecf0f1;
}
.chat-content {
display: flex;
flex-direction: column;
gap: 15px;
}
.chat-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px;
background: #f8f9fa;
border-radius: 8px;
}
.online-users {
color: #2ecc71;
font-weight: 600;
}
.message-count {
color: #3498db;
font-weight: 600;
}
.recent-messages h5 {
margin: 0 0 10px 0;
color: #2c3e50;
}
.message {
display: flex;
gap: 8px;
padding: 8px;
background: #f8f9fa;
border-radius: 8px;
margin: 5px 0;
align-items: center;
}
.message-user {
font-weight: 600;
color: #3498db;
min-width: 60px;
}
.message-content {
flex: 1;
color: #2c3e50;
}
.message-time {
font-size: 0.8rem;
color: #7f8c8d;
}
.strategy-comparison {
background: white;
padding: 25px;
border-radius: 16px;
margin-bottom: 25px;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.1);
}
.strategy-comparison h3 {
margin: 0 0 20px 0;
color: #2c3e50;
text-align: center;
font-size: 1.5rem;
}
.comparison-table {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
gap: 1px;
background: #bdc3c7;
border-radius: 8px;
overflow: hidden;
}
.comparison-header {
display: contents;
}
.comparison-header>div {
background: #34495e;
color: white;
padding: 15px 10px;
font-weight: 600;
text-align: center;
}
.comparison-row {
display: contents;
}
.comparison-row>div {
background: white;
padding: 12px 10px;
text-align: center;
font-size: 0.9rem;
}
.strategy-name {
font-weight: 600;
color: white;
text-align: center;
}
.strategy-name.interval {
background: #e74c3c;
}
.strategy-name.swr {
background: #3498db;
}
.strategy-name.cache {
background: #9b59b6;
}
.strategy-name.dispose {
background: #f39c12;
}
.strategy-name.combined {
background: #2ecc71;
}
.demo-footer {
background: white;
padding: 20px;
border-radius: 16px;
text-align: center;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.1);
}
.instructions {
margin: 0;
color: #7f8c8d;
font-style: italic;
font-size: 1.1rem;
}
.global-info {
background: linear-gradient(135deg, #56ab2f 0%, #a8e6cf 100%);
color: white;
padding: 12px 16px;
border-radius: 8px;
margin: 10px 0 20px 0;
font-weight: 600;
text-align: center;
box-shadow: 0 4px 15px rgba(86, 171, 47, 0.3);
}
.control-btn.clear-all {
background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
color: white;
border: none;
border-radius: 8px;
padding: 10px 16px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
}
.control-btn.clear-all:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(231, 76, 60, 0.3);
}
@media (max-width: 768px) {
.features-grid {
grid-template-columns: 1fr;
}
.control-sections {
grid-template-columns: 1fr;
}
.stats-summary {
flex-direction: column;
align-items: center;
}
.comparison-table {
grid-template-columns: 1fr;
gap: 0;
}
.comparison-table>div {
border-bottom: 1px solid #bdc3c7;
}
.param-controls {
flex-direction: column;
}
}