/* The global Project navigation is deliberately quieter than the raised document. */ :root { --document-shell-header-height: calc(3rem + env(safe-area-inset-top)); } .room-header { height: var(--document-shell-header-height); min-height: var(--document-shell-header-height); } @media (min-width: 1198px) { :root { --document-shell-header-height: calc(50px + env(safe-area-inset-top)); } } @media (max-width: 639px) { :root[data-plan-coarse-pointer] { --document-shell-header-height: calc(3.75rem + env(safe-area-inset-top)); } } .navigation-shell { position: relative; display: flex; height: 100%; min-height: 100%; overflow: hidden; background: var(--color-ground); } .navigation-content { position: relative; min-width: 0; min-height: 0; flex: 1; } .navigation-content[data-project-sidebar-trigger] .room-header { padding-left: 44px; } .anchored-child-host, .anchored-child-parent { position: relative; height: 100%; min-height: 0; } /* A calm dim over the live parent; opacity is the only thing that animates. */ .anchored-child-parent::after { content: ""; position: absolute; z-index: 20; inset: var(--document-shell-header-height) 0 0; background: color-mix(in srgb, var(--color-text-primary) 12%, transparent); opacity: 0; pointer-events: none; transition: opacity var(--modal-close-dur) var(--motion-smooth-out); } .anchored-child-host[data-child-visible] .anchored-child-parent::after { opacity: 1; transition-duration: var(--modal-open-dur); } .anchored-child-host[data-child-presentation="closing"] .anchored-child-parent::after { opacity: 0; transition-duration: var(--modal-close-dur); } .anchored-child-backdrop { position: absolute; z-index: 30; inset: var(--document-shell-header-height) 0 0; background: transparent; cursor: pointer; touch-action: manipulation; } /* The sheet is the only frame; the child workspace fills it edge to edge. */ .anchored-child-surface { position: absolute; z-index: 40; inset: calc(var(--document-shell-header-height) + 12px) 24px 24px; overflow: hidden; border: var(--edge-width) solid var(--color-edge); border-radius: var(--radius-xl); background: var(--color-page); box-shadow: var(--shadow-overlay); transform-origin: 50% 100%; animation: anchored-child-enter var(--modal-open-dur) var(--modal-ease) both; } .anchored-child-host[data-child-presentation="closing"] .anchored-child-surface { animation: anchored-child-exit var(--modal-close-dur) var(--modal-ease) both; } .anchored-child-surface .room-header { display: none; } .anchored-child-surface > [data-workspace-surface="child"] { background: transparent; } .anchored-child-surface .workspace-root .workspace-frame, .anchored-child-surface .workspace-root[data-workspace-mode="split"] .workspace-frame { margin: 0; border-radius: 0; box-shadow: none; } @keyframes anchored-child-enter { from { opacity: 0; transform: translateY(var(--drawer-distance)) scale(var(--modal-scale)); } to { opacity: 1; transform: none; } } @keyframes anchored-child-exit { from { opacity: 1; transform: none; } to { opacity: 0; transform: translateY(var(--drawer-distance)) scale(var(--modal-scale-close)); } } @media (max-width: 1197px) { .anchored-child-surface { inset: var(--document-shell-header-height) 0 0; border: 0; border-radius: 0; box-shadow: none; } } @media (prefers-reduced-motion: reduce) { .anchored-child-parent::after { transition: none; } .anchored-child-surface { animation-name: anchored-child-fade; animation-duration: var(--duration-fast); } .anchored-child-host[data-child-presentation="closing"] .anchored-child-surface { animation-name: anchored-child-fade-out; } @keyframes anchored-child-fade { from { opacity: 0; } to { opacity: 1; } } @keyframes anchored-child-fade-out { from { opacity: 1; } to { opacity: 0; } } } .project-sidebar-frame { position: relative; display: flex; flex: 0 0 auto; min-width: 0; background: var(--color-ground); } .project-sidebar-motion-content { display: flex; width: 100%; min-width: 0; flex: 1 1 auto; overflow: hidden; } /* The track's width moves the workspace; the sidebar slides under its clip. Resizing is direct. */ .motion-sidebar { position: relative; z-index: 45; height: 100%; width: 0; justify-content: flex-end; overflow: hidden; transition: width var(--sidebar-open-dur) var(--motion-move); } .motion-sidebar:has(> .project-sidebar-resize:is(:active, :focus-visible)) { transition: none; } .motion-sidebar .project-sidebar-motion-content { width: var(--project-sidebar-width, 0px); flex: 0 0 var(--project-sidebar-width, 0px); } .motion-sidebar .project-sidebar { width: var(--project-sidebar-width, 0px); flex: 0 0 var(--project-sidebar-width, 0px); } .motion-sidebar.is-open { width: var(--project-sidebar-width, 0px); } .motion-sidebar.is-closing { pointer-events: none; transition-duration: var(--sidebar-close-dur); } .project-sidebar { --project-sidebar-hover: var(--color-gray-200); --project-sidebar-selected: color-mix( in oklch, var(--color-gray-200) 75%, var(--color-gray-300) ); --project-sidebar-row: calc(var(--spacing) * 7.5); --project-sidebar-inset: calc(var(--spacing) * 2); --project-sidebar-gap: calc(var(--spacing) * 2); /* Document names line up with the labels of the 14px icon rows above them. */ --project-sidebar-label: calc(var(--project-sidebar-inset) * 2 + var(--spacing) * 3.5); display: flex; width: 100%; min-width: 0; flex-direction: column; background: var(--color-ground); color: var(--color-text-tertiary); } .project-sidebar-header { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px 12px; } .project-sidebar-primary-actions, .project-sidebar-footer-actions { display: flex; flex-direction: column; padding: 0 8px; } .project-sidebar-footer-actions { flex: 0 0 auto; } .project-sidebar-primary-action { display: flex; width: 100%; min-height: var(--project-sidebar-row); align-items: center; gap: var(--project-sidebar-gap); border-radius: var(--radius-md); padding: 0 var(--project-sidebar-inset); font-size: var(--text-sm); font-weight: 500; text-align: left; color: var(--color-text-tertiary); } .project-sidebar-primary-action:hover, .project-sidebar-primary-action:focus-visible, .project-sidebar-project-row:hover, .project-sidebar-project-row:focus-within, .project-sidebar-document:hover, .project-sidebar-document:focus-within, .project-sidebar-account:hover, .project-sidebar-account:focus-visible { background: var(--project-sidebar-hover); } .project-sidebar-projects-heading, .project-sidebar-project-row, .project-sidebar-document, .project-sidebar-account { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .project-sidebar-projects-heading { padding: 4px 8px; font-size: var(--text-sm); font-weight: 500; color: color-mix(in srgb, var(--color-text-tertiary) 60%, transparent); } .project-sidebar-projects, .project-sidebar-documents, .project-sidebar-children { display: flex; flex-direction: column; } .project-sidebar-project-row { min-height: var(--project-sidebar-row); gap: var(--project-sidebar-gap); border-radius: var(--radius-md); padding: 0 calc(var(--spacing) * 0.75) 0 var(--project-sidebar-inset); font-size: var(--text-sm); } .project-sidebar-project-disclosure { align-self: stretch; } .project-sidebar-document { min-height: var(--project-sidebar-row); gap: var(--spacing); border-radius: var(--radius-md); padding: 0 calc(var(--spacing) * 0.75) 0 var(--project-sidebar-label); font-size: var(--text-sm); } .project-sidebar-document-link { display: flex; min-width: 0; flex: 1; align-self: stretch; align-items: center; overflow: hidden; font-size: var(--text-sm); font-weight: 400; line-height: 1.25rem; text-align: left; } .project-sidebar-document-current { background: var(--project-sidebar-selected); color: var(--color-text-primary); } .project-sidebar-document-current .project-sidebar-document-link, .project-sidebar-child-current .project-sidebar-child-link { font-weight: 500; } .project-sidebar-document-ancestor { color: var(--color-text-primary); } .project-sidebar-child { display: flex; min-height: var(--project-sidebar-row); align-items: center; padding-right: calc(var(--spacing) * 0.75); margin-left: var(--project-sidebar-label); border-left: var(--edge-width) solid var(--color-gray-300); border-radius: 0 var(--radius-md) var(--radius-md) 0; } .project-sidebar-child:hover, .project-sidebar-child:focus-within { background: var(--project-sidebar-hover); } .project-sidebar-child-link { display: flex; min-width: 0; flex: 1; align-items: center; align-self: stretch; padding: 0 var(--spacing) 0 calc(var(--spacing) * 3); overflow: hidden; font-size: var(--text-sm); font-weight: 400; line-height: 1.25rem; } .project-sidebar-child-current { border-left-color: var(--color-brand); background: var(--project-sidebar-selected); color: var(--color-text-primary); } .project-sidebar-document-actions { display: flex; width: 0; flex: 0 0 auto; align-items: center; overflow: hidden; visibility: hidden; } .group\/document:hover .project-sidebar-document-actions, .group\/document:focus-within .project-sidebar-document-actions, :root[data-plan-coarse-pointer] .project-sidebar .project-sidebar-document-actions { width: auto; overflow: visible; visibility: visible; } .project-sidebar-action, .project-sidebar-document-action { display: inline-flex; width: 24px; height: 24px; flex: 0 0 auto; align-items: center; justify-content: center; border-radius: var(--radius-sm); padding: 5px; color: inherit; opacity: 0; transition: opacity var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out); } .project-sidebar-action:focus-visible, .project-sidebar-document-action:focus-visible, .project-sidebar-action:hover, .project-sidebar-document-action:hover { background: var(--project-sidebar-selected); opacity: 1; } :is(.group\/sidebar-header, .group\/projects-heading, .project-sidebar-project-row):hover .project-sidebar-action, :is(.group\/sidebar-header, .group\/projects-heading, .project-sidebar-project-row):focus-within .project-sidebar-action, .project-sidebar-document:hover .project-sidebar-document-action, .project-sidebar-document:focus-within .project-sidebar-document-action, .project-sidebar-child:hover .project-sidebar-document-action, .project-sidebar-child:focus-within .project-sidebar-document-action { opacity: 1; } .project-sidebar-status, .project-sidebar-load-more { padding: 0 var(--project-sidebar-inset) var(--spacing) var(--project-sidebar-label); font-size: var(--text-sm); line-height: 1rem; color: var(--color-text-quaternary); } .project-sidebar-load-more:hover, .project-sidebar-load-more:focus-visible { color: var(--color-text-primary); } .project-sidebar-empty { padding: var(--spacing) var(--project-sidebar-inset) var(--project-sidebar-inset) var(--project-sidebar-label); font-size: var(--text-sm); line-height: 1.25rem; color: var(--color-text-tertiary); } .project-sidebar-action-pending { opacity: 1; } :is(.project-sidebar-primary-action, .project-sidebar-action):disabled { cursor: default; color: var(--color-text-quaternary); } .project-sidebar-account { width: 100%; min-height: var(--project-sidebar-row); justify-content: flex-start; gap: var(--project-sidebar-gap); border-radius: var(--radius-md); padding: 0 var(--project-sidebar-inset); font-size: var(--text-sm); font-weight: 500; text-align: left; } .project-sidebar-account-wrap { position: relative; padding: var(--project-sidebar-inset); } .project-sidebar-account[aria-expanded="true"] { background: var(--project-sidebar-selected); } .project-sidebar-resize { position: absolute; inset-block: 0; right: 0; z-index: 50; width: 4px; cursor: col-resize; } .project-sidebar-resize::after { position: absolute; inset-block: 0; left: 1px; width: 1px; background: var(--color-edge); content: ""; } .project-sidebar-resize:focus-visible::after, .project-sidebar-resize:hover::after { background: var(--color-brand); } .project-sidebar-expand { margin-right: 8px; } .project-sidebar-expand img { opacity: 0.5; } .navigation-shell > .project-sidebar-expand { position: absolute; left: 8px; top: 11px; z-index: 45; } .navigation-drawer { position: fixed; inset: 0; z-index: 50; } .motion-drawer { pointer-events: none; opacity: 0; transition: opacity var(--drawer-open-dur) var(--motion-smooth-out); will-change: opacity; } .motion-drawer .navigation-focus-scope { transform: translateX(calc(-1 * var(--drawer-distance))); transition: transform var(--drawer-open-dur) var(--motion-smooth-out); will-change: transform; } .motion-drawer.is-open { pointer-events: auto; opacity: 1; } .motion-drawer.is-open .navigation-focus-scope { transform: translateX(0); } .motion-drawer.is-closing { opacity: 0; transition-duration: var(--drawer-close-dur); } .motion-drawer.is-closing .navigation-focus-scope { transform: translateX(calc(-1 * var(--drawer-distance))); transition-duration: var(--drawer-close-dur); } .navigation-drawer-backdrop { position: absolute; inset: 0; width: 100%; background: rgb(0 0 0 / 20%); } .navigation-drawer > .navigation-focus-scope { position: relative; z-index: 1; height: 100%; width: min(280px, calc(100vw - 24px)); } .navigation-drawer .project-sidebar-frame { position: relative; height: 100%; width: 100%; box-shadow: var(--shadow-overlay); } .navigation-creation-status { position: absolute; top: calc(var(--document-shell-header-height) + 56px); left: 50%; z-index: 15; translate: -50% 0; width: fit-content; max-width: calc(100% - 32px); border: var(--edge-width) solid var(--color-edge); border-radius: var(--radius-md); background: var(--color-page); padding: 6px 12px; box-shadow: var(--shadow-raised); font-size: var(--text-sm); color: var(--color-text-secondary); pointer-events: none; } @media (prefers-reduced-motion: no-preference) { .navigation-creation-status { animation: navigation-status-in var(--duration-base) var(--motion-smooth-out); } .navigation-creation-status[data-leaving] { opacity: 0; transform: translateY(-4px); transition: opacity var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out); } } @keyframes navigation-status-in { from { opacity: 0; transform: translateY(-4px); } } .navigation-creation-status button { margin-left: 8px; pointer-events: auto; color: var(--color-text-primary); text-decoration: underline; } .navigation-error { position: absolute; left: 16px; right: 16px; top: 16px; z-index: 15; border-radius: var(--radius-md); background: var(--color-destructive-wash); padding: 8px 12px; font-size: var(--text-sm); color: var(--color-destructive-ink); } .navigation-modal { position: fixed; inset: 0; z-index: 50; display: grid; place-items: center; padding: 16px; } .motion-modal { pointer-events: none; opacity: 0; transition: opacity var(--modal-open-dur) var(--modal-ease); will-change: opacity; } .motion-modal .navigation-modal-content { transform: scale(var(--modal-scale)); transition: transform var(--modal-open-dur) var(--modal-ease); will-change: transform; } .motion-modal.is-open { pointer-events: auto; opacity: 1; } .motion-modal.is-open .navigation-modal-content { transform: scale(1); } /* The lazy dialog can mount already open; the starting style makes first paint animate. */ @starting-style { .motion-modal.is-open { opacity: 0; } .motion-modal.is-open .navigation-modal-content { transform: scale(var(--modal-scale)); } } .motion-modal.is-closing { opacity: 0; transition-duration: var(--modal-close-dur); } .motion-modal.is-closing .navigation-modal-content { transform: scale(var(--modal-scale-close)); transition-duration: var(--modal-close-dur); } .navigation-modal-backdrop { position: absolute; inset: 0; width: 100%; background: rgb(0 0 0 / 20%); } .navigation-modal > .navigation-focus-scope { display: grid; height: 100%; width: 100%; place-items: center; pointer-events: none; } .navigation-modal-content { position: relative; width: min(100%, 28rem); border-radius: var(--radius-lg); background: var(--color-page); padding: 20px; box-shadow: var(--shadow-overlay); pointer-events: auto; } .navigation-dialog-list { display: flex; max-height: min(50vh, 20rem); flex-direction: column; gap: 4px; overflow-y: auto; margin-top: 12px; } .navigation-dialog-option { display: flex; min-height: 48px; width: 100%; align-items: center; justify-content: space-between; gap: 12px; border-radius: var(--radius-md); padding: 8px; text-align: left; } .navigation-dialog-option:hover:not(:disabled), .navigation-dialog-option:focus-visible { background: var(--color-hover); } .navigation-modal-content.navigation-palette { display: flex; width: min(100%, 32rem); flex-direction: column; overflow: hidden; padding: 0; /* Anchored near the top so the field stays put while results grow and shrink. */ align-self: start; margin-top: 15vh; } .navigation-palette-search { display: flex; height: calc(var(--spacing) * 12); flex-shrink: 0; align-items: center; gap: calc(var(--spacing) * 2); border-bottom: var(--edge-width) solid var(--color-edge); padding: 0 calc(var(--spacing) * 4); color: var(--color-icon); } .navigation-palette-input { min-width: 0; flex: 1; align-self: stretch; background: transparent; color: var(--color-text-primary); font-size: var(--text-sm); } .navigation-palette-input::placeholder { color: var(--color-text-quaternary); } .navigation-palette-list { display: flex; /* Reserve the loading and empty height so results do not resize the palette. */ min-height: calc(var(--spacing) * 21); max-height: min(50vh, 20rem); flex-direction: column; overflow-y: auto; padding: calc(var(--spacing) * 1.5); scroll-padding-block: calc(var(--spacing) * 1.5); } .navigation-palette-options { display: flex; flex-direction: column; } .navigation-palette-option { display: flex; min-height: calc(var(--spacing) * 8.5); width: 100%; flex-shrink: 0; align-items: center; gap: calc(var(--spacing) * 2); border-radius: var(--radius-md); padding: 0 calc(var(--spacing) * 2.5); cursor: pointer; text-align: left; font-size: var(--text-sm); } .navigation-palette-option[aria-disabled="true"] { cursor: default; } /* One active row: keyboard, pointer, and the pre-highlighted first match share it. */ .navigation-palette-option[aria-selected="true"] { background: var(--color-selected); } .navigation-palette-hint { visibility: hidden; flex-shrink: 0; color: var(--color-text-tertiary); font-size: var(--text-xs); } .navigation-palette-option[aria-selected="true"] .navigation-palette-hint, .navigation-palette-hint[data-busy] { visibility: visible; } /* Touch has no hover to disclose the action, so every addable row shows it. */ @media (pointer: coarse) { .navigation-palette-option { min-height: calc(var(--spacing) * 11); } .navigation-palette-hint { visibility: visible; } } .navigation-palette-status { display: flex; min-height: calc(var(--spacing) * 18); align-items: center; justify-content: center; gap: calc(var(--spacing) * 2); color: var(--color-text-tertiary); font-size: var(--text-sm); text-align: center; } @media (prefers-reduced-motion: no-preference) { .navigation-palette-status [data-palette-loader] { animation: button-loader-spin var(--duration-linger) linear infinite; } } .navigation-palette-footer { display: flex; flex-shrink: 0; border-top: var(--edge-width) solid var(--color-edge); padding: calc(var(--spacing) * 2.5) calc(var(--spacing) * 4); } .navigation-palette-footer a { color: var(--color-text-tertiary); font-size: var(--text-xs); } .navigation-palette-footer a:hover { color: var(--color-text-secondary); text-decoration: underline; } .navigation-account-menu { position: absolute; bottom: calc(100% - 4px); right: 8px; left: 8px; z-index: 60; border-radius: var(--radius-md); background: var(--color-page); padding: 4px; box-shadow: var(--shadow-raised); transform-origin: bottom left; } .navigation-account-menu :is(button, a) { display: flex; align-items: center; gap: 8px; border-radius: var(--radius-sm); padding: 7px 10px; min-height: 34px; font-size: var(--text-sm); text-align: left; color: var(--color-text-secondary); } .navigation-account-menu :is(button, a):hover, .navigation-account-menu :is(button, a):focus-visible { background: var(--color-hover); color: var(--color-text-primary); } .navigation-account-menu [role="separator"] { margin: 4px 0; height: var(--edge-width); background: var(--color-edge); } @media (prefers-reduced-motion: no-preference) { .project-sidebar-project-row[data-flash] { animation: project-row-flash calc(var(--duration-linger) * 1.5) var(--motion-smooth-out); } } @keyframes project-row-flash { 0%, 28% { background: var(--color-selected); } 100% { background: transparent; } } .document-actions-menu { position: fixed; z-index: 60; display: flex; flex-direction: column; border-radius: var(--radius-md); background: var(--color-page); padding: 4px; box-shadow: var(--shadow-raised); } .document-actions-menu button { display: flex; align-items: center; gap: 8px; min-height: 34px; border-radius: var(--radius-sm); padding: 7px 10px; font-size: var(--text-sm); text-align: left; color: var(--color-text-secondary); } .document-actions-menu button:hover, .document-actions-menu button:focus-visible { background: var(--color-hover); color: var(--color-text-primary); } .document-actions-menu .document-actions-menu-destructive { color: var(--color-destructive-ink); } .document-actions-menu .document-actions-menu-destructive:hover, .document-actions-menu .document-actions-menu-destructive:focus-visible { color: var(--color-destructive-ink); } .document-status-badge { display: inline-flex; min-width: 0; flex: 0 0 auto; align-items: center; border-radius: var(--radius-full); background: var(--color-warning-wash); padding: 1px 6px; font-size: var(--text-xs); font-weight: 600; line-height: 1rem; color: var(--color-warning-ink); } .document-archived-status { display: inline-flex; flex: 0 0 auto; align-items: center; gap: calc(var(--spacing) * 2); margin-left: calc(var(--spacing) * 1.5); } /* Inset is lighter than the header's ground, so the label sits on selected. */ .document-archived-status .cv-badge { --cv-semantic-surface: var(--color-selected); } :root[data-plan-coarse-pointer] .project-sidebar :where(.project-sidebar-action, .project-sidebar-document-action) { min-width: 44px; min-height: 44px; } :root[data-plan-coarse-pointer] .project-sidebar :where(.project-sidebar-action, .project-sidebar-document-action) { opacity: 1; } :root[data-plan-coarse-pointer] .project-sidebar :where(.project-sidebar-primary-action, .project-sidebar-project-row, .project-sidebar-document, .project-sidebar-account) { min-height: 44px; } :root[data-plan-coarse-pointer] :where(.document-actions-menu, .navigation-account-menu) :is(button, a) { min-height: 44px; } .document-title-trigger, .document-title-label { display: flex; min-width: 0; align-items: center; gap: 2px; border-radius: var(--radius-sm); padding: 4px; font-size: var(--text-sm); color: var(--color-text-tertiary); } .document-title-trigger { cursor: text; } /* The header sits on ground, where the lighter hover wash would vanish. */ .document-title-trigger:hover:not(:disabled), .document-title-trigger:focus-visible, .document-title-menu:hover, .document-title-menu:focus-visible, .document-title-menu[aria-expanded="true"] { background: var(--color-selected); } .room-header:hover .document-title-menu { color: var(--color-text-secondary); } .document-title-menu { display: flex; flex-shrink: 0; align-items: center; border-radius: var(--radius-sm); padding: 4px; color: var(--color-text-tertiary); } .document-title-form { position: relative; display: flex; min-width: 0; } /* Same box, type, and ink as the resting title, so swapping in the field moves nothing. */ .document-title-input { max-width: 100%; field-sizing: content; border-radius: var(--radius-sm); padding: 4px; background: var(--color-selected); font-size: var(--text-sm); color: var(--color-text-tertiary); } .document-title-input::placeholder { color: var(--color-text-quaternary); } .document-title-error { position: absolute; top: calc(100% + var(--spacing)); left: 0; z-index: 10; border-radius: var(--radius-md); padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2.5); background: var(--color-page); box-shadow: var(--shadow-raised); white-space: nowrap; } .document-parent-breadcrumb { min-width: 0; flex: 0 1 auto; justify-content: flex-start; padding-inline: 4px; font-size: var(--text-sm); font-weight: 500; color: var(--color-text-secondary); } .document-breadcrumb-separator { opacity: 0.45; } .document-child-breadcrumb { min-width: 0; flex: 1 1 auto; font-size: var(--text-sm); font-weight: 400; color: var(--color-text-primary); } /* A research child's provenance reads like the research card's own status line. */ .child-provenance-line { display: flex; align-items: center; gap: calc(var(--spacing) * 2); margin: 0; font-size: var(--text-sm); color: var(--color-text-tertiary); } .child-provenance-parent { font-weight: 500; color: var(--color-text-secondary); text-decoration: underline; text-decoration-color: var(--color-text-quaternary); text-decoration-thickness: var(--edge-width); text-underline-offset: calc(var(--spacing) * 0.75); cursor: pointer; } .child-provenance-segment { white-space: nowrap; } .child-provenance-parent:hover { color: var(--color-text-primary); } .child-provenance-toggle { flex-shrink: 0; gap: var(--spacing); margin-inline-start: auto; color: var(--color-text-tertiary); } .child-provenance-brief { margin: calc(var(--spacing) * 2) 0 0; padding-inline-start: calc(var(--spacing) * 8); font-size: var(--text-sm); line-height: var(--text-sm--line-height); color: var(--color-text-secondary); } @media (prefers-reduced-motion: reduce) { .motion-sidebar, .motion-drawer, .motion-drawer .navigation-focus-scope, .motion-modal, .motion-modal .navigation-modal-content { transition: none; } } .project-sidebar-document { position: relative; } .project-sidebar-document-new::before { position: absolute; inset: 0; border-radius: inherit; background: var(--project-sidebar-selected); content: ""; opacity: 0; pointer-events: none; animation: sidebar-row-new var(--duration-linger) var(--motion-move) var(--acc-expand) both; } @keyframes sidebar-row-new { from { opacity: 1; } to { opacity: 0; } } /* Loading states stay silent for fast loads, then arrive without a pop. */ .hosted-loading, .project-sidebar-chrome-fade, .project-sidebar-skeleton { animation: hosted-fade-in var(--duration-base) var(--ease-out) both; } .hosted-loading { animation-delay: var(--duration-linger); } .project-sidebar-skeleton { display: flex; flex-direction: column; gap: calc(var(--spacing) * 4); padding: calc(var(--spacing) * 3) calc(var(--spacing) * 2); animation-delay: var(--duration-base); & > span { display: block; height: calc(var(--spacing) * 2); border-radius: var(--radius-full); background-color: var(--color-selected); } } @keyframes hosted-fade-in { from { opacity: 0; } } @media (prefers-reduced-motion: reduce) { .project-sidebar-document-new::before { animation: none; } .hosted-loading, .project-sidebar-chrome-fade, .project-sidebar-skeleton { animation: none; } }