3027 lines
58 KiB
CSS
3027 lines
58 KiB
CSS
/* Radio button styling for pubkey options */
|
|
.pubkey-options {
|
|
margin: 12px 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.radio-option {
|
|
margin-bottom: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
color: var(--text-primary);
|
|
padding: 8px 12px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 6px;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.radio-option:hover {
|
|
background-color: var(--hover-color);
|
|
}
|
|
|
|
.radio-option input[type="radio"] {
|
|
margin-right: 10px;
|
|
cursor: pointer;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
/* Two column layout for the billboard modal */
|
|
.modal-columns {
|
|
display: flex;
|
|
gap: 15px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.modal-column {
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.modal-columns {
|
|
flex-direction: column;
|
|
gap: 5px;
|
|
}
|
|
}
|
|
|
|
.radio-option label {
|
|
cursor: pointer;
|
|
font-weight: normal;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.form-hint {
|
|
font-size: 0.85em;
|
|
color: var(--text-tertiary, #666);
|
|
margin: 0 0 10px 0;
|
|
padding: 8px;
|
|
background-color: var(--bg-info);
|
|
border-left: 3px solid var(--accent-color);
|
|
border-radius: 0 4px 4px 0;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.field-help {
|
|
font-size: 0.8em;
|
|
color: var(--text-secondary);
|
|
margin-top: 4px;
|
|
font-style: italic;
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
|
|
/* Server key format toggle styling */
|
|
.server-format-button {
|
|
background-color: var(--button-secondary, #6c757d);
|
|
color: var(--text-color-on-primary, white);
|
|
border: none;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-size: 0.8rem;
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.server-format-button:hover {
|
|
background-color: var(--button-secondary-hover, #5a6268);
|
|
}
|
|
|
|
.format-indicator {
|
|
font-size: 0.8rem;
|
|
color: var(--text-secondary, #6c757d);
|
|
margin-top: 4px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
/* Modal styles */
|
|
.modal {
|
|
display: none;
|
|
position: fixed;
|
|
z-index: 1000;
|
|
left: 0;
|
|
top: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: rgba(0, 0, 0, 0.5);
|
|
}
|
|
|
|
.modal-content {
|
|
background-color: var(--background-color);
|
|
margin: 5% auto;
|
|
padding: 16px;
|
|
border: 1px solid var(--border-color);
|
|
width: 80%;
|
|
max-width: 600px;
|
|
border-radius: 12px;
|
|
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3);
|
|
max-height: 90vh;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.modal-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 20px;
|
|
padding-bottom: 12px;
|
|
border-bottom: 2px solid var(--accent-color);
|
|
}
|
|
|
|
.modal-header h3 {
|
|
margin: 0;
|
|
color: var(--text-primary);
|
|
font-size: 1.4em;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.close-modal {
|
|
color: var(--text-secondary);
|
|
font-size: 28px;
|
|
font-weight: bold;
|
|
cursor: pointer;
|
|
height: 36px;
|
|
width: 36px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 50%;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.close-modal:hover {
|
|
color: var(--text-primary);
|
|
background-color: var(--hover-color);
|
|
transform: rotate(90deg);
|
|
}
|
|
.form-group {
|
|
margin-bottom: 12px;
|
|
padding: 10px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 8px;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.expiry-input-container {
|
|
display: flex;
|
|
align-items: center;
|
|
width: 100%;
|
|
}
|
|
|
|
.expiry-input-container input {
|
|
flex: 0 0 100px;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.expiry-unit {
|
|
font-size: 1em;
|
|
color: var(--text-secondary);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.form-group label {
|
|
display: block;
|
|
margin-bottom: 4px;
|
|
font-weight: 600;
|
|
color: var(--text-primary);
|
|
font-size: 0.95em;
|
|
}
|
|
|
|
.form-group input,
|
|
.form-group textarea {
|
|
width: 100%;
|
|
padding: 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 6px;
|
|
background-color: var(--input-background);
|
|
color: var(--text-primary);
|
|
font-size: 0.95em;
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.form-group input:focus,
|
|
.form-group textarea:focus {
|
|
border-color: var(--accent-color);
|
|
box-shadow: 0 0 0 2px rgba(63, 135, 255, 0.2);
|
|
outline: none;
|
|
}
|
|
.form-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
margin-top: 16px;
|
|
padding-top: 10px;
|
|
border-top: 1px solid var(--border-color);
|
|
}
|
|
.primary-button {
|
|
background-color: var(--button-primary, #0d6efd);
|
|
color: white;
|
|
border: none;
|
|
padding: 12px 20px;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
font-weight: bold;
|
|
font-size: 1.05em;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.secondary-button {
|
|
background-color: transparent;
|
|
color: var(--text-primary);
|
|
border: 1px solid var(--border-color);
|
|
padding: 12px 20px;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
font-size: 1.05em;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.primary-button:hover {
|
|
background-color: var(--button-hover);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.secondary-button:hover {
|
|
background-color: var(--hover-color);
|
|
transform: translateY(-2px);
|
|
}
|
|
|
|
/* Billboard specific styles */
|
|
.billboard-actions {
|
|
margin: 20px 0;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
padding: 10px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
/* Dark mode specific styling for billboard actions */
|
|
body[data-theme="dark"] .billboard-actions {
|
|
background-color: var(--bg-tertiary);
|
|
border-color: rgba(255, 255, 255, 0.1);
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
/* Make "Add New Billboard" button more prominent */
|
|
#createBillboardBtn {
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
font-weight: bold;
|
|
padding: 10px 16px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
border: none;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* Add a glowing effect in dark mode */
|
|
body[data-theme="dark"] #createBillboardBtn {
|
|
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
box-shadow: 0 0 10px rgba(63, 135, 255, 0.5);
|
|
}
|
|
|
|
#createBillboardBtn:hover {
|
|
background-color: var(--button-hover);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
body[data-theme="dark"] #createBillboardBtn:hover {
|
|
box-shadow: 0 0 15px rgba(63, 135, 255, 0.8);
|
|
}
|
|
|
|
.billboard-edit-btn,
|
|
.billboard-delete-btn {
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
margin-left: 10px;
|
|
font-size: 14px;
|
|
padding: 4px 8px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.billboard-edit-btn {
|
|
color: var(--primary-color);
|
|
}
|
|
|
|
.billboard-delete-btn {
|
|
color: #e74c3c;
|
|
}
|
|
|
|
.billboard-edit-btn:hover,
|
|
.billboard-delete-btn:hover {
|
|
background-color: var(--hover-color);
|
|
}
|
|
|
|
/* User-owned event styling */
|
|
.user-owned-indicator {
|
|
font-size: 0.8rem;
|
|
color: var(--button-success, #28a745);
|
|
margin-left: 10px;
|
|
font-weight: normal;
|
|
}
|
|
|
|
.billboard-card.user-owned {
|
|
border-left: 3px solid var(--button-success, #28a745);
|
|
}
|
|
|
|
/* Disabled edit button */
|
|
.billboard-edit-btn:disabled {
|
|
color: var(--text-tertiary, #6c757d);
|
|
cursor: not-allowed;
|
|
opacity: 0.6;
|
|
}
|
|
|
|
.billboard-edit-btn:disabled:hover {
|
|
background-color: transparent;
|
|
}
|
|
|
|
/* Styles for the HTTP Messages Project Homepage */
|
|
|
|
/* CSS Variables for themes */
|
|
:root {
|
|
/* Light theme (default) */
|
|
--bg-primary: #f8f9fa;
|
|
--bg-secondary: #ffffff;
|
|
--bg-tertiary: #f1f8ff;
|
|
--bg-info: #e2f0fd;
|
|
--text-primary: #212529;
|
|
--text-secondary: #495057;
|
|
--text-tertiary: #6c757d;
|
|
--border-color: #dee2e6;
|
|
--accent-color: #0d6efd;
|
|
--button-primary: #0d6efd;
|
|
--button-hover: #0b5ed7;
|
|
--button-success: #28a745;
|
|
--button-success-hover: #218838;
|
|
--info-border: #0d6efd;
|
|
--code-bg: #f8f9fa;
|
|
--hover-color: rgba(0, 0, 0, 0.05);
|
|
--input-background: #ffffff;
|
|
--button-secondary: #6c757d;
|
|
--button-secondary-hover: #5a6268;
|
|
--background-color: #ffffff;
|
|
}
|
|
|
|
/* Dark theme */
|
|
body[data-theme="dark"] {
|
|
--bg-primary: #121212;
|
|
--bg-secondary: #1e1e1e;
|
|
--bg-tertiary: #252836;
|
|
--bg-info: #1a2634;
|
|
--text-primary: #e0e0e0;
|
|
--text-secondary: #b0b0b0;
|
|
--text-tertiary: #909090;
|
|
--border-color: #333333;
|
|
--accent-color: #3f87ff;
|
|
--button-primary: #3f87ff;
|
|
--button-hover: #2970e3;
|
|
--button-success: #2a9745;
|
|
--button-success-hover: #218838;
|
|
--info-border: #3f87ff;
|
|
--code-bg: #252525;
|
|
--hover-color: rgba(255, 255, 255, 0.1);
|
|
--input-background: #2a2a2a;
|
|
--button-secondary: #444444;
|
|
--button-secondary-hover: #555555;
|
|
--background-color: #1e1e1e;
|
|
}
|
|
|
|
/* General layout */
|
|
body {
|
|
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
margin: 0;
|
|
padding: 0;
|
|
background-color: var(--bg-primary);
|
|
color: var(--text-primary);
|
|
line-height: 1.6;
|
|
transition: all 0.3s ease;
|
|
width: 100%;
|
|
min-height: 100vh;
|
|
max-width: 100vw;
|
|
overflow-x: hidden;
|
|
border: none;
|
|
}
|
|
|
|
/* Content container for wrapping everything except the navbar */
|
|
.content {
|
|
padding: 0 20px;
|
|
width: 100%;
|
|
max-width: 100%;
|
|
box-sizing: border-box;
|
|
border: none;
|
|
background-color: var(--bg-primary);
|
|
}
|
|
|
|
/* Make sure all elements using CSS vars also transition smoothly */
|
|
* {
|
|
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
|
|
}
|
|
|
|
/* Headings */
|
|
h1 {
|
|
color: var(--text-primary);
|
|
margin-bottom: 20px;
|
|
border-bottom: 2px solid var(--border-color);
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
h2 {
|
|
color: var(--text-secondary);
|
|
margin-top: 25px;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
h3 {
|
|
color: var(--text-secondary);
|
|
margin-top: 20px;
|
|
margin-bottom: 10px;
|
|
}
|
|
/* Top Navigation Bar */
|
|
.top-nav {
|
|
background-color: var(--bg-secondary);
|
|
border-bottom: 1px solid var(--border-color);
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
z-index: 1000;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
|
|
height: 50px;
|
|
display: flex;
|
|
width: 100vw;
|
|
max-width: 100%;
|
|
}
|
|
|
|
body {
|
|
padding-top: 70px; /* Added padding to account for fixed navbar */
|
|
overflow-x: hidden; /* Prevent horizontal scrolling */
|
|
}
|
|
|
|
.nav-left {
|
|
display: flex;
|
|
height: 100%;
|
|
margin-left: 20px;
|
|
}
|
|
|
|
.nav-right {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 20px;
|
|
height: 50px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 15px;
|
|
}
|
|
|
|
/* Theme toggle button in the nav bar - aligned with icons */
|
|
.theme-toggle-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: transparent;
|
|
color: var(--text-primary);
|
|
border: none;
|
|
cursor: pointer;
|
|
font-size: 16px;
|
|
transition: all 0.3s ease;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.theme-toggle-btn:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
/* Nuclear reset button in nav bar */
|
|
.nuclear-reset-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background-color: transparent;
|
|
color: var(--text-primary);
|
|
border: none;
|
|
cursor: pointer;
|
|
font-size: 16px;
|
|
transition: all 0.3s ease;
|
|
padding: 0;
|
|
margin: 0 10px 0 0;
|
|
}
|
|
|
|
.nuclear-reset-btn:hover {
|
|
color: #e74c3c;
|
|
transform: scale(1.2);
|
|
}
|
|
|
|
/* Ensure icons are properly sized */
|
|
#themeIcon {
|
|
font-size: 18px;
|
|
}
|
|
|
|
/* Icon styling */
|
|
.nav-icon {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.icon {
|
|
font-size: 18px;
|
|
}
|
|
|
|
/* Info box */
|
|
.info-box {
|
|
background-color: var(--bg-info);
|
|
border-left: 4px solid var(--info-border);
|
|
padding: 15px 20px;
|
|
margin-bottom: 25px;
|
|
border-radius: 0 4px 4px 0;
|
|
}
|
|
|
|
/* Sections */
|
|
.section {
|
|
margin-bottom: 40px;
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
/* Architecture diagram */
|
|
.diagram-container {
|
|
margin: 30px 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.diagram-container img {
|
|
max-width: 100%;
|
|
height: auto;
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.diagram-caption {
|
|
margin-top: 10px;
|
|
font-style: italic;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
/* Code blocks */
|
|
pre {
|
|
background-color: var(--code-bg);
|
|
padding: 15px;
|
|
border-radius: 4px;
|
|
overflow-x: auto;
|
|
font-family: 'Courier New', Courier, monospace;
|
|
font-size: 14px;
|
|
line-height: 1.4;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
code {
|
|
font-family: 'Courier New', Courier, monospace;
|
|
background-color: var(--code-bg);
|
|
padding: 2px 5px;
|
|
border-radius: 3px;
|
|
font-size: 0.9em;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
/* Buttons */
|
|
.button {
|
|
display: inline-block;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
text-decoration: none;
|
|
padding: 10px 20px;
|
|
border-radius: 4px;
|
|
font-weight: bold;
|
|
transition: background-color 0.2s;
|
|
text-align: center;
|
|
margin: 10px 5px;
|
|
}
|
|
|
|
.button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.button-success {
|
|
background-color: var(--button-success);
|
|
}
|
|
|
|
.button-success:hover {
|
|
background-color: var(--button-success-hover);
|
|
}
|
|
|
|
/* Features grid */
|
|
.features-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
|
|
gap: 20px;
|
|
margin: 30px 0;
|
|
}
|
|
|
|
.feature-card {
|
|
padding: 20px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.feature-card h3 {
|
|
color: var(--accent-color);
|
|
margin-top: 0;
|
|
}
|
|
|
|
/* Content */
|
|
.content {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
/* Footer */
|
|
footer {
|
|
margin-top: 50px;
|
|
padding-top: 20px;
|
|
border-top: 1px solid var(--border-color);
|
|
text-align: center;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
/* Responsive adjustments */
|
|
@media (max-width: 768px) {
|
|
body {
|
|
padding-top: 45px;
|
|
padding-left: 10px;
|
|
padding-right: 10px;
|
|
}
|
|
|
|
.features-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.top-nav {
|
|
height: 45px;
|
|
}
|
|
|
|
.nav-left {
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.nav-right {
|
|
right: 5px;
|
|
height: 45px;
|
|
gap: 10px;
|
|
}
|
|
|
|
.nav-link {
|
|
padding: 0 15px;
|
|
}
|
|
|
|
.content {
|
|
padding: 10px 0;
|
|
}
|
|
}
|
|
|
|
/* Navigation Links - Tab Style */
|
|
.nav-link {
|
|
text-decoration: none;
|
|
color: var(--text-secondary);
|
|
font-weight: 600;
|
|
transition: all 0.3s ease;
|
|
height: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
padding: 0 25px;
|
|
position: relative;
|
|
}
|
|
|
|
.nav-link:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.nav-link.active {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.nav-link.active::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 3px;
|
|
background-color: var(--accent-color);
|
|
}
|
|
|
|
/* Icon navigation links */
|
|
.nav-icon {
|
|
padding: 0 10px;
|
|
}
|
|
|
|
/* Tab Navigation (legacy) */
|
|
.tab-navigation {
|
|
margin-bottom: 25px;
|
|
border-bottom: 2px solid var(--border-color);
|
|
}
|
|
|
|
/* Server match checkmark */
|
|
.server-match {
|
|
color: var(--color-success);
|
|
font-weight: bold;
|
|
margin-left: 4px;
|
|
}
|
|
|
|
.tab-buttons {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin-bottom: -2px;
|
|
}
|
|
|
|
.tab-btn {
|
|
padding: 10px 20px;
|
|
margin-right: 10px;
|
|
border: none;
|
|
background: none;
|
|
border-bottom: 2px solid transparent;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
color: var(--text-secondary);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
/* Server input */
|
|
.server-input-container {
|
|
display: flex;
|
|
margin-top: 5px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.server-input {
|
|
flex: 1;
|
|
padding: 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px 0 0 4px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.server-search-button {
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 0 4px 4px 0;
|
|
padding: 8px 15px;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
transition: background-color 0.2s;
|
|
}
|
|
.server-search-button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.server-refresh-button {
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-secondary);
|
|
border: none;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
transition: all 0.2s;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.server-refresh-button:hover {
|
|
background-color: var(--bg-info);
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.server-search-result {
|
|
margin-top: 10px;
|
|
padding: 10px;
|
|
background-color: var(--bg-secondary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
/* Server selection styles */
|
|
.server-select-button {
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px 0 0 4px;
|
|
padding: 8px 15px;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.server-select-button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.server-selection-container {
|
|
margin-top: 10px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
background-color: var(--bg-secondary);
|
|
max-height: 400px;
|
|
overflow-y: auto;
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
/* Tab content visibility control */
|
|
.tab-content {
|
|
display: none;
|
|
}
|
|
|
|
.tab-content.active {
|
|
display: block;
|
|
}
|
|
|
|
/* HTTP Response Modal */
|
|
.http-response-modal {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: rgba(0, 0, 0, 0.7);
|
|
z-index: 1000;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.http-response-container {
|
|
background-color: var(--bg-primary);
|
|
border-radius: 8px;
|
|
width: 80%;
|
|
max-width: 800px;
|
|
max-height: 90vh;
|
|
overflow: hidden;
|
|
display: flex;
|
|
flex-direction: column;
|
|
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
|
|
}
|
|
|
|
.http-response-header {
|
|
background-color: var(--bg-secondary);
|
|
padding: 15px 20px;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
|
|
.http-response-header h3 {
|
|
margin: 0;
|
|
font-size: 1.2rem;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.http-response-tabs {
|
|
display: flex;
|
|
background-color: var(--bg-secondary);
|
|
border-bottom: 1px solid var(--border-color);
|
|
padding: 0 10px;
|
|
}
|
|
|
|
.http-response-content {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: 15px;
|
|
}
|
|
|
|
.close-modal-btn {
|
|
background: none;
|
|
border: none;
|
|
font-size: 1.5rem;
|
|
cursor: pointer;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.close-modal-btn:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.selection-header {
|
|
padding: 10px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.server-search-input {
|
|
flex: 1;
|
|
padding: 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.close-selection-btn {
|
|
background: none;
|
|
border: none;
|
|
font-size: 20px;
|
|
color: var(--text-secondary);
|
|
cursor: pointer;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
.close-selection-btn:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.server-list {
|
|
padding: 10px;
|
|
}
|
|
|
|
.server-list-loading, .server-list-empty {
|
|
text-align: center;
|
|
padding: 20px;
|
|
color: var(--text-tertiary);
|
|
font-style: italic;
|
|
}
|
|
|
|
.server-list-empty {
|
|
font-style: normal;
|
|
line-height: 1.5;
|
|
color: var(--text-secondary);
|
|
border: 1px dashed var(--border-color);
|
|
border-radius: 4px;
|
|
margin: 10px;
|
|
background-color: var(--bg-tertiary);
|
|
}
|
|
|
|
.server-list-empty p {
|
|
margin: 10px 0;
|
|
}
|
|
|
|
.server-list-empty p:first-child {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.server-item {
|
|
padding: 10px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
display: flex;
|
|
align-items: center;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.server-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.server-item:hover {
|
|
background-color: var(--bg-tertiary);
|
|
}
|
|
|
|
.operator-avatar {
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
margin-right: 15px;
|
|
flex-shrink: 0;
|
|
background-color: var(--bg-tertiary);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.operator-avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.operator-avatar-placeholder {
|
|
font-size: 20px;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.server-details {
|
|
flex: 1;
|
|
}
|
|
|
|
.server-name {
|
|
font-weight: bold;
|
|
margin-bottom: 3px;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.server-description {
|
|
font-size: 13px;
|
|
color: var(--text-secondary);
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.operator-pubkey {
|
|
font-size: 12px;
|
|
color: var(--text-tertiary);
|
|
font-family: monospace;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.server-pubkey {
|
|
font-size: 12px;
|
|
color: var(--accent-color);
|
|
font-family: monospace;
|
|
}
|
|
|
|
.server-expiry {
|
|
font-size: 11px;
|
|
color: var(--text-tertiary);
|
|
margin-top: 2px;
|
|
}
|
|
|
|
/* HTTP Request textarea */
|
|
#httpRequest {
|
|
width: 100%;
|
|
min-height: 150px;
|
|
padding: 10px;
|
|
font-family: 'Courier New', Courier, monospace;
|
|
font-size: 14px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
background-color: var(--bg-secondary);
|
|
color: var(--text-primary);
|
|
resize: vertical;
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
/* Convert button */
|
|
#convertButton {
|
|
display: inline-block;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
padding: 10px 20px;
|
|
font-weight: bold;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
#convertButton:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.tab-btn:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.tab-btn.active {
|
|
color: var(--accent-color);
|
|
border-bottom: 2px solid var(--accent-color);
|
|
}
|
|
|
|
/* Login container */
|
|
.login-container {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
margin-right: 20px;
|
|
}
|
|
|
|
#login-status {
|
|
font-size: 0.9rem;
|
|
padding: 4px 8px;
|
|
border-radius: 4px;
|
|
background-color: var(--background-secondary);
|
|
}
|
|
|
|
.auth-button {
|
|
padding: 4px 10px;
|
|
border-radius: 4px;
|
|
border: 1px solid var(--border-color);
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
cursor: pointer;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.auth-button:hover {
|
|
background-color: var(--button-primary-hover);
|
|
}
|
|
|
|
#logout-button {
|
|
background-color: var(--button-secondary);
|
|
}
|
|
|
|
#logout-button:hover {
|
|
background-color: var(--button-secondary-hover);
|
|
}
|
|
|
|
/* Hidden elements */
|
|
.hidden {
|
|
display: none !important;
|
|
}
|
|
|
|
/* Receiver page styles - Enhanced */
|
|
.relay-connection {
|
|
margin-bottom: 25px;
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 18px;
|
|
border-radius: 10px;
|
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
/* Server info styles - Enhanced */
|
|
.server-info-container {
|
|
margin-bottom: 15px;
|
|
padding-bottom: 18px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.server-npub-container {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
padding: 5px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 6px;
|
|
}
|
|
|
|
/* Server section styles - Enhanced */
|
|
.server-section {
|
|
margin-bottom: 25px;
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 10px;
|
|
border: 1px solid var(--border-color);
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 18px;
|
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.08);
|
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.server-section:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.12);
|
|
}
|
|
|
|
.server-npub-container label {
|
|
font-weight: 600;
|
|
min-width: 100px;
|
|
}
|
|
|
|
.server-npub-input {
|
|
flex: 1;
|
|
padding: 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-secondary);
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 14px;
|
|
min-width: 250px;
|
|
}
|
|
|
|
.toggle-format-btn, .copy-btn {
|
|
padding: 8px 12px;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.toggle-format-btn {
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-secondary);
|
|
border: 1px solid var(--border-color);
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.toggle-format-btn:hover {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
.copy-btn:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.copy-btn.copied {
|
|
background-color: var(--button-success);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.format-indicator {
|
|
margin-top: 5px;
|
|
font-size: 12px;
|
|
color: var(--text-tertiary);
|
|
text-align: right;
|
|
padding-right: 5px;
|
|
}
|
|
|
|
.relay-input-container {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 15px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 8px;
|
|
padding: 12px 15px;
|
|
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
.relay-input-container label {
|
|
margin-right: 15px;
|
|
min-width: 85px;
|
|
font-weight: 600;
|
|
color: var(--text-secondary);
|
|
}
|
|
|
|
.relay-input-container input {
|
|
flex: 1;
|
|
margin-right: 15px;
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 6px;
|
|
background-color: var(--bg-secondary);
|
|
font-size: 0.95em;
|
|
transition: border-color 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.relay-input-container input:focus {
|
|
border-color: var(--accent-color);
|
|
box-shadow: 0 0 0 2px rgba(var(--accent-color-rgb, 13, 110, 253), 0.25);
|
|
outline: none;
|
|
}
|
|
|
|
.relay-connect-button {
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 6px;
|
|
padding: 10px 18px;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
transition: all 0.2s ease;
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.relay-connect-button:hover {
|
|
background-color: var(--button-hover);
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.15);
|
|
}
|
|
|
|
.relay-status {
|
|
margin-top: 12px;
|
|
padding: 8px 15px;
|
|
border-radius: 6px;
|
|
display: inline-block;
|
|
font-weight: 500;
|
|
text-align: center;
|
|
transition: all 0.3s ease;
|
|
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
}
|
|
|
|
.relay-status.connected {
|
|
background-color: rgba(40, 167, 69, 0.15);
|
|
color: var(--button-success);
|
|
border: 1px solid var(--button-success);
|
|
}
|
|
|
|
.relay-status.connecting {
|
|
background-color: rgba(255, 193, 7, 0.15);
|
|
color: #ffc107;
|
|
border: 1px solid #ffc107;
|
|
}
|
|
|
|
.relay-status.error {
|
|
background-color: rgba(231, 76, 60, 0.15);
|
|
color: #e74c3c;
|
|
border: 1px solid #e74c3c;
|
|
}
|
|
|
|
.relay-status.notice {
|
|
background-color: var(--bg-info);
|
|
color: var(--accent-color);
|
|
border: 1px solid var(--accent-color);
|
|
}
|
|
|
|
.subscription-settings {
|
|
margin-bottom: 20px;
|
|
padding: 15px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.filter-options {
|
|
margin: 15px 0;
|
|
padding: 12px 15px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 8px;
|
|
display: flex;
|
|
align-items: center;
|
|
border: 1px solid var(--border-color);
|
|
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05);
|
|
}
|
|
|
|
.filter-options label {
|
|
margin-right: 15px;
|
|
display: inline-block;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
transition: color 0.2s ease;
|
|
}
|
|
|
|
.filter-options label:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.filter-checkbox {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
}
|
|
|
|
.filter-checkbox input[type="checkbox"] {
|
|
margin-right: 5px;
|
|
width: 18px;
|
|
height: 18px;
|
|
accent-color: var(--accent-color);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.key-input {
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.key-input input {
|
|
width: 100%;
|
|
padding: 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
.help-text {
|
|
font-size: 12px;
|
|
color: var(--text-tertiary);
|
|
margin-top: 5px;
|
|
display: block;
|
|
}
|
|
|
|
.start-subscription-button, .stop-subscription-button {
|
|
padding: 8px 15px;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.start-subscription-button {
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
}
|
|
|
|
.start-subscription-button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.stop-subscription-button {
|
|
background-color: #dc3545;
|
|
color: white;
|
|
}
|
|
|
|
.stop-subscription-button:hover {
|
|
background-color: #c82333;
|
|
}
|
|
|
|
/* Profile page styles */
|
|
.profile-container {
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.profile-section {
|
|
margin-bottom: 20px;
|
|
padding: 15px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.connection-status {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
}
|
|
|
|
.connection-status-indicator {
|
|
padding: 10px;
|
|
border-radius: 4px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.connection-status-indicator.connected {
|
|
background-color: var(--bg-info);
|
|
color: var(--button-success);
|
|
border: 1px solid var(--button-success);
|
|
}
|
|
|
|
.connection-status-indicator.not-connected {
|
|
background-color: var(--bg-info);
|
|
color: #e74c3c;
|
|
border: 1px solid #e74c3c;
|
|
}
|
|
|
|
.connect-button {
|
|
padding: 10px 15px;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.connect-button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.manual-entry {
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.manual-entry summary {
|
|
cursor: pointer;
|
|
color: var(--accent-color);
|
|
font-weight: 500;
|
|
}
|
|
|
|
.manual-key-entry {
|
|
margin-top: 10px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.manual-key-entry input {
|
|
padding: 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.manual-key-entry button {
|
|
align-self: flex-start;
|
|
padding: 8px 15px;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.profile-card {
|
|
margin-top: 20px;
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.profile-header {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.profile-picture {
|
|
width: 80px;
|
|
height: 80px;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
margin-right: 20px;
|
|
background-color: var(--bg-tertiary);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.profile-picture img {
|
|
width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
.profile-placeholder {
|
|
font-size: 36px;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.profile-basic-info {
|
|
flex: 1;
|
|
}
|
|
|
|
.profile-basic-info h3 {
|
|
margin: 0 0 10px 0;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.profile-nip05 {
|
|
color: var(--accent-color);
|
|
font-size: 14px;
|
|
}
|
|
|
|
.profile-details {
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.profile-detail-item {
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.profile-value {
|
|
margin-top: 5px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.profile-key {
|
|
font-family: 'Courier New', monospace;
|
|
background-color: var(--bg-tertiary);
|
|
padding: 5px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.profile-footer {
|
|
display: flex;
|
|
gap: 10px;
|
|
}
|
|
|
|
.refresh-profile-btn, .copy-npub-btn {
|
|
padding: 8px 15px;
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-secondary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.refresh-profile-btn:hover, .copy-npub-btn:hover {
|
|
background-color: var(--bg-primary);
|
|
}
|
|
|
|
.profile-stats {
|
|
margin-top: 20px;
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
}
|
|
|
|
.stats-container {
|
|
display: flex;
|
|
justify-content: space-around;
|
|
margin-top: 15px;
|
|
}
|
|
|
|
.stat-item {
|
|
text-align: center;
|
|
flex: 1;
|
|
}
|
|
|
|
.stat-value {
|
|
font-size: 24px;
|
|
font-weight: bold;
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.stat-label {
|
|
margin-top: 5px;
|
|
color: var(--text-secondary);
|
|
font-size: 14px;
|
|
}
|
|
|
|
.qr-section {
|
|
margin-top: 20px;
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
text-align: center;
|
|
}
|
|
|
|
.npub-qr-code {
|
|
width: 200px;
|
|
height: 200px;
|
|
margin: 0 auto;
|
|
background-color: white;
|
|
padding: 10px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.qr-caption {
|
|
margin-top: 10px;
|
|
color: var(--text-tertiary);
|
|
font-size: 14px;
|
|
font-style: italic;
|
|
}
|
|
|
|
.stop-subscription-button:disabled, .start-subscription-button:disabled {
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-tertiary);
|
|
cursor: not-allowed;
|
|
}
|
|
/* Main App Layout with sidebar */
|
|
.app-layout {
|
|
display: flex;
|
|
gap: 0;
|
|
margin: 0;
|
|
width: 100%;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
border: 1px solid var(--border-color);
|
|
max-width: 100%;
|
|
}
|
|
|
|
/* Sidebar for 21120 requests */
|
|
.requests-sidebar {
|
|
flex: 0 0 300px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
border-right: 1px solid var(--border-color);
|
|
border-radius: 0;
|
|
background-color: var(--bg-secondary);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.sidebar-header {
|
|
padding: 15px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
background-color: var(--bg-tertiary);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.sidebar-header h3 {
|
|
margin: 0;
|
|
font-size: 16px;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.sidebar-controls {
|
|
display: flex;
|
|
gap: 10px;
|
|
}
|
|
|
|
.icon-button {
|
|
background: none;
|
|
border: none;
|
|
font-size: 16px;
|
|
cursor: pointer;
|
|
color: var(--text-secondary);
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.icon-button:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
/* Main content area */
|
|
.main-content {
|
|
flex: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 0 20px;
|
|
gap: 20px;
|
|
overflow-y: auto;
|
|
padding-right: 10px;
|
|
}
|
|
|
|
/* Related responses section */
|
|
.related-responses-section {
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 8px;
|
|
background-color: var(--bg-secondary);
|
|
overflow: hidden;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.related-responses-section h3 {
|
|
margin: 0;
|
|
padding: 15px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
background-color: var(--bg-tertiary);
|
|
font-size: 16px;
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.responses-list {
|
|
padding: 15px;
|
|
max-height: 300px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
/* Events list styling - updated for sidebar */
|
|
.events-list {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
background-color: var(--bg-secondary);
|
|
}
|
|
|
|
/* When events list is in the requests-only mode */
|
|
.events-list.requests-only .event-item:not([data-kind="21120"]) {
|
|
display: none;
|
|
}
|
|
|
|
.events-list.requests-only {
|
|
max-height: none; /* Allow it to fill the sidebar */
|
|
}
|
|
|
|
.event-item {
|
|
padding: 15px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.event-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.event-item:hover {
|
|
background-color: var(--bg-tertiary);
|
|
}
|
|
|
|
.event-item.selected {
|
|
background-color: var(--bg-tertiary);
|
|
border-left: 4px solid var(--accent-color);
|
|
}
|
|
|
|
.event-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
margin-bottom: 8px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.event-id {
|
|
font-weight: bold;
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.event-time {
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.event-summary {
|
|
font-size: 13px;
|
|
margin-bottom: 10px;
|
|
color: var(--text-secondary);
|
|
line-height: 1.4;
|
|
}
|
|
|
|
/* Related events styling */
|
|
.related-indicator {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-left: 8px;
|
|
color: var(--accent-color);
|
|
font-size: 16px;
|
|
width: 24px;
|
|
height: 24px;
|
|
border-radius: 50%;
|
|
background-color: var(--bg-tertiary);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.event-item:hover .related-indicator {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
transform: scale(1.1);
|
|
}
|
|
|
|
.related-link-container {
|
|
margin-top: 8px;
|
|
padding: 5px 0;
|
|
}
|
|
|
|
.request-link {
|
|
display: inline-block;
|
|
color: var(--accent-color);
|
|
font-size: 12px;
|
|
text-decoration: none;
|
|
padding: 3px 8px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.request-link:hover {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
.responses-container {
|
|
margin-top: 8px;
|
|
padding: 5px 0;
|
|
position: relative;
|
|
}
|
|
|
|
.responses-indicator {
|
|
display: inline-block;
|
|
position: relative;
|
|
}
|
|
|
|
.responses-count {
|
|
display: inline-block;
|
|
color: var(--button-success);
|
|
font-size: 12px;
|
|
padding: 3px 8px;
|
|
border: 1px solid var(--button-success);
|
|
border-radius: 4px;
|
|
background-color: rgba(40, 167, 69, 0.1);
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.responses-count:hover {
|
|
background-color: var(--button-success);
|
|
color: white;
|
|
}
|
|
|
|
.responses-dropdown {
|
|
display: none;
|
|
position: absolute;
|
|
top: 100%;
|
|
left: 0;
|
|
width: 220px;
|
|
max-height: 200px;
|
|
overflow-y: auto;
|
|
background-color: var(--bg-secondary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
|
|
z-index: 100;
|
|
padding: 8px 0;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
.responses-indicator:hover .responses-dropdown {
|
|
display: block;
|
|
}
|
|
|
|
.response-link {
|
|
display: block;
|
|
padding: 6px 12px;
|
|
color: var(--text-primary);
|
|
text-decoration: none;
|
|
font-size: 12px;
|
|
transition: background-color 0.2s ease;
|
|
}
|
|
|
|
.response-link:hover {
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.event-actions {
|
|
text-align: right;
|
|
}
|
|
|
|
.view-details-btn {
|
|
font-size: 12px;
|
|
padding: 4px 8px;
|
|
background-color: var(--bg-tertiary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
color: var(--text-secondary);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.view-details-btn:hover {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
.event-details {
|
|
padding: 20px;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
min-height: 600px;
|
|
}
|
|
|
|
.event-detail-item {
|
|
margin-bottom: 15px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.event-detail-item strong {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.event-detail-item ul {
|
|
padding-left: 20px;
|
|
margin-top: 8px;
|
|
}
|
|
|
|
.event-content {
|
|
margin-top: 10px;
|
|
padding: 15px;
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
max-height: 300px;
|
|
overflow-y: auto;
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 13px;
|
|
line-height: 1.4;
|
|
white-space: pre-wrap;
|
|
}
|
|
|
|
.empty-state {
|
|
padding: 20px;
|
|
text-align: center;
|
|
color: var(--text-tertiary);
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Event output container and copy button styles */
|
|
.event-output-container {
|
|
position: relative;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.copy-button {
|
|
position: absolute;
|
|
top: 10px;
|
|
right: 10px;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
padding: 5px 10px;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
transition: background-color 0.3s;
|
|
z-index: 10;
|
|
}
|
|
|
|
.copy-button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
/* Enhanced Event Details Styling */
|
|
.event-detail-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
margin-bottom: 20px;
|
|
padding-bottom: 10px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
|
|
.event-detail-header h3 {
|
|
margin: 0;
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.event-timestamp {
|
|
color: var(--text-tertiary);
|
|
font-size: 14px;
|
|
}
|
|
|
|
.event-detail-metadata {
|
|
margin-bottom: 20px;
|
|
padding: 15px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.metadata-value {
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 13px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.event-tags {
|
|
max-height: 150px;
|
|
overflow-y: auto;
|
|
}
|
|
.event-detail-content {
|
|
margin-top: 20px;
|
|
}
|
|
|
|
/* Event detail tabs */
|
|
.event-detail-tabs {
|
|
display: flex;
|
|
border-bottom: 2px solid var(--border-color);
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.event-detail-tabs .tab-btn {
|
|
padding: 8px 16px;
|
|
background: none;
|
|
border: none;
|
|
border-bottom: 2px solid transparent;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
color: var(--text-secondary);
|
|
margin-right: 10px;
|
|
margin-bottom: -2px;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.event-detail-tabs .tab-btn:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.event-detail-tabs .tab-btn.active {
|
|
color: var(--accent-color);
|
|
border-bottom: 2px solid var(--accent-color);
|
|
}
|
|
|
|
.event-detail-content .tab-content {
|
|
display: none;
|
|
}
|
|
|
|
.event-detail-content .tab-content.active {
|
|
display: block;
|
|
}
|
|
|
|
.json-content {
|
|
margin-top: 10px;
|
|
padding: 20px;
|
|
border-radius: 6px;
|
|
background-color: var(--bg-tertiary);
|
|
min-height: 200px;
|
|
max-height: 400px;
|
|
overflow-y: auto;
|
|
font-family: 'Consolas', 'Courier New', monospace;
|
|
font-size: 14px;
|
|
line-height: 1.5;
|
|
white-space: pre-wrap;
|
|
border-left: 4px solid var(--accent-color);
|
|
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* Syntax highlighting for JSON */
|
|
.json-string {
|
|
color: #25c2a0;
|
|
}
|
|
|
|
.json-number {
|
|
color: #f5a623;
|
|
}
|
|
|
|
.json-boolean {
|
|
color: #7e57c2;
|
|
}
|
|
|
|
.json-null {
|
|
color: #bc4749;
|
|
}
|
|
|
|
.json-key {
|
|
color: #0088cc;
|
|
font-weight: 500;
|
|
}
|
|
|
|
/* Event debug output for 31120 events */
|
|
.event-debug-output {
|
|
margin: 15px 0;
|
|
padding: 18px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 10px;
|
|
border: 1px solid var(--accent-color);
|
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
|
|
}
|
|
|
|
.event-debug-output h3 {
|
|
color: var(--accent-color);
|
|
margin-top: 0;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.event-debug-output pre {
|
|
max-height: 300px;
|
|
overflow-y: auto;
|
|
background-color: var(--bg-secondary);
|
|
padding: 10px;
|
|
border-radius: 4px;
|
|
border-left: 4px solid var(--accent-color);
|
|
margin: 0;
|
|
}
|
|
/* Notice for missing server registration */
|
|
.info-notice {
|
|
margin: 15px 0;
|
|
padding: 15px;
|
|
background-color: var(--bg-info);
|
|
border-radius: 8px;
|
|
border: 1px solid var(--border-color);
|
|
color: var(--text-secondary);
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.info-notice p {
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.info-notice p:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.info-notice a {
|
|
color: var(--accent-color);
|
|
text-decoration: underline;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.info-notice a:hover {
|
|
text-decoration: none;
|
|
}
|
|
|
|
.decryption-status {
|
|
margin-top: 10px;
|
|
padding: 8px;
|
|
border-radius: 4px;
|
|
background-color: var(--bg-info);
|
|
color: var(--text-secondary);
|
|
border: 1px solid var(--border-color);
|
|
text-align: center;
|
|
font-style: italic;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.decryption-status.success {
|
|
background-color: var(--bg-info);
|
|
color: var(--button-success);
|
|
border: 1px solid var(--button-success);
|
|
}
|
|
|
|
.decryption-status.error {
|
|
background-color: var(--bg-info);
|
|
color: #e74c3c;
|
|
border: 1px solid #e74c3c;
|
|
}
|
|
|
|
.content-header {
|
|
margin-bottom: 10px;
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.decrypted-badge {
|
|
background-color: var(--button-success);
|
|
color: white;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
margin-left: 8px;
|
|
}
|
|
|
|
/* Content row for side-by-side display */
|
|
.content-row {
|
|
display: flex;
|
|
gap: 20px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.event-metadata-column {
|
|
flex: 0 0 250px;
|
|
background-color: var(--bg-tertiary);
|
|
border-radius: 6px;
|
|
padding: 15px;
|
|
}
|
|
|
|
.http-content-column {
|
|
flex: 1;
|
|
min-width: 300px;
|
|
}
|
|
|
|
.metadata-content {
|
|
margin-top: 10px;
|
|
line-height: 1.6;
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 13px;
|
|
word-break: break-all;
|
|
}
|
|
|
|
.http-content {
|
|
margin-top: 10px;
|
|
padding: 15px;
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
min-height: 200px;
|
|
max-height: 400px;
|
|
overflow-y: auto;
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 13px;
|
|
line-height: 1.4;
|
|
white-space: pre-wrap;
|
|
border-left: 4px solid var(--accent-color);
|
|
}
|
|
|
|
.raw-content-column {
|
|
flex: 1 0 100%;
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.raw-content {
|
|
margin-top: 10px;
|
|
padding: 15px;
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
max-height: 200px;
|
|
overflow-y: auto;
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 12px;
|
|
line-height: 1.4;
|
|
white-space: pre-wrap;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.toggle-raw-btn {
|
|
float: right;
|
|
font-size: 12px;
|
|
padding: 2px 8px;
|
|
background-color: var(--bg-tertiary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.toggle-raw-btn:hover {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
.event-type {
|
|
display: inline-block;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
font-size: 12px;
|
|
font-weight: bold;
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.event-item:hover .event-type {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
.copy-button:active {
|
|
background-color: var(--accent-color);
|
|
}
|
|
|
|
.copy-button.copied {
|
|
background-color: var(--button-success);
|
|
}
|
|
/* Dark mode is already handled by CSS variables */
|
|
|
|
/* Responsive adjustments for the app layout */
|
|
@media (max-width: 768px) {
|
|
.app-layout {
|
|
flex-direction: column;
|
|
height: auto;
|
|
}
|
|
|
|
.requests-sidebar {
|
|
flex: auto;
|
|
width: 100%;
|
|
height: 300px;
|
|
}
|
|
|
|
.main-content {
|
|
width: 100%;
|
|
}
|
|
|
|
.event-details {
|
|
min-height: 400px;
|
|
}
|
|
|
|
.responses-list {
|
|
max-height: 200px;
|
|
}
|
|
}
|
|
|
|
/* Clear events button */
|
|
.event-controls {
|
|
margin-bottom: 10px;
|
|
text-align: right;
|
|
}
|
|
|
|
.clear-events-button {
|
|
padding: 8px 15px;
|
|
background-color: #dc3545;
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.clear-events-button:hover {
|
|
background-color: #c82333;
|
|
}
|
|
|
|
/* HTTP Content Header for the Execute button */
|
|
.http-content-header {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.execute-http-request-btn {
|
|
padding: 8px 15px;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.execute-http-request-btn:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.execute-http-request-btn:disabled {
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-tertiary);
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* HTTP Response Modal */
|
|
.http-response-modal {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: rgba(0, 0, 0, 0.6);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
z-index: 1000;
|
|
}
|
|
|
|
.http-response-container {
|
|
width: 80%;
|
|
max-width: 800px;
|
|
max-height: 80vh;
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 8px;
|
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.http-response-header {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
padding: 15px 20px;
|
|
background-color: var(--bg-tertiary);
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
|
|
.http-response-header h3 {
|
|
margin: 0;
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.close-modal-btn {
|
|
background: none;
|
|
border: none;
|
|
font-size: 24px;
|
|
cursor: pointer;
|
|
color: var(--text-secondary);
|
|
transition: color 0.2s;
|
|
}
|
|
|
|
.close-modal-btn:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.http-response-content {
|
|
padding: 20px;
|
|
overflow-y: auto;
|
|
max-height: calc(80vh - 60px);
|
|
}
|
|
|
|
.http-response-content pre {
|
|
margin: 0;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
}
|
|
|
|
/* HTTP Content Formatting Styles */
|
|
.http-formatted-container {
|
|
background-color: var(--bg-secondary);
|
|
border-radius: 6px;
|
|
overflow: hidden;
|
|
font-family: monospace;
|
|
border: 1px solid var(--border-color);
|
|
margin-bottom: 15px;
|
|
}
|
|
|
|
.http-request-line, .http-status-line {
|
|
padding: 10px;
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
font-weight: bold;
|
|
white-space: pre-wrap;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.http-headers {
|
|
padding: 10px;
|
|
border-bottom: 1px solid var(--border-color);
|
|
background-color: var(--bg-secondary);
|
|
}
|
|
|
|
.http-header {
|
|
display: flex;
|
|
margin-bottom: 5px;
|
|
border-bottom: 1px dashed var(--border-color);
|
|
padding-bottom: 5px;
|
|
}
|
|
|
|
.http-header:last-child {
|
|
border-bottom: none;
|
|
margin-bottom: 0;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.http-header-name {
|
|
color: var(--accent-color);
|
|
font-weight: bold;
|
|
margin-right: 8px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.http-header-value {
|
|
word-break: break-all;
|
|
}
|
|
|
|
.http-body-label {
|
|
padding: 10px;
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.http-body {
|
|
padding: 10px;
|
|
background-color: var(--bg-secondary);
|
|
white-space: pre-wrap;
|
|
overflow-x: auto;
|
|
max-height: 400px;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.http-body-line {
|
|
margin-bottom: 5px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
/* Toast notification styles */
|
|
.toast-notification {
|
|
position: fixed;
|
|
bottom: 20px;
|
|
right: 20px;
|
|
max-width: 350px;
|
|
background-color: var(--bg-secondary);
|
|
color: var(--text-primary);
|
|
border-left: 4px solid var(--accent-color);
|
|
border-radius: 4px;
|
|
box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
|
|
transform: translateY(100px);
|
|
opacity: 0;
|
|
transition: transform 0.3s ease, opacity 0.3s ease;
|
|
z-index: 2000;
|
|
}
|
|
|
|
.toast-notification.show {
|
|
transform: translateY(0);
|
|
opacity: 1;
|
|
}
|
|
|
|
.toast-notification.success {
|
|
border-left-color: var(--button-success);
|
|
}
|
|
|
|
.toast-notification.error {
|
|
border-left-color: #e74c3c;
|
|
}
|
|
|
|
.toast-notification.info {
|
|
border-left-color: var(--accent-color);
|
|
}
|
|
|
|
.toast-content {
|
|
padding: 12px 15px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.toast-message {
|
|
flex: 1;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.toast-close {
|
|
background: none;
|
|
border: none;
|
|
color: var(--text-secondary);
|
|
font-size: 1.5rem;
|
|
cursor: pointer;
|
|
line-height: 1;
|
|
}
|
|
|
|
.toast-close:hover {
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
/* Response indicator for 21121 events */
|
|
.response-indicator {
|
|
margin-top: 5px;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.response-available {
|
|
font-size: 0.8rem;
|
|
color: var(--button-success);
|
|
background-color: rgba(40, 167, 69, 0.1);
|
|
padding: 2px 8px;
|
|
border-radius: 4px;
|
|
border: 1px solid var(--button-success);
|
|
}
|
|
|
|
/* Tab style updates for HTTP content display */
|
|
.tab-btn[data-tab="raw-http"],
|
|
.tab-btn[data-tab="formatted-http"] {
|
|
font-size: 0.85rem;
|
|
}
|
|
|
|
.tab-btn[data-tab="formatted-http"].active {
|
|
background-color: var(--accent-color);
|
|
color: white;
|
|
}
|
|
|
|
.no-content {
|
|
padding: 20px;
|
|
text-align: center;
|
|
color: var(--text-tertiary);
|
|
font-style: italic;
|
|
}
|
|
|
|
/* Event item with avatar layout */
|
|
.event-item-container {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 12px;
|
|
}
|
|
|
|
.event-avatar {
|
|
flex-shrink: 0;
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
background-color: var(--bg-tertiary);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
.event-content-wrapper {
|
|
flex: 1;
|
|
min-width: 0; /* Prevent flex item from overflowing */
|
|
}
|
|
|
|
.avatar-placeholder {
|
|
font-size: 20px;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.avatar-img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
/* Tab Interface Styles */
|
|
.tabs {
|
|
display: flex;
|
|
border-bottom: 2px solid var(--border-color);
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.tab-button {
|
|
padding: 10px 20px;
|
|
background: none;
|
|
border: none;
|
|
border-bottom: 2px solid transparent;
|
|
cursor: pointer;
|
|
font-weight: 500;
|
|
color: var(--text-secondary);
|
|
margin-right: 10px;
|
|
margin-bottom: -2px;
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.tab-button:hover {
|
|
color: var(--accent-color);
|
|
}
|
|
|
|
.tab-button.active {
|
|
color: var(--accent-color);
|
|
border-bottom: 2px solid var(--accent-color);
|
|
}
|
|
|
|
/* Tab content sections */
|
|
#relay-connection-section,
|
|
#qr-code-scanner-section,
|
|
#raw-event-input-section {
|
|
display: none;
|
|
margin-top: 20px;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
#relay-connection-section.active,
|
|
#qr-code-scanner-section.active,
|
|
#raw-event-input-section.active {
|
|
display: block;
|
|
}
|
|
|
|
/* QR Scanner Styles */
|
|
.qr-scanner-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 15px;
|
|
}
|
|
|
|
.qr-viewport {
|
|
width: 100%;
|
|
max-width: 500px;
|
|
height: 300px;
|
|
position: relative;
|
|
overflow: hidden;
|
|
border: 3px solid var(--accent-color);
|
|
border-radius: 8px;
|
|
background-color: var(--bg-tertiary);
|
|
}
|
|
|
|
.qr-viewport video {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.qr-controls {
|
|
display: flex;
|
|
gap: 10px;
|
|
margin-top: 10px;
|
|
}
|
|
|
|
.action-button {
|
|
padding: 8px 15px;
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.action-button:hover {
|
|
background-color: var(--button-hover);
|
|
}
|
|
|
|
.action-button:disabled {
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-tertiary);
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
/* Billboard Page Styles */
|
|
.billboard-section {
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.billboard-container {
|
|
margin-top: 20px;
|
|
}
|
|
|
|
.billboard-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 20px;
|
|
}
|
|
|
|
.billboard-card {
|
|
background-color: var(--bg-secondary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
|
|
transition: transform 0.2s ease, box-shadow 0.2s ease;
|
|
}
|
|
|
|
.billboard-card:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
|
|
}
|
|
|
|
.billboard-card-header {
|
|
padding: 15px 20px;
|
|
background-color: var(--bg-tertiary);
|
|
border-bottom: 1px solid var(--border-color);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.billboard-title {
|
|
margin: 0;
|
|
color: var(--accent-color);
|
|
font-size: 18px;
|
|
}
|
|
|
|
.billboard-timestamp {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
font-size: 12px;
|
|
color: var(--text-tertiary);
|
|
}
|
|
|
|
.billboard-card-content {
|
|
padding: 20px;
|
|
}
|
|
|
|
.billboard-detail {
|
|
margin-bottom: 15px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.billboard-detail strong {
|
|
color: var(--text-secondary);
|
|
font-weight: 600;
|
|
}
|
|
|
|
.billboard-detail:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.operator-pubkey,
|
|
.server-pubkey {
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 13px;
|
|
word-break: break-all;
|
|
background-color: var(--bg-tertiary);
|
|
padding: 3px 6px;
|
|
border-radius: 4px;
|
|
display: inline-block;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
.relay-list {
|
|
margin: 8px 0 0 20px;
|
|
padding: 0;
|
|
}
|
|
|
|
.relay-list li {
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 13px;
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.billboard-card-footer {
|
|
padding: 15px 20px;
|
|
background-color: var(--bg-tertiary);
|
|
border-top: 1px solid var(--border-color);
|
|
text-align: right;
|
|
}
|
|
|
|
.view-raw-btn {
|
|
background-color: var(--bg-primary);
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
padding: 6px 12px;
|
|
font-size: 14px;
|
|
cursor: pointer;
|
|
transition: background-color 0.2s;
|
|
}
|
|
|
|
.view-raw-btn:hover {
|
|
background-color: var(--button-primary);
|
|
color: white;
|
|
}
|
|
|
|
.raw-json-content {
|
|
padding: 15px;
|
|
background-color: var(--bg-primary);
|
|
border-top: 1px solid var(--border-color);
|
|
}
|
|
|
|
.raw-json-content pre {
|
|
margin: 0;
|
|
max-height: 300px;
|
|
overflow-y: auto;
|
|
padding: 10px;
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
border-left: 4px solid var(--accent-color);
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
|
|
.status-message {
|
|
margin-top: 10px;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-secondary);
|
|
font-size: 14px;
|
|
}
|
|
|
|
/* Raw Input Styles */
|
|
.raw-input-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.raw-input-container textarea {
|
|
width: 100%;
|
|
min-height: 200px;
|
|
padding: 12px;
|
|
border: 1px solid var(--border-color);
|
|
border-radius: 4px;
|
|
background-color: var(--bg-tertiary);
|
|
color: var(--text-primary);
|
|
font-family: 'Courier New', monospace;
|
|
font-size: 14px;
|
|
resize: vertical;
|
|
}
|
|
|
|
.raw-input-container button {
|
|
align-self: flex-start;
|
|
}
|
|
|
|
/* Decryption status indicators */
|
|
.decryption-status {
|
|
margin-top: 10px;
|
|
padding: 8px 12px;
|
|
border-radius: 4px;
|
|
font-size: 0.9em;
|
|
font-weight: 500;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.decryption-status.success {
|
|
background-color: rgba(40, 167, 69, 0.1);
|
|
color: var(--button-success);
|
|
border: 1px solid var(--button-success);
|
|
}
|
|
|
|
.decryption-status.error {
|
|
background-color: rgba(231, 76, 60, 0.1);
|
|
color: #e74c3c;
|
|
border: 1px solid #e74c3c;
|
|
}
|
|
|
|
.decryption-status::before {
|
|
margin-right: 8px;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.decryption-status.success::before {
|
|
content: '✓';
|
|
}
|
|
|
|
.decryption-status.error::before {
|
|
content: '✗';
|
|
}
|
|
|
|
/* Import styles for the 21121 Response Creator component */
|
|
@import url('./styles/response-creator.css');
|
|
|
|
/* Login status indicator */
|
|
.status-indicator {
|
|
display: inline-block;
|
|
padding: 4px 10px;
|
|
border-radius: 12px;
|
|
font-size: 0.8rem;
|
|
margin-left: 10px;
|
|
user-select: none;
|
|
}
|
|
|
|
.status-indicator.logged-in {
|
|
background-color: #4caf50;
|
|
color: white;
|
|
}
|
|
|
|
.status-indicator.logged-out {
|
|
background-color: #f44336;
|
|
color: white;
|
|
}
|
|
|
|
.disabled-button {
|
|
background-color: #cccccc;
|
|
color: #666666;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.disabled-button:hover {
|
|
background-color: #bbbbbb;
|
|
}
|
|
|
|
/* Authentication required message styling */
|
|
.auth-required-message {
|
|
background-color: var(--bg-info);
|
|
border-radius: 8px;
|
|
padding: 20px;
|
|
margin: 20px 0;
|
|
border-left: 4px solid var(--accent-color);
|
|
text-align: center;
|
|
}
|
|
|
|
.auth-required-message h3 {
|
|
color: var(--accent-color);
|
|
margin-top: 0;
|
|
}
|
|
|
|
/* Authentication container and button styles */
|
|
.auth-container {
|
|
display: flex;
|
|
align-items: center;
|
|
margin-left: auto;
|
|
margin-right: 10px;
|
|
}
|
|
|
|
.auth-btn {
|
|
font-size: 0.8em;
|
|
padding: 3px 8px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
transition: all 0.2s ease;
|
|
}
|
|
|
|
.sign-in-btn {
|
|
background-color: var(--button-primary, #4285f4);
|
|
color: white;
|
|
border: none;
|
|
font-weight: 500;
|
|
padding: 5px 10px;
|
|
}
|
|
|
|
.sign-in-btn:hover {
|
|
background-color: var(--button-hover, #3367d6);
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
} |