@import url("https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Manrope:wght@400;500;600;700;800&display=swap"); :root { font-family: Manrope, sans-serif; color: #e7eeee; background: #101517; font-synthesis: none; --bg: #101517; --panel: #172022; --line: #2b393a; --muted: #91a2a1; --mint: #8ae8c2; --amber: #f2bd70; --blue: #7eb7f5; --coral: #f58d7d; --violet: #c1a5fa; } * { box-sizing: border-box; } body { margin: 0; min-width: 320px; background: radial-gradient(circle at 82% -10%, #24403b 0, transparent 32%), linear-gradient(135deg, #101517 0%, #111b1d 54%, #182020 100%); min-height: 100vh; } .app-shell { max-width: 1440px; margin: auto; padding: 0 42px 70px; } .topbar { height: 82px; border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; } .brand { display: flex; align-items: center; gap: 12px; } .brand-mark { display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid var(--mint); color: var(--mint); font-weight: 800; font-size: 20px; transform: rotate(45deg); } .brand-mark::first-letter { transform: rotate(-45deg); } .brand strong, .brand span { display: block; } .brand strong { font: 600 12px "DM Mono", monospace; letter-spacing: 0.12em; } .brand div span { color: var(--muted); font-size: 11px; margin-top: 4px; } .top-actions { display: flex; align-items: center; gap: 14px; color: var(--muted); font: 500 12px "DM Mono", monospace; } .live-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 14px var(--mint); } select, input, textarea { font: inherit; color: inherit; background: #111a1c; border: 1px solid var(--line); border-radius: 4px; padding: 10px 12px; outline: none; } select:focus, input:focus, textarea:focus { border-color: var(--mint); } .top-actions select { padding: 7px 9px; font-size: 11px; } .ghost-button { border: 1px solid var(--line); background: transparent; color: #d3dddd; padding: 9px 12px; border-radius: 4px; cursor: pointer; } .ghost-button:hover { border-color: var(--mint); color: var(--mint); } .hero-row { display: flex; justify-content: space-between; align-items: end; padding: 68px 0 38px; } .eyebrow { font: 500 10px "DM Mono", monospace; color: var(--mint); letter-spacing: 0.16em; margin: 0 0 13px; } .hero-row h1 { font-size: clamp(38px, 6vw, 76px); line-height: 0.98; letter-spacing: -0.04em; margin: 0; max-width: 680px; } .hero-copy { color: var(--muted); font-size: 16px; margin: 20px 0 0; } .pulse-stat { border-left: 1px solid var(--line); padding-left: 25px; min-width: 180px; } .pulse-stat span, .pulse-stat em { display: block; color: var(--muted); font: 11px "DM Mono", monospace; } .pulse-stat strong { display: block; font-size: 52px; line-height: 1.1; margin: 7px 0; color: var(--mint); } .pulse-stat small { font-size: 20px; color: var(--muted); font-weight: 500; } .pulse-stat em { font-style: normal; } .tabs { display: flex; gap: 24px; border-bottom: 1px solid var(--line); margin-bottom: 28px; overflow: auto; } .tabs button { white-space: nowrap; background: none; border: 0; border-bottom: 2px solid transparent; color: var(--muted); padding: 13px 0; cursor: pointer; font-weight: 700; font-size: 12px; } .tabs button.active, .tabs button:hover { color: #fff; border-color: var(--mint); } .tabs b { color: var(--coral); margin-left: 5px; } .service-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; } .service-card, .panel { background: rgba(23, 32, 34, 0.88); border: 1px solid var(--line); border-radius: 6px; } .service-card { padding: 19px; min-height: 250px; border-top: 2px solid var(--card-color); } .service-card.amber { --card-color: var(--amber); } .service-card.teal { --card-color: var(--mint); } .service-card.blue { --card-color: var(--blue); } .service-card.coral { --card-color: var(--coral); } .service-card.violet { --card-color: var(--violet); } .card-top { display: flex; justify-content: space-between; gap: 8px; } .service-icon { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 3px; font: 500 10px "DM Mono", monospace; background: #293332; color: var(--card-color); } .card-top h3 { font-size: 14px; margin: 13px 0 3px; } .card-top p { color: var(--muted); font-size: 11px; margin: 0; } .status-pill { display: inline-flex; align-items: center; gap: 6px; height: 22px; border-radius: 20px; padding: 0 8px; font: 500 10px "DM Mono", monospace; text-transform: uppercase; } .status-pill i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; } .status-pill.healthy { color: var(--mint); background: #17372f; } .status-pill.degraded { color: var(--coral); background: #3b2523; } .status-pill.offline { color: #f17c76; background: #3b2523; } .status-pill.checking { color: var(--amber); background: #3c3020; } .metric-line { border-top: 1px solid var(--line); margin-top: 25px; padding-top: 13px; display: flex; justify-content: space-between; color: var(--muted); font: 10px "DM Mono", monospace; } .metric-line strong { color: #e8eeee; font-weight: 500; } .sparkline { height: 45px; display: flex; align-items: end; gap: 3px; margin-top: 12px; } .sparkline span { display: block; flex: 1; min-width: 3px; background: var(--card-color); opacity: 0.75; border-radius: 1px; } .sparkline em { font: 10px "DM Mono", monospace; color: #607170; } .service-card details { margin-top: 12px; color: var(--muted); font-size: 10px; } .service-card summary { cursor: pointer; } .service-card pre { max-height: 100px; overflow: auto; color: #c6d5d3; font: 10px "DM Mono", monospace; } .lower-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 12px; margin-top: 12px; } .panel { padding: 25px; } .panel-heading { display: flex; justify-content: space-between; align-items: start; gap: 20px; margin-bottom: 21px; } .panel h2 { font-size: 19px; margin: 0; letter-spacing: -0.02em; } .panel-count { font: 10px "DM Mono", monospace; color: var(--muted); border: 1px solid var(--line); padding: 6px 8px; border-radius: 3px; white-space: nowrap; } .data-list { border-top: 1px solid var(--line); } .data-row { display: grid; grid-template-columns: 10px 150px 1fr; gap: 11px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--line); font-size: 12px; } .data-row > span:last-child { color: var(--muted); font-size: 11px; } .service-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; } .service-dot.amber { background: var(--amber); } .service-dot.teal { background: var(--mint); } .service-dot.blue { background: var(--blue); } .service-dot.coral { background: var(--coral); } .service-dot.violet { background: var(--violet); } .suggestion-panel ul { list-style: none; margin: 0; padding: 0; } .suggestion-panel li { padding: 13px 0; border-top: 1px solid var(--line); } .suggestion-panel li strong, .suggestion-panel li span { display: block; } .suggestion-panel li strong { font-size: 12px; } .suggestion-panel li span { color: var(--muted); font-size: 11px; line-height: 1.5; margin-top: 5px; } .catalog-panel, .incidents-panel, .settings-panel { min-height: 500px; } .catalog-block { display: grid; grid-template-columns: 270px 1fr; gap: 20px; padding: 20px 0; border-top: 1px solid var(--line); } .catalog-block > div:first-child { display: flex; gap: 9px; align-items: start; } .catalog-block p { color: var(--muted); font-size: 11px; margin: 7px 0 0 16px; } .route-chips { display: flex; gap: 8px; flex-wrap: wrap; } .route-chips code { font: 11px "DM Mono", monospace; color: #c8d8d5; border: 1px solid var(--line); background: #111a1c; border-radius: 3px; padding: 8px; } .table-head, .table-row { display: grid; grid-template-columns: 170px 220px 1fr; gap: 20px; padding: 13px 0; } .table-head { color: var(--muted); font: 10px "DM Mono", monospace; border-bottom: 1px solid var(--line); } .table-row { font-size: 12px; border-bottom: 1px solid #243131; } .table-row time, .table-row > span { color: var(--muted); font-size: 11px; } .table-row strong small { display: block; color: var(--muted); font: 10px "DM Mono", monospace; font-weight: 400; margin-top: 5px; } .empty, .result-placeholder { display: grid; place-items: center; text-align: center; min-height: 250px; color: var(--muted); font-size: 12px; gap: 8px; } .empty strong { color: #e8eeee; } .lab-grid { display: grid; grid-template-columns: 1fr 1.25fr; gap: 12px; } .request-panel label, .settings-panel label { display: grid; gap: 7px; margin: 17px 0; color: var(--muted); font: 10px "DM Mono", monospace; text-transform: uppercase; } .request-panel select, .request-panel textarea, .settings-panel input { width: 100%; } .request-panel textarea { height: 130px; resize: vertical; } .run-button { width: 100%; padding: 12px; background: var(--mint); color: #10201c; border: 0; border-radius: 4px; font-weight: 800; cursor: pointer; } .run-button:disabled { opacity: 0.5; cursor: wait; } .helper, .settings-intro { font-size: 11px; line-height: 1.5; color: var(--muted); } .response-code { background: #0d1415; border: 1px solid var(--line); padding: 18px; white-space: pre-wrap; word-break: break-word; min-height: 320px; max-height: 520px; overflow: auto; color: #b8e9d6; font: 11px "DM Mono", monospace; } .connection-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; } .save-button { max-width: 180px; } .incidents-panel .panel-heading { align-items: center; } @media (max-width: 1100px) { .service-grid { grid-template-columns: repeat(3, 1fr); } .service-card:last-child { grid-column: auto; } .hero-row { align-items: start; gap: 30px; } .lower-grid { grid-template-columns: 1fr; } .pulse-stat { min-width: 150px; } } .login-form { border-top: 1px solid var(--line); padding-top: 20px; margin-top: 10px; } .login-form h3 { font-size: 14px; margin: 0 0 14px; } .login-form label { display: grid; gap: 7px; margin: 12px 0; color: var(--muted); font: 10px "DM Mono", monospace; text-transform: uppercase; } .login-form input { width: 100%; } .login-error { color: var(--coral); font-size: 11px; margin: 10px 0; } .user-info { border-top: 1px solid var(--line); padding-top: 20px; margin-top: 10px; } .user-info h3 { font-size: 14px; margin: 0 0 12px; } .user-info p { margin: 6px 0; font-size: 12px; } .user-info button { margin-top: 14px; } .docs-panel { min-height: 500px; } .docs-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; } .doc-card { background: rgba(23, 32, 34, 0.88); border: 1px solid var(--line); border-radius: 6px; padding: 20px; border-top: 2px solid var(--card-color); } .doc-card.amber { --card-color: var(--amber); } .doc-card.teal { --card-color: var(--mint); } .doc-card.blue { --card-color: var(--blue); } .doc-card.coral { --card-color: var(--coral); } .doc-header { display: flex; gap: 12px; align-items: start; margin-bottom: 12px; } .doc-header .service-dot { flex-shrink: 0; margin-top: 2px; } .doc-header strong { display: block; font-size: 14px; } .doc-header p { margin: 3px 0 0; color: var(--muted); font-size: 11px; } .doc-description { color: var(--muted); font-size: 12px; line-height: 1.5; margin-bottom: 14px; } .doc-links { display: flex; flex-direction: column; gap: 12px; } .doc-link { color: var(--mint); text-decoration: none; font: 500 11px "DM Mono", monospace; display: inline-flex; align-items: center; gap: 6px; } .doc-link:hover { text-decoration: underline; } .routes-detail summary { color: var(--muted); font: 500 10px "DM Mono", monospace; cursor: pointer; text-transform: uppercase; } .routes-detail ul { margin: 8px 0 0; padding-left: 18px; font-size: 11px; color: #c6d5d3; } .routes-detail li { margin: 4px 0; } .routes-detail code { font: 11px "DM Mono", monospace; background: #111a1c; padding: 2px 4px; border-radius: 2px; } @media (max-width: 700px) { .app-shell { padding: 0 18px 40px; } .topbar { height: auto; padding: 18px 0; align-items: start; gap: 14px; flex-direction: column; } .top-actions { flex-wrap: wrap; } .hero-row { padding: 43px 0 28px; display: block; } .pulse-stat { border-left: 0; border-top: 1px solid var(--line); padding: 15px 0 0; margin-top: 28px; } .pulse-stat strong { font-size: 42px; } .service-grid { grid-template-columns: 1fr 1fr; } .service-card { min-height: 230px; padding: 14px; } .card-top { display: block; } .status-pill { margin-top: 12px; } .catalog-block, .lab-grid { grid-template-columns: 1fr; } .table-head, .table-row { grid-template-columns: 1fr; gap: 5px; } .table-head { display: none; } .table-row { padding: 15px 0; } .connection-grid { grid-template-columns: 1fr; } .tabs { gap: 18px; } .panel { padding: 18px; } }