: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); } }