@import url("https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;700&family=IBM+Plex+Mono:wght@400;600&display=swap"); :root { --bg: #08101a; --bg-soft: #102031; --panel: #12283d; --panel-2: #19364f; --text: #e8f5ff; --muted: #9bb8cf; --accent: #f6b73c; --accent-cool: #56c3ff; --ok: #44d38f; --warn: #ffc94a; --critical: #ff6e4a; --border: #2b4f6b; --shadow: 0 12px 35px rgba(4, 10, 17, 0.45); } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; color: var(--text); background: radial-gradient(circle at 0% 0%, #1e3f63 0%, transparent 35%), radial-gradient(circle at 100% 0%, #3a2e59 0%, transparent 32%), linear-gradient(160deg, var(--bg) 0%, #0b1624 55%, #070d16 100%); font-family: "Space Grotesk", "Segoe UI", sans-serif; } h1, h2, h3, p { margin: 0; } .app-shell { padding: 1.2rem; max-width: 1700px; margin: 0 auto; } .masthead { background: linear-gradient(120deg, rgba(86, 195, 255, 0.16), rgba(246, 183, 60, 0.15)); border: 1px solid var(--border); border-radius: 16px; padding: 1rem 1.2rem; display: flex; justify-content: space-between; align-items: center; box-shadow: var(--shadow); } .masthead h1 { font-size: 1.55rem; letter-spacing: 0.02em; } .masthead p { color: var(--muted); margin-top: 0.25rem; font-size: 0.92rem; } .server-status { font-family: "IBM Plex Mono", monospace; font-size: 0.84rem; color: var(--accent-cool); } .layout { margin-top: 1rem; display: grid; gap: 0.85rem; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr); grid-template-areas: "graph side" "feed claude" "history history" "config config"; } .panel { background: linear-gradient(180deg, rgba(18, 40, 61, 0.96), rgba(12, 27, 43, 0.95)); border: 1px solid var(--border); border-radius: 14px; padding: 0.85rem; box-shadow: var(--shadow); } .panel-head { display: flex; justify-content: space-between; align-items: center; gap: 0.65rem; margin-bottom: 0.7rem; } .panel-head h2 { font-size: 1.02rem; } .panel-head h3 { font-size: 0.94rem; } .panel-actions { display: flex; gap: 0.55rem; align-items: center; } .graph-panel { grid-area: graph; } .side-panel { grid-area: side; } .feed-panel { grid-area: feed; } .history-panel { grid-area: history; } .claude-panel { grid-area: claude; } .config-panel { grid-area: config; } label { display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.78rem; color: var(--muted); letter-spacing: 0.015em; } label.inline-checkbox { flex-direction: row; align-items: center; gap: 0.45rem; } input, select, textarea, button { font: inherit; } input, select, textarea { border-radius: 9px; border: 1px solid #2f5673; background: #0b1b2b; color: var(--text); padding: 0.5rem 0.55rem; } textarea { resize: vertical; font-family: "IBM Plex Mono", monospace; line-height: 1.35; } button { border-radius: 9px; border: 1px solid #3c6585; background: linear-gradient(160deg, #264a68, #173248); color: var(--text); cursor: pointer; padding: 0.48rem 0.74rem; font-size: 0.83rem; } button:hover { border-color: var(--accent-cool); } button.danger { border-color: #7d3f37; background: linear-gradient(160deg, #5d231e, #3f1612); } .stacked-form { display: flex; flex-direction: column; gap: 0.52rem; } .stacked-form.compact label { font-size: 0.73rem; } .inline-actions, .inline-fields { display: flex; gap: 0.5rem; align-items: flex-end; flex-wrap: wrap; } .inline-fields label { flex: 1; min-width: 220px; } .graph-wrap { border: 1px solid var(--border); border-radius: 11px; overflow: hidden; background: radial-gradient(circle at 20% 15%, #11253a, #08131f 70%); } #graph-svg { width: 100%; height: 560px; display: block; } .graph-banner { margin-top: 0.55rem; padding: 0.52rem 0.6rem; border-radius: 8px; border: 1px solid #355b77; font-size: 0.8rem; color: var(--muted); } .inspector { min-height: 270px; border: 1px solid var(--border); border-radius: 11px; padding: 0.65rem; background: var(--bg-soft); overflow: auto; } .inspector.empty { color: var(--muted); } .inspector pre { margin: 0; font-family: "IBM Plex Mono", monospace; font-size: 0.75rem; white-space: pre-wrap; line-height: 1.4; } .subtle { color: var(--muted); font-size: 0.77rem; } .divider { height: 1px; background: var(--border); margin: 0.8rem 0; } .event-feed { max-height: 360px; overflow: auto; border: 1px solid var(--border); border-radius: 10px; background: #0b1826; } .event-row { display: grid; grid-template-columns: 110px 90px 1fr; gap: 0.45rem; padding: 0.42rem 0.5rem; border-bottom: 1px solid rgba(65, 98, 127, 0.3); font-size: 0.74rem; } .event-row:last-child { border-bottom: none; } .event-time { color: var(--muted); font-family: "IBM Plex Mono", monospace; } .event-type { font-family: "IBM Plex Mono", monospace; color: var(--accent-cool); } .event-row.info .event-type { color: var(--accent-cool); } .event-row.warning .event-type { color: var(--warn); } .event-row.critical { background: rgba(153, 34, 20, 0.16); } .event-row.critical .event-type { color: var(--critical); } .claude-event-feed .event-row { grid-template-columns: 110px 150px 1fr; } .claude-event-feed .event-type { font-size: 0.7rem; } .history-table { width: 100%; border-collapse: collapse; font-size: 0.77rem; } .history-table th, .history-table td { border-bottom: 1px solid rgba(63, 98, 128, 0.35); padding: 0.38rem; text-align: left; } .history-table tbody tr { cursor: pointer; } .history-table tbody tr:hover { background: rgba(87, 158, 211, 0.14); } .history-table .status-chip { display: inline-block; border-radius: 999px; font-size: 0.7rem; padding: 0.14rem 0.45rem; border: 1px solid; } .status-success { color: var(--ok); border-color: rgba(68, 211, 143, 0.6); } .status-failure, .status-cancelled { color: var(--critical); border-color: rgba(255, 110, 74, 0.65); } .status-running { color: var(--warn); border-color: rgba(255, 201, 74, 0.6); } .status-active { color: var(--accent-cool); border-color: rgba(86, 195, 255, 0.6); } .status-suspended, .status-closed_with_conflicts { color: var(--warn); border-color: rgba(255, 201, 74, 0.6); } .status-closed { color: var(--muted); border-color: rgba(155, 184, 207, 0.45); } .status-unknown { color: var(--muted); border-color: rgba(155, 184, 207, 0.45); } .config-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.7rem; margin-bottom: 0.8rem; } .config-grid h3, #manifest-form h3, .side-panel h3 { font-size: 0.86rem; margin-bottom: 0.25rem; } .manifest-helper-head { display: flex; justify-content: space-between; align-items: center; gap: 0.55rem; flex-wrap: wrap; } .manifest-helper-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.65rem; } .helper-section { border: 1px solid rgba(61, 103, 136, 0.65); border-radius: 10px; padding: 0.55rem; margin: 0; min-width: 0; } .helper-section legend { padding: 0 0.3rem; color: var(--muted); font-size: 0.74rem; } .helper-topologies { display: flex; flex-wrap: wrap; gap: 0.65rem; margin-bottom: 0.5rem; } .helper-topologies label { flex-direction: row; align-items: center; gap: 0.3rem; } .helper-list { display: flex; flex-direction: column; gap: 0.45rem; margin-bottom: 0.5rem; } .helper-row { border: 1px solid rgba(66, 111, 145, 0.45); border-radius: 10px; background: rgba(7, 17, 28, 0.45); padding: 0.45rem; } .helper-row-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.45rem; } .helper-span-2 { grid-column: span 2; } .helper-remove-row { margin-top: 0.5rem; border-color: rgba(255, 110, 74, 0.45); background: linear-gradient(160deg, #4f2a26, #38201d); } #manifest-editor { min-height: 260px; } .badge { display: inline-block; border-radius: 8px; padding: 0.15rem 0.42rem; font-size: 0.7rem; border: 1px solid rgba(120, 156, 183, 0.5); color: var(--muted); } @media (max-width: 1200px) { .layout { grid-template-columns: 1fr; grid-template-areas: "graph" "side" "feed" "claude" "history" "config"; } .config-grid { grid-template-columns: 1fr; } .manifest-helper-grid { grid-template-columns: 1fr; } .helper-row-grid { grid-template-columns: 1fr; } .helper-span-2 { grid-column: span 1; } #graph-svg { height: 460px; } }