540 lines
8.2 KiB
CSS
540 lines
8.2 KiB
CSS
:root {
|
|
color: #252720;
|
|
background: #ecebe5;
|
|
font-family:
|
|
Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei",
|
|
sans-serif;
|
|
font-synthesis: none;
|
|
text-rendering: optimizeLegibility;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
html,
|
|
body,
|
|
#root {
|
|
min-width: 1180px;
|
|
min-height: 100%;
|
|
margin: 0;
|
|
}
|
|
|
|
button {
|
|
color: inherit;
|
|
font: inherit;
|
|
}
|
|
|
|
button:focus-visible {
|
|
outline: 2px solid #315f4b;
|
|
outline-offset: 2px;
|
|
}
|
|
|
|
.app-shell {
|
|
min-height: 100vh;
|
|
background:
|
|
radial-gradient(circle at 12% 0%, rgb(255 255 255 / 72%), transparent 34%),
|
|
#ecebe5;
|
|
}
|
|
|
|
.topbar {
|
|
position: sticky;
|
|
z-index: 20;
|
|
top: 0;
|
|
display: flex;
|
|
min-height: 76px;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 12px 24px;
|
|
border-bottom: 1px solid #d7d5cd;
|
|
background: rgb(248 247 242 / 94%);
|
|
backdrop-filter: blur(18px);
|
|
}
|
|
|
|
.topbar > div:first-child {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
}
|
|
|
|
.brand-mark {
|
|
display: grid;
|
|
width: 42px;
|
|
height: 42px;
|
|
place-items: center;
|
|
border-radius: 12px;
|
|
background: #284d3d;
|
|
color: #f3f4ed;
|
|
font-family: Georgia, serif;
|
|
font-size: 19px;
|
|
letter-spacing: -0.08em;
|
|
}
|
|
|
|
.eyebrow {
|
|
margin: 0 0 3px;
|
|
color: #78796f;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.12em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
h1,
|
|
h2,
|
|
h3,
|
|
p {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.topbar h1 {
|
|
margin: 0;
|
|
font-family: Georgia, "Songti SC", serif;
|
|
font-size: 19px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.run-facts,
|
|
.document-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
color: #66685f;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.run-facts > span:not(.status),
|
|
.document-meta > span:not(.status) {
|
|
padding-left: 10px;
|
|
border-left: 1px solid #d5d2c9;
|
|
}
|
|
|
|
.status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
border: 1px solid currentcolor;
|
|
border-radius: 999px;
|
|
padding: 3px 8px;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.status--success {
|
|
color: #277052;
|
|
background: #edf6ef;
|
|
}
|
|
|
|
.status--failed {
|
|
color: #a04338;
|
|
background: #fff0ed;
|
|
}
|
|
|
|
.status--unstable {
|
|
color: #986617;
|
|
background: #fff7df;
|
|
}
|
|
|
|
.layout {
|
|
display: grid;
|
|
min-height: calc(100vh - 76px);
|
|
grid-template-columns: 300px minmax(0, 1fr);
|
|
}
|
|
|
|
.sidebar {
|
|
position: sticky;
|
|
top: 76px;
|
|
overflow-y: auto;
|
|
height: calc(100vh - 76px);
|
|
border-right: 1px solid #d7d5cd;
|
|
background: #f7f6f1;
|
|
}
|
|
|
|
.sidebar section {
|
|
padding: 20px 16px;
|
|
}
|
|
|
|
.sidebar section + section {
|
|
border-top: 1px solid #dfddd5;
|
|
}
|
|
|
|
.section-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.section-heading h2 {
|
|
margin: 0;
|
|
font-size: 12px;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.section-heading > span {
|
|
color: #888980;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.document-list,
|
|
.modifier-list {
|
|
display: grid;
|
|
gap: 4px;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.document-list button,
|
|
.modifier-list button {
|
|
display: grid;
|
|
width: 100%;
|
|
align-items: center;
|
|
border: 0;
|
|
border-radius: 9px;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.document-list button {
|
|
grid-template-columns: 9px 1fr;
|
|
gap: 10px;
|
|
padding: 9px 10px;
|
|
}
|
|
|
|
.document-list button:hover,
|
|
.modifier-list button:hover:not(:disabled) {
|
|
background: #eceae2;
|
|
}
|
|
|
|
.document-list button.is-active,
|
|
.modifier-list button.is-active {
|
|
background: #e0e8e0;
|
|
color: #234b39;
|
|
}
|
|
|
|
.document-list strong,
|
|
.modifier-list strong {
|
|
display: block;
|
|
overflow: hidden;
|
|
font-size: 12px;
|
|
font-weight: 650;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.document-list small,
|
|
.modifier-list small {
|
|
display: block;
|
|
margin-top: 3px;
|
|
color: #7d7e75;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.status-dot {
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 50%;
|
|
background: #999;
|
|
}
|
|
|
|
.status-dot--success {
|
|
background: #348361;
|
|
}
|
|
|
|
.status-dot--failed {
|
|
background: #b64b3f;
|
|
}
|
|
|
|
.status-dot--unstable {
|
|
background: #bd831c;
|
|
}
|
|
|
|
.text-button {
|
|
border: 0;
|
|
background: transparent;
|
|
color: #315f4b;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.text-button:disabled {
|
|
color: #aaa99f;
|
|
cursor: default;
|
|
}
|
|
|
|
.modifier-list button {
|
|
grid-template-columns: 26px minmax(0, 1fr);
|
|
gap: 8px;
|
|
padding: 8px;
|
|
}
|
|
|
|
.modifier-list button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: 0.55;
|
|
}
|
|
|
|
.modifier-index {
|
|
display: grid;
|
|
width: 24px;
|
|
height: 24px;
|
|
place-items: center;
|
|
border: 1px solid #d3d1c8;
|
|
border-radius: 50%;
|
|
color: #74766e;
|
|
font-family: Georgia, serif;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.workspace {
|
|
display: grid;
|
|
min-width: 0;
|
|
align-content: start;
|
|
gap: 14px;
|
|
padding: 18px 20px 30px;
|
|
}
|
|
|
|
.document-header {
|
|
display: flex;
|
|
align-items: end;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
}
|
|
|
|
.document-header h2 {
|
|
margin: 0;
|
|
font-family: Georgia, "Songti SC", serif;
|
|
font-size: 21px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.diff-shell,
|
|
.changes-panel,
|
|
.diagnostic-panel,
|
|
.state-panel {
|
|
overflow: hidden;
|
|
border: 1px solid #d5d3ca;
|
|
border-radius: 13px;
|
|
background: #fbfaf7;
|
|
box-shadow: 0 12px 36px rgb(55 57 48 / 7%);
|
|
}
|
|
|
|
.diff-shell {
|
|
min-height: 510px;
|
|
}
|
|
|
|
.diff-labels {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
border-bottom: 1px solid #dcdbd3;
|
|
background: #f4f2ec;
|
|
color: #6f7168;
|
|
font-size: 11px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.06em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.diff-labels span {
|
|
padding: 9px 14px;
|
|
}
|
|
|
|
.diff-labels span + span {
|
|
border-left: 1px solid #dcdbd3;
|
|
}
|
|
|
|
.diff-host {
|
|
height: 510px;
|
|
}
|
|
|
|
.diff-host > .cm-mergeView {
|
|
height: 100%;
|
|
overflow-y: auto;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.diff-host .cm-mergeViewEditors {
|
|
min-height: 100%;
|
|
}
|
|
|
|
.diff-host .cm-editor {
|
|
min-width: 0;
|
|
}
|
|
|
|
.changes-panel {
|
|
min-height: 120px;
|
|
}
|
|
|
|
.changes-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 24px;
|
|
padding: 15px 18px;
|
|
border-bottom: 1px solid #e0ded6;
|
|
}
|
|
|
|
.changes-heading h3 {
|
|
margin: 0;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.changes-heading > p {
|
|
max-width: 58%;
|
|
margin: 0;
|
|
color: #77786f;
|
|
font-size: 11px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.change-list {
|
|
display: grid;
|
|
max-height: 310px;
|
|
gap: 1px;
|
|
overflow-y: auto;
|
|
margin: 0;
|
|
padding: 0;
|
|
background: #e4e2da;
|
|
list-style: none;
|
|
}
|
|
|
|
.change-list button {
|
|
display: grid;
|
|
width: 100%;
|
|
grid-template-columns: 145px minmax(240px, 1fr) minmax(260px, 0.9fr);
|
|
align-items: center;
|
|
gap: 16px;
|
|
border: 0;
|
|
padding: 11px 18px;
|
|
background: #fbfaf7;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.change-list button:hover {
|
|
background: #f4f5ef;
|
|
}
|
|
|
|
.change-list button:disabled {
|
|
cursor: default;
|
|
}
|
|
|
|
.change-location {
|
|
color: #73756c;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.change-list strong {
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.change-sample {
|
|
display: flex;
|
|
min-width: 0;
|
|
align-items: center;
|
|
gap: 8px;
|
|
font-family: "SFMono-Regular", Consolas, monospace;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.change-sample del,
|
|
.change-sample ins {
|
|
overflow: hidden;
|
|
max-width: 46%;
|
|
border-radius: 4px;
|
|
padding: 2px 5px;
|
|
text-decoration: none;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.change-sample del {
|
|
background: #f9ded9;
|
|
color: #913e34;
|
|
}
|
|
|
|
.change-sample ins {
|
|
background: #dcecdf;
|
|
color: #276348;
|
|
}
|
|
|
|
.quiet-message {
|
|
margin: 0;
|
|
padding: 22px 18px;
|
|
color: #77786f;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.state-panel,
|
|
.diagnostic-panel {
|
|
padding: 28px;
|
|
}
|
|
|
|
.state-panel {
|
|
display: grid;
|
|
min-height: 180px;
|
|
place-items: center;
|
|
align-content: center;
|
|
color: #66685f;
|
|
}
|
|
|
|
.state-panel p {
|
|
margin: 8px 0 0;
|
|
}
|
|
|
|
.state-panel--error {
|
|
border-color: #e2b6ae;
|
|
color: #8f3e34;
|
|
}
|
|
|
|
.loading-dot {
|
|
width: 11px;
|
|
height: 11px;
|
|
border-radius: 50%;
|
|
background: #3d735b;
|
|
box-shadow: 0 0 0 7px #dce9df;
|
|
animation: pulse 1.25s ease-in-out infinite;
|
|
}
|
|
|
|
.diagnostic-panel h3 {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.diagnostic-panel > p:not(.eyebrow) {
|
|
color: #686a61;
|
|
font-size: 13px;
|
|
}
|
|
|
|
.diagnostic-panel article {
|
|
display: grid;
|
|
grid-template-columns: 220px 1fr;
|
|
gap: 12px;
|
|
padding: 10px 0;
|
|
border-top: 1px solid #e0ded6;
|
|
font-size: 12px;
|
|
}
|
|
|
|
@keyframes pulse {
|
|
0%,
|
|
100% {
|
|
opacity: 0.45;
|
|
transform: scale(0.82);
|
|
}
|
|
|
|
50% {
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1280px) {
|
|
.layout {
|
|
grid-template-columns: 270px minmax(0, 1fr);
|
|
}
|
|
|
|
.change-list button {
|
|
grid-template-columns: 125px minmax(180px, 1fr) minmax(220px, 0.8fr);
|
|
}
|
|
}
|