.list { flex: 1; overflow-y: auto; padding: 12px 24px; scrollbar-width: thin; scrollbar-color: var(--border) transparent; min-height: 0; } .list::-webkit-scrollbar { width: 6px; } .list::-webkit-scrollbar-track { background: transparent; } .list::-webkit-scrollbar-thumb { background: var(--border); border-radius: 3px; } .list > * { width: min( 100%, var(--chat-content-width, var(--chat-regular-content-width, 1000px)) ); margin-right: auto; margin-left: auto; transition: width 320ms ease; } .virtualSizer { position: relative; width: 100%; max-width: none; margin-right: 0; margin-left: 0; transition: none; } .virtualRow { width: min( 100%, var(--chat-content-width, var(--chat-regular-content-width, 1000px)) ); margin-right: auto; margin-left: auto; transition: width 320ms ease; } .loadingSkeleton { display: flex; flex-direction: column; gap: 28px; padding: 18px 0 36px; pointer-events: none; } .srOnly { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .loadingSkeletonUserRow { display: flex; justify-content: flex-end; width: 100%; } .loadingSkeletonAssistantRow { display: flex; justify-content: flex-start; width: 100%; } .loadingSkeletonUserBubble, .loadingSkeletonUserBubbleCompact { display: flex; flex-direction: column; gap: 9px; width: min(62%, 520px); padding: 12px 14px; border-radius: 6px; background: var(--accent); } .loadingSkeletonUserBubbleCompact { width: min(46%, 360px); } .loadingSkeletonAssistantBlock { display: flex; flex-direction: column; gap: 10px; width: min(72%, 640px); padding: 3px 0; } .loadingSkeletonLineWide, .loadingSkeletonLineMedium, .loadingSkeletonLineShort, .loadingSkeletonLineNarrow { display: block; height: 16px; border-radius: 4px; background: linear-gradient( 90deg, color-mix(in srgb, var(--muted-foreground) 10%, transparent) 25%, color-mix(in srgb, var(--muted-foreground) 24%, transparent) 37%, color-mix(in srgb, var(--muted-foreground) 10%, transparent) 63% ); background-size: 400% 100%; animation: loadingSkeletonShimmer 1.4s ease infinite; } .loadingSkeletonLineWide { width: 100%; } .loadingSkeletonLineMedium { width: 72%; } .loadingSkeletonLineShort { width: 48%; } .loadingSkeletonLineNarrow { width: 58%; } @keyframes loadingSkeletonShimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } } .turnStatusRow, .turnAnswerRow { max-width: 100%; } .turnStatusRow { margin-bottom: 4px; } .turnAnswerRow { margin-top: 10px; } .turnContentRow { min-width: 0; } .turnContentClip { display: grid; grid-template-rows: 1fr; min-height: 0; overflow: hidden; transition: grid-template-rows 180ms ease; } .turnContentCollapsed { grid-template-rows: 0fr; } .turnContentInner { min-height: 0; overflow: hidden; } .sessionTimelineLayer { position: sticky; top: 50vh; z-index: 4; width: 0 !important; height: 0; margin-right: 0 !important; margin-left: 0 !important; transition: none; transform: translateX(-22px); pointer-events: none; } .sessionTimelinePanel { position: absolute; top: 0; left: 22px; width: 86px; overflow: visible; color: var(--muted-foreground); pointer-events: auto; transform: translateY(-50%); } .sessionTimelineViewport { width: 70px; max-height: min(640px, max(220px, calc(100vh - 220px))); overflow-y: auto; overscroll-behavior: contain; scrollbar-color: transparent transparent !important; scrollbar-width: none !important; -webkit-mask-image: linear-gradient( to bottom, transparent 0, rgb(0 0 0 / 18%) 10px, black 34px, black calc(100% - 34px), rgb(0 0 0 / 18%) calc(100% - 10px), transparent 100% ); mask-image: linear-gradient( to bottom, transparent 0, rgb(0 0 0 / 18%) 10px, black 34px, black calc(100% - 34px), rgb(0 0 0 / 18%) calc(100% - 10px), transparent 100% ); } .sessionTimelineViewport.sessionTimelineViewport::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; background: transparent !important; } .sessionTimelineViewport.sessionTimelineViewport::-webkit-scrollbar-track, .sessionTimelineViewport.sessionTimelineViewport::-webkit-scrollbar-thumb, .sessionTimelineViewport.sessionTimelineViewport::-webkit-scrollbar-thumb:hover { border: 0 !important; background: transparent !important; } .sessionTimelineList { position: relative; display: flex; flex-direction: column; gap: 12px; margin: 0; padding: 32px 0; list-style: none; } .sessionTimelineItem { position: relative; height: 3px; } .sessionTimelineButton { position: relative; top: -6.5px; display: flex; align-items: center; width: 58px; height: 16px; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; } .sessionTimelineButton:focus-visible { outline: none; } .sessionTimelineButton:focus-visible .sessionTimelineTick { box-shadow: 0 0 0 2px var(--background), 0 0 0 4px color-mix(in srgb, var(--foreground) 82%, transparent); } .sessionTimelineTick { display: block; width: 10px; height: 3px; border-radius: 1px; background: color-mix(in srgb, var(--muted-foreground) 30%, transparent); transform-origin: left center; transition: background-color 160ms cubic-bezier(0.25, 1, 0.5, 1), transform 180ms cubic-bezier(0.25, 1, 0.5, 1); } .sessionTimelineButton:hover .sessionTimelineTick, .sessionTimelineButton:focus-visible .sessionTimelineTick { background: color-mix(in srgb, var(--foreground) 94%, transparent); transform: scaleX(2.8); } .sessionTimelineItem:has(.sessionTimelineButton:hover) + .sessionTimelineItem .sessionTimelineTick, .sessionTimelineItem:has(.sessionTimelineButton:focus-visible) + .sessionTimelineItem .sessionTimelineTick, .sessionTimelineItem:has(+ .sessionTimelineItem .sessionTimelineButton:hover) .sessionTimelineTick, .sessionTimelineItem:has( + .sessionTimelineItem .sessionTimelineButton:focus-visible ) .sessionTimelineTick { transform: scaleX(2.2); } .sessionTimelineItem:has(.sessionTimelineButton:hover) + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineTick, .sessionTimelineItem:has(.sessionTimelineButton:focus-visible) + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineTick, .sessionTimelineItem:has( + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineButton:hover ) .sessionTimelineTick, .sessionTimelineItem:has( + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineButton:focus-visible ) .sessionTimelineTick { transform: scaleX(1.6); } .sessionTimelineItem:has(.sessionTimelineButton:hover) + .sessionTimelineItem + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineTick, .sessionTimelineItem:has(.sessionTimelineButton:focus-visible) + .sessionTimelineItem + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineTick, .sessionTimelineItem:has( + .sessionTimelineItem + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineButton:hover ) .sessionTimelineTick, .sessionTimelineItem:has( + .sessionTimelineItem + .sessionTimelineItem + .sessionTimelineItem .sessionTimelineButton:focus-visible ) .sessionTimelineTick { transform: scaleX(1.2); } .sessionTimelineButtonInRange .sessionTimelineTick { background: color-mix(in srgb, var(--foreground) 50%, transparent); } .sessionTimelineButtonCurrent .sessionTimelineTick { background: color-mix(in srgb, var(--foreground) 86%, transparent); } .sessionTimelineButtonInRange:hover .sessionTimelineTick, .sessionTimelineButtonInRange:focus-visible .sessionTimelineTick, .sessionTimelineButtonCurrent:hover .sessionTimelineTick, .sessionTimelineButtonCurrent:focus-visible .sessionTimelineTick { background: color-mix(in srgb, var(--foreground) 94%, transparent); } .sessionTimelineDetails { position: fixed; z-index: 999; box-sizing: border-box; display: grid; gap: 6px; width: min(350px, calc(100vw - 150px)); padding: 12px 14px; border: 1px solid color-mix(in srgb, var(--border) 72%, transparent); border-radius: 14px; background: color-mix(in srgb, var(--background) 96%, white); box-shadow: 0 10px 28px color-mix(in srgb, black 10%, transparent); color: var(--foreground); font-family: var(--font-sans, system-ui, sans-serif); pointer-events: none; text-align: left; opacity: 1; transform: translate3d(0, -50%, 0) scale(1); transform-origin: left center; animation: sessionTimelineDetailsIn 120ms ease-out; } @keyframes sessionTimelineDetailsIn { from { opacity: 0; transform: translate3d(-4px, -50%, 0) scale(0.98); } to { opacity: 1; transform: translate3d(0, -50%, 0) scale(1); } } .sessionTimelineDetailsTitle { display: flex; align-items: center; min-width: 0; gap: 8px; } .sessionTimelineDetailsIcon { width: 16px; height: 16px; flex: 0 0 auto; color: color-mix(in srgb, var(--muted-foreground) 86%, transparent); fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.4; } .sessionTimelineDetailsTitleText { overflow: hidden; color: var(--foreground); font-size: 14px; font-weight: 600; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap; } .sessionTimelineDetailsDetail { overflow: hidden; color: color-mix(in srgb, var(--muted-foreground) 86%, transparent); font-size: 13px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; } @media (prefers-reduced-motion: reduce) { .sessionTimelineTick { transition-duration: 0.01ms; } .sessionTimelineDetails { animation: none; } } @media (max-width: 720px) { .sessionTimelinePanel { display: none; } }