/* * polygon — дизайн-система Nubes. * Токены из nubes-design-system.md. */ /* ── Reset & Base ── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --brand-primary: #2563eb; --brand-primary-dark: #1d4ed8; --brand-gray: #d1d5db; --brand-grey-light: #f3f4f6; --bg: #ffffff; --text: #1a1a1a; --text-muted: #6b7280; --border: #e5e7eb; --destructive: #ef4444; --green: #22c55e; --radius: 12px; --radius-sm: 6px; } body { font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; font-size: 14px; line-height: 1.5; color: var(--text); background: #f9fafb; min-height: 100vh; } /* ── Header ── */ .header { background: var(--bg); border-bottom: 4px solid var(--brand-primary); padding: 16px 24px 12px; margin-bottom: 24px; } .header-top { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; } .logo { display: block; height: 33px; width: auto; } .header-status { display: flex; align-items: center; gap: 8px; color: var(--text-muted); font-size: 13px; margin-left: 4px; } .header-status strong { color: var(--text); } .sep { color: var(--brand-gray); } /* ── Layout ── */ main { max-width: 960px; margin: 0 auto; padding: 0 16px 40px; display: flex; flex-direction: column; gap: 20px; } /* ── Badge ── */ .badge { display: inline-block; padding: 2px 10px; border-radius: 100px; font-size: 12px; font-weight: 600; } .badge-blue { background: var(--brand-primary); color: #fff; } .swagger-link { margin-left: auto; font-size: 14px; font-weight: 600; color: #fff; text-decoration: none; padding: 8px 20px; background: var(--brand-primary); border: 2px solid var(--brand-primary); border-radius: var(--radius); transition: all 0.15s; } .swagger-link:hover { background: var(--brand-primary-dark); border-color: var(--brand-primary-dark); color: #fff; } /* ── Stands cards ── */ .card-stands .card-header { display: flex; align-items: baseline; gap: 12px; } .stands-grid { display: flex; gap: 12px; } .stand-card { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 16px 12px; background: var(--brand-grey-light); border: 2px solid var(--border); border-radius: var(--radius); text-decoration: none; color: var(--text); transition: all 0.15s; } .stand-card:hover { border-color: var(--brand-primary); background: #eff6ff; } .stand-active { border-color: var(--brand-primary); background: #eff6ff; } .stand-name { font-size: 18px; font-weight: 700; text-transform: uppercase; color: var(--brand-primary); } .stand-count { font-size: 13px; color: var(--text-muted); } .stand-arrow { font-size: 12px; color: var(--brand-primary); opacity: 0; transition: opacity 0.15s; } .stand-card:hover .stand-arrow { opacity: 1; } /* ── Dots ── */ .dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; } .dot-green { background: var(--green); } .dot-gray { background: var(--brand-gray); } .status-text { font-weight: 600; color: var(--green); } /* ── Cards (ui-kit:bg-card ui-kit:rounded-xl ui-kit:border ui-kit:shadow-sm) ── */ .card { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 1px 2px rgba(0,0,0,0.04); overflow: hidden; } .card-header { background: var(--brand-grey-light); padding: 12px 16px; font-weight: 600; font-size: 16px; } .card-header h2 { font-size: 16px; font-weight: 600; } .card-body { padding: 16px; } .card-body p { margin-bottom: 12px; } .card-body p:last-child { margin-bottom: 0; } .card-body ul { padding-left: 20px; margin-bottom: 0; } .card-body li { margin-bottom: 4px; } /* ── 2-column grid ── */ .grid-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; margin-top: 8px; } @media (max-width: 640px) { .grid-2col { grid-template-columns: 1fr; } } /* ── Headings ── */ .h4 { font-size: 14px; font-weight: 600; margin-bottom: 6px; margin-top: 16px; color: var(--text); } .h4:first-child { margin-top: 0; } /* ── Code blocks ── */ .code-block { background: #1e1e2e; color: #cdd6f4; padding: 12px 16px; border-radius: var(--radius-sm); font-family: "SF Mono", "Fira Code", "Cascadia Code", monospace; font-size: 13px; line-height: 1.6; overflow-x: auto; margin-bottom: 12px; white-space: pre-wrap; word-break: break-all; } .code-block code { background: none; padding: 0; font-size: inherit; } /* ── Note / Callout ── */ .note { background: #eff6ff; border: 1px solid #bfdbfe; border-radius: var(--radius-sm); padding: 10px 14px; margin-top: 16px; font-size: 13px; color: #1e40af; } .note code { background: #dbeafe; padding: 1px 5px; border-radius: 3px; font-size: 12px; } /* ── Table ── */ .table-wrap { padding: 0; overflow-x: auto; } .table { width: 100%; border-collapse: collapse; font-size: 13px; } .table th { background: var(--brand-grey-light); text-transform: uppercase; font-size: 11px; font-weight: 600; letter-spacing: 0.05em; color: var(--text-muted); padding: 8px 12px; text-align: left; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); white-space: nowrap; } .table th:last-child { border-right: none; } .table td { padding: 7px 12px; border-right: 1px solid var(--border); border-bottom: 1px solid var(--border); vertical-align: middle; } .table td:last-child { border-right: none; } .table tbody tr:hover { background: rgba(243, 244, 246, 0.5); } .table tbody tr:last-child td { border-bottom: none; } /* ── HTTP Method badges ── */ .method { display: inline-block; padding: 1px 7px; border-radius: 3px; font-size: 11px; font-weight: 700; font-family: monospace; text-transform: uppercase; } .method-get { background: #dbeafe; color: #1d4ed8; } .method-post { background: #dcfce7; color: #16a34a; } /* ── Muted text ── */ .muted { color: var(--text-muted); font-weight: 400; } /* ── Inline code ── */ code { background: var(--brand-grey-light); padding: 1px 5px; border-radius: 3px; font-family: "SF Mono", "Fira Code", monospace; font-size: 12px; } /* ── Footer ── */ .footer { text-align: center; padding: 20px 16px; color: var(--text-muted); font-size: 12px; max-width: 960px; margin: 0 auto; }