Spaces:
Running
Running
| :root { | |
| --bg: #0b1020; | |
| --panel: #121932; | |
| --panel-2: #1a2344; | |
| --line: rgba(255, 255, 255, 0.10); | |
| --line-2: rgba(255, 255, 255, 0.18); | |
| --text: #eef2ff; | |
| --muted: #94a3b8; | |
| --accent: #60a5fa; | |
| --accent-strong: #3b82f6; | |
| --green: #34d399; | |
| --amber: #fbbf24; | |
| --red: #f87171; | |
| } | |
| * { box-sizing: border-box; } | |
| body { | |
| margin: 0; | |
| font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; | |
| background: radial-gradient(1200px 600px at 20% -10%, rgba(96, 165, 250, 0.12), transparent), | |
| radial-gradient(900px 500px at 100% 0%, rgba(167, 139, 250, 0.10), transparent), | |
| var(--bg); | |
| color: var(--text); | |
| min-height: 100vh; | |
| } | |
| h1, h2, h3 { margin: 0; } | |
| .topbar { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| padding: 18px 28px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .brand { display: flex; align-items: center; gap: 14px; } | |
| .logo { font-size: 28px; } | |
| .brand h1 { font-size: 22px; letter-spacing: 0.2px; } | |
| .tag { margin: 2px 0 0; color: var(--muted); font-size: 13px; } | |
| .badges { display: flex; gap: 8px; } | |
| .badge { | |
| font-size: 12px; | |
| padding: 6px 10px; | |
| border-radius: 999px; | |
| border: 1px solid var(--line-2); | |
| background: var(--panel); | |
| color: var(--text); | |
| } | |
| main { | |
| display: grid; | |
| grid-template-columns: 360px 1fr; | |
| gap: 20px; | |
| padding: 20px 28px; | |
| } | |
| .control-panel, .canvas-panel, .log-panel { | |
| background: var(--panel); | |
| border: 1px solid var(--line); | |
| border-radius: 18px; | |
| padding: 18px; | |
| } | |
| .control-panel h2 { | |
| font-size: 13px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.6px; | |
| color: var(--muted); | |
| margin: 18px 0 8px; | |
| } | |
| .control-panel h2:first-child { margin-top: 0; } | |
| .big-select { | |
| width: 100%; | |
| font-size: 14px; | |
| padding: 12px; | |
| border-radius: 12px; | |
| border: 1px solid var(--line-2); | |
| background: var(--panel-2); | |
| color: var(--text); | |
| } | |
| .policy-pick { display: flex; flex-direction: column; gap: 8px; } | |
| .policy-card { | |
| display: flex; | |
| gap: 10px; | |
| align-items: flex-start; | |
| padding: 12px; | |
| border: 1px solid var(--line-2); | |
| border-radius: 12px; | |
| background: var(--panel-2); | |
| cursor: pointer; | |
| transition: border-color 120ms ease, background 120ms ease; | |
| } | |
| .policy-card:hover { border-color: var(--accent); } | |
| .policy-card input { margin-top: 4px; } | |
| .policy-card div { display: flex; flex-direction: column; } | |
| .policy-card strong { font-size: 14px; } | |
| .policy-card span { color: var(--muted); font-size: 12px; line-height: 1.4; } | |
| .actions { display: flex; flex-wrap: wrap; gap: 8px; } | |
| button { | |
| font-size: 14px; | |
| padding: 11px 14px; | |
| border-radius: 12px; | |
| border: 1px solid var(--line-2); | |
| background: var(--panel-2); | |
| color: var(--text); | |
| cursor: pointer; | |
| transition: transform 80ms ease, background 120ms ease, border-color 120ms ease; | |
| } | |
| button:hover { border-color: var(--accent); } | |
| button:active { transform: translateY(1px); } | |
| button.primary { | |
| background: linear-gradient(135deg, var(--accent), var(--accent-strong)); | |
| border-color: transparent; | |
| font-weight: 600; | |
| flex: 1; | |
| min-width: 160px; | |
| } | |
| button.ghost { background: transparent; } | |
| button:disabled { opacity: 0.5; cursor: not-allowed; } | |
| .status { | |
| margin-top: 14px; | |
| font-size: 13px; | |
| padding: 10px 12px; | |
| border-radius: 10px; | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px dashed var(--line-2); | |
| min-height: 38px; | |
| } | |
| .status.running { border-style: solid; border-color: var(--accent); color: var(--accent); } | |
| .status.success { border-style: solid; border-color: var(--green); color: var(--green); } | |
| .status.error { border-style: solid; border-color: var(--red); color: var(--red); } | |
| .muted { color: var(--muted); } | |
| .scroll-pointer { | |
| margin-top: 18px; | |
| width: 100%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 10px; | |
| padding: 10px 14px; | |
| font-size: 13px; | |
| color: var(--muted); | |
| background: transparent; | |
| border: 1px dashed var(--line-2); | |
| border-radius: 12px; | |
| cursor: pointer; | |
| transition: color 120ms ease, border-color 120ms ease, background 120ms ease; | |
| } | |
| .scroll-pointer:hover { | |
| color: var(--accent); | |
| border-color: var(--accent); | |
| background: rgba(96, 165, 250, 0.06); | |
| } | |
| .scroll-pointer-text { letter-spacing: 0.3px; } | |
| .scroll-pointer-arrow { | |
| font-size: 16px; | |
| display: inline-block; | |
| animation: scroll-bounce 1.6s ease-in-out infinite; | |
| } | |
| @keyframes scroll-bounce { | |
| 0%, 100% { transform: translateY(0); opacity: 0.85; } | |
| 50% { transform: translateY(4px); opacity: 1; } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .scroll-pointer-arrow { animation: none; } | |
| } | |
| .canvas-panel { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 16px; | |
| } | |
| .canvas-wrap { | |
| background: #f8fafc; | |
| border-radius: 14px; | |
| padding: 8px; | |
| display: flex; | |
| justify-content: center; | |
| } | |
| #canvas { | |
| width: 100%; | |
| max-height: 64vh; | |
| background: #f8fafc; | |
| border-radius: 10px; | |
| } | |
| .scoreboard { | |
| display: grid; | |
| grid-template-columns: repeat(5, 1fr); | |
| gap: 10px; | |
| } | |
| .score-card { | |
| background: var(--panel-2); | |
| border: 1px solid var(--line-2); | |
| border-radius: 14px; | |
| padding: 12px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| } | |
| .score-card .label { | |
| font-size: 11px; | |
| letter-spacing: 0.6px; | |
| text-transform: uppercase; | |
| color: var(--muted); | |
| } | |
| .score-card strong { | |
| font-size: 22px; | |
| font-feature-settings: "tnum"; | |
| } | |
| .score-card.primary-score { | |
| background: linear-gradient(135deg, rgba(96, 165, 250, 0.18), rgba(59, 130, 246, 0.05)); | |
| border-color: rgba(96, 165, 250, 0.35); | |
| } | |
| .score-card.primary-score strong { color: var(--accent); } | |
| .log-panel { | |
| margin: 0 28px 28px; | |
| } | |
| .log-panel details { margin-bottom: 10px; } | |
| .log-panel summary { | |
| cursor: pointer; | |
| padding: 10px 4px; | |
| font-size: 14px; | |
| color: var(--text); | |
| } | |
| .log-panel summary:hover { color: var(--accent); } | |
| #log-table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 13px; | |
| margin-top: 8px; | |
| font-family: ui-monospace, SFMono-Regular, Menlo, monospace; | |
| } | |
| #log-table th, #log-table td { | |
| padding: 8px 10px; | |
| border-bottom: 1px solid var(--line); | |
| text-align: left; | |
| } | |
| #log-table th { color: var(--muted); font-weight: 500; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; } | |
| #log-table td.delta-pos { color: var(--green); } | |
| #log-table td.delta-neg { color: var(--red); } | |
| #log-table tr.error-row td { color: var(--amber); } | |
| pre.raw { | |
| white-space: pre-wrap; | |
| word-break: break-word; | |
| background: var(--panel-2); | |
| border-radius: 10px; | |
| padding: 12px; | |
| font-size: 12px; | |
| color: #cbd5e1; | |
| max-height: 360px; | |
| overflow: auto; | |
| } | |
| footer { | |
| text-align: center; | |
| padding: 22px; | |
| color: var(--muted); | |
| font-size: 12px; | |
| } | |
| footer a { color: var(--muted); margin: 0 4px; } | |
| footer a:hover { color: var(--accent); } | |
| @media (max-width: 900px) { | |
| main { grid-template-columns: 1fr; } | |
| .scoreboard { grid-template-columns: repeat(2, 1fr); } | |
| } | |