2049 lines
33 KiB
CSS
2049 lines
33 KiB
CSS
:root {
|
|
font-family:
|
|
Inter, "PingFang SC", "Microsoft YaHei", system-ui, -apple-system,
|
|
BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
color: #1d2a3b;
|
|
background: #eef2f6;
|
|
font-synthesis: none;
|
|
text-rendering: optimizeLegibility;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
min-width: 1120px;
|
|
min-height: 100vh;
|
|
margin: 0;
|
|
overflow: hidden;
|
|
}
|
|
|
|
button,
|
|
input,
|
|
select {
|
|
font: inherit;
|
|
}
|
|
|
|
button {
|
|
color: inherit;
|
|
}
|
|
|
|
.app-shell {
|
|
display: flex;
|
|
min-height: 100vh;
|
|
background: #eef2f6;
|
|
}
|
|
|
|
.sidebar {
|
|
position: relative;
|
|
z-index: 3;
|
|
display: flex;
|
|
width: 210px;
|
|
min-width: 210px;
|
|
flex-direction: column;
|
|
min-height: 100vh;
|
|
color: #c9d7e7;
|
|
background:
|
|
radial-gradient(circle at 10% 1%, rgb(28 105 186 / 25%), transparent 27%),
|
|
#09233f;
|
|
box-shadow: 5px 0 18px rgb(19 47 77 / 9%);
|
|
transition: width 0.2s ease, min-width 0.2s ease;
|
|
}
|
|
|
|
.sidebar.is-collapsed {
|
|
width: 70px;
|
|
min-width: 70px;
|
|
}
|
|
|
|
.sidebar.is-collapsed .brand__name,
|
|
.sidebar.is-collapsed .sidebar-footer span,
|
|
.sidebar.is-collapsed .nav-item span {
|
|
display: none;
|
|
}
|
|
|
|
.sidebar.is-collapsed .brand {
|
|
justify-content: center;
|
|
padding-left: 0;
|
|
padding-right: 0;
|
|
}
|
|
|
|
.sidebar.is-collapsed .sidebar-footer {
|
|
width: calc(100% - 18px);
|
|
justify-content: center;
|
|
padding-left: 17px;
|
|
padding-right: 17px;
|
|
}
|
|
|
|
.sidebar.is-collapsed .nav-item {
|
|
justify-content: center;
|
|
padding-left: 17px;
|
|
padding-right: 17px;
|
|
}
|
|
|
|
.brand {
|
|
display: flex;
|
|
height: 70px;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 0 17px;
|
|
border-bottom: 1px solid rgb(255 255 255 / 8%);
|
|
color: #fff;
|
|
}
|
|
|
|
.brand__mark {
|
|
display: grid;
|
|
width: 36px;
|
|
height: 36px;
|
|
flex: 0 0 auto;
|
|
place-items: center;
|
|
color: #5ca9ff;
|
|
}
|
|
|
|
.brand__name {
|
|
white-space: nowrap;
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
letter-spacing: .01em;
|
|
}
|
|
|
|
.navigation {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 7px;
|
|
padding: 19px 9px;
|
|
}
|
|
|
|
.nav-item,
|
|
.sidebar-footer {
|
|
display: flex;
|
|
height: 48px;
|
|
align-items: center;
|
|
gap: 13px;
|
|
padding: 0 17px;
|
|
border: 0;
|
|
border-radius: 6px;
|
|
color: #b9cade;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
font-size: 14px;
|
|
text-align: left;
|
|
transition: .18s ease;
|
|
}
|
|
|
|
.nav-item:hover,
|
|
.sidebar-footer:hover {
|
|
color: #fff;
|
|
background: rgb(255 255 255 / 6%);
|
|
}
|
|
|
|
.nav-item--active {
|
|
color: #fff;
|
|
background: linear-gradient(135deg, #1479e8, #1267ca);
|
|
box-shadow: 0 7px 18px rgb(7 96 193 / 26%);
|
|
}
|
|
|
|
.sidebar-footer {
|
|
width: calc(100% - 18px);
|
|
margin: auto 9px 17px;
|
|
}
|
|
|
|
.main-area {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
height: 100vh;
|
|
}
|
|
|
|
.topbar {
|
|
position: relative;
|
|
z-index: 2;
|
|
display: flex;
|
|
height: 70px;
|
|
min-height: 70px;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0 22px;
|
|
border-bottom: 1px solid #dfe6ee;
|
|
background: #fff;
|
|
}
|
|
|
|
.page-title,
|
|
.topbar__actions,
|
|
.workspace-switcher,
|
|
.user-menu {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.page-title {
|
|
gap: 9px;
|
|
}
|
|
|
|
.page-title h1 {
|
|
margin: 1px 0 0;
|
|
color: #14243a;
|
|
font-size: 18px;
|
|
line-height: 1.1;
|
|
}
|
|
|
|
.page-title__eyebrow {
|
|
color: #94a2b3;
|
|
font-size: 10px;
|
|
font-weight: 650;
|
|
letter-spacing: .08em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.icon-button {
|
|
display: grid;
|
|
width: 34px;
|
|
height: 34px;
|
|
place-items: center;
|
|
border: 1px solid #dfe6ed;
|
|
border-radius: 7px;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.icon-button:hover {
|
|
border-color: #b9c9da;
|
|
background: #f7faff;
|
|
}
|
|
|
|
.icon-button--back {
|
|
width: 31px;
|
|
border-color: transparent;
|
|
color: #7b8999;
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.topbar__actions {
|
|
gap: 14px;
|
|
}
|
|
|
|
.topbar-menu-wrap {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
}
|
|
|
|
.topbar-dropdown {
|
|
position: absolute;
|
|
z-index: 50;
|
|
top: calc(100% + 7px);
|
|
right: 0;
|
|
width: 260px;
|
|
padding: 6px;
|
|
border: 1px solid #dce5ed;
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
box-shadow: 0 14px 38px rgb(17 43 70 / 18%);
|
|
}
|
|
|
|
.topbar-dropdown--users {
|
|
width: 220px;
|
|
}
|
|
|
|
.topbar-dropdown > button {
|
|
display: flex;
|
|
width: 100%;
|
|
align-items: center;
|
|
gap: 10px;
|
|
padding: 9px 10px;
|
|
border: 0;
|
|
border-radius: 6px;
|
|
color: #40576d;
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.topbar-dropdown > button:hover,
|
|
.topbar-dropdown > button.is-selected {
|
|
background: #edf6ff;
|
|
}
|
|
|
|
.topbar-dropdown > button > span:not(.avatar) {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
|
|
.topbar-dropdown strong {
|
|
overflow: hidden;
|
|
color: #243a50;
|
|
font-size: 11px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.topbar-dropdown small {
|
|
color: #8797a7;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.api-state {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
color: #768597;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.api-state__dot {
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 50%;
|
|
background: #d05151;
|
|
box-shadow: 0 0 0 3px rgb(208 81 81 / 10%);
|
|
}
|
|
|
|
.api-state__dot.is-online {
|
|
background: #19b878;
|
|
box-shadow: 0 0 0 3px rgb(25 184 120 / 11%);
|
|
}
|
|
|
|
.workspace-switcher,
|
|
.user-menu {
|
|
height: 46px;
|
|
gap: 9px;
|
|
padding: 0 11px;
|
|
border: 1px solid #e0e7ee;
|
|
border-radius: 8px;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.workspace-switcher:hover,
|
|
.user-menu:hover {
|
|
border-color: #b9cce0;
|
|
}
|
|
|
|
.workspace-switcher__icon {
|
|
display: grid;
|
|
width: 30px;
|
|
height: 30px;
|
|
place-items: center;
|
|
border-radius: 7px;
|
|
color: #fff;
|
|
background: linear-gradient(145deg, #23aa73, #158d5d);
|
|
}
|
|
|
|
.workspace-switcher span:not(.workspace-switcher__icon),
|
|
.user-menu__copy {
|
|
display: flex;
|
|
min-width: 155px;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.workspace-switcher small,
|
|
.user-menu small {
|
|
color: #97a3b1;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.workspace-switcher strong,
|
|
.user-menu strong {
|
|
max-width: 190px;
|
|
overflow: hidden;
|
|
color: #26384d;
|
|
font-size: 13px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.user-menu {
|
|
border-color: transparent;
|
|
}
|
|
|
|
.user-menu__copy {
|
|
min-width: 50px;
|
|
}
|
|
|
|
.avatar {
|
|
display: grid;
|
|
width: 34px;
|
|
height: 34px;
|
|
place-items: center;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: linear-gradient(145deg, #3b92ed, #1869c9);
|
|
font-size: 14px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.workspace-layout {
|
|
display: grid;
|
|
min-height: 0;
|
|
flex: 1;
|
|
grid-template-columns: 310px minmax(0, 1fr);
|
|
gap: 10px;
|
|
padding: 10px;
|
|
}
|
|
|
|
.explorer,
|
|
.editor-area {
|
|
min-height: 0;
|
|
border: 1px solid #dce4ec;
|
|
border-radius: 7px;
|
|
background: #fff;
|
|
box-shadow: 0 2px 7px rgb(25 46 73 / 3%);
|
|
}
|
|
|
|
.explorer {
|
|
display: flex;
|
|
overflow: hidden;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.explorer__header {
|
|
display: flex;
|
|
min-height: 64px;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0 14px;
|
|
border-bottom: 1px solid #e8edf2;
|
|
}
|
|
|
|
.explorer__header h2 {
|
|
margin: 0 0 2px;
|
|
color: #1d2d42;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.explorer__header > div > span {
|
|
color: #9aa7b6;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.explorer__actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
}
|
|
|
|
.text-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 3px;
|
|
padding: 5px 1px;
|
|
border: 0;
|
|
color: #1474d4;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.text-button:hover {
|
|
color: #0d58a2;
|
|
}
|
|
|
|
.text-button:disabled {
|
|
cursor: wait;
|
|
opacity: .55;
|
|
}
|
|
|
|
.visually-hidden {
|
|
position: absolute !important;
|
|
width: 1px !important;
|
|
height: 1px !important;
|
|
overflow: hidden !important;
|
|
clip: rect(0 0 0 0) !important;
|
|
clip-path: inset(50%) !important;
|
|
white-space: nowrap !important;
|
|
}
|
|
|
|
.search-box {
|
|
display: flex;
|
|
height: 38px;
|
|
align-items: center;
|
|
gap: 7px;
|
|
margin: 11px 12px 7px;
|
|
padding: 0 9px;
|
|
border: 1px solid #dce5ed;
|
|
border-radius: 6px;
|
|
color: #95a2b1;
|
|
background: #fbfcfd;
|
|
}
|
|
|
|
.search-box:focus-within {
|
|
border-color: #6aa9e9;
|
|
box-shadow: 0 0 0 3px rgb(31 119 207 / 8%);
|
|
}
|
|
|
|
.search-box input {
|
|
min-width: 0;
|
|
flex: 1;
|
|
border: 0;
|
|
outline: 0;
|
|
color: #26384d;
|
|
background: transparent;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.search-box input::placeholder {
|
|
color: #a7b2bf;
|
|
}
|
|
|
|
.search-box button {
|
|
display: grid;
|
|
width: 24px;
|
|
height: 24px;
|
|
place-items: center;
|
|
border: 0;
|
|
color: #8d9aaa;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.is-spinning svg {
|
|
animation: spin .7s linear infinite;
|
|
}
|
|
|
|
.tree-scroll {
|
|
min-height: 0;
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
padding: 5px 7px 14px;
|
|
}
|
|
|
|
.tree-group {
|
|
margin-bottom: 7px;
|
|
}
|
|
|
|
.tree-group__title {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 33px;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 0 7px;
|
|
border: 0;
|
|
color: #43556a;
|
|
background: transparent;
|
|
font-family: inherit;
|
|
font-size: 12px;
|
|
font-weight: 650;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tree-group__title > svg:first-child {
|
|
color: #98a5b2;
|
|
transform: rotate(0);
|
|
transition: transform 0.15s ease;
|
|
}
|
|
|
|
.tree-group__title.is-open > svg:first-child {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
.tree-group__title:hover {
|
|
background: #f4f8fc;
|
|
}
|
|
|
|
.tree-group__title > svg:nth-child(2) {
|
|
color: #eab434;
|
|
fill: #f7c84a;
|
|
stroke: #e0a828;
|
|
}
|
|
|
|
.tree-group__title em {
|
|
display: grid;
|
|
min-width: 19px;
|
|
height: 18px;
|
|
margin-left: auto;
|
|
place-items: center;
|
|
border-radius: 10px;
|
|
color: #778698;
|
|
background: #eef2f6;
|
|
font-size: 10px;
|
|
font-style: normal;
|
|
}
|
|
|
|
.tree-group__items {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
padding-left: 13px;
|
|
}
|
|
|
|
.directory-branch {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.directory-row {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 32px;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding-right: 9px;
|
|
border: 0;
|
|
border-radius: 5px;
|
|
color: #45586c;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.directory-row:hover {
|
|
background: #f4f7fa;
|
|
}
|
|
|
|
.directory-row > svg {
|
|
flex: 0 0 auto;
|
|
color: #e2aa27;
|
|
fill: #f7c84a;
|
|
}
|
|
|
|
.directory-row strong {
|
|
overflow: hidden;
|
|
font-size: 11px;
|
|
font-weight: 650;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.directory-row__chevron {
|
|
display: grid;
|
|
flex: 0 0 auto;
|
|
place-items: center;
|
|
color: #94a2b1;
|
|
transition: transform .15s ease;
|
|
}
|
|
|
|
.directory-row__chevron.is-open {
|
|
transform: rotate(90deg);
|
|
}
|
|
|
|
.script-row {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 47px;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 0 9px;
|
|
border: 1px solid transparent;
|
|
border-radius: 6px;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.script-row:hover {
|
|
background: #f4f7fa;
|
|
}
|
|
|
|
.script-row--active {
|
|
border-color: #c6ddf4;
|
|
background: #eaf4ff;
|
|
}
|
|
|
|
.file-icon {
|
|
display: grid;
|
|
width: 25px;
|
|
height: 25px;
|
|
flex: 0 0 auto;
|
|
place-items: center;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.file-icon--notebook {
|
|
color: #e15e50;
|
|
background: #fff0ed;
|
|
}
|
|
|
|
.file-icon--python {
|
|
color: #2e73c6;
|
|
background: #eaf3ff;
|
|
}
|
|
|
|
.script-row__copy {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.script-row__copy strong {
|
|
overflow: hidden;
|
|
color: #34475d;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.script-row__copy small {
|
|
margin-top: 2px;
|
|
color: #9ba8b7;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.visibility-dot {
|
|
width: 6px;
|
|
height: 6px;
|
|
flex: 0 0 auto;
|
|
border-radius: 50%;
|
|
background: #1dbd7c;
|
|
box-shadow: 0 0 0 3px rgb(29 189 124 / 10%);
|
|
}
|
|
|
|
.lock-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
color: #c79a3a;
|
|
margin-right: 4px;
|
|
}
|
|
|
|
.tree-group__empty {
|
|
margin: 2px 0 7px 35px;
|
|
color: #a5b0bc;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.tree-context-menu {
|
|
position: fixed;
|
|
z-index: 50;
|
|
display: flex;
|
|
width: 180px;
|
|
padding: 6px;
|
|
border: 1px solid #d9e2ea;
|
|
border-radius: 8px;
|
|
flex-direction: column;
|
|
background: #fff;
|
|
box-shadow: 0 14px 34px rgb(18 43 68 / 20%);
|
|
}
|
|
|
|
.tree-context-menu button {
|
|
display: flex;
|
|
height: 34px;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 0 9px;
|
|
border: 0;
|
|
border-radius: 5px;
|
|
color: #34475a;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
text-align: left;
|
|
}
|
|
|
|
.tree-context-menu button:hover {
|
|
color: #136dbd;
|
|
background: #eef6fd;
|
|
}
|
|
|
|
.tree-context-menu button.is-danger {
|
|
color: #c74848;
|
|
}
|
|
|
|
.tree-context-menu button.is-danger:hover {
|
|
background: #fff0f0;
|
|
}
|
|
|
|
.tree-context-menu__separator {
|
|
height: 1px;
|
|
margin: 5px 3px;
|
|
background: #e7ecf1;
|
|
}
|
|
|
|
.tree-empty {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-direction: column;
|
|
padding: 34px 18px;
|
|
color: #97a4b4;
|
|
text-align: center;
|
|
}
|
|
|
|
.tree-empty__icon {
|
|
display: grid;
|
|
width: 46px;
|
|
height: 46px;
|
|
margin-bottom: 12px;
|
|
place-items: center;
|
|
border-radius: 13px;
|
|
color: #6796c5;
|
|
background: #eff6fd;
|
|
}
|
|
|
|
.tree-empty strong {
|
|
color: #637286;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.tree-empty p {
|
|
margin: 6px 0 14px;
|
|
font-size: 10px;
|
|
line-height: 1.5;
|
|
}
|
|
|
|
.tree-empty button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
padding: 7px 11px;
|
|
border: 1px solid #bcd6ee;
|
|
border-radius: 6px;
|
|
color: #176cc1;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.tree-skeleton {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
padding: 15px 8px;
|
|
}
|
|
|
|
.tree-skeleton span {
|
|
height: 43px;
|
|
border-radius: 6px;
|
|
background: linear-gradient(90deg, #f2f5f8, #fafbfc, #f2f5f8);
|
|
background-size: 200% 100%;
|
|
animation: shimmer 1.3s infinite;
|
|
}
|
|
|
|
.editor-area {
|
|
display: flex;
|
|
overflow: hidden;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.tabbar {
|
|
display: flex;
|
|
height: 43px;
|
|
min-height: 43px;
|
|
align-items: stretch;
|
|
border-bottom: 1px solid #e5ebf1;
|
|
background: #f7f9fb;
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
|
|
.tabbar-scroll-content {
|
|
display: flex;
|
|
flex: 1;
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
scroll-behavior: smooth;
|
|
}
|
|
|
|
.tabbar-scroll-content::-webkit-scrollbar {
|
|
height: 6px;
|
|
}
|
|
|
|
.tabbar-scroll-content::-webkit-scrollbar-track {
|
|
background: #f1f3f5;
|
|
}
|
|
|
|
.tabbar-scroll-content::-webkit-scrollbar-thumb {
|
|
background: #c9d6e4;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.tabbar-scroll-content::-webkit-scrollbar-thumb:hover {
|
|
background: #a8b9ca;
|
|
}
|
|
|
|
.tabbar-scroll-btn {
|
|
display: grid;
|
|
width: 28px;
|
|
flex: 0 0 auto;
|
|
place-items: center;
|
|
border: 0;
|
|
border-right: 1px solid #e4eaf0;
|
|
color: #6b7c8f;
|
|
background: #f7f9fb;
|
|
cursor: pointer;
|
|
z-index: 1;
|
|
transition: background 0.15s ease;
|
|
}
|
|
|
|
.tabbar-scroll-btn--right {
|
|
border-right: 0;
|
|
border-left: 1px solid #e4eaf0;
|
|
}
|
|
|
|
.tabbar-scroll-btn:hover {
|
|
background: #edf1f5;
|
|
color: #3d4c5c;
|
|
}
|
|
|
|
.tabbar-scroll-btn--left {
|
|
transform: rotate(180deg);
|
|
}
|
|
|
|
.editor-tab {
|
|
position: relative;
|
|
display: flex;
|
|
min-width: 100px;
|
|
max-width: 290px;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 0 6px;
|
|
border-right: 1px solid #e4eaf0;
|
|
color: #4b5c70;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
font-size: 12px;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.editor-tab:hover {
|
|
background: #f0f4f8;
|
|
}
|
|
|
|
.editor-tab--active::before {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0;
|
|
height: 2px;
|
|
background: #2381e5;
|
|
content: "";
|
|
}
|
|
|
|
.editor-tab > span:nth-child(2) {
|
|
overflow: hidden;
|
|
flex: 1;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.editor-tab button,
|
|
.new-tab {
|
|
display: grid;
|
|
width: 25px;
|
|
height: 25px;
|
|
place-items: center;
|
|
border: 0;
|
|
color: #8e9baa;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.editor-tab button:hover,
|
|
.new-tab:hover {
|
|
color: #43566c;
|
|
background: #edf1f5;
|
|
}
|
|
|
|
.new-tab {
|
|
align-self: center;
|
|
margin-left: 5px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.editor-toolbar {
|
|
display: flex;
|
|
min-height: 53px;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 0 14px;
|
|
border-bottom: 1px solid #e6ebf0;
|
|
background: #fff;
|
|
}
|
|
|
|
.editor-toolbar__path,
|
|
.editor-toolbar__actions {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.editor-toolbar__path {
|
|
min-width: 0;
|
|
gap: 7px;
|
|
color: #8794a3;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.editor-toolbar__path strong {
|
|
overflow: hidden;
|
|
max-width: 300px;
|
|
color: #45576b;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.editor-toolbar__actions {
|
|
gap: 7px;
|
|
}
|
|
|
|
.editor-toolbar__actions button {
|
|
height: 31px;
|
|
padding: 0 11px;
|
|
border: 1px solid #d9e3ec;
|
|
border-radius: 5px;
|
|
color: #52708d;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.editor-toolbar__actions button:hover {
|
|
border-color: #9dbbd8;
|
|
background: #f7fbff;
|
|
}
|
|
|
|
.editor-toolbar__actions button:disabled,
|
|
.open-editor-button:disabled {
|
|
cursor: wait;
|
|
opacity: .7;
|
|
}
|
|
|
|
.editor-toolbar__actions .end-edit-button {
|
|
border-color: #e1b8b8;
|
|
color: #a34c4c;
|
|
background: #fff8f8;
|
|
}
|
|
|
|
.editor-toolbar__actions .release-button {
|
|
border-color: #e7c689;
|
|
color: #9b6a18;
|
|
background: #fffbf3;
|
|
}
|
|
|
|
.stage-badge {
|
|
display: inline-flex;
|
|
height: 29px;
|
|
align-items: center;
|
|
gap: 6px;
|
|
padding: 0 10px;
|
|
border-radius: 15px;
|
|
color: #16845c;
|
|
background: #eaf9f3;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.stage-badge span {
|
|
width: 6px;
|
|
height: 6px;
|
|
border-radius: 50%;
|
|
background: #20bc7f;
|
|
}
|
|
|
|
.stage-badge.is-editing {
|
|
color: #126b9d;
|
|
background: #e9f5fd;
|
|
}
|
|
|
|
.stage-badge.is-editing span {
|
|
background: #2495d3;
|
|
box-shadow: 0 0 0 3px rgb(36 149 211 / 13%);
|
|
animation: lock-pulse 1.8s ease-in-out infinite;
|
|
}
|
|
|
|
.editor-canvas {
|
|
min-height: 0;
|
|
flex: 1;
|
|
overflow: auto;
|
|
background:
|
|
linear-gradient(rgb(255 255 255 / 82%), rgb(255 255 255 / 82%)),
|
|
radial-gradient(circle, #c9d8e7 1px, transparent 1px);
|
|
background-color: #f4f7fa;
|
|
background-size: auto, 18px 18px;
|
|
}
|
|
|
|
.editor-canvas.is-embedded {
|
|
overflow: hidden;
|
|
background: #fff;
|
|
}
|
|
|
|
.embedded-jupyter {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
flex-direction: column;
|
|
background: #fff;
|
|
}
|
|
|
|
.embedded-jupyter__status {
|
|
display: flex;
|
|
min-height: 34px;
|
|
align-items: center;
|
|
gap: 18px;
|
|
padding: 0 14px;
|
|
border-bottom: 1px solid #dfe6ec;
|
|
color: #718195;
|
|
background: #f8fafc;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.embedded-jupyter__status > span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
|
|
.embedded-jupyter__status > span:first-child {
|
|
color: #197b59;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.embedded-jupyter__status i {
|
|
width: 7px;
|
|
height: 7px;
|
|
border-radius: 50%;
|
|
background: #20b77d;
|
|
box-shadow: 0 0 0 3px rgb(32 183 125 / 12%);
|
|
}
|
|
|
|
.embedded-jupyter__status code {
|
|
margin-left: auto;
|
|
color: #72859a;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.embedded-jupyter iframe {
|
|
width: 100%;
|
|
min-height: 0;
|
|
flex: 1;
|
|
border: 0;
|
|
background: #fff;
|
|
}
|
|
|
|
.editor-opening-state {
|
|
display: flex;
|
|
width: min(520px, calc(100% - 48px));
|
|
min-height: 260px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
margin: 64px auto;
|
|
padding: 36px;
|
|
border: 1px solid #dce5ed;
|
|
border-radius: 10px;
|
|
color: #66788d;
|
|
background: rgb(255 255 255 / 94%);
|
|
box-shadow: 0 12px 34px rgb(31 64 98 / 7%);
|
|
text-align: center;
|
|
}
|
|
|
|
.editor-opening-state__icon {
|
|
display: grid;
|
|
width: 54px;
|
|
height: 54px;
|
|
place-items: center;
|
|
margin-bottom: 16px;
|
|
border-radius: 50%;
|
|
color: #247bc5;
|
|
background: #edf6ff;
|
|
}
|
|
|
|
.editor-opening-state__icon .button-spinner {
|
|
width: 24px;
|
|
height: 24px;
|
|
border-width: 3px;
|
|
}
|
|
|
|
.editor-opening-state strong {
|
|
color: #1d344d;
|
|
font-size: 16px;
|
|
}
|
|
|
|
.editor-opening-state p {
|
|
max-width: 430px;
|
|
margin: 9px 0 0;
|
|
color: #7a8a9b;
|
|
font-size: 12px;
|
|
line-height: 1.7;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
|
|
.editor-opening-state.has-error {
|
|
border-color: #f0cfcc;
|
|
}
|
|
|
|
.editor-opening-state.has-error .editor-opening-state__icon {
|
|
color: #c84f49;
|
|
background: #fff1f0;
|
|
}
|
|
|
|
.editor-opening-state .open-editor-button {
|
|
margin-top: 18px;
|
|
}
|
|
|
|
.script-overview {
|
|
width: min(1020px, calc(100% - 48px));
|
|
margin: 24px auto 38px;
|
|
}
|
|
|
|
.script-overview__header {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: space-between;
|
|
gap: 20px;
|
|
padding: 23px 26px;
|
|
border: 1px solid #dce5ed;
|
|
border-radius: 9px 9px 0 0;
|
|
background: #fff;
|
|
}
|
|
|
|
.section-kicker {
|
|
color: #2b7fca;
|
|
font-size: 9px;
|
|
font-weight: 800;
|
|
letter-spacing: .13em;
|
|
}
|
|
|
|
.script-overview__header h2 {
|
|
margin: 6px 0 4px;
|
|
color: #1b2d43;
|
|
font-size: 22px;
|
|
}
|
|
|
|
.script-overview__header p {
|
|
margin: 0;
|
|
color: #8997a6;
|
|
font-family: Consolas, "SFMono-Regular", monospace;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.open-editor-button,
|
|
.primary-button,
|
|
.secondary-button {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 7px;
|
|
border-radius: 6px;
|
|
cursor: pointer;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.open-editor-button {
|
|
height: 37px;
|
|
padding: 0 14px;
|
|
border: 1px solid #b9d4ef;
|
|
color: #176cc0;
|
|
background: #f4f9ff;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.open-editor-button:hover {
|
|
border-color: #7eafe0;
|
|
background: #eaf4ff;
|
|
}
|
|
|
|
.open-editor-button.is-editing {
|
|
border-color: #69b79a;
|
|
color: #137a55;
|
|
background: #effaf5;
|
|
}
|
|
|
|
.button-spinner--blue {
|
|
border-color: rgb(34 121 199 / 22%);
|
|
border-top-color: #2279c7;
|
|
}
|
|
|
|
.metadata-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, 1fr);
|
|
border-right: 1px solid #dce5ed;
|
|
border-bottom: 1px solid #dce5ed;
|
|
border-left: 1px solid #dce5ed;
|
|
background: #f9fbfd;
|
|
}
|
|
|
|
.metadata-grid > div {
|
|
display: flex;
|
|
min-height: 64px;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
padding: 0 21px;
|
|
border-right: 1px solid #e4eaf0;
|
|
}
|
|
|
|
.metadata-grid > div:last-child {
|
|
border-right: 0;
|
|
}
|
|
|
|
.metadata-grid span {
|
|
color: #94a0ae;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.metadata-grid strong {
|
|
margin-top: 4px;
|
|
color: #405368;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.preview-card {
|
|
overflow: hidden;
|
|
margin-top: 15px;
|
|
border: 1px solid #d8e1e9;
|
|
border-radius: 9px;
|
|
background: #fff;
|
|
box-shadow: 0 8px 25px rgb(23 52 81 / 7%);
|
|
}
|
|
|
|
.preview-card__bar {
|
|
display: grid;
|
|
height: 39px;
|
|
align-items: center;
|
|
grid-template-columns: 1fr auto 1fr;
|
|
padding: 0 13px;
|
|
border-bottom: 1px solid #e4e9ee;
|
|
color: #66778a;
|
|
background: #f4f6f8;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.preview-card__bar > div {
|
|
display: flex;
|
|
gap: 6px;
|
|
}
|
|
|
|
.preview-card__bar em {
|
|
justify-self: end;
|
|
color: #9aa6b3;
|
|
font-style: normal;
|
|
}
|
|
|
|
.window-dot {
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.window-dot--red { background: #ef6b62; }
|
|
.window-dot--yellow { background: #e9b949; }
|
|
.window-dot--green { background: #49b97b; }
|
|
|
|
.notebook-menu {
|
|
display: flex;
|
|
height: 34px;
|
|
align-items: center;
|
|
gap: 19px;
|
|
padding: 0 19px;
|
|
border-bottom: 1px solid #edf0f3;
|
|
color: #29394c;
|
|
font-family: Arial, sans-serif;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.notebook-tools {
|
|
display: flex;
|
|
height: 37px;
|
|
align-items: center;
|
|
gap: 5px;
|
|
padding: 0 17px;
|
|
border-bottom: 1px solid #e8ecf0;
|
|
color: #5d6c7b;
|
|
background: #fbfcfd;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.notebook-tools button {
|
|
width: 24px;
|
|
height: 23px;
|
|
border: 1px solid #dfe5eb;
|
|
border-radius: 3px;
|
|
color: #677585;
|
|
background: #fff;
|
|
}
|
|
|
|
.notebook-tools span {
|
|
min-width: 100px;
|
|
margin-left: 7px;
|
|
padding: 5px 9px;
|
|
border: 1px solid #dfe5eb;
|
|
background: #fff;
|
|
}
|
|
|
|
.notebook-tools em {
|
|
margin-left: auto;
|
|
color: #728091;
|
|
font-style: normal;
|
|
}
|
|
|
|
.notebook-preview {
|
|
min-height: 300px;
|
|
}
|
|
|
|
.cell {
|
|
position: relative;
|
|
width: calc(100% - 65px);
|
|
margin: 23px 21px 13px 44px;
|
|
padding: 13px 17px;
|
|
border: 1px solid #d9e1e8;
|
|
border-left: 3px solid #2e83d3;
|
|
background: #f8fafc;
|
|
}
|
|
|
|
.cell--muted {
|
|
border-left-color: #9ab1c7;
|
|
}
|
|
|
|
.cell__prompt {
|
|
position: absolute;
|
|
left: -37px;
|
|
color: #4b79ab;
|
|
font-family: Consolas, monospace;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.cell pre,
|
|
.python-preview pre {
|
|
margin: 0;
|
|
color: #293b50;
|
|
font: 11px/1.75 Consolas, "SFMono-Regular", monospace;
|
|
}
|
|
|
|
.cell pre b,
|
|
.python-preview b {
|
|
color: #9c35a5;
|
|
}
|
|
|
|
.cell pre i,
|
|
.python-preview i {
|
|
color: #b35336;
|
|
font-style: normal;
|
|
}
|
|
|
|
.cell pre span {
|
|
color: #8392a1;
|
|
}
|
|
|
|
.python-preview {
|
|
display: flex;
|
|
min-height: 330px;
|
|
padding: 25px 0;
|
|
background: #fbfcfe;
|
|
}
|
|
|
|
.line-numbers {
|
|
width: 45px;
|
|
margin-right: 16px;
|
|
padding-right: 13px;
|
|
border-right: 1px solid #e4e9ee;
|
|
color: #abb5c0;
|
|
font: 11px/1.75 Consolas, monospace;
|
|
text-align: right;
|
|
}
|
|
|
|
.code-comment { color: #799469; }
|
|
.code-function { color: #3269a8; }
|
|
|
|
.integrity-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 24px;
|
|
margin-top: 12px;
|
|
padding: 0 3px;
|
|
color: #8795a4;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.integrity-row span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 5px;
|
|
}
|
|
|
|
.integrity-row span:first-child {
|
|
color: #25875e;
|
|
}
|
|
|
|
.welcome-panel {
|
|
display: flex;
|
|
min-height: 100%;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex-direction: column;
|
|
padding: 35px;
|
|
background:
|
|
radial-gradient(circle at 50% 39%, rgb(74 150 225 / 9%), transparent 24%),
|
|
radial-gradient(circle, #d3dee8 1px, transparent 1px);
|
|
background-size: auto, 18px 18px;
|
|
text-align: center;
|
|
}
|
|
|
|
.welcome-panel__visual {
|
|
display: grid;
|
|
width: 86px;
|
|
height: 86px;
|
|
margin-bottom: 21px;
|
|
place-items: center;
|
|
border: 1px solid #cfe0f0;
|
|
border-radius: 25px;
|
|
color: #3d8cd9;
|
|
background: linear-gradient(145deg, #fff, #eaf4fd);
|
|
box-shadow: 0 16px 35px rgb(40 103 165 / 12%);
|
|
}
|
|
|
|
.welcome-panel__label {
|
|
color: #2e81ce;
|
|
font-size: 10px;
|
|
font-weight: 800;
|
|
letter-spacing: .12em;
|
|
}
|
|
|
|
.welcome-panel h2 {
|
|
margin: 9px 0 7px;
|
|
color: #21354c;
|
|
font-size: 23px;
|
|
}
|
|
|
|
.welcome-panel p {
|
|
width: min(430px, 100%);
|
|
margin: 0 0 22px;
|
|
color: #76879a;
|
|
font-size: 12px;
|
|
line-height: 1.8;
|
|
}
|
|
|
|
.primary-button {
|
|
min-height: 37px;
|
|
padding: 0 15px;
|
|
border: 1px solid #126ac3;
|
|
color: #fff;
|
|
background: linear-gradient(135deg, #1881e7, #1268c9);
|
|
box-shadow: 0 6px 15px rgb(20 111 202 / 18%);
|
|
font-size: 12px;
|
|
}
|
|
|
|
.primary-button:hover:not(:disabled) {
|
|
background: linear-gradient(135deg, #1175d8, #0e5bad);
|
|
}
|
|
|
|
.primary-button:disabled {
|
|
cursor: not-allowed;
|
|
opacity: .58;
|
|
}
|
|
|
|
.secondary-button {
|
|
min-height: 37px;
|
|
padding: 0 15px;
|
|
border: 1px solid #d8e1e9;
|
|
color: #56687c;
|
|
background: #fff;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.modal-backdrop {
|
|
position: fixed;
|
|
z-index: 20;
|
|
display: grid;
|
|
inset: 0;
|
|
place-items: center;
|
|
background: rgb(10 27 45 / 43%);
|
|
backdrop-filter: blur(2px);
|
|
}
|
|
|
|
.modal {
|
|
width: min(520px, calc(100vw - 40px));
|
|
overflow: visible;
|
|
border: 1px solid #dce4eb;
|
|
border-radius: 11px;
|
|
background: #fff;
|
|
box-shadow: 0 24px 70px rgb(8 27 48 / 25%);
|
|
animation: modal-in .18s ease-out;
|
|
}
|
|
|
|
.modal--compact {
|
|
width: min(480px, calc(100vw - 40px));
|
|
max-height: 80vh;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.modal--compact .modal__header {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.modal--compact form {
|
|
padding: 19px 22px 0;
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.modal--compact .modal__footer {
|
|
flex-shrink: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.modal__header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 20px 22px 16px;
|
|
border-bottom: 1px solid #e7ecf1;
|
|
}
|
|
|
|
.modal__eyebrow {
|
|
color: #2d82d4;
|
|
font-size: 9px;
|
|
font-weight: 800;
|
|
letter-spacing: .12em;
|
|
}
|
|
|
|
.modal__header h2 {
|
|
margin: 4px 0 0;
|
|
color: #1c2d42;
|
|
font-size: 19px;
|
|
}
|
|
|
|
.modal form {
|
|
padding: 19px 22px 0;
|
|
flex: 1;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.destination-chip {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
margin-bottom: 15px;
|
|
padding: 9px 10px;
|
|
border: 1px solid #dce7ef;
|
|
border-radius: 6px;
|
|
color: #587087;
|
|
background: #f7fafc;
|
|
font-size: 10px;
|
|
}
|
|
|
|
.destination-chip svg {
|
|
color: #dda321;
|
|
fill: #f7c84a;
|
|
}
|
|
|
|
.form-field {
|
|
display: flex;
|
|
margin-bottom: 17px;
|
|
flex-direction: column;
|
|
gap: 7px;
|
|
color: #3c4e62;
|
|
font-size: 12px;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.form-field input,
|
|
.form-field select,
|
|
.form-field textarea {
|
|
width: 100%;
|
|
padding: 0 11px;
|
|
border: 1px solid #d6e0e9;
|
|
border-radius: 6px;
|
|
outline: 0;
|
|
color: #283a4e;
|
|
background: #fff;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.form-field input,
|
|
.form-field select {
|
|
height: 39px;
|
|
}
|
|
|
|
.form-field textarea {
|
|
min-height: 92px;
|
|
padding-top: 10px;
|
|
resize: vertical;
|
|
font-family: inherit;
|
|
line-height: 1.55;
|
|
}
|
|
|
|
.form-field input:focus,
|
|
.form-field select:focus,
|
|
.form-field textarea:focus {
|
|
border-color: #5b9ddb;
|
|
box-shadow: 0 0 0 3px rgb(38 125 207 / 8%);
|
|
}
|
|
|
|
.form-field small {
|
|
color: #98a5b3;
|
|
font-size: 9px;
|
|
font-weight: 400;
|
|
}
|
|
|
|
.publish-source {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
margin-bottom: 17px;
|
|
padding: 11px 12px;
|
|
border: 1px solid #dce6ef;
|
|
border-radius: 7px;
|
|
background: #f8fbfd;
|
|
}
|
|
|
|
.publish-source > span:last-child {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
gap: 2px;
|
|
}
|
|
|
|
.publish-source strong {
|
|
overflow: hidden;
|
|
color: #34485d;
|
|
font-size: 12px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.publish-source small {
|
|
color: #8b99a8;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.version-receipt {
|
|
width: min(470px, calc(100vw - 40px));
|
|
padding: 30px 28px 25px;
|
|
text-align: center;
|
|
}
|
|
|
|
.version-receipt__check {
|
|
display: grid;
|
|
width: 58px;
|
|
height: 58px;
|
|
margin: 0 auto 14px;
|
|
place-items: center;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: linear-gradient(145deg, #24b67d, #149566);
|
|
box-shadow: 0 9px 24px rgb(25 157 104 / 25%);
|
|
}
|
|
|
|
.version-receipt h2 {
|
|
margin: 5px 0 8px;
|
|
color: #24374a;
|
|
font-size: 20px;
|
|
}
|
|
|
|
.version-receipt > p {
|
|
max-width: 360px;
|
|
margin: 0 auto 20px;
|
|
color: #718093;
|
|
font-size: 11px;
|
|
line-height: 1.65;
|
|
}
|
|
|
|
.version-id-box {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 11px 12px;
|
|
border: 1px solid #dce6ee;
|
|
border-radius: 7px;
|
|
background: #f7fafc;
|
|
text-align: left;
|
|
}
|
|
|
|
.version-id-box span {
|
|
color: #8795a4;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.version-id-box code {
|
|
overflow: hidden;
|
|
color: #275271;
|
|
font-size: 10px;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.version-id-box button {
|
|
padding: 4px 8px;
|
|
border: 1px solid #bad3e8;
|
|
border-radius: 4px;
|
|
color: #2475b7;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
font-size: 9px;
|
|
}
|
|
|
|
.version-receipt__close {
|
|
width: 100%;
|
|
height: 39px;
|
|
margin-top: 17px;
|
|
border: 0;
|
|
color: #fff;
|
|
background: #1976cf;
|
|
}
|
|
|
|
.type-picker {
|
|
display: grid;
|
|
margin: 0 0 17px;
|
|
padding: 0;
|
|
border: 0;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 9px;
|
|
}
|
|
|
|
.type-picker legend {
|
|
margin-bottom: 7px;
|
|
color: #3c4e62;
|
|
font-size: 12px;
|
|
font-weight: 650;
|
|
}
|
|
|
|
.type-picker button {
|
|
position: relative;
|
|
display: flex;
|
|
min-height: 72px;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 10px;
|
|
border: 1px solid #dae2ea;
|
|
border-radius: 7px;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
text-align: left;
|
|
}
|
|
|
|
.type-picker button:hover {
|
|
border-color: #a9c6e1;
|
|
}
|
|
|
|
.type-picker button.is-selected {
|
|
border-color: #4d98df;
|
|
background: #f4f9ff;
|
|
box-shadow: 0 0 0 2px rgb(49 133 216 / 7%);
|
|
}
|
|
|
|
.type-picker__icon {
|
|
display: grid;
|
|
width: 37px;
|
|
height: 37px;
|
|
flex: 0 0 auto;
|
|
place-items: center;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.type-picker__icon--notebook {
|
|
color: #dd5a4c;
|
|
background: #fff0ed;
|
|
}
|
|
|
|
.type-picker__icon--python {
|
|
color: #2a75c5;
|
|
background: #e9f3ff;
|
|
}
|
|
|
|
.type-picker button > span:nth-child(2) {
|
|
display: flex;
|
|
min-width: 0;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.type-picker strong {
|
|
color: #34475b;
|
|
font-size: 11px;
|
|
}
|
|
|
|
.type-picker small {
|
|
margin-top: 3px;
|
|
color: #919eac;
|
|
font-size: 8px;
|
|
line-height: 1.35;
|
|
}
|
|
|
|
.type-picker__check {
|
|
position: absolute;
|
|
top: 6px;
|
|
right: 6px;
|
|
display: none;
|
|
width: 17px;
|
|
height: 17px;
|
|
place-items: center;
|
|
border-radius: 50%;
|
|
color: #fff;
|
|
background: #2e88dd;
|
|
}
|
|
|
|
.is-selected .type-picker__check {
|
|
display: grid;
|
|
}
|
|
|
|
.modal__footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
margin: 3px -22px 0;
|
|
padding: 14px 22px;
|
|
border-top: 1px solid #e8edf2;
|
|
background: #fafbfc;
|
|
}
|
|
|
|
.button-spinner {
|
|
width: 13px;
|
|
height: 13px;
|
|
border: 2px solid rgb(255 255 255 / 45%);
|
|
border-top-color: #fff;
|
|
border-radius: 50%;
|
|
animation: spin .7s linear infinite;
|
|
}
|
|
|
|
.button-spinner.button-spinner--blue {
|
|
border-color: rgb(34 121 199 / 22%);
|
|
border-top-color: #2279c7;
|
|
}
|
|
|
|
.toast {
|
|
position: fixed;
|
|
z-index: 30;
|
|
top: 82px;
|
|
right: 21px;
|
|
display: flex;
|
|
min-width: 260px;
|
|
max-width: 410px;
|
|
min-height: 46px;
|
|
align-items: center;
|
|
gap: 9px;
|
|
padding: 10px 14px;
|
|
border: 1px solid #cfdbe6;
|
|
border-radius: 8px;
|
|
color: #43566a;
|
|
background: #fff;
|
|
box-shadow: 0 12px 35px rgb(20 42 66 / 14%);
|
|
font-size: 12px;
|
|
animation: toast-in .2s ease-out;
|
|
}
|
|
|
|
.toast > span {
|
|
display: grid;
|
|
width: 27px;
|
|
height: 27px;
|
|
flex: 0 0 auto;
|
|
place-items: center;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.toast--success > span {
|
|
color: #177b55;
|
|
background: #e6f7f0;
|
|
}
|
|
|
|
.toast--error > span {
|
|
color: #b94a4a;
|
|
background: #fff0f0;
|
|
}
|
|
|
|
.toast--info > span {
|
|
color: #2675bf;
|
|
background: #eaf4fd;
|
|
}
|
|
|
|
@keyframes spin {
|
|
to { transform: rotate(360deg); }
|
|
}
|
|
|
|
@keyframes shimmer {
|
|
to { background-position: -200% 0; }
|
|
}
|
|
|
|
@keyframes modal-in {
|
|
from { opacity: 0; transform: translateY(8px) scale(.985); }
|
|
}
|
|
|
|
@keyframes toast-in {
|
|
from { opacity: 0; transform: translateY(-7px); }
|
|
}
|
|
|
|
@keyframes lock-pulse {
|
|
50% { opacity: .5; transform: scale(.78); }
|
|
}
|
|
|
|
@media (max-width: 1280px) {
|
|
.sidebar {
|
|
width: 184px;
|
|
min-width: 184px;
|
|
}
|
|
|
|
.brand__name {
|
|
font-size: 13px;
|
|
}
|
|
|
|
.workspace-layout {
|
|
grid-template-columns: 285px minmax(0, 1fr);
|
|
}
|
|
|
|
.api-state {
|
|
display: none;
|
|
}
|
|
|
|
.workspace-switcher span:not(.workspace-switcher__icon) {
|
|
min-width: 130px;
|
|
}
|
|
|
|
.script-overview {
|
|
width: calc(100% - 30px);
|
|
}
|
|
}
|
|
|
|
/* ============ 只读编辑器样式 ============ */
|
|
.readonly-editor-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
background: #f8f9fa;
|
|
}
|
|
|
|
.readonly-editor-banner {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 8px;
|
|
padding: 10px 16px;
|
|
background: #fff3cd;
|
|
border-bottom: 1px solid #e0e0e0;
|
|
color: #856404;
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.readonly-editor-banner svg {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.readonly-editor-loading {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex: 1;
|
|
gap: 16px;
|
|
color: #666;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.readonly-editor-error {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
flex: 1;
|
|
gap: 12px;
|
|
color: #dc3545;
|
|
font-size: 14px;
|
|
text-align: center;
|
|
}
|
|
|
|
.readonly-editor-error strong {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.readonly-editor-error p {
|
|
margin: 0;
|
|
color: #666;
|
|
}
|