skillhub/weekly/assets/notion-light.css
XiaoSeS 09db71ffa7 docs(weekly): mirror reports into project Pages
Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-07-31 11:18:22 +08:00

1176 lines
17 KiB
CSS

:root {
color-scheme: light;
--page: #ffffff;
--paper: #ffffff;
--warm: #f6f5f4;
--ink: #0d0d0d;
--ink-soft: #31302e;
--muted: #615d59;
--faint: #76716c;
--line: #e5e3e1;
--line-soft: #efeeec;
--blue: #0075de;
--blue-active: #005bab;
--blue-soft: #f2f9ff;
--green: #147a33;
--green-soft: #e9f7ec;
--orange: #b84d00;
--orange-soft: #fdf0e3;
--red: #b52d25;
--red-soft: #fdecea;
--neutral-soft: #f1f0ef;
--focus: #097fe8;
--radius-sm: 8px;
--radius: 12px;
--shadow: 0 2px 8px rgb(0 0 0 / 4%);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
background: var(--page);
color: var(--ink);
font: 15px/1.65 Inter, -apple-system, BlinkMacSystemFont, "Segoe UI",
"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
}
a {
color: var(--blue);
text-decoration: none;
text-underline-offset: 3px;
}
a:hover {
color: var(--blue-active);
text-decoration: underline;
}
button,
a {
-webkit-tap-highlight-color: transparent;
}
:focus-visible {
outline: 2px solid var(--focus);
outline-offset: 3px;
}
code {
padding: 1px 4px;
border-radius: 4px;
background: var(--neutral-soft);
color: var(--ink-soft);
font-size: .92em;
}
.skip-link {
position: fixed;
z-index: 30;
top: 8px;
left: -999px;
padding: 8px 12px;
border-radius: 4px;
background: var(--ink-soft);
color: #fff;
}
.skip-link:focus {
left: 8px;
}
.report {
width: min(1200px, 100%);
min-height: 100vh;
margin: 0 auto;
background: var(--paper);
}
.masthead {
padding: 44px 28px 36px;
border-bottom: 1px solid var(--line);
}
.topline {
display: flex;
align-items: center;
justify-content: space-between;
gap: 18px;
margin-bottom: 26px;
}
.brand {
display: flex;
align-items: center;
gap: 10px;
color: var(--ink);
}
.brand-mark {
display: inline-flex;
width: 34px;
height: 34px;
align-items: center;
justify-content: center;
border-radius: 6px;
background: var(--ink-soft);
color: #fff;
font-size: 14px;
font-weight: 700;
letter-spacing: .04em;
}
.brand-name {
font-size: 17px;
font-weight: 700;
letter-spacing: -.01em;
}
.brand-tag {
padding: 4px 10px;
border-radius: 9999px;
background: var(--neutral-soft);
color: var(--muted);
font-size: 12px;
font-weight: 600;
}
.utility-links {
display: flex;
flex-wrap: wrap;
gap: 16px;
font-size: 13px;
}
h1,
h2,
h3 {
text-wrap: balance;
}
h1 {
max-width: 820px;
margin: 0;
color: var(--ink);
font-size: clamp(32px, 4vw, 44px);
line-height: 1.15;
letter-spacing: -.025em;
}
.report-sub {
margin: 8px 0 24px;
color: var(--muted);
font-size: 15px;
}
.header-grid {
display: grid;
grid-template-columns: 1.15fr .85fr;
gap: 16px;
}
.meta-card,
.headline {
border-radius: var(--radius-sm);
padding: 20px 22px;
}
.meta-card {
background: var(--warm);
}
.meta-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px 24px;
}
.meta-item .key,
.headline-label {
display: block;
margin-bottom: 4px;
color: var(--faint);
font-size: 12px;
font-weight: 500;
letter-spacing: .01em;
}
.meta-item .value {
color: var(--ink-soft);
font-size: 14px;
font-weight: 600;
}
.period {
margin: 0;
}
.headline {
display: flex;
flex-direction: column;
justify-content: center;
margin: 0;
border: 0;
background: var(--orange-soft);
color: var(--ink-soft);
}
.headline-status {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 7px;
}
.headline-status strong {
color: var(--orange);
font-size: 22px;
line-height: 1.2;
}
.headline p {
margin: 0;
max-width: 60ch;
}
.metrics {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 12px;
margin-top: 18px;
border: 0;
}
.metric {
min-width: 0;
padding: 16px;
border: 0;
border-radius: var(--radius-sm);
background: var(--warm);
}
.metric strong {
display: block;
color: var(--ink);
font-size: 26px;
line-height: 1.15;
letter-spacing: -.02em;
font-variant-numeric: tabular-nums;
}
.metric span {
display: block;
margin-top: 4px;
color: var(--muted);
font-size: 12.5px;
}
.tabs-wrap {
position: sticky;
z-index: 20;
top: 0;
overflow-x: auto;
border-bottom: 1px solid var(--line);
background: rgb(255 255 255 / 97%);
backdrop-filter: saturate(1.1) blur(5px);
}
.tabs {
display: flex;
min-width: max-content;
padding: 0 28px;
}
.tab {
position: relative;
min-height: 48px;
padding: 0 14px;
border: 0;
background: transparent;
color: var(--muted);
cursor: pointer;
font: inherit;
font-size: 14px;
font-weight: 500;
}
.tab::after {
position: absolute;
right: 14px;
bottom: -1px;
left: 14px;
height: 2px;
background: transparent;
content: "";
}
.tab:hover,
.tab[aria-selected="true"] {
color: var(--ink);
}
.tab[aria-selected="true"] {
font-weight: 600;
}
.tab[aria-selected="true"]::after {
background: var(--ink-soft);
}
main {
padding: 0 28px 48px;
}
.tab-panel {
padding-top: 4px;
}
.js .tab-panel[hidden] {
display: none;
}
.panel-intro {
display: flex;
justify-content: space-between;
gap: 24px;
margin: 30px 0 0;
color: var(--muted);
font-size: 13px;
}
.panel-intro p {
margin: 0;
}
section.report-section {
margin: 0;
padding: 48px 0;
border: 0;
}
.tab-panel > section.report-section:nth-of-type(even) {
background: var(--warm);
box-shadow: 0 0 0 100vmax var(--warm);
clip-path: inset(0 -100vmax);
}
section.report-section:first-of-type {
padding-top: 42px;
}
h2 {
margin: 0 0 18px;
color: var(--ink);
font-size: 26px;
line-height: 1.25;
letter-spacing: -.02em;
}
h3 {
margin: 30px 0 12px;
color: var(--ink);
font-size: 18px;
line-height: 1.35;
letter-spacing: -.01em;
}
p {
max-width: 75ch;
text-wrap: pretty;
}
.section-lead {
margin: -7px 0 18px;
color: var(--muted);
}
.table-wrap {
overflow-x: auto;
border: 1px solid var(--line);
border-radius: var(--radius-sm);
background: var(--paper);
}
table {
width: 100%;
min-width: 680px;
border-collapse: collapse;
font-size: 13.5px;
}
caption {
padding: 10px 14px;
background: var(--warm);
color: var(--ink-soft);
font-weight: 600;
text-align: left;
}
th,
td {
padding: 10px 14px;
border-bottom: 1px solid var(--line-soft);
vertical-align: top;
text-align: left;
}
th {
background: var(--warm);
color: var(--muted);
font-size: 12.5px;
font-weight: 600;
white-space: nowrap;
}
tbody tr:last-child td {
border-bottom: 0;
}
tbody tr:hover {
background: #faf9f8;
}
.number {
text-align: right;
white-space: nowrap;
font-variant-numeric: tabular-nums;
}
.status,
.value-level {
display: inline-flex;
align-items: center;
gap: 6px;
min-width: 25px;
padding: 4px 9px;
border: 0;
border-radius: 9999px;
font-size: 12px;
font-weight: 600;
line-height: 1.2;
white-space: nowrap;
}
.status::before {
width: 6px;
height: 6px;
border-radius: 50%;
background: currentColor;
content: "";
}
.status.ok {
background: var(--green-soft);
color: var(--green);
}
.status.warn {
background: var(--orange-soft);
color: var(--orange);
}
.status.risk {
background: var(--red-soft);
color: var(--red);
}
.value-a {
background: var(--red-soft);
color: var(--red);
}
.value-b {
background: var(--orange-soft);
color: var(--orange);
}
.value-c {
background: var(--blue-soft);
color: var(--blue-active);
}
.value-d {
background: var(--neutral-soft);
color: var(--muted);
}
.risk-note {
margin: 16px 0 0;
padding: 14px 18px;
border: 0;
border-radius: var(--radius-sm);
background: var(--orange-soft);
color: var(--ink-soft);
}
.repo-visuals {
display: grid;
grid-template-columns: minmax(280px, .85fr) minmax(0, 1.15fr);
gap: 18px;
}
.snapshot-list {
display: grid;
gap: 0;
}
.snapshot-row {
display: grid;
grid-template-columns: minmax(90px, 1fr) auto;
gap: 4px 16px;
align-items: center;
padding: 13px 0;
border-bottom: 1px solid var(--line-soft);
}
.snapshot-row:first-child {
padding-top: 0;
}
.snapshot-row:last-child {
padding-bottom: 0;
border-bottom: 0;
}
.snapshot-row .snapshot-label {
color: var(--muted);
font-size: 13px;
}
.snapshot-row strong {
color: var(--ink);
font-size: 28px;
line-height: 1.05;
letter-spacing: -.02em;
font-variant-numeric: tabular-nums;
}
.snapshot-row .snapshot-change {
grid-column: 1 / -1;
color: var(--muted);
font-size: 12.5px;
}
.snapshot-row .snapshot-change.positive {
color: var(--green);
}
.snapshot-row .snapshot-change.missing {
color: var(--orange);
}
.chart-note {
margin: 14px 0 0;
padding-top: 12px;
border-top: 1px dashed var(--line);
color: var(--muted);
font-size: 12.5px;
}
.ecosystem-signals {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
margin-bottom: 20px;
}
.ecosystem-signal {
padding: 16px 18px;
border-radius: var(--radius-sm);
background: var(--paper);
box-shadow: inset 0 0 0 1px var(--line);
}
.ecosystem-signal strong {
display: block;
color: var(--ink);
font-size: 24px;
line-height: 1.15;
letter-spacing: -.02em;
font-variant-numeric: tabular-nums;
}
.ecosystem-signal span {
display: block;
margin-top: 5px;
color: var(--muted);
font-size: 12.5px;
}
.ecosystem-signal-note {
grid-column: 1 / -1;
margin: -3px 0 0;
color: var(--faint);
font-size: 12px;
}
.ecosystem-list,
.method-list {
margin: 0;
padding: 0;
border-top: 1px solid var(--line);
list-style: none;
}
.ecosystem-list li,
.method-list li {
display: grid;
grid-template-columns: 150px 1fr;
gap: 20px;
padding: 13px 0;
border-bottom: 1px solid var(--line);
}
.method-list li {
grid-template-columns: 180px 1fr;
}
.ecosystem-list strong,
.method-list strong {
color: var(--ink);
}
.next-actions {
margin: 4px 0 30px;
padding: 20px 22px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: var(--paper);
}
.next-actions h2 {
margin-bottom: 8px;
font-size: 18px;
}
.next-actions ol {
margin: 0;
padding-left: 22px;
}
.next-actions li {
margin: 7px 0;
}
.health-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 16px;
}
.health-card,
.chart-box,
.health-note {
border: 1px solid var(--line);
border-radius: var(--radius);
background: var(--paper);
box-shadow: var(--shadow);
}
.health-card {
display: flex;
flex-direction: column;
gap: 9px;
padding: 20px 22px;
}
.health-card .top {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
}
.health-card .name {
color: var(--ink);
font-size: 15px;
font-weight: 700;
}
.health-card .health-metric {
color: var(--ink);
font-size: 27px;
font-weight: 700;
line-height: 1.1;
letter-spacing: -.02em;
font-variant-numeric: tabular-nums;
}
.health-card .health-metric small {
color: var(--muted);
font-size: 13px;
font-weight: 500;
letter-spacing: 0;
}
.health-card p {
margin: 0;
color: var(--ink-soft);
font-size: 13.5px;
}
.health-card .detail {
padding-top: 9px;
border-top: 1px dashed var(--line);
color: var(--muted);
font-size: 12.5px;
}
.segbar {
display: flex;
height: 24px;
overflow: hidden;
margin: 15px 0 10px;
border-radius: 6px;
background: var(--neutral-soft);
}
.segbar > span {
min-width: 2px;
height: 100%;
}
.seg-success {
background: #1aae39;
}
.seg-failure {
background: #e16259;
}
.seg-auth {
background: #e8a94b;
}
.seg-skipped {
background: #d6d2cd;
}
.seg-cancelled {
background: #8e8984;
}
.chart-legend {
display: flex;
flex-wrap: wrap;
gap: 8px 20px;
color: var(--muted);
font-size: 13px;
}
.chart-legend span {
display: inline-flex;
align-items: center;
gap: 7px;
}
.chart-legend i {
width: 10px;
height: 10px;
border-radius: 3px;
}
.chart-legend b {
color: var(--ink-soft);
font-variant-numeric: tabular-nums;
}
.chart-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px;
}
.chart-box {
padding: 20px 22px;
}
.chart-box h3 {
margin: 0 0 14px;
font-size: 15px;
}
.bars {
display: grid;
gap: 11px;
}
.bar-row {
display: grid;
grid-template-columns: 88px 1fr 42px;
gap: 10px;
align-items: center;
font-size: 13px;
}
.repo-visuals .bar-row {
grid-template-columns: 112px 1fr 36px;
}
.bar-label {
color: var(--muted);
white-space: nowrap;
}
.bar-track {
height: 16px;
overflow: hidden;
border-radius: 5px;
background: var(--neutral-soft);
}
.bar-fill {
display: block;
height: 100%;
min-width: 2px;
border-radius: 5px;
background: var(--blue);
}
.bar-fill.hot {
background: var(--orange);
}
.bar-value {
color: var(--ink-soft);
font-weight: 700;
text-align: right;
font-variant-numeric: tabular-nums;
}
.donut-layout {
display: grid;
grid-template-columns: 150px 1fr;
gap: 22px;
align-items: center;
}
.donut {
position: relative;
width: 142px;
height: 142px;
border-radius: 50%;
background: conic-gradient(var(--orange) 0 var(--value), #d6d2cd var(--value) 100%);
}
.donut::after {
position: absolute;
inset: 24px;
border-radius: 50%;
background: var(--paper);
content: "";
}
.donut-center {
position: absolute;
z-index: 1;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.donut-center strong {
color: var(--ink);
font-size: 26px;
line-height: 1.1;
}
.donut-center span {
color: var(--muted);
font-size: 12px;
}
.donut-copy p {
margin: 0 0 9px;
color: var(--ink-soft);
font-size: 13.5px;
}
.donut-copy p:last-child {
margin-bottom: 0;
}
.health-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 18px;
margin-top: 18px;
}
.chart-box + .table-wrap {
margin-top: 18px;
}
.health-note {
padding: 18px;
}
.health-note h3 {
margin: 0 0 7px;
font-size: 15px;
}
.health-note p {
margin: 0;
color: var(--ink-soft);
}
.flow-summary {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px;
margin: 18px 0 24px;
}
.flow-item {
padding: 16px 18px;
border-radius: var(--radius-sm);
background: var(--warm);
}
.flow-item strong {
display: block;
color: var(--ink);
font-size: 20px;
font-variant-numeric: tabular-nums;
}
.flow-item span {
color: var(--muted);
font-size: 12.5px;
}
details {
margin-top: 16px;
border: 1px solid var(--line);
border-radius: var(--radius);
background: var(--paper);
}
summary {
padding: 14px 18px;
color: var(--ink-soft);
cursor: pointer;
font-weight: 700;
}
.details-body {
padding: 0 18px 16px;
}
footer {
display: flex;
justify-content: space-between;
gap: 24px;
padding: 22px 28px 28px;
border-top: 1px solid var(--line);
background: var(--warm);
color: var(--muted);
font-size: 12px;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
@media (max-width: 760px) {
.masthead,
main,
footer {
padding-right: 18px;
padding-left: 18px;
}
.topline,
footer,
.panel-intro {
align-items: flex-start;
flex-direction: column;
gap: 8px;
}
.header-grid,
.meta-grid,
.repo-visuals,
.chart-grid,
.health-grid,
.flow-summary {
grid-template-columns: 1fr;
}
.header-grid > *,
.meta-item {
min-width: 0;
}
.meta-item .value {
overflow-wrap: anywhere;
}
.metrics {
grid-template-columns: repeat(2, 1fr);
}
.tabs {
padding: 0 6px;
}
section.report-section {
padding: 38px 0;
}
.ecosystem-list li,
.method-list li {
grid-template-columns: 1fr;
gap: 3px;
}
.ecosystem-signals {
grid-template-columns: 1fr;
}
.ecosystem-signal-note {
grid-column: auto;
}
.donut-layout {
grid-template-columns: 1fr;
justify-items: center;
}
.donut-copy {
text-align: center;
}
}
@media (max-width: 430px) {
h1 {
font-size: 30px;
overflow-wrap: anywhere;
}
.bar-row {
grid-template-columns: 76px 1fr 32px;
gap: 7px;
}
.repo-visuals .bar-row {
grid-template-columns: 98px 1fr 28px;
}
}
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
}
@media print {
@page {
size: A4;
margin: 13mm;
}
body {
background: #fff;
font-size: 10px;
}
.report {
width: 100%;
}
.masthead,
main,
footer {
padding-right: 0;
padding-left: 0;
}
.tabs-wrap,
.skip-link,
.utility-links {
display: none !important;
}
.tab-panel[hidden] {
display: block !important;
}
.tab-panel {
break-before: page;
}
.tab-panel:first-child {
break-before: auto;
}
.tab-panel > section.report-section:nth-of-type(even) {
background: #fff;
box-shadow: none;
clip-path: none;
}
section.report-section {
padding: 16px 0;
}
h1 {
font-size: 27px;
}
h2,
h3,
tr,
.health-card,
.health-note,
.chart-box,
.next-actions {
break-inside: avoid;
}
table {
min-width: 0;
font-size: 8px;
}
th,
td {
padding: 5px 6px;
}
.health-card,
.health-note,
.chart-box {
box-shadow: none;
}
.segbar,
.bar-fill,
.donut,
.status,
.value-level,
.metric,
.headline {
print-color-adjust: exact;
-webkit-print-color-adjust: exact;
}
}