Files
kanban/portal/portal.css
Gahow Wang 74279b9d35 feat: add frontend dashboard, login page and portal entry
Public directory contains the Kanban SPA with dashboard UI, login
page, and styles. Portal directory provides a standalone service
entry page with CSS styling.
2026-05-15 11:13:59 +08:00

167 lines
2.6 KiB
CSS

:root {
color-scheme: light;
--bg: #f4f6f8;
--panel: #ffffff;
--ink: #17202c;
--muted: #697586;
--line: #d7dee8;
--accent: #2563eb;
--soft: #eef4ff;
--shadow: 0 16px 40px rgba(23, 32, 44, 0.08);
}
* {
box-sizing: border-box;
}
body {
margin: 0;
background:
radial-gradient(circle at 18% 10%, rgba(37, 99, 235, 0.12), transparent 28%),
radial-gradient(circle at 90% 18%, rgba(18, 128, 92, 0.11), transparent 26%),
var(--bg);
color: var(--ink);
font: 14px/1.45 system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.shell {
width: min(1180px, calc(100vw - 32px));
margin: 0 auto;
padding: 42px 0 56px;
}
.topbar {
margin-bottom: 30px;
}
h1,
h2,
p {
margin: 0;
}
h1 {
font-size: 34px;
line-height: 1.08;
letter-spacing: 0;
}
h2 {
font-size: 14px;
margin-bottom: 0;
text-transform: uppercase;
color: var(--muted);
}
.topbar p,
.service-desc {
color: var(--muted);
}
.topbar p {
margin-top: 6px;
}
.service-section {
margin-top: 18px;
}
.section-heading {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 12px;
margin-bottom: 10px;
}
.section-heading span {
color: var(--muted);
}
.service-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 16px;
}
.service-card,
.api-section {
background: var(--panel);
border: 1px solid var(--line);
border-radius: 8px;
box-shadow: var(--shadow);
}
.service-card {
position: relative;
display: grid;
grid-template-columns: auto 1fr;
gap: 8px 14px;
min-height: 168px;
padding: 18px;
color: inherit;
text-decoration: none;
overflow: hidden;
}
.service-card:hover {
border-color: var(--accent);
transform: translateY(-1px);
}
.service-card.primary {
border-color: color-mix(in srgb, var(--accent) 32%, var(--line));
}
.service-name {
grid-column: 1 / -1;
font-size: 22px;
font-weight: 700;
}
.service-icon {
display: grid;
place-items: center;
width: 42px;
height: 42px;
border-radius: 8px;
background: var(--soft);
color: var(--accent);
font-weight: 800;
}
.service-topline {
align-self: center;
color: var(--muted);
font-weight: 650;
}
.service-desc {
grid-column: 1 / -1;
}
.service-port {
grid-column: 1 / -1;
justify-self: start;
border-radius: 999px;
background: var(--soft);
color: #1849a9;
padding: 3px 9px;
}
.api-section {
margin-top: 18px;
padding: 14px 16px;
box-shadow: none;
}
.api-section summary {
cursor: pointer;
font-size: 15px;
font-weight: 700;
}
.api-section .service-grid {
margin-top: 14px;
}