.shell { --sidebar-width: 270px; display: flex; min-height: 100dvh; background: #fffefb; color: #37352f; } .sidebarSlot { position: sticky; top: 0; height: 100dvh; max-width: calc(100vw - 40px); flex: 0 0 auto; overflow: hidden; z-index: 30; } .sidebar { display: flex; flex-direction: column; width: var(--sidebar-width); max-width: calc(100vw - 40px); height: 100dvh; padding: 10px 10px 6px; background: #f8f7f5; border-right: 1px solid #edece9; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; font-size: 14px; line-height: 20px; letter-spacing: -0.15px; color: #37352f; } .topRow { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; color: #85817b; } .search { display: flex; align-items: center; gap: 7px; min-height: 32px; border: 1px solid #e6e3df; border-radius: 7px; padding: 4px 8px; color: #97938d; } .search:focus-within { border-color: #b2a292; box-shadow: 0 0 0 2px #b2a29218; } .search input { min-width: 0; width: 100%; padding: 0; background: transparent; border: 0; outline: none; font: inherit; color: #37352f; } .search input::placeholder { color: #9a9690; } .navigation { flex: 1; min-height: 0; overflow-y: auto; padding-top: 10px; } .home, .pageLink { display: flex; align-items: center; gap: 8px; padding: 4px 8px; min-height: 30px; border-radius: 6px; font-weight: 450; } .home { width: fit-content; font-weight: 600; background: #ecebe8; } .pageLink { margin: 1px 0; } .pageLink svg { flex-shrink: 0; color: #87837c; } .pageLink span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pageLink:hover, .pageLink[aria-current="page"] { background: #eae7e2; } .sectionLabel { display: flex; justify-content: space-between; padding: 18px 7px 6px; color: #9b9690; font-size: 11px; font-weight: 400; letter-spacing: 0; } .hint { padding: 4px 8px; color: #9a948c; line-height: 1.6; font-size: 12px; } .error { margin: 6px 4px; font-size: 12px; color: #b14b3c; overflow-wrap: anywhere; } .accountArea { margin-top: auto; padding-top: 6px; } .accountButton { display: flex; align-items: center; gap: 8px; padding: 6px 7px; min-height: 36px; width: 100%; border-radius: 6px; text-align: left; color: #37352f; } .accountButton:hover { background: #edeae5; } .avatar { display: grid; place-items: center; flex: 0 0 24px; width: 24px; height: 24px; overflow: hidden; border-radius: 50%; background: #e8e0d6; color: #705844; font-size: 12px; font-weight: 600; } .avatar img { display: block; width: 100%; height: 100%; object-fit: cover; } .avatarLarge { flex-basis: 36px; width: 36px; height: 36px; font-size: 16px; } .accountText { display: flex; flex: 1; flex-direction: column; min-width: 0; } .accountText strong { font-size: 13px; font-weight: 550; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .accountText small { display: none; } .accountPopup { position: fixed; inset: auto auto 50px 8px; margin: 0; width: 300px; max-width: calc(100vw - 16px); max-height: calc(100dvh - 66px); overflow-y: auto; padding: 5px; color: #37352f; background: #fff; border: 1px solid #e9e7e3; border-radius: 11px; box-shadow: 0 4px 16px #19140d14, 0 12px 40px #19140d0a; font-family: inherit; font-size: 14px; line-height: 20px; letter-spacing: -0.15px; transform-origin: bottom left; } .accountPopup:popover-open { animation: account-enter 130ms ease-out; } .accountPopup::backdrop { background: transparent; } .accountHeading { display: flex; align-items: center; gap: 10px; padding: 8px 7px 10px; } .workspaceAvatar { display: grid; place-items: center; flex: 0 0 36px; height: 36px; border-radius: 7px; color: #72533e; background: #eee8df; font-size: 19px; font-weight: 600; } .accountHeading > div, .popupIdentity > div { display: flex; flex-direction: column; min-width: 0; gap: 1px; } .accountHeading strong { font-size: 14px; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .accountHeading small { color: #8b8780; font-size: 12px; } .menuGroup { padding: 1px 0; } .popupIdentity { display: flex; align-items: center; gap: 8px; padding: 8px 7px 7px; } .popupIdentity strong { font-size: 12px; font-weight: 500; } .popupIdentity small { color: #8b8780; font-size: 11px; overflow-wrap: anywhere; letter-spacing: 0; } .workspaceList { max-height: min(220px, 30dvh); overflow-y: auto; } .menuItem { display: flex; align-items: center; gap: 9px; width: 100%; min-height: 31px; padding: 5px 8px; border-radius: 5px; text-align: left; font-size: 13px; line-height: 20px; font-weight: 450; } .menuItem > span:not(.workspaceMini) { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .menuItem > svg { flex-shrink: 0; } .menuItem:hover { background: #f1f0ed; } .menuItem:disabled { opacity: 0.45; cursor: not-allowed; } .workspaceMini { display: grid; place-items: center; flex: 0 0 20px; height: 20px; border-radius: 4px; color: #82634c; background: #f1ebe3; font-size: 11px; font-weight: 600; } .newWorkspace { color: #2383e2; } .logout { color: #78746d; font-size: 12px; } .separator { height: 1px; margin: 6px 7px; background: #eeece8; } .floating { --floating-left: 12px; position: fixed; left: var(--floating-left); top: 12px; max-width: calc(100vw - var(--floating-left) - 12px); z-index: 40; transition: left 240ms cubic-bezier(0.22, 1, 0.36, 1), max-width 240ms cubic-bezier(0.22, 1, 0.36, 1); } .floating[data-sidebar-collapsed="false"], .accountPopup[data-sidebar-collapsed="false"] { --floating-left: calc(min(var(--sidebar-width), calc(100vw - 40px)) + 12px); } .floatingError { position: absolute; left: 0; top: 42px; width: 240px; padding: 10px; background: white; border: 1px solid #e7e2db; border-radius: 8px; color: #b14b3c; font-size: 12px; } .settingsPanel { color: #37352f; border-color: #e6e2dc; border-radius: 12px; } .settingsForm { display: flex; flex-direction: column; gap: 16px; padding-top: 4px; } .settingsIdentity { display: flex; align-items: center; gap: 10px; font-size: 13px; color: #89837b; overflow-wrap: anywhere; } .settingsForm label { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 500; } .settingsForm input { padding: 8px 10px; width: 100%; border: 1px solid #e2ddd6; border-radius: 6px; background: #fff; color: #37352f; font: inherit; } .settingsActions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; } .settingsActions button { padding: 6px 12px; border: 1px solid #e2ddd6; border-radius: 6px; font-size: 13px; } .settingsActions button[type="submit"] { background: #37352f; color: white; border-color: #37352f; } .settingsActions button:disabled { opacity: 0.5; cursor: not-allowed; } .graph { position: fixed; inset: 0; z-index: 0; display: flex; width: 100%; height: 100dvh; background: #fffefb; } .graphSurface { width: 100%; height: 100%; background-image: radial-gradient(#b8aea245 1px, transparent 1px); background-size: 22px 22px; } .graphStatus { position: absolute; left: 50%; top: 72px; transform: translateX(-50%); max-width: calc(100vw - 48px); padding: 8px 12px; border-radius: 6px; background: #fffefbe6; color: #9a948c; text-align: center; font-size: 13px; } @keyframes account-enter { from { opacity: 0; transform: translateY(4px) scale(0.985); } to { opacity: 1; transform: translateY(0) scale(1); } } @media (max-width: 600px) { .shell { --sidebar-width: 240px; } } @media (prefers-reduced-motion: reduce) { .accountPopup:popover-open { animation: none; } } .logoLink { display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; box-sizing: border-box; width: var(--toolbar-control-width, 32px); height: var(--toolbar-control-height, 32px); padding: 4px 6px; border-radius: 5px; } .logoLink img { display: block; width: var(--toolbar-icon-size, 20px); height: var(--toolbar-icon-size, 20px); } .logoLink:hover { background: #e9e7e3; } .logoLink:focus-visible { outline: 2px solid #9d7d66; outline-offset: 2px; } .floatingAvatarButton { display: grid; place-items: center; flex: 0 0 auto; box-sizing: border-box; width: var(--toolbar-control-width, 32px); height: var(--toolbar-control-height, 32px); border-radius: 5px; } .floatingAvatarButton:hover { background: #e9e7e3; } .accountPopup[data-floating="true"] { inset: 62px auto auto clamp(8px, var(--floating-left, 12px), max(8px, calc(100vw - 308px))); max-height: calc(100dvh - 76px); transform-origin: top left; } .floatingAvatarButton .avatar { flex-basis: var(--toolbar-icon-size, 20px); width: var(--toolbar-icon-size, 20px); height: var(--toolbar-icon-size, 20px); font-size: 14px; } .floatingTitle { flex: 1 1 auto; min-width: 0; max-width: 240px; margin: 0; color: #37352f; font-size: 14px; line-height: var(--toolbar-control-height, 32px); font-weight: 500; overflow: visible; } @media (max-width: 700px) { .floatingTitle { max-width: 180px; } } @media (max-width: 420px) { .floating[data-sidebar-collapsed="false"] .logoLink, .floating[data-sidebar-collapsed="false"] .floatingTitle, .floating[data-sidebar-collapsed="false"] > span[aria-hidden="true"] { display: none; } } @media (prefers-reduced-motion: reduce) { .floating { transition: none; } } .directoryList { list-style: none; padding: 0; margin: 0; } .directoryRow { display: flex; align-items: center; min-width: 0; } .directoryRow .pageLink { flex: 1; min-width: 0; padding-left: 3px; } .directoryToggle, .directorySpacer { flex: 0 0 20px; width: 20px; height: 26px; } .directoryToggle { display: grid; place-items: center; border: 0; border-radius: 4px; background: transparent; color: #87837c; cursor: pointer; } .directoryToggle:hover { background: #eae7e2; } .directoryToggle:focus-visible { outline: 2px solid #9b877a; outline-offset: -2px; } .directoryToggle svg { transition: transform 120ms ease; }