summaryrefslogtreecommitdiff
path: root/frontend/src/styles/pc98.css
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/styles/pc98.css')
-rw-r--r--frontend/src/styles/pc98.css644
1 files changed, 644 insertions, 0 deletions
diff --git a/frontend/src/styles/pc98.css b/frontend/src/styles/pc98.css
index 4dcf15e..a420115 100644
--- a/frontend/src/styles/pc98.css
+++ b/frontend/src/styles/pc98.css
@@ -4621,3 +4621,647 @@ button:focus-visible {
display: none;
}
}
+
+/* =============================================================================
+ Contract List & Detail Styles
+ ============================================================================= */
+
+.contract-list-container,
+.contract-detail-container {
+ padding: 20px;
+ max-width: 1200px;
+ margin: 0 auto;
+ font-family: 'MS Gothic', monospace;
+ color: #ffffff;
+}
+
+.contract-list-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 20px;
+}
+
+.contract-list-header h1 {
+ font-size: 24px;
+ color: #66ccff;
+ margin: 0;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+}
+
+.create-contract-btn {
+ appearance: none;
+ background: linear-gradient(180deg, #004466, #002233);
+ border: 2px solid #66ccff;
+ color: #ffffff;
+ font-family: 'MS Gothic', monospace;
+ font-size: 13px;
+ font-weight: bold;
+ padding: 8px 16px;
+ cursor: pointer;
+ border-radius: 4px;
+ transition: all 0.2s ease;
+}
+
+.create-contract-btn:hover {
+ background: linear-gradient(180deg, #005577, #003344);
+ box-shadow: 0 0 10px rgba(102, 204, 255, 0.4);
+}
+
+.contract-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.contract-item {
+ margin-bottom: 15px;
+ border: 1px solid rgba(102, 204, 255, 0.3);
+ background: rgba(0, 0, 0, 0.5);
+ transition: all 0.3s ease;
+}
+
+.contract-item:hover {
+ border-color: #66ccff;
+ background: rgba(102, 204, 255, 0.05);
+}
+
+.contract-item a {
+ display: block;
+ padding: 15px;
+ text-decoration: none;
+ color: inherit;
+}
+
+.contract-item h2 {
+ font-size: 16px;
+ color: #ffffff;
+ margin: 0 0 8px 0;
+ display: flex;
+ align-items: center;
+ gap: 10px;
+}
+
+.contract-item p {
+ font-size: 13px;
+ color: rgba(255, 255, 255, 0.7);
+ margin: 0 0 10px 0;
+}
+
+.contract-meta {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 15px;
+ font-size: 12px;
+ color: rgba(102, 204, 255, 0.8);
+}
+
+/* =============================================================================
+ Red Team Styling
+ ============================================================================= */
+
+/* Red Team Badge - Contract List and Detail */
+.red-team-badge {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+ margin-left: 8px;
+ padding: 2px 8px;
+ font-size: 12px;
+ font-weight: normal;
+ background: linear-gradient(180deg, #4a0000, #2d0000);
+ border: 1px solid #ff4444;
+ border-radius: 4px;
+ color: #ff6666;
+ vertical-align: middle;
+ box-shadow: 0 0 6px rgba(255, 68, 68, 0.3);
+}
+
+/* Contract Detail Header */
+.contract-detail-header {
+ margin-bottom: 20px;
+}
+
+.back-link {
+ display: inline-block;
+ font-size: 12px;
+ color: #66ccff;
+ text-decoration: none;
+ margin-bottom: 15px;
+ transition: opacity 0.3s ease;
+}
+
+.back-link:hover {
+ opacity: 0.8;
+}
+
+.contract-title {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+ flex-wrap: wrap;
+ font-size: 24px;
+ color: #66ccff;
+ margin: 0 0 10px 0;
+}
+
+.contract-description {
+ font-size: 14px;
+ color: rgba(255, 255, 255, 0.7);
+ margin: 10px 0;
+}
+
+/* Contract Tabs */
+.contract-tabs {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 5px;
+ margin-bottom: 20px;
+ border-bottom: 1px solid rgba(102, 204, 255, 0.3);
+ padding-bottom: 10px;
+}
+
+.tab-button {
+ font-family: 'MS Gothic', monospace;
+ font-size: 12px;
+ padding: 8px 16px;
+ border: 1px solid rgba(102, 204, 255, 0.3);
+ background: rgba(0, 0, 0, 0.3);
+ color: rgba(255, 255, 255, 0.7);
+ cursor: pointer;
+ transition: all 0.3s ease;
+}
+
+.tab-button:hover {
+ border-color: #66ccff;
+ color: #ffffff;
+}
+
+.tab-button.active {
+ background: rgba(102, 204, 255, 0.15);
+ border-color: #66ccff;
+ color: #66ccff;
+}
+
+/* Red Team Tab Button */
+.tab-button.red-team-tab {
+ background: linear-gradient(180deg, #3d0000, #1a0000);
+ border-color: #ff4444;
+ color: #ff6666;
+}
+
+.tab-button.red-team-tab:hover {
+ background: linear-gradient(180deg, #4a0000, #2d0000);
+ box-shadow: 0 0 8px rgba(255, 68, 68, 0.4);
+}
+
+.tab-button.red-team-tab.active {
+ background: linear-gradient(180deg, #5c0000, #3d0000);
+ border-color: #ff6666;
+ color: #ffffff;
+ box-shadow: 0 0 12px rgba(255, 68, 68, 0.5);
+}
+
+/* Tab Content */
+.tab-panel {
+ padding: 20px;
+ background: rgba(0, 0, 0, 0.3);
+ border: 1px solid rgba(102, 204, 255, 0.2);
+}
+
+.tab-panel h2 {
+ font-size: 18px;
+ color: #66ccff;
+ margin: 0 0 15px 0;
+ text-transform: uppercase;
+ letter-spacing: 1px;
+}
+
+.overview-list {
+ display: grid;
+ grid-template-columns: 120px 1fr;
+ gap: 10px;
+}
+
+.overview-list dt {
+ color: rgba(255, 255, 255, 0.6);
+ font-size: 13px;
+}
+
+.overview-list dd {
+ color: #ffffff;
+ margin: 0;
+ font-size: 13px;
+}
+
+/* File/Task/Repository Lists */
+.file-list,
+.task-list,
+.repository-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.file-item,
+.task-item,
+.repository-item {
+ padding: 12px;
+ margin-bottom: 10px;
+ border: 1px solid rgba(102, 204, 255, 0.2);
+ background: rgba(0, 0, 0, 0.3);
+ transition: all 0.3s ease;
+}
+
+.file-item:hover,
+.task-item:hover,
+.repository-item:hover {
+ border-color: rgba(102, 204, 255, 0.4);
+}
+
+.file-item a {
+ text-decoration: none;
+ color: inherit;
+}
+
+.file-item h3,
+.task-item h3,
+.repository-item h3 {
+ font-size: 14px;
+ color: #ffffff;
+ margin: 0 0 5px 0;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.file-phase {
+ font-size: 11px;
+ color: rgba(102, 204, 255, 0.7);
+}
+
+.task-status {
+ font-size: 11px;
+ padding: 2px 8px;
+ border-radius: 2px;
+}
+
+.task-status.status-pending {
+ background: rgba(255, 255, 0, 0.15);
+ color: #ffff00;
+ border: 1px solid rgba(255, 255, 0, 0.3);
+}
+
+.task-status.status-active,
+.task-status.status-running {
+ background: rgba(0, 255, 0, 0.15);
+ color: #00ff00;
+ border: 1px solid rgba(0, 255, 0, 0.3);
+}
+
+.task-status.status-completed {
+ background: rgba(102, 204, 255, 0.15);
+ color: #66ccff;
+ border: 1px solid rgba(102, 204, 255, 0.3);
+}
+
+.task-status.status-failed {
+ background: rgba(255, 100, 100, 0.15);
+ color: #ff6464;
+ border: 1px solid rgba(255, 100, 100, 0.3);
+}
+
+/* Task Badges */
+.task-badge {
+ margin-right: 6px;
+ font-size: 14px;
+}
+
+.task-badge.red-team {
+ color: #ff6666;
+}
+
+.task-badge.supervisor {
+ color: #66ccff;
+}
+
+.task-item.red-team-task {
+ border-left: 3px solid #ff4444;
+}
+
+.primary-badge {
+ font-size: 10px;
+ padding: 2px 6px;
+ background: rgba(102, 204, 255, 0.15);
+ color: #66ccff;
+ border: 1px solid rgba(102, 204, 255, 0.3);
+ margin-left: 8px;
+}
+
+.repo-type {
+ font-size: 11px;
+ color: rgba(255, 255, 255, 0.6);
+}
+
+/* Red Team Panel */
+.red-team-panel {
+ background: linear-gradient(180deg, rgba(60, 0, 0, 0.3), rgba(30, 0, 0, 0.3));
+ border-left: 3px solid #ff4444;
+}
+
+.red-team-panel h2 {
+ color: #ff6666;
+ border-bottom: 2px solid #ff4444;
+ padding-bottom: 8px;
+}
+
+.red-team-panel h3 {
+ color: #ffaaaa;
+ margin-top: 20px;
+ margin-bottom: 12px;
+}
+
+/* Red Team Prompt Section */
+.red-team-prompt {
+ background: rgba(0, 0, 0, 0.4);
+ border: 1px solid #ff4444;
+ border-radius: 6px;
+ padding: 12px 16px;
+ margin-bottom: 16px;
+}
+
+.red-team-prompt h3 {
+ margin-top: 0;
+ font-size: 14px;
+}
+
+.red-team-prompt p {
+ margin: 0;
+ color: #cccccc;
+ font-style: italic;
+}
+
+/* Red Team Status */
+.red-team-status {
+ margin-bottom: 20px;
+}
+
+.red-team-task-info {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 12px;
+ background: rgba(0, 0, 0, 0.3);
+ border: 1px solid #444;
+ border-radius: 4px;
+}
+
+.red-team-task-info .task-name {
+ font-weight: bold;
+ color: #ffffff;
+}
+
+.no-task, .no-alerts {
+ color: #888888;
+ font-style: italic;
+}
+
+/* Red Team Notifications */
+.red-team-notifications {
+ margin-top: 20px;
+}
+
+.notification-list {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+}
+
+.notification-item {
+ padding: 12px 16px;
+ margin-bottom: 12px;
+ background: rgba(0, 0, 0, 0.4);
+ border-radius: 6px;
+ border-left: 4px solid;
+}
+
+.notification-item.severity-info {
+ border-left-color: #66ccff;
+ background: linear-gradient(90deg, rgba(0, 80, 150, 0.2), transparent);
+}
+
+.notification-item.severity-warning {
+ border-left-color: #ffcc00;
+ background: linear-gradient(90deg, rgba(150, 120, 0, 0.2), transparent);
+}
+
+.notification-item.severity-critical {
+ border-left-color: #ff4444;
+ background: linear-gradient(90deg, rgba(150, 0, 0, 0.2), transparent);
+}
+
+.notification-header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ margin-bottom: 8px;
+}
+
+.severity-badge {
+ padding: 2px 8px;
+ border-radius: 4px;
+ font-size: 11px;
+ font-weight: bold;
+ letter-spacing: 0.5px;
+}
+
+.severity-badge.info {
+ background: #003366;
+ color: #66ccff;
+ border: 1px solid #66ccff;
+}
+
+.severity-badge.warning {
+ background: #333300;
+ color: #ffcc00;
+ border: 1px solid #ffcc00;
+}
+
+.severity-badge.critical {
+ background: #660000;
+ color: #ff4444;
+ border: 1px solid #ff4444;
+ animation: pulse-critical 2s infinite;
+}
+
+@keyframes pulse-critical {
+ 0%, 100% {
+ box-shadow: 0 0 4px rgba(255, 68, 68, 0.5);
+ }
+ 50% {
+ box-shadow: 0 0 12px rgba(255, 68, 68, 0.8);
+ }
+}
+
+.notification-time {
+ font-size: 11px;
+ color: #888888;
+}
+
+.notification-message {
+ margin: 0 0 8px 0;
+ color: #ffffff;
+ line-height: 1.5;
+}
+
+.notification-file {
+ display: block;
+ font-size: 12px;
+ color: #66ccff;
+ margin-bottom: 8px;
+}
+
+.notification-context {
+ margin: 8px 0 0 0;
+ padding: 8px 12px;
+ background: rgba(0, 0, 0, 0.5);
+ border-radius: 4px;
+ font-size: 12px;
+ font-family: 'MS Gothic', monospace;
+ color: #aaaaaa;
+ white-space: pre-wrap;
+ overflow-x: auto;
+}
+
+/* =============================================================================
+ Contract Create Modal Styles
+ ============================================================================= */
+
+.contract-create-modal {
+ max-width: 600px;
+}
+
+.contract-create-modal .settings-section:last-child {
+ border-top: 1px solid #444;
+ padding-top: 16px;
+ margin-top: 8px;
+}
+
+.form-input,
+.form-textarea,
+.form-select {
+ width: 100%;
+ padding: 8px 12px;
+ margin-top: 6px;
+ background: rgba(0, 0, 0, 0.4);
+ border: 1px solid #444;
+ border-radius: 4px;
+ color: #ffffff;
+ font-family: 'MS Gothic', monospace;
+ font-size: 13px;
+}
+
+.form-input:focus,
+.form-textarea:focus,
+.form-select:focus {
+ outline: none;
+ border-color: #66ccff;
+ box-shadow: 0 0 6px rgba(102, 204, 255, 0.3);
+}
+
+.form-textarea {
+ resize: vertical;
+ min-height: 80px;
+}
+
+.form-select {
+ cursor: pointer;
+}
+
+.form-select option {
+ background: #000000;
+ color: #ffffff;
+}
+
+.form-error {
+ padding: 10px 14px;
+ margin-bottom: 16px;
+ background: rgba(255, 0, 0, 0.15);
+ border: 1px solid #ff4444;
+ border-radius: 4px;
+ color: #ff6666;
+ font-size: 13px;
+}
+
+.checkbox-label {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ cursor: pointer;
+}
+
+.checkbox-label span {
+ color: #ffffff;
+}
+
+.setting-description {
+ margin-top: 4px;
+ font-size: 11px;
+ color: #888888;
+ padding-left: 24px;
+}
+
+.red-team-prompt-container {
+ margin-top: 12px;
+ padding-left: 20px;
+}
+
+.red-team-prompt-container textarea {
+ background: rgba(60, 0, 0, 0.2);
+ border-color: #ff4444;
+}
+
+.red-team-prompt-container textarea:focus {
+ border-color: #ff6666;
+ box-shadow: 0 0 8px rgba(255, 68, 68, 0.3);
+}
+
+.modal-btn.primary {
+ background: linear-gradient(180deg, #004466, #002233);
+ border-color: #66ccff;
+ color: #ffffff;
+}
+
+.modal-btn.primary:hover {
+ background: linear-gradient(180deg, #005577, #003344);
+ box-shadow: 0 0 8px rgba(102, 204, 255, 0.4);
+}
+
+.modal-btn.primary:disabled {
+ opacity: 0.5;
+ cursor: not-allowed;
+}
+
+.modal-btn.secondary {
+ background: linear-gradient(180deg, #333333, #1a1a1a);
+ border-color: #666666;
+ color: #cccccc;
+}
+
+.modal-btn.secondary:hover {
+ background: linear-gradient(180deg, #444444, #2a2a2a);
+}
+
+.loading,
+.error,
+.not-found {
+ padding: 40px;
+ text-align: center;
+ font-size: 14px;
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.error {
+ color: #ff6464;
+}