summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-27 03:02:28 +0000
committersoryu <soryu@soryu.co>2026-01-27 03:02:28 +0000
commit33fc56882cbc54a54f56fa1f6c6803923d285bed (patch)
treeb8e626129003152eecb45e1d7d6359c7c8b7a34a
parentf04094966956bc2534b2bab6ee3637c6566daab8 (diff)
downloadsoryu-makima/red-team-system.tar.gz
soryu-makima/red-team-system.zip
[WIP] Heartbeat checkpoint - 2026-01-27 03:02:28 UTCmakima/red-team-system
-rw-r--r--frontend/src/styles/pc98.css354
1 files changed, 354 insertions, 0 deletions
diff --git a/frontend/src/styles/pc98.css b/frontend/src/styles/pc98.css
index 4dcf15e..5f1f55b 100644
--- a/frontend/src/styles/pc98.css
+++ b/frontend/src/styles/pc98.css
@@ -4621,3 +4621,357 @@ button:focus-visible {
display: none;
}
}
+
+/* =============================================================================
+ 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);
+}
+
+/* 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);
+}
+
+/* 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;
+}
+
+/* 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;
+}
+
+/* Contract Create Modal - Red Team Section */
+.contract-create-modal .settings-section:last-child {
+ border-top: 1px solid #444;
+ padding-top: 16px;
+ margin-top: 8px;
+}
+
+.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);
+}
+
+/* Form Styles for Contract Create Modal */
+.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-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;
+}
+
+.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);
+}
+
+/* Contract List Header */
+.contract-list-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 20px;
+}
+
+.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);
+}