2263 lines
43 KiB
CSS
2263 lines
43 KiB
CSS
*, *::before, *::after {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
:root {
|
|
/* Method colors */
|
|
--m-get: #34d399;
|
|
--m-post: #818cf8;
|
|
--m-put: #fbbf24;
|
|
--m-patch: #fb923c;
|
|
--m-delete: #f87171;
|
|
--m-head: #c084fc;
|
|
--m-options: #22d3ee;
|
|
--m-default: #64748b;
|
|
/* Accent palette */
|
|
--accent: #6366f1;
|
|
--accent-2: #a5b4fc;
|
|
--accent-dim: rgba(99,102,241,.13);
|
|
--accent-glow: rgba(99,102,241,.35);
|
|
/* Typography */
|
|
--font-sans: 'Inter', system-ui, -apple-system, sans-serif;
|
|
--font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
|
|
/* Radii */
|
|
--radius-xs: 3px;
|
|
--radius-sm: 5px;
|
|
--radius-md: 8px;
|
|
--radius-lg: 12px;
|
|
--radius-xl: 16px;
|
|
--radius-2xl: 20px;
|
|
/* Sizing */
|
|
--topbar-h: 54px;
|
|
--sidebar-w: 256px;
|
|
--try-w: 390px;
|
|
/* Transitions */
|
|
--ease: cubic-bezier(.22,.1,.36,1);
|
|
}
|
|
|
|
/* DARK THEME (default) */
|
|
[data-theme="dark"] {
|
|
--bg-0: #0a0b10;
|
|
--bg-1: #0f1117;
|
|
--bg-2: #161921;
|
|
--bg-3: #1e2130;
|
|
--bg-4: #252a3a;
|
|
--bg-5: #2d3347;
|
|
--border: rgba(255,255,255,.055);
|
|
--border-2: rgba(255,255,255,.10);
|
|
--border-3: rgba(255,255,255,.16);
|
|
--text-1: #eef0f8;
|
|
--text-2: #7a82a6;
|
|
--text-3: #404766;
|
|
--shadow-sm: 0 1px 4px rgba(0,0,0,.5), 0 2px 8px rgba(0,0,0,.3);
|
|
--shadow: 0 4px 20px rgba(0,0,0,.6), 0 8px 40px rgba(0,0,0,.3);
|
|
--shadow-lg: 0 16px 60px rgba(0,0,0,.7), 0 4px 16px rgba(0,0,0,.4);
|
|
--topbar-bg: rgba(15,17,23,.92);
|
|
--sidebar-bg: rgba(15,17,23,.98);
|
|
--code-bg: #070809;
|
|
--icon-sun: block;
|
|
--icon-moon: none;
|
|
}
|
|
|
|
/* LIGHT THEME */
|
|
[data-theme="light"] {
|
|
--bg-0: #f4f5fa;
|
|
--bg-1: #ffffff;
|
|
--bg-2: #f0f1f8;
|
|
--bg-3: #e6e8f4;
|
|
--bg-4: #dcdff0;
|
|
--bg-5: #d2d5e8;
|
|
--border: rgba(0,0,0,.07);
|
|
--border-2: rgba(0,0,0,.12);
|
|
--border-3: rgba(0,0,0,.18);
|
|
--text-1: #0e1028;
|
|
--text-2: #5a628c;
|
|
--text-3: #9298b8;
|
|
--shadow-sm: 0 1px 4px rgba(0,0,0,.08), 0 2px 8px rgba(0,0,0,.04);
|
|
--shadow: 0 4px 20px rgba(0,0,0,.1), 0 8px 40px rgba(0,0,0,.05);
|
|
--shadow-lg: 0 16px 60px rgba(0,0,0,.15), 0 4px 16px rgba(0,0,0,.07);
|
|
--topbar-bg: rgba(255,255,255,.92);
|
|
--sidebar-bg: rgba(255,255,255,.98);
|
|
--code-bg: #f8f9fd;
|
|
--icon-sun: none;
|
|
--icon-moon: block;
|
|
}
|
|
|
|
/* BASE */
|
|
html, body {
|
|
height: 100%;
|
|
overflow: hidden;
|
|
background: var(--bg-0);
|
|
color: var(--text-1);
|
|
font-family: var(--font-sans);
|
|
font-size: 13px;
|
|
line-height: 1.6;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
button {
|
|
cursor: pointer;
|
|
border: none;
|
|
background: none;
|
|
font: inherit;
|
|
color: inherit;
|
|
}
|
|
|
|
input, textarea, select {
|
|
font: inherit;
|
|
color: inherit;
|
|
background: transparent;
|
|
border: none;
|
|
outline: none;
|
|
}
|
|
|
|
select {
|
|
appearance: none;
|
|
-webkit-appearance: none;
|
|
}
|
|
|
|
a {
|
|
color: var(--accent-2);
|
|
text-decoration: none;
|
|
}
|
|
|
|
a:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
::-webkit-scrollbar {
|
|
width: 4px;
|
|
height: 4px;
|
|
}
|
|
|
|
::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb {
|
|
background: var(--bg-4);
|
|
border-radius: 99px;
|
|
}
|
|
|
|
::-webkit-scrollbar-thumb:hover {
|
|
background: var(--bg-5);
|
|
}
|
|
|
|
/* TOP BAR */
|
|
.topbar {
|
|
position: fixed;
|
|
inset: 0 0 auto 0;
|
|
z-index: 100;
|
|
height: var(--topbar-h);
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 0 16px;
|
|
background: var(--topbar-bg);
|
|
border-bottom: 1px solid var(--border);
|
|
backdrop-filter: blur(20px) saturate(1.8);
|
|
-webkit-backdrop-filter: blur(20px) saturate(1.8);
|
|
}
|
|
|
|
.topbar-left {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 14px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.topbar-center {
|
|
flex: 1;
|
|
min-width: 0;
|
|
max-width: 480px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.topbar-right {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Brand */
|
|
.brand {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
user-select: none;
|
|
}
|
|
|
|
.brand-icon {
|
|
width: 32px;
|
|
height: 32px;
|
|
border-radius: var(--radius-md);
|
|
background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #06b6d4 100%);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
box-shadow: 0 2px 12px rgba(99,102,241,.5), 0 0 0 1px rgba(255,255,255,.1) inset;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.brand-icon::after {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(135deg, rgba(255,255,255,.15) 0%, transparent 60%);
|
|
}
|
|
|
|
.brand-icon svg {
|
|
width: 16px;
|
|
height: 16px;
|
|
color: #fff;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.brand-text {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 8px;
|
|
}
|
|
|
|
.brand-name {
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
color: var(--text-1);
|
|
letter-spacing: -.02em;
|
|
background: linear-gradient(135deg, var(--text-1) 40%, var(--accent-2) 100%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
.brand-ver {
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
font-family: var(--font-mono);
|
|
padding: 2px 7px;
|
|
background: var(--bg-3);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: 99px;
|
|
color: var(--text-2);
|
|
-webkit-text-fill-color: var(--text-2);
|
|
}
|
|
|
|
/* API Selector */
|
|
.api-switcher-wrap {
|
|
display: flex;
|
|
}
|
|
|
|
.api-select {
|
|
height: 30px;
|
|
padding: 0 28px 0 10px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
background: var(--bg-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%236b7280' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 6px center / 16px no-repeat;
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-md);
|
|
color: var(--text-1);
|
|
cursor: pointer;
|
|
transition: border-color .15s, box-shadow .15s;
|
|
}
|
|
|
|
.api-select:hover {
|
|
border-color: var(--accent);
|
|
}
|
|
|
|
.api-select:focus {
|
|
border-color: var(--accent);
|
|
box-shadow: 0 0 0 3px var(--accent-dim);
|
|
outline: none;
|
|
}
|
|
|
|
/* Search */
|
|
.search-wrap {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
height: 36px;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-lg);
|
|
padding: 0 12px;
|
|
transition: border-color .15s, box-shadow .15s;
|
|
}
|
|
|
|
.search-wrap:focus-within {
|
|
border-color: var(--accent);
|
|
box-shadow: 0 0 0 3px var(--accent-dim);
|
|
}
|
|
|
|
.search-ico {
|
|
width: 15px;
|
|
height: 15px;
|
|
color: var(--text-3);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.search-wrap input {
|
|
flex: 1;
|
|
font-size: 13px;
|
|
background: none;
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.search-wrap input::placeholder {
|
|
color: var(--text-3);
|
|
}
|
|
|
|
.search-kbd {
|
|
font-family: var(--font-mono);
|
|
font-size: 10px;
|
|
padding: 2px 6px;
|
|
background: var(--bg-3);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: 4px;
|
|
color: var(--text-3);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Topbar Buttons */
|
|
.tb-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
height: 30px;
|
|
padding: 0 10px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
border-radius: var(--radius-md);
|
|
color: var(--text-2);
|
|
transition: background .13s, color .13s;
|
|
white-space: nowrap;
|
|
position: relative;
|
|
}
|
|
|
|
.tb-btn svg {
|
|
width: 14px;
|
|
height: 14px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.tb-btn:hover {
|
|
background: var(--bg-3);
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.tb-btn-accent {
|
|
background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
|
|
color: #fff !important;
|
|
box-shadow: 0 2px 10px rgba(99,102,241,.4);
|
|
}
|
|
|
|
.tb-btn-accent:hover {
|
|
background: linear-gradient(135deg, #7c7ff5 0%, #9d71fa 100%) !important;
|
|
box-shadow: 0 3px 14px rgba(99,102,241,.55);
|
|
}
|
|
|
|
.tb-divider {
|
|
width: 1px;
|
|
height: 22px;
|
|
background: var(--border-2);
|
|
margin: 0 4px;
|
|
}
|
|
|
|
/* Auth dot */
|
|
.auth-dot {
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 50%;
|
|
background: #34d399;
|
|
box-shadow: 0 0 6px rgba(52,211,153,.7);
|
|
margin-left: 2px;
|
|
}
|
|
|
|
/* Export dropdown */
|
|
.export-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
position: relative;
|
|
}
|
|
|
|
.export-dropdown {
|
|
position: relative;
|
|
}
|
|
|
|
.export-menu {
|
|
position: absolute;
|
|
top: calc(100% + 8px);
|
|
right: 0;
|
|
min-width: 170px;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-lg);
|
|
box-shadow: var(--shadow-lg);
|
|
overflow: hidden;
|
|
display: none;
|
|
z-index: 200;
|
|
animation: pop-in .14s var(--ease);
|
|
}
|
|
|
|
.export-menu.open {
|
|
display: block;
|
|
}
|
|
|
|
@keyframes pop-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(-6px) scale(.97);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: none;
|
|
}
|
|
}
|
|
|
|
.export-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
width: 100%;
|
|
padding: 9px 14px;
|
|
font-size: 12px;
|
|
transition: background .1s;
|
|
}
|
|
|
|
.export-item:hover {
|
|
background: var(--bg-3);
|
|
}
|
|
|
|
.export-fmt {
|
|
font-weight: 600;
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.export-desc {
|
|
color: var(--text-3);
|
|
font-family: var(--font-mono);
|
|
font-size: 10px;
|
|
}
|
|
|
|
.chevdown {
|
|
width: 14px;
|
|
height: 14px;
|
|
margin-left: 2px;
|
|
}
|
|
|
|
/* Icon buttons */
|
|
.icon-btn {
|
|
width: 30px;
|
|
height: 30px;
|
|
border-radius: var(--radius-md);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: var(--text-2);
|
|
transition: background .13s, color .13s;
|
|
}
|
|
|
|
.icon-btn:hover {
|
|
background: var(--bg-3);
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.icon-btn svg {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
[data-theme="dark"] .icon-sun {
|
|
display: block;
|
|
}
|
|
|
|
[data-theme="dark"] .icon-moon {
|
|
display: none;
|
|
}
|
|
|
|
[data-theme="light"] .icon-sun {
|
|
display: none;
|
|
}
|
|
|
|
[data-theme="light"] .icon-moon {
|
|
display: block;
|
|
}
|
|
|
|
/*
|
|
LAYOUT
|
|
*/
|
|
.app-shell {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100vh;
|
|
}
|
|
|
|
.layout {
|
|
display: flex;
|
|
flex: 1;
|
|
overflow: hidden;
|
|
margin-top: var(--topbar-h);
|
|
}
|
|
|
|
/*
|
|
SIDEBAR
|
|
*/
|
|
.sidebar {
|
|
width: var(--sidebar-w);
|
|
flex-shrink: 0;
|
|
overflow-y: auto;
|
|
overflow-x: hidden;
|
|
background: var(--sidebar-bg);
|
|
border-right: 1px solid var(--border);
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.sidebar-inner {
|
|
padding: 10px 0 40px;
|
|
}
|
|
|
|
/* Overview link */
|
|
.nav-overview-link {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
width: 100%;
|
|
padding: 8px 16px;
|
|
font-size: 12.5px;
|
|
font-weight: 500;
|
|
color: var(--text-2);
|
|
border-radius: 0;
|
|
margin-bottom: 6px;
|
|
transition: background .12s, color .12s;
|
|
}
|
|
|
|
.nav-overview-link svg {
|
|
width: 15px;
|
|
height: 15px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.nav-overview-link:hover {
|
|
background: var(--bg-2);
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.nav-overview-link.active {
|
|
background: var(--accent-dim);
|
|
color: var(--accent-2);
|
|
position: relative;
|
|
}
|
|
|
|
.nav-overview-link.active::before {
|
|
content: '';
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: 2px;
|
|
background: var(--accent);
|
|
border-radius: 0 2px 2px 0;
|
|
}
|
|
|
|
/* Nav groups */
|
|
.nav-group {
|
|
}
|
|
|
|
.nav-group-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
width: 100%;
|
|
padding: 8px 16px 4px;
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
color: var(--text-3);
|
|
letter-spacing: .08em;
|
|
text-transform: uppercase;
|
|
transition: color .12s;
|
|
}
|
|
|
|
.nav-group-header:hover {
|
|
color: var(--text-2);
|
|
}
|
|
|
|
.chev {
|
|
width: 11px;
|
|
height: 11px;
|
|
transition: transform .2s var(--ease);
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.nav-group.collapsed .chev {
|
|
transform: rotate(-90deg);
|
|
}
|
|
|
|
.nav-group-count {
|
|
margin-left: auto;
|
|
font-size: 10px;
|
|
font-weight: 600;
|
|
padding: 0 6px;
|
|
height: 17px;
|
|
line-height: 17px;
|
|
background: var(--bg-3);
|
|
border-radius: 99px;
|
|
color: var(--text-3);
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.nav-endpoints {
|
|
}
|
|
|
|
.nav-group.collapsed .nav-endpoints {
|
|
display: none;
|
|
}
|
|
|
|
/* Endpoint items */
|
|
.nav-endpoint {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
width: 100%;
|
|
padding: 5px 16px 5px 28px;
|
|
font-size: 12px;
|
|
color: var(--text-2);
|
|
transition: background .1s, color .1s;
|
|
border-left: 2px solid transparent;
|
|
overflow: hidden;
|
|
min-height: 30px;
|
|
}
|
|
|
|
.nav-endpoint:hover {
|
|
background: var(--bg-2);
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.nav-endpoint.active {
|
|
background: color-mix(in srgb, var(--method-color, var(--accent)) 8%, var(--bg-2));
|
|
color: var(--text-1);
|
|
border-left-color: var(--method-color, var(--accent));
|
|
}
|
|
|
|
.nav-endpoint.deprecated {
|
|
opacity: .45;
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
/* Method tags */
|
|
.method-tag {
|
|
font-family: var(--font-mono);
|
|
font-size: 8.5px;
|
|
font-weight: 800;
|
|
padding: 2px 5px;
|
|
border-radius: var(--radius-xs);
|
|
flex-shrink: 0;
|
|
letter-spacing: .06em;
|
|
background: color-mix(in srgb, var(--method-color, var(--m-default)) 18%, transparent);
|
|
color: var(--method-color, var(--m-default));
|
|
min-width: 40px;
|
|
text-align: center;
|
|
}
|
|
|
|
.nav-endpoint-path {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
font-family: var(--font-mono);
|
|
font-size: 11.5px;
|
|
}
|
|
|
|
.nav-empty {
|
|
padding: 20px 16px;
|
|
color: var(--text-3);
|
|
font-size: 12px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* Skeleton */
|
|
.skeleton {
|
|
background: linear-gradient(90deg, var(--bg-3) 25%, var(--bg-4) 50%, var(--bg-3) 75%);
|
|
background-size: 200% 100%;
|
|
animation: shimmer 1.6s infinite;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
from {
|
|
background-position: 200% 0;
|
|
}
|
|
|
|
to {
|
|
background-position: -200% 0;
|
|
}
|
|
}
|
|
|
|
/*
|
|
MAIN CONTENT
|
|
*/
|
|
.content-area {
|
|
flex: 1;
|
|
display: flex;
|
|
overflow: hidden;
|
|
min-width: 0;
|
|
}
|
|
|
|
/* Detail pane */
|
|
.detail-pane {
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
min-width: 0;
|
|
background: var(--bg-0);
|
|
}
|
|
|
|
.detail-content {
|
|
max-width: 820px;
|
|
margin: 0 auto;
|
|
padding: 36px 44px 100px;
|
|
}
|
|
|
|
/* Try pane */
|
|
.try-pane {
|
|
width: var(--try-w);
|
|
flex-shrink: 0;
|
|
overflow-y: auto;
|
|
background: var(--bg-1);
|
|
border-left: 1px solid var(--border);
|
|
}
|
|
|
|
.try-content {
|
|
padding: 18px;
|
|
}
|
|
|
|
/*
|
|
ANIMATIONS
|
|
*/
|
|
.fade-in {
|
|
animation: fade-up .22s var(--ease);
|
|
}
|
|
|
|
@keyframes fade-up {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateY(8px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: none;
|
|
}
|
|
}
|
|
|
|
/*
|
|
OVERVIEW
|
|
*/
|
|
.overview-hero {
|
|
margin-bottom: 36px;
|
|
padding-bottom: 36px;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.overview-eyebrow {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
letter-spacing: .12em;
|
|
text-transform: uppercase;
|
|
color: var(--accent-2);
|
|
margin-bottom: 16px;
|
|
opacity: .85;
|
|
}
|
|
|
|
.overview-eyebrow svg {
|
|
width: 13px;
|
|
height: 13px;
|
|
}
|
|
|
|
.overview-title {
|
|
font-size: 30px;
|
|
font-weight: 800;
|
|
line-height: 1.15;
|
|
letter-spacing: -.03em;
|
|
margin-bottom: 12px;
|
|
background: linear-gradient(135deg, var(--text-1) 40%, var(--accent-2) 120%);
|
|
-webkit-background-clip: text;
|
|
-webkit-text-fill-color: transparent;
|
|
background-clip: text;
|
|
}
|
|
|
|
.overview-desc {
|
|
font-size: 14px;
|
|
color: var(--text-2);
|
|
line-height: 1.75;
|
|
max-width: 540px;
|
|
}
|
|
|
|
.overview-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
margin-top: 18px;
|
|
}
|
|
|
|
.overview-pill {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 11.5px;
|
|
font-family: var(--font-mono);
|
|
padding: 5px 12px;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: 99px;
|
|
color: var(--text-2);
|
|
}
|
|
|
|
.overview-pill svg {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
/* Stats */
|
|
.overview-stats {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
gap: 12px;
|
|
margin-bottom: 36px;
|
|
}
|
|
|
|
.overview-stat {
|
|
background: var(--bg-1);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 20px 16px;
|
|
text-align: center;
|
|
position: relative;
|
|
overflow: hidden;
|
|
transition: border-color .2s, transform .2s var(--ease);
|
|
}
|
|
|
|
.overview-stat::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 2px;
|
|
background: linear-gradient(90deg, var(--accent) 0%, #8b5cf6 50%, #06b6d4 100%);
|
|
opacity: 0;
|
|
transition: opacity .2s;
|
|
}
|
|
|
|
.overview-stat:hover::before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.overview-stat:hover {
|
|
border-color: var(--border-2);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
.overview-stat-value {
|
|
font-size: 28px;
|
|
font-weight: 800;
|
|
color: var(--text-1);
|
|
line-height: 1;
|
|
letter-spacing: -.03em;
|
|
}
|
|
|
|
.overview-stat-label {
|
|
font-size: 10.5px;
|
|
font-weight: 600;
|
|
color: var(--text-3);
|
|
margin-top: 6px;
|
|
text-transform: uppercase;
|
|
letter-spacing: .07em;
|
|
}
|
|
|
|
/* Overview section */
|
|
.overview-section-title {
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
letter-spacing: .1em;
|
|
text-transform: uppercase;
|
|
color: var(--text-3);
|
|
margin: 32px 0 14px;
|
|
}
|
|
|
|
/* Security badges */
|
|
.security-badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
}
|
|
|
|
.security-badge {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
padding: 6px 12px;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-md);
|
|
color: var(--text-2);
|
|
transition: border-color .14s, color .14s, background .14s;
|
|
}
|
|
|
|
.security-badge svg {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
button.security-badge:hover {
|
|
border-color: var(--accent);
|
|
color: var(--accent-2);
|
|
background: var(--accent-dim);
|
|
}
|
|
|
|
/* Overview group cards */
|
|
.overview-group-card {
|
|
background: var(--bg-1);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
margin-bottom: 12px;
|
|
overflow: hidden;
|
|
transition: border-color .15s, box-shadow .15s;
|
|
}
|
|
|
|
.overview-group-card:hover {
|
|
border-color: var(--border-2);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
.overview-group-card-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 14px 18px;
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
border-bottom: 1px solid var(--border);
|
|
background: var(--bg-2);
|
|
}
|
|
|
|
.overview-group-routes {
|
|
}
|
|
|
|
.overview-route-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 10px 18px;
|
|
cursor: pointer;
|
|
transition: background .1s;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.overview-route-row:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.overview-route-row:hover {
|
|
background: var(--bg-2);
|
|
}
|
|
|
|
.method-badge {
|
|
font-family: var(--font-mono);
|
|
font-size: 9.5px;
|
|
font-weight: 800;
|
|
padding: 3px 8px;
|
|
border-radius: var(--radius-sm);
|
|
flex-shrink: 0;
|
|
background: color-mix(in srgb, var(--method-color, var(--m-default)) 15%, transparent);
|
|
color: var(--method-color, var(--m-default));
|
|
min-width: 54px;
|
|
text-align: center;
|
|
letter-spacing: .04em;
|
|
}
|
|
|
|
.route-path {
|
|
font-family: var(--font-mono);
|
|
font-size: 12px;
|
|
flex-shrink: 0;
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.route-summary {
|
|
font-size: 12px;
|
|
color: var(--text-2);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
flex: 1;
|
|
}
|
|
|
|
.route-arrow {
|
|
width: 14px;
|
|
height: 14px;
|
|
color: var(--text-3);
|
|
flex-shrink: 0;
|
|
margin-left: auto;
|
|
}
|
|
|
|
/*
|
|
ENDPOINT DETAIL
|
|
*/
|
|
.endpoint-header {
|
|
margin-bottom: 32px;
|
|
padding-bottom: 28px;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.breadcrumb {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
font-size: 11.5px;
|
|
color: var(--text-3);
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.breadcrumb svg {
|
|
width: 13px;
|
|
height: 13px;
|
|
}
|
|
|
|
.breadcrumb .current {
|
|
color: var(--text-2);
|
|
}
|
|
|
|
.request-line {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
margin-bottom: 14px;
|
|
padding: 12px 16px;
|
|
background: var(--bg-1);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
border-left: 3px solid var(--method-color, var(--accent));
|
|
}
|
|
|
|
.endpoint-path {
|
|
font-family: var(--font-mono);
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: var(--text-1);
|
|
letter-spacing: -.01em;
|
|
flex: 1;
|
|
}
|
|
|
|
.copy-route-btn {
|
|
width: 28px;
|
|
height: 28px;
|
|
border-radius: var(--radius-sm);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: var(--text-3);
|
|
transition: background .12s, color .12s;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.copy-route-btn svg {
|
|
width: 14px;
|
|
height: 14px;
|
|
}
|
|
|
|
.copy-route-btn:hover {
|
|
background: var(--bg-3);
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.endpoint-summary {
|
|
font-size: 22px;
|
|
font-weight: 800;
|
|
letter-spacing: -.03em;
|
|
margin-bottom: 8px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.endpoint-description {
|
|
font-size: 13.5px;
|
|
color: var(--text-2);
|
|
line-height: 1.75;
|
|
}
|
|
|
|
.deprecated-banner {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 10px 16px;
|
|
margin: 14px 0;
|
|
background: color-mix(in srgb, #fbbf24 8%, transparent);
|
|
border: 1px solid color-mix(in srgb, #fbbf24 25%, transparent);
|
|
border-radius: var(--radius-md);
|
|
font-size: 12px;
|
|
color: #fbbf24;
|
|
}
|
|
|
|
.deprecated-banner svg {
|
|
width: 14px;
|
|
height: 14px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* Sections */
|
|
.section {
|
|
margin-bottom: 32px;
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
letter-spacing: .1em;
|
|
text-transform: uppercase;
|
|
color: var(--text-3);
|
|
margin-bottom: 14px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.count {
|
|
font-size: 10px;
|
|
font-family: var(--font-mono);
|
|
padding: 0 7px;
|
|
height: 17px;
|
|
line-height: 17px;
|
|
background: var(--bg-3);
|
|
border-radius: 99px;
|
|
color: var(--text-2);
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Param table */
|
|
.param-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
font-size: 12.5px;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.param-table thead th {
|
|
text-align: left;
|
|
padding: 9px 14px;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: .09em;
|
|
text-transform: uppercase;
|
|
color: var(--text-3);
|
|
background: var(--bg-1);
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.param-table tbody tr {
|
|
border-bottom: 1px solid var(--border);
|
|
transition: background .1s;
|
|
}
|
|
|
|
.param-table tbody tr:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.param-table tbody tr:hover {
|
|
background: var(--bg-2);
|
|
}
|
|
|
|
.param-table td {
|
|
padding: 10px 14px;
|
|
vertical-align: top;
|
|
}
|
|
|
|
.param-name {
|
|
font-family: var(--font-mono);
|
|
font-size: 12.5px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.param-required {
|
|
color: #f87171;
|
|
margin-left: 2px;
|
|
font-size: 14px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.param-loc {
|
|
display: inline-block;
|
|
padding: 2px 7px;
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
background: var(--bg-3);
|
|
border-radius: var(--radius-xs);
|
|
color: var(--text-2);
|
|
font-family: var(--font-mono);
|
|
letter-spacing: .03em;
|
|
}
|
|
|
|
.param-type {
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
color: var(--accent-2);
|
|
}
|
|
|
|
.param-desc {
|
|
color: var(--text-2);
|
|
font-size: 12px;
|
|
}
|
|
|
|
/* Schema box */
|
|
.schema-box {
|
|
background: var(--code-bg);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 16px 20px;
|
|
font-family: var(--font-mono);
|
|
font-size: 12px;
|
|
line-height: 1.85;
|
|
white-space: pre-wrap;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.schema-key {
|
|
color: #93c5fd;
|
|
}
|
|
|
|
.schema-type {
|
|
color: var(--accent-2);
|
|
}
|
|
|
|
.schema-comment {
|
|
color: var(--text-3);
|
|
font-style: italic;
|
|
}
|
|
|
|
.schema-punct {
|
|
color: var(--text-3);
|
|
}
|
|
|
|
.schema-required-mark {
|
|
color: #f87171;
|
|
}
|
|
|
|
.schema-nullable-mark {
|
|
color: #fbbf24;
|
|
}
|
|
|
|
/* Response blocks */
|
|
.response-block {
|
|
margin-bottom: 10px;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
transition: border-color .15s;
|
|
}
|
|
|
|
.response-block:hover {
|
|
border-color: var(--border-2);
|
|
}
|
|
|
|
.response-block-header {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
padding: 11px 16px;
|
|
background: var(--bg-1);
|
|
}
|
|
|
|
.response-block-body {
|
|
padding: 14px 16px;
|
|
border-top: 1px solid var(--border);
|
|
background: var(--bg-0);
|
|
}
|
|
|
|
/* Status pills */
|
|
.status-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
padding: 3px 9px;
|
|
border-radius: var(--radius-sm);
|
|
flex-shrink: 0;
|
|
letter-spacing: .03em;
|
|
}
|
|
|
|
.status-2xx {
|
|
background: color-mix(in srgb, #34d399 14%, transparent);
|
|
color: #34d399;
|
|
}
|
|
|
|
.status-4xx {
|
|
background: color-mix(in srgb, #fbbf24 14%, transparent);
|
|
color: #fbbf24;
|
|
}
|
|
|
|
.status-5xx {
|
|
background: color-mix(in srgb, #f87171 14%, transparent);
|
|
color: #f87171;
|
|
}
|
|
|
|
.response-desc {
|
|
font-size: 13px;
|
|
color: var(--text-2);
|
|
}
|
|
|
|
/*
|
|
TRY-IT PANE
|
|
*/
|
|
.try-empty {
|
|
text-align: center;
|
|
padding: 70px 28px;
|
|
color: var(--text-3);
|
|
font-size: 13px;
|
|
line-height: 1.75;
|
|
}
|
|
|
|
.try-empty svg {
|
|
width: 28px;
|
|
height: 28px;
|
|
margin: 0 auto 14px;
|
|
display: block;
|
|
opacity: .3;
|
|
}
|
|
|
|
.try-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 16px;
|
|
padding-bottom: 14px;
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.try-title {
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: .1em;
|
|
text-transform: uppercase;
|
|
color: var(--text-2);
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.live-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: var(--method-color, var(--accent));
|
|
box-shadow: 0 0 8px var(--method-color, var(--accent));
|
|
animation: pulse-dot 2.2s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes pulse-dot {
|
|
0%, 100% {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
|
|
50% {
|
|
opacity: .5;
|
|
transform: scale(.85);
|
|
}
|
|
}
|
|
|
|
/* Try tabs */
|
|
.try-tabs {
|
|
display: flex;
|
|
gap: 2px;
|
|
margin-bottom: 16px;
|
|
background: var(--bg-2);
|
|
border-radius: var(--radius-md);
|
|
padding: 3px;
|
|
border: 1px solid var(--border);
|
|
}
|
|
|
|
.try-tab {
|
|
flex: 1;
|
|
height: 27px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
border-radius: calc(var(--radius-md) - 2px);
|
|
color: var(--text-3);
|
|
transition: background .12s, color .12s, box-shadow .12s;
|
|
}
|
|
|
|
.try-tab.active {
|
|
background: var(--bg-1);
|
|
color: var(--text-1);
|
|
box-shadow: var(--shadow-sm);
|
|
}
|
|
|
|
.try-tab:hover:not(.active) {
|
|
color: var(--text-2);
|
|
background: var(--bg-3);
|
|
}
|
|
|
|
/* Auth banner */
|
|
.auth-banner {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 10px 14px;
|
|
border-radius: var(--radius-md);
|
|
font-size: 12px;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.auth-banner svg {
|
|
width: 14px;
|
|
height: 14px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.auth-set {
|
|
background: color-mix(in srgb, #34d399 10%, transparent);
|
|
border: 1px solid color-mix(in srgb, #34d399 22%, transparent);
|
|
color: #34d399;
|
|
}
|
|
|
|
.auth-missing {
|
|
background: color-mix(in srgb, #fbbf24 10%, transparent);
|
|
border: 1px solid color-mix(in srgb, #fbbf24 22%, transparent);
|
|
color: #fbbf24;
|
|
}
|
|
|
|
.auth-banner-link {
|
|
margin-left: auto;
|
|
font-size: 11.5px;
|
|
font-weight: 700;
|
|
text-decoration: underline;
|
|
background: none;
|
|
border: none;
|
|
cursor: pointer;
|
|
color: inherit;
|
|
opacity: .85;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.auth-banner-link:hover {
|
|
opacity: 1;
|
|
}
|
|
|
|
/* Mock toggle */
|
|
.mock-toggle-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 9px 14px;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-md);
|
|
font-size: 12px;
|
|
margin-bottom: 14px;
|
|
cursor: pointer;
|
|
transition: border-color .13s;
|
|
}
|
|
|
|
.mock-toggle-row:hover {
|
|
border-color: var(--border-2);
|
|
}
|
|
|
|
.mock-toggle-label {
|
|
color: var(--text-2);
|
|
}
|
|
|
|
/* Switch */
|
|
.switch {
|
|
position: relative;
|
|
display: inline-block;
|
|
width: 34px;
|
|
height: 19px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.switch input {
|
|
opacity: 0;
|
|
width: 0;
|
|
height: 0;
|
|
}
|
|
|
|
.switch-slider {
|
|
position: absolute;
|
|
inset: 0;
|
|
cursor: pointer;
|
|
background: var(--bg-4);
|
|
border-radius: 99px;
|
|
transition: background .2s;
|
|
}
|
|
|
|
.switch-slider::before {
|
|
content: '';
|
|
position: absolute;
|
|
width: 13px;
|
|
height: 13px;
|
|
border-radius: 50%;
|
|
left: 3px;
|
|
top: 3px;
|
|
background: #fff;
|
|
transition: transform .2s var(--ease);
|
|
box-shadow: 0 1px 4px rgba(0,0,0,.3);
|
|
}
|
|
|
|
.switch input:checked + .switch-slider {
|
|
background: var(--accent);
|
|
}
|
|
|
|
.switch input:checked + .switch-slider::before {
|
|
transform: translateX(15px);
|
|
}
|
|
|
|
/* Field groups */
|
|
.field-group {
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.field-label {
|
|
font-size: 10.5px;
|
|
font-weight: 700;
|
|
letter-spacing: .08em;
|
|
text-transform: uppercase;
|
|
color: var(--text-3);
|
|
margin-bottom: 9px;
|
|
}
|
|
|
|
.field-sublabel {
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: var(--text-2);
|
|
margin-bottom: 5px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
}
|
|
|
|
.type-hint {
|
|
font-family: var(--font-mono);
|
|
font-size: 10px;
|
|
color: var(--text-3);
|
|
}
|
|
|
|
.req-star {
|
|
color: #f87171;
|
|
}
|
|
|
|
.field-input {
|
|
width: 100%;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-md);
|
|
padding: 8px 12px;
|
|
font-size: 12.5px;
|
|
color: var(--text-1);
|
|
transition: border-color .15s, box-shadow .15s;
|
|
}
|
|
|
|
.field-input:focus {
|
|
border-color: var(--accent);
|
|
box-shadow: 0 0 0 3px var(--accent-dim);
|
|
outline: none;
|
|
}
|
|
|
|
textarea.field-input {
|
|
min-height: 120px;
|
|
font-family: var(--font-mono);
|
|
font-size: 12px;
|
|
resize: vertical;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
/* Send button */
|
|
.send-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
width: 100%;
|
|
height: 40px;
|
|
font-size: 13px;
|
|
font-weight: 700;
|
|
letter-spacing: -.01em;
|
|
background: var(--method-color, var(--accent));
|
|
color: #fff;
|
|
border-radius: var(--radius-md);
|
|
margin-top: 6px;
|
|
transition: opacity .14s, transform .1s var(--ease), box-shadow .14s;
|
|
box-shadow: 0 2px 12px color-mix(in srgb, var(--method-color, var(--accent)) 45%, transparent);
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.send-btn::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background: linear-gradient(180deg, rgba(255,255,255,.15) 0%, transparent 100%);
|
|
}
|
|
|
|
.send-btn svg {
|
|
width: 16px;
|
|
height: 16px;
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.send-btn span {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.send-btn:hover {
|
|
opacity: .88;
|
|
transform: translateY(-1px);
|
|
box-shadow: 0 4px 18px color-mix(in srgb, var(--method-color, var(--accent)) 55%, transparent);
|
|
}
|
|
|
|
.send-btn:active {
|
|
transform: scale(.98);
|
|
}
|
|
|
|
.send-btn:disabled {
|
|
opacity: .4;
|
|
cursor: not-allowed;
|
|
transform: none;
|
|
}
|
|
|
|
/* Code language tabs */
|
|
.code-lang-tabs {
|
|
display: flex;
|
|
gap: 2px;
|
|
margin-bottom: 12px;
|
|
overflow-x: auto;
|
|
background: var(--bg-2);
|
|
border-radius: var(--radius-md);
|
|
padding: 3px;
|
|
border: 1px solid var(--border);
|
|
}
|
|
|
|
.code-lang-tab {
|
|
padding: 4px 12px;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
border-radius: calc(var(--radius-md) - 2px);
|
|
color: var(--text-3);
|
|
white-space: nowrap;
|
|
transition: background .12s, color .12s;
|
|
}
|
|
|
|
.code-lang-tab.active {
|
|
background: var(--accent-dim);
|
|
color: var(--accent-2);
|
|
}
|
|
|
|
.code-lang-tab:hover:not(.active) {
|
|
background: var(--bg-3);
|
|
color: var(--text-2);
|
|
}
|
|
|
|
.curl-header-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 9px;
|
|
}
|
|
|
|
.curl-box {
|
|
background: var(--code-bg);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 16px;
|
|
font-family: var(--font-mono);
|
|
font-size: 11.5px;
|
|
line-height: 1.85;
|
|
overflow-x: auto;
|
|
white-space: pre;
|
|
}
|
|
|
|
.curl-flag {
|
|
color: #38bdf8;
|
|
}
|
|
|
|
.curl-string {
|
|
color: #86efac;
|
|
}
|
|
|
|
/* Response panel */
|
|
.response-panel {
|
|
margin-top: 14px;
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
animation: fade-up .18s var(--ease);
|
|
}
|
|
|
|
.response-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 9px 14px;
|
|
background: var(--bg-2);
|
|
border-bottom: 1px solid var(--border);
|
|
}
|
|
|
|
.response-time {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
font-size: 11px;
|
|
color: var(--text-3);
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.response-time svg {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
.mock-badge {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
font-size: 10.5px;
|
|
font-weight: 600;
|
|
padding: 2px 8px;
|
|
border-radius: 99px;
|
|
background: color-mix(in srgb, var(--accent) 14%, transparent);
|
|
color: var(--accent-2);
|
|
}
|
|
|
|
.response-body {
|
|
padding: 16px;
|
|
font-family: var(--font-mono);
|
|
font-size: 12px;
|
|
line-height: 1.75;
|
|
white-space: pre-wrap;
|
|
word-break: break-all;
|
|
max-height: 400px;
|
|
overflow-y: auto;
|
|
background: var(--code-bg);
|
|
}
|
|
|
|
.response-error {
|
|
color: #f87171;
|
|
}
|
|
|
|
/* JSON highlighting */
|
|
.json-key {
|
|
color: #93c5fd;
|
|
}
|
|
|
|
.json-string {
|
|
color: #86efac;
|
|
}
|
|
|
|
.json-number {
|
|
color: #fdba74;
|
|
}
|
|
|
|
.json-boolean {
|
|
color: #f9a8d4;
|
|
}
|
|
|
|
.json-null {
|
|
color: var(--text-3);
|
|
}
|
|
|
|
/* Copy button */
|
|
.copy-btn {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
height: 27px;
|
|
padding: 0 9px;
|
|
font-size: 11px;
|
|
font-weight: 600;
|
|
background: var(--bg-3);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text-2);
|
|
transition: background .12s, color .12s, border-color .12s;
|
|
}
|
|
|
|
.copy-btn svg {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
.copy-btn:hover {
|
|
background: var(--bg-4);
|
|
color: var(--text-1);
|
|
border-color: var(--border-3);
|
|
}
|
|
|
|
/* Spinner */
|
|
.spinner {
|
|
display: inline-block;
|
|
width: 14px;
|
|
height: 14px;
|
|
border: 2px solid rgba(255,255,255,.25);
|
|
border-top-color: #fff;
|
|
border-radius: 50%;
|
|
animation: spin .65s linear infinite;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
|
|
/* History */
|
|
.history-empty {
|
|
padding: 28px 16px;
|
|
text-align: center;
|
|
color: var(--text-3);
|
|
font-size: 12px;
|
|
line-height: 1.75;
|
|
}
|
|
|
|
.history-item {
|
|
padding: 10px;
|
|
border-bottom: 1px solid var(--border);
|
|
cursor: pointer;
|
|
transition: background .1s;
|
|
border-radius: var(--radius-sm);
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.history-item:hover {
|
|
background: var(--bg-2);
|
|
}
|
|
|
|
.history-item-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.history-item-time {
|
|
font-size: 11px;
|
|
color: var(--text-3);
|
|
margin-left: auto;
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.history-item-path {
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
color: var(--text-2);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/*
|
|
MODAL
|
|
*/
|
|
.modal-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 1000;
|
|
background: rgba(0,0,0,.7);
|
|
backdrop-filter: blur(6px);
|
|
-webkit-backdrop-filter: blur(6px);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 24px;
|
|
animation: fade-up .14s var(--ease);
|
|
}
|
|
|
|
.modal-box {
|
|
background: var(--bg-1);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-xl);
|
|
box-shadow: var(--shadow-lg);
|
|
width: 100%;
|
|
max-width: 490px;
|
|
max-height: 82vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
animation: modal-in .18s var(--ease);
|
|
}
|
|
|
|
.modal-wide {
|
|
max-width: 660px;
|
|
}
|
|
|
|
@keyframes modal-in {
|
|
from {
|
|
opacity: 0;
|
|
transform: scale(.95) translateY(14px);
|
|
}
|
|
|
|
to {
|
|
opacity: 1;
|
|
transform: none;
|
|
}
|
|
}
|
|
|
|
.modal-head {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 18px 22px;
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
background: var(--bg-2);
|
|
}
|
|
|
|
.modal-title {
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
letter-spacing: -.02em;
|
|
}
|
|
|
|
.modal-close {
|
|
width: 30px;
|
|
height: 30px;
|
|
border-radius: var(--radius-md);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: var(--text-3);
|
|
transition: background .12s, color .12s;
|
|
}
|
|
|
|
.modal-close:hover {
|
|
background: var(--bg-3);
|
|
color: var(--text-1);
|
|
}
|
|
|
|
.modal-close svg {
|
|
width: 15px;
|
|
height: 15px;
|
|
}
|
|
|
|
.modal-body {
|
|
overflow-y: auto;
|
|
padding: 20px 22px;
|
|
flex: 1;
|
|
}
|
|
|
|
/* Auth card */
|
|
.auth-scheme-card {
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border-2);
|
|
border-radius: var(--radius-lg);
|
|
padding: 18px;
|
|
margin-bottom: 12px;
|
|
transition: border-color .15s;
|
|
}
|
|
|
|
.auth-scheme-card:hover {
|
|
border-color: var(--border-3);
|
|
}
|
|
|
|
.auth-scheme-head {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.auth-scheme-name {
|
|
font-size: 13.5px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.auth-scheme-type {
|
|
font-size: 9.5px;
|
|
font-weight: 700;
|
|
padding: 2px 7px;
|
|
border-radius: var(--radius-xs);
|
|
background: var(--bg-3);
|
|
color: var(--text-2);
|
|
font-family: var(--font-mono);
|
|
letter-spacing: .04em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.auth-scheme-status {
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 50%;
|
|
background: var(--bg-5);
|
|
margin-left: auto;
|
|
flex-shrink: 0;
|
|
transition: background .25s, box-shadow .25s;
|
|
}
|
|
|
|
.auth-scheme-status.set {
|
|
background: #34d399;
|
|
box-shadow: 0 0 8px rgba(52,211,153,.5);
|
|
}
|
|
|
|
.auth-scheme-desc {
|
|
font-size: 12px;
|
|
color: var(--text-2);
|
|
margin-bottom: 12px;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
.auth-clear-btn {
|
|
font-size: 11px;
|
|
color: var(--text-3);
|
|
margin-top: 8px;
|
|
text-decoration: underline;
|
|
transition: color .12s;
|
|
}
|
|
|
|
.auth-clear-btn:hover {
|
|
color: #f87171;
|
|
}
|
|
|
|
/* Console */
|
|
.console-trigger {
|
|
display: flex;
|
|
gap: 8px;
|
|
margin-bottom: 14px;
|
|
}
|
|
|
|
.request-url {
|
|
flex: 1;
|
|
}
|
|
|
|
/* Diff */
|
|
.diff-summary {
|
|
display: flex;
|
|
gap: 16px;
|
|
padding: 14px 0;
|
|
margin-bottom: 18px;
|
|
border-bottom: 1px solid var(--border);
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.diff-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
font-size: 12.5px;
|
|
color: var(--text-2);
|
|
margin-bottom: 6px;
|
|
}
|
|
|
|
.diff-tag {
|
|
font-family: var(--font-mono);
|
|
font-size: 11px;
|
|
padding: 2px 8px;
|
|
border-radius: var(--radius-sm);
|
|
font-weight: 700;
|
|
}
|
|
|
|
.diff-tag-added {
|
|
background: color-mix(in srgb, #34d399 14%, transparent);
|
|
color: #34d399;
|
|
}
|
|
|
|
.diff-tag-removed {
|
|
background: color-mix(in srgb, #f87171 14%, transparent);
|
|
color: #f87171;
|
|
}
|
|
|
|
.diff-tag-changed {
|
|
background: color-mix(in srgb, #fbbf24 14%, transparent);
|
|
color: #fbbf24;
|
|
}
|
|
|
|
/*
|
|
DASHBOARD DRAWER
|
|
*/
|
|
.drawer {
|
|
position: fixed;
|
|
top: var(--topbar-h);
|
|
right: 0;
|
|
bottom: 0;
|
|
z-index: 90;
|
|
width: 420px;
|
|
background: var(--bg-1);
|
|
border-left: 1px solid var(--border);
|
|
box-shadow: var(--shadow-lg);
|
|
display: flex;
|
|
flex-direction: column;
|
|
animation: slide-in .22s var(--ease);
|
|
}
|
|
|
|
@keyframes slide-in {
|
|
from {
|
|
transform: translateX(40px);
|
|
opacity: 0;
|
|
}
|
|
|
|
to {
|
|
transform: none;
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
.drawer-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 18px 22px;
|
|
border-bottom: 1px solid var(--border);
|
|
flex-shrink: 0;
|
|
background: var(--bg-2);
|
|
}
|
|
|
|
.drawer-title {
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
letter-spacing: -.02em;
|
|
}
|
|
|
|
.drawer-body {
|
|
overflow-y: auto;
|
|
padding: 20px;
|
|
flex: 1;
|
|
}
|
|
|
|
/* Dashboard stat cards */
|
|
.stat-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 10px;
|
|
margin-bottom: 22px;
|
|
}
|
|
|
|
.stat-card {
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
padding: 16px;
|
|
text-align: center;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.stat-card::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
height: 2px;
|
|
background: linear-gradient(90deg, var(--accent) 0%, #8b5cf6 100%);
|
|
}
|
|
|
|
.stat-card-err::before {
|
|
background: linear-gradient(90deg, #f87171, #f43f5e);
|
|
}
|
|
|
|
.stat-card-err .stat-val {
|
|
color: #f87171;
|
|
}
|
|
|
|
.stat-val {
|
|
font-size: 24px;
|
|
font-weight: 800;
|
|
line-height: 1;
|
|
color: var(--text-1);
|
|
letter-spacing: -.03em;
|
|
}
|
|
|
|
.stat-lbl {
|
|
font-size: 10.5px;
|
|
font-weight: 600;
|
|
color: var(--text-3);
|
|
margin-top: 5px;
|
|
text-transform: uppercase;
|
|
letter-spacing: .07em;
|
|
}
|
|
|
|
.dash-section {
|
|
margin-bottom: 16px;
|
|
background: var(--bg-2);
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius-lg);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.dash-section-title {
|
|
padding: 13px 16px 0;
|
|
font-size: 12px;
|
|
font-weight: 700;
|
|
color: var(--text-2);
|
|
text-transform: uppercase;
|
|
letter-spacing: .07em;
|
|
}
|
|
|
|
/* Request items */
|
|
.request-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 9px 16px;
|
|
border-bottom: 1px solid var(--border);
|
|
font-size: 12px;
|
|
transition: background .1s;
|
|
}
|
|
|
|
.request-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.request-item:hover {
|
|
background: var(--bg-3);
|
|
}
|
|
|
|
.request-method {
|
|
font-family: var(--font-mono);
|
|
font-size: 9.5px;
|
|
font-weight: 800;
|
|
padding: 2px 7px;
|
|
border-radius: var(--radius-xs);
|
|
margin-right: 8px;
|
|
background: var(--bg-3);
|
|
color: var(--text-2);
|
|
letter-spacing: .04em;
|
|
}
|
|
|
|
.request-time {
|
|
font-size: 11px;
|
|
color: var(--text-3);
|
|
font-family: var(--font-mono);
|
|
}
|
|
|
|
.request-status-error {
|
|
color: #f87171 !important;
|
|
}
|
|
|
|
.request-status-success {
|
|
color: #34d399 !important;
|
|
}
|
|
|
|
/*
|
|
UTILITIES
|
|
*/
|
|
code {
|
|
font-family: var(--font-mono);
|
|
font-size: .9em;
|
|
background: var(--bg-3);
|
|
border: 1px solid var(--border);
|
|
padding: 1px 6px;
|
|
border-radius: var(--radius-xs);
|
|
}
|