Spaces:
Runtime error
Runtime error
Download frontend/src/styles/pages.css from firebird-technologies/NoteStack-Test: direct link, hf CLI and curl.
- Browser
- Download file 73.2 kB
-
https://huggingface.co/spaces/firebird-technologies/NoteStack-Test/resolve/52ec279e6108c8a40d96dbfbb4d5573a02472df3/frontend/src/styles/pages.css
- Command line
-
hf download hf://spaces/firebird-technologies/NoteStack-Test@52ec279e6108c8a40d96dbfbb4d5573a02472df3/frontend/src/styles/pages.css
-
curl -L -o pages.css https://huggingface.co/spaces/firebird-technologies/NoteStack-Test/resolve/52ec279e6108c8a40d96dbfbb4d5573a02472df3/frontend/src/styles/pages.css
73.2 kB
| /* App pages: shared layout primitives, modals, pickers, artifacts, calendar, topic map. | |
| Strict palette: black, #217cff, white. Error and danger states use white contrast, never red. */ | |
| /* Layout primitives */ | |
| .page-wrap { | |
| display: grid; | |
| gap: 20px; | |
| max-width: 1280px; | |
| } | |
| .page-head { | |
| display: flex; | |
| flex-wrap: wrap; | |
| justify-content: space-between; | |
| align-items: flex-end; | |
| gap: 16px; | |
| } | |
| .page-head h1 { | |
| font-size: clamp(1.6rem, 4vw, 2.25rem); | |
| margin-top: 8px; | |
| } | |
| .page-actions, | |
| .row { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .row.between { | |
| justify-content: space-between; | |
| } | |
| .row.end { | |
| justify-content: flex-end; | |
| } | |
| .row.wrap { | |
| row-gap: 12px; | |
| } | |
| .stack { | |
| display: grid; | |
| gap: 14px; | |
| align-content: start; | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .two-col, | |
| .grid-cards, | |
| .gallery { | |
| display: grid; | |
| gap: 16px; | |
| align-items: start; | |
| } | |
| @media (min-width: 960px) { | |
| .two-col { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| } | |
| @media (min-width: 720px) { | |
| .grid-cards { | |
| grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); | |
| } | |
| .gallery { | |
| grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); | |
| } | |
| } | |
| .lede { | |
| max-width: 70ch; | |
| } | |
| .small, | |
| .small-link { | |
| font-size: 0.8125rem; | |
| } | |
| .small-link { | |
| text-decoration: none; | |
| } | |
| .small-link:hover { | |
| color: var(--white); | |
| } | |
| .notice { | |
| padding: 10px 14px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: var(--radius-sm); | |
| background: var(--blue-10); | |
| } | |
| .clamp-3 { | |
| display: -webkit-box; | |
| -webkit-line-clamp: 3; | |
| -webkit-box-orient: vertical; | |
| overflow: hidden; | |
| } | |
| h2 { | |
| font-size: 1.2rem; | |
| } | |
| h3 { | |
| font-size: 1.05rem; | |
| } | |
| /* Form bits */ | |
| .field { | |
| display: grid; | |
| gap: 6px; | |
| min-width: 0; | |
| flex: 1; | |
| } | |
| .field > span:first-child { | |
| font-size: 0.8125rem; | |
| color: var(--text-2); | |
| } | |
| .field-row { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 8px; | |
| } | |
| .input-sm { | |
| height: 38px; | |
| border-radius: var(--radius-sm); | |
| font-size: 0.9rem; | |
| padding: 0 12px; | |
| } | |
| select.input { | |
| appearance: none; | |
| background-image: linear-gradient(45deg, transparent 50%, var(--text-2) 50%), | |
| linear-gradient(135deg, var(--text-2) 50%, transparent 50%); | |
| background-position: calc(100% - 16px) 50%, calc(100% - 11px) 50%; | |
| background-size: 5px 5px; | |
| background-repeat: no-repeat; | |
| padding-right: 30px; | |
| } | |
| select.input option { | |
| background: var(--black); | |
| } | |
| .textarea { | |
| width: 100%; | |
| padding: 10px 12px; | |
| border-radius: var(--radius-sm); | |
| border: 1px solid var(--line-strong); | |
| background: rgba(0, 0, 0, 0.6); | |
| color: var(--text); | |
| font: 400 0.9375rem/1.5 var(--font-body); | |
| resize: vertical; | |
| } | |
| .textarea:focus { | |
| outline: none; | |
| border-color: var(--blue); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .textarea:disabled { | |
| opacity: 0.7; | |
| } | |
| .file-input { | |
| height: auto; | |
| padding: 8px 12px; | |
| border-radius: var(--radius-sm); | |
| } | |
| .search { | |
| max-width: 280px; | |
| } | |
| .check { | |
| display: flex; | |
| gap: 10px; | |
| align-items: flex-start; | |
| font-size: 0.9rem; | |
| color: var(--text-2); | |
| cursor: pointer; | |
| } | |
| .check input { | |
| accent-color: var(--blue); | |
| margin-top: 3px; | |
| } | |
| .over { | |
| color: var(--white); | |
| font-weight: 700; | |
| text-decoration: underline wavy var(--blue); | |
| } | |
| .color { | |
| width: 44px; | |
| height: 38px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| padding: 2px; | |
| } | |
| /* Buttons */ | |
| .btn-small { | |
| height: 34px; | |
| padding: 0 14px; | |
| font-size: 0.8125rem; | |
| } | |
| .btn-danger { | |
| border-color: var(--line-strong); | |
| color: var(--text-2); | |
| } | |
| .btn-danger:hover, | |
| .btn-danger.armed { | |
| color: var(--black); | |
| background: var(--white); | |
| border-color: var(--white); | |
| box-shadow: none; | |
| } | |
| .icon-btn { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 32px; | |
| height: 32px; | |
| border-radius: 999px; | |
| border: 1px solid transparent; | |
| background: transparent; | |
| color: var(--text-2); | |
| cursor: pointer; | |
| } | |
| .icon-btn:hover { | |
| color: var(--white); | |
| border-color: var(--line-strong); | |
| } | |
| .link-btn.active { | |
| color: var(--blue); | |
| } | |
| /* Status pills */ | |
| .pill { | |
| display: inline-flex; | |
| align-items: center; | |
| padding: 2px 10px; | |
| border-radius: 999px; | |
| font-size: 0.7rem; | |
| letter-spacing: 0.04em; | |
| text-transform: uppercase; | |
| white-space: nowrap; | |
| } | |
| .pill-ok { | |
| border: 1px solid var(--blue-60); | |
| background: var(--blue-10); | |
| color: var(--white); | |
| } | |
| .pill-busy { | |
| border: 1px dashed var(--line-strong); | |
| color: var(--text-2); | |
| animation: pill-pulse 1.6s ease-in-out infinite; | |
| } | |
| .pill-bad { | |
| border: 1px solid var(--white); | |
| background: var(--white); | |
| color: var(--black); | |
| } | |
| @keyframes pill-pulse { | |
| 50% { | |
| opacity: 0.5; | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .pill-busy { | |
| animation: none; | |
| } | |
| } | |
| .ascent-failed .ascent-fill { | |
| background: repeating-linear-gradient(45deg, var(--white) 0 6px, transparent 6px 12px); | |
| box-shadow: none; | |
| } | |
| .ascent-failed .ascent-fill::after { | |
| display: none; | |
| } | |
| .ascent-failed .ascent-meta { | |
| color: var(--white); | |
| } | |
| .ascent-compact .ascent-track { | |
| height: 4px; | |
| } | |
| .loading { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 24px 0; | |
| } | |
| .empty-state h3 { | |
| color: var(--white); | |
| } | |
| .empty-state.small p { | |
| max-width: 52ch; | |
| } | |
| /* Tabs */ | |
| .tabs { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 4px; | |
| padding: 4px; | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| width: fit-content; | |
| max-width: 100%; | |
| } | |
| .tab { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 6px 14px; | |
| border: none; | |
| border-radius: 999px; | |
| background: transparent; | |
| color: var(--text-2); | |
| font: 500 0.8125rem var(--font-body); | |
| cursor: pointer; | |
| } | |
| .tab:hover { | |
| color: var(--white); | |
| } | |
| .tab.active { | |
| background: var(--blue); | |
| color: var(--white); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .tab-count { | |
| font-size: 0.7rem; | |
| opacity: 0.7; | |
| } | |
| /* Modal and drawer */ | |
| .modal-backdrop, | |
| .drawer-backdrop { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 50; | |
| background: rgba(0, 0, 0, 0.72); | |
| backdrop-filter: blur(4px); | |
| } | |
| .modal-backdrop { | |
| display: grid; | |
| place-items: center; | |
| padding: 16px; | |
| overflow: auto; | |
| } | |
| .modal { | |
| width: min(520px, 100%); | |
| max-height: calc(100vh - 32px); | |
| overflow: auto; | |
| background: var(--black); | |
| border-color: var(--line-strong); | |
| box-shadow: var(--glow-lg); | |
| display: grid; | |
| gap: 16px; | |
| } | |
| .modal:focus { | |
| outline: none; | |
| } | |
| .modal-wide { | |
| width: min(760px, 100%); | |
| } | |
| .modal-head { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .drawer { | |
| position: absolute; | |
| top: 0; | |
| right: 0; | |
| bottom: 0; | |
| width: min(720px, 100%); | |
| background: var(--black); | |
| border-left: 1px solid var(--line-strong); | |
| box-shadow: var(--glow-lg); | |
| overflow: auto; | |
| padding: 28px 24px 48px; | |
| } | |
| .drawer-close { | |
| position: sticky; | |
| top: 0; | |
| float: right; | |
| background: var(--black); | |
| } | |
| /* Reader */ | |
| .reader { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .reader-lines { | |
| margin-top: 12px; | |
| font-size: 0.975rem; | |
| line-height: 1.65; | |
| } | |
| .reader-line { | |
| display: grid; | |
| grid-template-columns: 40px 1fr; | |
| gap: 8px; | |
| padding: 2px 6px; | |
| border-radius: 6px; | |
| } | |
| .reader-line.hit { | |
| background: var(--blue-20); | |
| box-shadow: inset 3px 0 0 var(--blue); | |
| } | |
| .reader-n { | |
| color: var(--text-3); | |
| font-size: 0.7rem; | |
| text-align: right; | |
| padding-top: 4px; | |
| user-select: none; | |
| } | |
| .reader-gap { | |
| height: 10px; | |
| } | |
| .reader-h { | |
| font-family: var(--font-display); | |
| font-weight: 600; | |
| } | |
| .reader-h.h1 { | |
| font-size: 1.6rem; | |
| } | |
| .reader-h.h2 { | |
| font-size: 1.2rem; | |
| margin-top: 8px; | |
| } | |
| /* Picker */ | |
| .picker { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .picker-bar { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .picker-actions { | |
| display: flex; | |
| gap: 12px; | |
| font-size: 0.75rem; | |
| } | |
| .picker-list { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| max-height: 320px; | |
| overflow: auto; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .picker-row { | |
| display: grid; | |
| grid-template-columns: auto 1fr; | |
| gap: 2px 10px; | |
| padding: 8px 12px; | |
| border-bottom: 1px solid var(--line); | |
| cursor: pointer; | |
| } | |
| .picker-row:hover, | |
| .picker-row.on { | |
| background: var(--blue-10); | |
| } | |
| .picker-row input { | |
| accent-color: var(--blue); | |
| grid-row: span 2; | |
| margin-top: 4px; | |
| } | |
| .picker-title { | |
| font-size: 0.9rem; | |
| } | |
| .picker-meta { | |
| font-size: 0.7rem; | |
| } | |
| /* Lists of posts */ | |
| .doc-list { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| } | |
| .doc-row { | |
| display: grid; | |
| gap: 2px; | |
| padding: 10px 0; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .doc-row .mono { | |
| font-size: 0.75rem; | |
| } | |
| .doc-title { | |
| text-align: left; | |
| font-size: 0.95rem; | |
| } | |
| .posts-table { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .add-source { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .source-card, | |
| .nb-card { | |
| display: grid; | |
| gap: 10px; | |
| align-content: start; | |
| } | |
| .source-card .mono, | |
| .nb-card .mono { | |
| font-size: 0.75rem; | |
| } | |
| .nb-card-link { | |
| display: grid; | |
| gap: 6px; | |
| text-decoration: none; | |
| } | |
| .nb-card-link:hover h3 { | |
| color: var(--blue); | |
| } | |
| /* Chips, citations, transcript */ | |
| .chips { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .chip { | |
| padding: 2px 10px; | |
| border-radius: 999px; | |
| border: 1px solid var(--blue-35); | |
| font-size: 0.75rem; | |
| } | |
| .cite-marker { | |
| display: inline-grid; | |
| place-items: center; | |
| min-width: 18px; | |
| height: 18px; | |
| margin: 0 2px; | |
| padding: 0 4px; | |
| border-radius: 6px; | |
| border: 1px solid var(--blue-60); | |
| background: var(--blue-10); | |
| color: var(--white); | |
| font-size: 0.65rem; | |
| vertical-align: super; | |
| cursor: pointer; | |
| } | |
| .cite-marker:hover { | |
| background: var(--blue); | |
| } | |
| .cite-title { | |
| text-align: left; | |
| } | |
| .citation-disclosure { | |
| border-top: 1px solid var(--line); | |
| padding-top: 8px; | |
| } | |
| .citation-disclosure > summary { | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| width: fit-content; | |
| padding: 4px 2px; | |
| color: var(--text-2); | |
| font-size: 0.8125rem; | |
| font-weight: 500; | |
| list-style: none; | |
| cursor: pointer; | |
| user-select: none; | |
| } | |
| .citation-disclosure > summary::-webkit-details-marker { | |
| display: none; | |
| } | |
| .citation-disclosure > summary:hover { | |
| color: var(--white); | |
| } | |
| .citation-count { | |
| display: inline-grid; | |
| place-items: center; | |
| min-width: 20px; | |
| height: 20px; | |
| padding: 0 5px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: 999px; | |
| background: var(--blue-10); | |
| color: var(--text); | |
| font-size: 0.65rem; | |
| } | |
| .citation-chevron { | |
| transition: transform 0.18s ease; | |
| } | |
| .citation-disclosure[open] .citation-chevron { | |
| transform: rotate(180deg); | |
| } | |
| .citation-disclosure > .cites { | |
| margin-top: 8px; | |
| } | |
| .transcript { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 8px; | |
| max-height: 320px; | |
| overflow: auto; | |
| font-size: 0.875rem; | |
| } | |
| .transcript li { | |
| display: grid; | |
| grid-template-columns: auto auto 1fr; | |
| gap: 8px; | |
| align-items: start; | |
| } | |
| .transcript-src { | |
| grid-column: 3; | |
| font-size: 0.7rem; | |
| } | |
| .transcript-time { | |
| font-size: 0.7rem; | |
| } | |
| .speaker { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 20px; | |
| height: 20px; | |
| border-radius: 50%; | |
| font: 600 0.65rem var(--font-mono); | |
| } | |
| .speaker-host_a { | |
| background: var(--blue); | |
| } | |
| .speaker-host_b { | |
| background: var(--white); | |
| color: var(--black); | |
| } | |
| /* Artifacts */ | |
| .artifact { | |
| display: grid; | |
| gap: 12px; | |
| align-content: start; | |
| padding: 18px; | |
| } | |
| .artifact-head { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: flex-start; | |
| gap: 12px; | |
| } | |
| .artifact-head h3 { | |
| margin-top: 4px; | |
| overflow-wrap: anywhere; | |
| } | |
| .artifact-head .mono { | |
| font-size: 0.7rem; | |
| } | |
| .artifact-body { | |
| display: grid; | |
| gap: 10px; | |
| font-size: 0.9rem; | |
| line-height: 1.6; | |
| } | |
| .artifact-actions { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .player { | |
| width: 100%; | |
| border-radius: var(--radius-sm); | |
| background: var(--black); | |
| } | |
| .video-short { | |
| max-height: 520px; | |
| aspect-ratio: 9 / 16; | |
| width: auto; | |
| justify-self: center; | |
| } | |
| .still { | |
| width: 100%; | |
| border-radius: var(--radius-sm); | |
| border: 1px solid var(--line); | |
| } | |
| .slides { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| /* Notebook view */ | |
| @media (min-width: 1100px) { | |
| .nbv { | |
| grid-template-columns: 260px minmax(0, 1fr) 360px; | |
| } | |
| } | |
| .nbv-doc { | |
| display: grid; | |
| grid-template-columns: 1fr auto; | |
| gap: 0 6px; | |
| font-size: 0.875rem; | |
| } | |
| .nbv-doc .link-btn { | |
| text-align: left; | |
| color: var(--text-2); | |
| } | |
| .nbv-doc .link-btn:hover { | |
| color: var(--white); | |
| } | |
| .nbv-doc .mono { | |
| font-size: 0.7rem; | |
| grid-column: 1; | |
| } | |
| .nbv-remove { | |
| grid-row: 1 / span 2; | |
| grid-column: 2; | |
| width: 26px; | |
| height: 26px; | |
| opacity: 0; | |
| } | |
| .nbv-doc:hover .nbv-remove, | |
| .nbv-remove:focus { | |
| opacity: 1; | |
| } | |
| .chat-bar { | |
| display: flex; | |
| gap: 8px; | |
| align-items: center; | |
| } | |
| .chat-bar select { | |
| max-width: 360px; | |
| } | |
| .turn-text { | |
| line-height: 1.65; | |
| white-space: pre-wrap; | |
| } | |
| .studio-buttons, | |
| .studio-group { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .studio-buttons { | |
| grid-template-columns: 1fr 1fr; | |
| } | |
| .studio-group { | |
| padding-top: 10px; | |
| border-top: 1px solid var(--line); | |
| } | |
| .studio-list { | |
| display: grid; | |
| gap: 12px; | |
| padding-top: 10px; | |
| border-top: 1px solid var(--line); | |
| } | |
| .nbv-studio .artifact { | |
| padding: 14px; | |
| } | |
| /* Topic map */ | |
| .map-layout { | |
| display: grid; | |
| gap: 16px; | |
| } | |
| @media (min-width: 1100px) { | |
| .map-layout { | |
| grid-template-columns: minmax(0, 1fr) 320px; | |
| } | |
| } | |
| .map-canvas { | |
| padding: 8px; | |
| background: radial-gradient(60% 50% at 50% 50%, var(--blue-05), transparent 70%), var(--surface); | |
| } | |
| .map-canvas svg { | |
| width: 100%; | |
| height: auto; | |
| display: block; | |
| } | |
| .map-node { | |
| cursor: grab; | |
| touch-action: none; | |
| transition: opacity 0.2s; | |
| } | |
| .map-node:focus { | |
| outline: none; | |
| } | |
| .map-node:focus circle:last-of-type { | |
| stroke: var(--blue); | |
| stroke-width: 2; | |
| } | |
| .map-label { | |
| fill: var(--white); | |
| font: 500 12px var(--font-body); | |
| paint-order: stroke; | |
| stroke: var(--black); | |
| stroke-width: 4px; | |
| pointer-events: none; | |
| } | |
| .map-side { | |
| display: grid; | |
| gap: 12px; | |
| align-content: start; | |
| max-height: 720px; | |
| overflow: auto; | |
| } | |
| .topic-rank { | |
| display: grid; | |
| gap: 6px; | |
| padding-left: 20px; | |
| margin: 0; | |
| } | |
| /* Voice */ | |
| .consent { | |
| margin: 0; | |
| padding: 12px 16px; | |
| border-left: 3px solid var(--blue); | |
| background: var(--blue-05); | |
| font-size: 0.9rem; | |
| } | |
| /* Launch Kit */ | |
| .kit-layout { | |
| display: grid; | |
| gap: 16px; | |
| align-items: start; | |
| } | |
| @media (min-width: 1100px) { | |
| .kit-layout { | |
| grid-template-columns: 340px minmax(0, 1fr); | |
| } | |
| } | |
| .kit-list { | |
| list-style: none; | |
| margin: 12px 0 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 8px; | |
| font-size: 0.875rem; | |
| } | |
| .kit-list .link-btn { | |
| text-align: left; | |
| } | |
| .post-edit, | |
| .slide-edit { | |
| display: grid; | |
| gap: 6px; | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .hooks, | |
| .claims { | |
| display: grid; | |
| gap: 14px; | |
| padding-left: 20px; | |
| margin: 0; | |
| } | |
| .hooks li, | |
| .claims li { | |
| display: grid; | |
| gap: 4px; | |
| justify-items: start; | |
| } | |
| .pull { | |
| margin: 0; | |
| padding: 14px 18px; | |
| border-left: 3px solid var(--blue); | |
| font-family: var(--font-display); | |
| font-size: 1.15rem; | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .pull footer { | |
| font-size: 0.75rem; | |
| display: flex; | |
| gap: 8px; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| } | |
| .seo { | |
| display: grid; | |
| gap: 6px 16px; | |
| margin: 0; | |
| } | |
| .seo dt { | |
| font-size: 0.75rem; | |
| color: var(--blue); | |
| font-family: var(--font-mono); | |
| text-transform: uppercase; | |
| letter-spacing: 0.1em; | |
| margin-top: 8px; | |
| } | |
| .seo dd { | |
| margin: 0; | |
| } | |
| .seo ul { | |
| margin: 0; | |
| padding-left: 18px; | |
| display: grid; | |
| gap: 4px; | |
| } | |
| /* Launchpad */ | |
| .accounts { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .account-list { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| } | |
| .account { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 6px 6px 6px 12px; | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| } | |
| .account img { | |
| border-radius: 50%; | |
| } | |
| .cal-head { | |
| margin-bottom: 12px; | |
| } | |
| .cal-grid { | |
| display: grid; | |
| grid-template-columns: repeat(7, minmax(0, 1fr)); | |
| gap: 4px; | |
| } | |
| .cal-weekday { | |
| font-size: 0.7rem; | |
| padding: 4px; | |
| } | |
| .cal-day { | |
| min-height: 96px; | |
| padding: 6px; | |
| border: 1px solid var(--line); | |
| border-radius: 8px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 4px; | |
| min-width: 0; | |
| } | |
| .cal-day.out { | |
| opacity: 0.35; | |
| } | |
| .cal-day.today { | |
| border-color: var(--blue); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .cal-date { | |
| font-size: 0.7rem; | |
| color: var(--text-2); | |
| } | |
| .cal-item { | |
| display: block; | |
| width: 100%; | |
| padding: 3px 6px; | |
| border-radius: 6px; | |
| border: 1px solid var(--blue-35); | |
| background: var(--blue-10); | |
| color: var(--white); | |
| font: 500 0.7rem var(--font-body); | |
| text-align: left; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| cursor: pointer; | |
| } | |
| .cal-item:hover { | |
| border-color: var(--blue); | |
| } | |
| .cal-posted, | |
| .cal-reminded { | |
| background: var(--blue); | |
| } | |
| .cal-failed { | |
| background: var(--white); | |
| color: var(--black); | |
| border-color: var(--white); | |
| } | |
| .cal-draft { | |
| border-style: dashed; | |
| background: transparent; | |
| } | |
| @media (max-width: 720px) { | |
| .cal-day { | |
| min-height: 64px; | |
| } | |
| .cal-item .mono { | |
| display: none; | |
| } | |
| } | |
| .agenda { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| } | |
| .agenda-row { | |
| display: grid; | |
| grid-template-columns: 150px 120px minmax(0, 1fr) auto auto; | |
| gap: 12px; | |
| align-items: center; | |
| width: 100%; | |
| padding: 10px 4px; | |
| border: none; | |
| border-bottom: 1px solid var(--line); | |
| background: transparent; | |
| color: var(--text); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .agenda-row:hover { | |
| background: var(--blue-05); | |
| } | |
| .agenda-text { | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| @media (max-width: 720px) { | |
| .agenda-row { | |
| grid-template-columns: 1fr auto; | |
| } | |
| .agenda-text { | |
| grid-column: 1 / -1; | |
| } | |
| } | |
| .metrics { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 16px; | |
| font-size: 0.8125rem; | |
| color: var(--text-2); | |
| } | |
| /* Resurfacing */ | |
| .resurface-row { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .score { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 50%; | |
| border: 1px solid var(--blue-60); | |
| box-shadow: var(--glow-sm); | |
| font-size: 0.8rem; | |
| } | |
| .angle { | |
| font-family: var(--font-display); | |
| font-size: 1.05rem; | |
| } | |
| /* Settings */ | |
| .meter { | |
| display: grid; | |
| gap: 6px; | |
| font-size: 0.9rem; | |
| } | |
| .integrations { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 6px; | |
| font-size: 0.8125rem; | |
| } | |
| .integrations li { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 12px; | |
| } | |
| .integrations .ok { | |
| color: var(--blue); | |
| } | |
| .integrations .off { | |
| color: var(--text-3); | |
| } | |
| .logo-preview { | |
| width: 44px; | |
| height: 44px; | |
| object-fit: contain; | |
| background: var(--white); | |
| border-radius: 8px; | |
| } | |
| /* Mission Control */ | |
| .mc { | |
| display: grid; | |
| gap: 16px; | |
| } | |
| .checklist ol { | |
| list-style: none; | |
| margin: 10px 0 0; | |
| padding: 0; | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px 20px; | |
| } | |
| .checklist li { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| font-size: 0.9rem; | |
| } | |
| .checklist li.done a { | |
| color: var(--text-3); | |
| text-decoration: line-through; | |
| } | |
| .check-dot { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 20px; | |
| height: 20px; | |
| border-radius: 50%; | |
| border: 1px solid var(--blue-60); | |
| } | |
| .checklist li.done .check-dot { | |
| background: var(--blue); | |
| } | |
| .recent-list { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .recent-list li { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 0.875rem; | |
| } | |
| .recent-list a { | |
| text-decoration: none; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| min-width: 0; | |
| } | |
| .recent-list .mono { | |
| font-size: 0.7rem; | |
| white-space: nowrap; | |
| } | |
| .mc-card .add-source { | |
| padding: 0; | |
| border: none; | |
| background: transparent; | |
| } | |
| /* Collapsible sidebar (desktop). Collapsed keeps icons, labels move into tooltips. */ | |
| .sidebar-top { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 8px; | |
| } | |
| .sidebar-toggle { | |
| display: none; | |
| } | |
| @media (min-width: 900px) { | |
| .shell { | |
| transition: grid-template-columns 0.2s ease; | |
| } | |
| .sidebar-toggle { | |
| display: inline-grid; | |
| } | |
| .shell.collapsed { | |
| grid-template-columns: 64px 1fr; | |
| } | |
| .shell.collapsed .sidebar { | |
| padding: 16px 10px; | |
| align-items: center; | |
| } | |
| .shell.collapsed .sidebar-top { | |
| flex-direction: column; | |
| } | |
| /* Collapsed: only the logo, which expands the sidebar again. */ | |
| .shell.collapsed .sidebar-toggle, | |
| .shell.collapsed .sidebar nav, | |
| .shell.collapsed .sidebar-user { | |
| display: none; | |
| } | |
| .sidebar-brand-btn { | |
| padding: 4px; | |
| border: none; | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| cursor: pointer; | |
| transition: box-shadow 0.2s ease; | |
| } | |
| .sidebar-brand-btn:hover, | |
| .sidebar-brand-btn:focus-visible { | |
| outline: none; | |
| box-shadow: 0 0 0 1px var(--blue-60), 0 0 16px var(--blue-35); | |
| } | |
| .shell.collapsed .side-link { | |
| justify-content: center; | |
| padding: 10px; | |
| } | |
| .shell.collapsed .side-label { | |
| position: absolute; | |
| width: 1px; | |
| height: 1px; | |
| overflow: hidden; | |
| clip: rect(0 0 0 0); | |
| white-space: nowrap; | |
| } | |
| .shell.collapsed .sidebar-user { | |
| justify-items: center; | |
| } | |
| .shell.collapsed .sidebar-user .link-btn { | |
| font-size: 0.75rem; | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .shell { | |
| transition: none; | |
| } | |
| } | |
| /* First run onboarding */ | |
| .welcome { | |
| min-height: 100vh; | |
| } | |
| .welcome-wrap { | |
| position: relative; | |
| z-index: 1; | |
| width: min(720px, 100%); | |
| margin: 0 auto; | |
| padding: 32px var(--gutter) 64px; | |
| display: grid; | |
| gap: 24px; | |
| } | |
| .welcome-top { | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .welcome-steps { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| grid-template-columns: repeat(4, 1fr); | |
| gap: 8px; | |
| font-size: 0.75rem; | |
| color: var(--text-3); | |
| } | |
| .welcome-steps li { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .welcome-dot { | |
| height: 3px; | |
| border-radius: 999px; | |
| background: var(--line-strong); | |
| transition: background 0.3s, box-shadow 0.3s; | |
| } | |
| .welcome-steps li.done .welcome-dot { | |
| background: var(--blue-60); | |
| } | |
| .welcome-steps li.current { | |
| color: var(--white); | |
| } | |
| .welcome-steps li.current .welcome-dot { | |
| background: var(--blue); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .welcome-card { | |
| display: grid; | |
| gap: 18px; | |
| padding: clamp(24px, 5vw, 44px); | |
| background: rgba(0, 0, 0, 0.72); | |
| border-color: var(--line-strong); | |
| box-shadow: var(--glow-lg); | |
| animation: welcome-in 0.35s ease both; | |
| } | |
| .welcome-card h1 { | |
| font-size: clamp(1.8rem, 5vw, 2.6rem); | |
| line-height: 1.1; | |
| } | |
| @keyframes welcome-in { | |
| from { | |
| opacity: 0; | |
| transform: translateY(12px); | |
| } | |
| } | |
| .welcome-form { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 10px; | |
| } | |
| .welcome-form .input { | |
| flex: 1 1 260px; | |
| height: 54px; | |
| font-size: 1.05rem; | |
| } | |
| .welcome-form .btn { | |
| height: 54px; | |
| padding: 0 28px; | |
| } | |
| .welcome-drop { | |
| flex: 1 1 100%; | |
| display: grid; | |
| place-items: center; | |
| gap: 4px; | |
| padding: 28px 16px; | |
| border: 1px dashed var(--line-strong); | |
| border-radius: var(--radius-sm); | |
| text-align: center; | |
| cursor: pointer; | |
| transition: border-color 0.2s, background 0.2s; | |
| } | |
| .welcome-drop:hover, | |
| .welcome-drop.over, | |
| .welcome-drop:focus-within { | |
| border-color: var(--blue); | |
| background: var(--blue-05); | |
| } | |
| .welcome-drop input { | |
| position: absolute; | |
| width: 1px; | |
| height: 1px; | |
| opacity: 0; | |
| } | |
| .welcome-files { | |
| flex: 1 1 100%; | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 4px; | |
| } | |
| .welcome-files li { | |
| display: flex; | |
| justify-content: space-between; | |
| gap: 12px; | |
| padding: 6px 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| overflow-wrap: anywhere; | |
| } | |
| .welcome-cap { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| padding: 14px 16px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: var(--radius-sm); | |
| background: var(--blue-05); | |
| } | |
| .welcome-cap p { | |
| margin: 4px 0 0; | |
| } | |
| .welcome-examples { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 6px; | |
| font-size: 0.75rem; | |
| } | |
| .welcome-examples .chip { | |
| background: transparent; | |
| color: var(--text-2); | |
| cursor: pointer; | |
| font: inherit; | |
| } | |
| .welcome-examples .chip:hover { | |
| color: var(--white); | |
| border-color: var(--blue); | |
| } | |
| .goal-grid { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| @media (min-width: 640px) { | |
| .goal-grid { | |
| grid-template-columns: repeat(3, 1fr); | |
| } | |
| } | |
| .goal { | |
| display: grid; | |
| gap: 8px; | |
| align-content: start; | |
| padding: 18px; | |
| border-radius: var(--radius); | |
| border: 1px solid var(--line-strong); | |
| background: var(--surface); | |
| color: var(--text); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| transition: border-color 0.2s, box-shadow 0.2s, background 0.2s; | |
| } | |
| .goal:hover { | |
| border-color: var(--blue-60); | |
| } | |
| .goal.on { | |
| border-color: var(--blue); | |
| background: var(--blue-10); | |
| box-shadow: var(--glow-md); | |
| } | |
| .goal .muted { | |
| font-size: 0.85rem; | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .welcome-card { | |
| animation: none; | |
| } | |
| } | |
| /* Markdown in answers and summaries */ | |
| .md { | |
| display: grid; | |
| gap: 0.85em; | |
| line-height: 1.7; | |
| font-size: 0.975rem; | |
| color: var(--text); | |
| overflow-wrap: anywhere; | |
| } | |
| .md > * { | |
| margin: 0; | |
| } | |
| .md h3, | |
| .md h4, | |
| .md h5 { | |
| font-family: var(--font-display); | |
| line-height: 1.3; | |
| margin-top: 0.4em; | |
| } | |
| .md h3 { | |
| font-size: 1.15rem; | |
| } | |
| .md h4 { | |
| font-size: 1.02rem; | |
| } | |
| .md h5 { | |
| font-size: 0.95rem; | |
| color: var(--text-2); | |
| } | |
| .md ul, | |
| .md ol { | |
| padding-left: 1.4em; | |
| display: grid; | |
| gap: 0.4em; | |
| } | |
| .md li > ul, | |
| .md li > ol { | |
| margin-top: 0.4em; | |
| } | |
| .md ul li::marker { | |
| color: var(--blue); | |
| } | |
| .md ol li::marker { | |
| color: var(--blue); | |
| font-family: var(--font-mono); | |
| font-size: 0.85em; | |
| } | |
| .md strong { | |
| color: var(--white); | |
| font-weight: 650; | |
| } | |
| .md em { | |
| color: var(--text-2); | |
| } | |
| .md a { | |
| color: var(--white); | |
| text-decoration-color: var(--blue-60); | |
| text-underline-offset: 3px; | |
| } | |
| .md code { | |
| font-family: var(--font-mono); | |
| font-size: 0.85em; | |
| padding: 1px 6px; | |
| border-radius: 6px; | |
| background: var(--surface-2); | |
| border: 1px solid var(--line); | |
| } | |
| .md pre { | |
| padding: 14px 16px; | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.04); | |
| border: 1px solid var(--line); | |
| overflow-x: auto; | |
| } | |
| .md pre code { | |
| padding: 0; | |
| border: none; | |
| background: none; | |
| font-size: 0.8125rem; | |
| line-height: 1.6; | |
| } | |
| /* Code blocks: language bar, copy, highlighting, collapse */ | |
| .md-code { | |
| position: relative; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: rgba(255, 255, 255, 0.03); | |
| overflow: hidden; | |
| max-width: 100%; | |
| } | |
| .md-code-bar { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 8px; | |
| padding: 6px 8px 6px 14px; | |
| border-bottom: 1px solid var(--line); | |
| background: rgba(33, 124, 255, 0.06); | |
| font-size: 0.7rem; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--text-3); | |
| } | |
| .md-code-copy, | |
| .md-code-more { | |
| border: 1px solid var(--line); | |
| border-radius: 999px; | |
| background: transparent; | |
| color: var(--text-2); | |
| font-size: 0.7rem; | |
| letter-spacing: 0.06em; | |
| padding: 3px 10px; | |
| cursor: pointer; | |
| } | |
| .md-code-copy:hover, | |
| .md-code-more:hover { | |
| color: var(--white); | |
| border-color: var(--blue-60); | |
| } | |
| .md-code pre { | |
| margin: 0; | |
| border: none; | |
| border-radius: 0; | |
| background: transparent; | |
| max-height: 520px; | |
| overflow: auto; | |
| } | |
| .md-code.collapsed pre { | |
| mask-image: linear-gradient(180deg, #000 70%, transparent); | |
| } | |
| .md-code-more { | |
| display: block; | |
| margin: 0 auto 10px; | |
| } | |
| .md pre code { | |
| color: rgba(255, 255, 255, 0.82); | |
| white-space: pre; | |
| tab-size: 2; | |
| } | |
| .tok-kw { | |
| color: var(--blue); | |
| font-weight: 600; | |
| } | |
| .tok-str { | |
| color: var(--white); | |
| } | |
| .tok-com { | |
| color: var(--text-3); | |
| font-style: italic; | |
| } | |
| .tok-num, | |
| .tok-prop { | |
| color: color-mix(in srgb, var(--blue) 55%, var(--white)); | |
| } | |
| .tok-fn { | |
| color: var(--white); | |
| font-weight: 600; | |
| } | |
| .tok-type { | |
| color: var(--white); | |
| text-decoration: underline; | |
| text-decoration-color: var(--blue-35); | |
| text-underline-offset: 3px; | |
| } | |
| /* Images */ | |
| .md-figure { | |
| margin: 0; | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .md-figure figcaption { | |
| font-size: 0.8rem; | |
| } | |
| .md-img { | |
| display: inline-block; | |
| max-width: 100%; | |
| border-radius: var(--radius-sm); | |
| overflow: hidden; | |
| border: 1px solid var(--line); | |
| line-height: 0; | |
| vertical-align: middle; | |
| } | |
| .md-img img { | |
| display: block; | |
| max-width: 100%; | |
| max-height: 420px; | |
| height: auto; | |
| object-fit: contain; | |
| background: rgba(255, 255, 255, 0.03); | |
| } | |
| .md-img:hover { | |
| border-color: var(--blue-60); | |
| box-shadow: 0 0 18px var(--blue-20); | |
| } | |
| .md-img-broken { | |
| font-size: 0.8rem; | |
| color: var(--text-3); | |
| } | |
| /* Task lists */ | |
| .md li.md-task { | |
| list-style: none; | |
| margin-left: -1.2em; | |
| } | |
| .md li.md-task input { | |
| accent-color: var(--blue); | |
| margin: 0 8px 0 0; | |
| vertical-align: -2px; | |
| } | |
| .md li.md-task.done { | |
| color: var(--text-3); | |
| text-decoration: line-through; | |
| } | |
| .md blockquote { | |
| padding: 4px 0 4px 16px; | |
| border-left: 3px solid var(--blue); | |
| color: var(--text-2); | |
| } | |
| .md hr { | |
| border: none; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, var(--blue-35), transparent); | |
| } | |
| .md-table { | |
| overflow-x: auto; | |
| } | |
| .md table { | |
| width: 100%; | |
| border-collapse: collapse; | |
| font-size: 0.875rem; | |
| } | |
| .md th, | |
| .md td { | |
| padding: 8px 10px; | |
| border-bottom: 1px solid var(--line); | |
| text-align: left; | |
| vertical-align: top; | |
| } | |
| .md th { | |
| font-family: var(--font-mono); | |
| font-size: 0.75rem; | |
| letter-spacing: 0.06em; | |
| text-transform: uppercase; | |
| color: var(--blue); | |
| } | |
| .turn-md { | |
| padding: 0; | |
| } | |
| .turn-assistant + .turn-user { | |
| margin-top: 8px; | |
| } | |
| /* Topic map zoom and pan */ | |
| .map-canvas { | |
| position: relative; | |
| overflow: hidden; | |
| } | |
| .map-svg { | |
| cursor: grab; | |
| touch-action: none; | |
| user-select: none; | |
| aspect-ratio: 900 / 620; | |
| } | |
| .map-svg:active { | |
| cursor: grabbing; | |
| } | |
| .map-svg:focus-visible { | |
| outline: 1px solid var(--blue-60); | |
| outline-offset: -1px; | |
| } | |
| .map-controls { | |
| position: absolute; | |
| top: 12px; | |
| right: 12px; | |
| z-index: 1; | |
| display: grid; | |
| gap: 4px; | |
| padding: 4px; | |
| border: 1px solid var(--line); | |
| border-radius: 12px; | |
| background: rgba(0, 0, 0, 0.7); | |
| } | |
| .map-controls .icon-btn { | |
| font: 600 1rem var(--font-mono); | |
| color: var(--white); | |
| } | |
| .map-controls .icon-btn { | |
| padding: 0; | |
| line-height: 1; | |
| } | |
| /* Trailing letter-spacing from .mono pushes "1:1" off centre in the round button. */ | |
| .map-controls .icon-btn.mono { | |
| font-size: 0.65rem; | |
| letter-spacing: 0; | |
| font-variant-numeric: tabular-nums; | |
| } | |
| .map-hint { | |
| position: absolute; | |
| left: 16px; | |
| bottom: 10px; | |
| z-index: 1; | |
| font-size: 0.7rem; | |
| pointer-events: none; | |
| } | |
| /* Voice page */ | |
| .vp .vp-card { | |
| animation: welcome-in 0.35s ease both; | |
| } | |
| .vp-steps { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| grid-template-columns: repeat(2, 1fr); | |
| gap: 8px; | |
| font-size: 0.75rem; | |
| } | |
| .vp-steps button { | |
| display: grid; | |
| gap: 8px; | |
| width: 100%; | |
| padding: 0; | |
| border: 0; | |
| background: none; | |
| color: var(--text-3); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .vp-steps li.done button { | |
| color: var(--text-2); | |
| } | |
| .vp-steps li.current button { | |
| color: var(--white); | |
| } | |
| .vp-dot { | |
| height: 3px; | |
| border-radius: 999px; | |
| background: var(--line-strong); | |
| transition: background 0.3s, box-shadow 0.3s; | |
| } | |
| .vp-steps li.done .vp-dot { | |
| background: var(--blue-60); | |
| } | |
| .vp-steps li.current .vp-dot { | |
| background: var(--blue); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .voice-grid { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| gap: 12px; | |
| } | |
| @media (max-width: 720px) { | |
| .voice-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| } | |
| .voice-tile { | |
| position: relative; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| transition: border-color 0.2s, box-shadow 0.2s, background 0.2s, transform 0.2s; | |
| } | |
| .voice-tile:hover { | |
| border-color: var(--line-strong); | |
| transform: translateY(-2px); | |
| } | |
| .voice-tile.on { | |
| border-color: var(--blue); | |
| background: var(--blue-05); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .voice-pick { | |
| width: 100%; | |
| display: grid; | |
| justify-items: center; | |
| gap: 4px; | |
| padding: 26px 12px 18px; | |
| border: 0; | |
| background: none; | |
| color: var(--white); | |
| font: inherit; | |
| text-align: center; | |
| cursor: pointer; | |
| } | |
| .voice-pick strong { | |
| margin-top: 10px; | |
| font-size: 1rem; | |
| } | |
| .voice-pick strong, | |
| .voice-pick span.small { | |
| max-width: 100%; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .voice-icon { | |
| display: grid; | |
| place-items: center; | |
| width: 76px; | |
| height: 76px; | |
| border-radius: 999px; | |
| border: 1px solid var(--blue-35); | |
| color: var(--blue); | |
| background: var(--blue-05); | |
| transition: background 0.2s, color 0.2s; | |
| } | |
| .voice-tile.on .voice-icon { | |
| background: var(--blue); | |
| border-color: var(--blue); | |
| color: var(--white); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .voice-badge { | |
| position: absolute; | |
| top: 10px; | |
| left: 10px; | |
| padding: 1px 7px; | |
| border-radius: 999px; | |
| background: var(--blue); | |
| color: var(--white); | |
| font-size: 0.625rem; | |
| letter-spacing: 0.04em; | |
| pointer-events: none; | |
| } | |
| .voice-badge.dim { | |
| background: var(--line-strong); | |
| color: var(--text-2); | |
| } | |
| .voice-play { | |
| position: absolute; | |
| top: 8px; | |
| right: 8px; | |
| padding: 0; | |
| border-color: var(--line-strong); | |
| } | |
| .voice-new { | |
| border-style: dashed; | |
| border-color: var(--line-strong); | |
| } | |
| .voice-new:hover { | |
| border-color: var(--blue-60); | |
| } | |
| .voice-icon.plus { | |
| border-style: dashed; | |
| background: transparent; | |
| } | |
| .voice-new:hover .voice-icon.plus { | |
| color: var(--white); | |
| border-color: var(--blue); | |
| } | |
| .gen-options { | |
| display: grid; | |
| gap: 12px; | |
| } | |
| .gen-row { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .gen-chips { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .gen-chips .chip { | |
| padding: 5px 12px; | |
| background: transparent; | |
| color: var(--text-2); | |
| font: inherit; | |
| font-size: 0.8125rem; | |
| cursor: pointer; | |
| text-transform: capitalize; | |
| } | |
| .gen-chips .chip:hover { | |
| color: var(--white); | |
| } | |
| .gen-chips .chip.on { | |
| background: var(--blue); | |
| border-color: var(--blue); | |
| color: var(--white); | |
| } | |
| .gen-previews { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .gen-previews li { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| padding: 10px 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .gen-previews li.on { | |
| border-color: var(--blue); | |
| background: var(--blue-05); | |
| } | |
| .vp-clone { | |
| display: grid; | |
| gap: 8px; | |
| padding: 14px 16px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .vp-upgrade { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| padding: 16px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: var(--radius-sm); | |
| background: var(--blue-05); | |
| } | |
| .vp-upgrade p { | |
| margin: 4px 0 0; | |
| } | |
| .host-card { | |
| display: grid; | |
| gap: 10px; | |
| padding: 14px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .host-card select { | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .delivery summary { | |
| cursor: pointer; | |
| } | |
| .delivery[open] { | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .slider { | |
| display: grid; | |
| gap: 4px; | |
| font-size: 0.85rem; | |
| } | |
| .slider input[type="range"] { | |
| width: 100%; | |
| accent-color: var(--blue); | |
| } | |
| .library-filters { | |
| display: grid; | |
| gap: 8px; | |
| grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); | |
| } | |
| .library-filters .input:first-child { | |
| grid-column: 1 / -1; | |
| } | |
| .library-grid { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 10px; | |
| grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); | |
| max-height: 52vh; | |
| overflow: auto; | |
| } | |
| .library-voice { | |
| display: grid; | |
| gap: 6px; | |
| align-content: start; | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| } | |
| .library-voice:hover { | |
| border-color: var(--blue-35); | |
| } | |
| .clone-tips { | |
| margin: 0; | |
| padding-left: 18px; | |
| display: grid; | |
| gap: 4px; | |
| } | |
| .reading-script { | |
| max-height: 220px; | |
| overflow: auto; | |
| padding: 14px 16px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: var(--radius-sm); | |
| background: var(--blue-05); | |
| font-family: var(--font-display); | |
| font-size: 1.05rem; | |
| line-height: 1.6; | |
| display: grid; | |
| gap: 10px; | |
| } | |
| .reading-script p { | |
| margin: 0; | |
| } | |
| .takes { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .take-player { | |
| flex: 1; | |
| height: 32px; | |
| min-width: 160px; | |
| } | |
| .level { | |
| flex: 1; | |
| height: 6px; | |
| border-radius: 999px; | |
| background: var(--surface-2); | |
| overflow: hidden; | |
| } | |
| .level-fill { | |
| height: 100%; | |
| background: var(--blue); | |
| box-shadow: 0 0 10px var(--blue); | |
| transition: width 0.08s linear; | |
| } | |
| /* ---------- Density pass: tighter spacing, pages fit the window instead of forcing a scroll ---------- */ | |
| :root { | |
| --main-pad-top: 20px; | |
| --main-pad-bottom: 20px; | |
| } | |
| .shell-main { | |
| padding: var(--main-pad-top) var(--gutter) var(--main-pad-bottom); | |
| } | |
| @media (min-width: 900px) { | |
| .shell-main { | |
| padding-left: 28px; | |
| padding-right: 28px; | |
| } | |
| /* Beats `.shell > :not(.sky) { position: relative }`, so the nav stays put while content scrolls. */ | |
| .shell > .sidebar { | |
| position: sticky; | |
| top: 0; | |
| height: 100vh; | |
| overflow-y: auto; | |
| padding: 14px 12px; | |
| gap: 14px; | |
| } | |
| /* Collapsed: just the logo (and the upgrade rocket), so nothing to scroll. */ | |
| .shell.collapsed > .sidebar { | |
| overflow: hidden; | |
| padding: 14px 10px; | |
| } | |
| .side-link { | |
| padding: 7px 10px; | |
| font-size: 0.9rem; | |
| } | |
| } | |
| .card { | |
| padding: 18px; | |
| } | |
| .page-wrap, | |
| .mc { | |
| gap: 14px; | |
| } | |
| .page-head, | |
| .mc-head { | |
| margin-bottom: 0; | |
| align-items: center; | |
| } | |
| .page-head h1, | |
| .mc-head h1 { | |
| font-size: clamp(1.35rem, 2.6vw, 1.75rem); | |
| margin-top: 4px; | |
| } | |
| .page-head .eyebrow, | |
| .mc-head .eyebrow { | |
| font-size: 0.7rem; | |
| } | |
| .lede { | |
| font-size: 0.9rem; | |
| margin-top: -6px; | |
| } | |
| .stack { | |
| gap: 10px; | |
| } | |
| .two-col, | |
| .grid-cards, | |
| .gallery, | |
| .mc-grid { | |
| gap: 14px; | |
| align-items: start; /* no stretched cards with dead space below short content */ | |
| } | |
| .mc-card { | |
| gap: 10px; | |
| } | |
| .empty-state { | |
| padding: 32px 16px; | |
| gap: 10px; | |
| } | |
| .empty-state.small { | |
| padding: 20px 12px; | |
| } | |
| .empty-state .empty-art { | |
| width: 72px; | |
| height: 54px; | |
| } | |
| .artifact { | |
| padding: 14px; | |
| gap: 10px; | |
| } | |
| .video-short { | |
| max-height: 360px; | |
| } | |
| .picker-list { | |
| max-height: 260px; | |
| } | |
| .doc-row { | |
| padding: 8px 0; | |
| } | |
| .source-row { | |
| padding: 10px 12px; | |
| } | |
| .loading { | |
| padding: 12px 0; | |
| } | |
| /* Notebook: exactly the window height, panes scroll inside. */ | |
| @media (min-width: 1100px) { | |
| .nbv { | |
| height: calc(100vh - var(--main-pad-top) - var(--main-pad-bottom)); | |
| min-height: 480px; | |
| } | |
| } | |
| .nbv-chat { | |
| min-height: 360px; | |
| } | |
| /* Topic map: canvas fills the space left in the window, never taller. */ | |
| @media (min-width: 1100px) { | |
| .map-layout { | |
| height: calc(100vh - 150px); | |
| min-height: 420px; | |
| } | |
| .map-canvas, | |
| .map-side { | |
| height: 100%; | |
| max-height: none; | |
| } | |
| .map-canvas { | |
| display: grid; | |
| place-items: center; | |
| } | |
| /* Keep the 900:620 aspect so pointer math matches the viewBox; fit inside the available box. */ | |
| .map-svg { | |
| height: 100%; | |
| width: auto; | |
| max-width: 100%; | |
| aspect-ratio: 900 / 620; | |
| } | |
| } | |
| @media (max-width: 1099px) { | |
| .map-svg { | |
| max-height: 62vh; | |
| } | |
| } | |
| /* Launch Kit: the post picker and kit list share the side column without pushing the page. */ | |
| @media (min-width: 1100px) { | |
| .kit-layout > aside { | |
| position: sticky; | |
| top: 0; | |
| max-height: calc(100vh - var(--main-pad-top) - var(--main-pad-bottom)); | |
| overflow-y: auto; | |
| } | |
| .kit-layout .picker-list { | |
| max-height: 220px; | |
| } | |
| } | |
| /* Launchpad: a month fits on one screen. */ | |
| .cal-day { | |
| min-height: 72px; | |
| padding: 4px 5px; | |
| gap: 3px; | |
| } | |
| .cal-head { | |
| margin-bottom: 8px; | |
| } | |
| .accounts { | |
| gap: 8px; | |
| } | |
| /* Modals: compact padding, body scrolls instead of the page. */ | |
| .modal { | |
| gap: 12px; | |
| padding: 18px; | |
| } | |
| /* ---------- Containment: text wraps inside its box instead of spilling past borders ---------- */ | |
| .shell-main, | |
| .page-wrap > *, | |
| .mc > *, | |
| .two-col > *, | |
| .grid-cards > *, | |
| .gallery > *, | |
| .mc-grid > *, | |
| .kit-layout > *, | |
| .map-layout > *, | |
| .nbv > *, | |
| .stack > *, | |
| .row > *, | |
| .field, | |
| .artifact-head > div, | |
| .source-title, | |
| .nb-card, | |
| .library-voice, | |
| .host-card, | |
| .post-edit, | |
| .slide-edit, | |
| .resurface-row, | |
| .recent-list li, | |
| .recent-list a { | |
| min-width: 0; | |
| } | |
| .card, | |
| .modal, | |
| .drawer, | |
| .md, | |
| .artifact-body, | |
| .cites, | |
| .transcript, | |
| .doc-title, | |
| .picker-title, | |
| .source-title, | |
| .nbv-doc, | |
| .kit-list, | |
| .topic-rank, | |
| .hooks, | |
| .claims, | |
| .seo dd, | |
| .account, | |
| .angle, | |
| .cite-span, | |
| .error-text, | |
| .notice { | |
| overflow-wrap: anywhere; | |
| word-break: normal; | |
| } | |
| /* Small buttons may wrap to two lines rather than punch out of narrow panes. */ | |
| .btn-small { | |
| white-space: normal; | |
| height: auto; | |
| min-height: 34px; | |
| padding: 6px 14px; | |
| line-height: 1.25; | |
| text-align: center; | |
| } | |
| .btn { | |
| max-width: 100%; | |
| } | |
| select.input, | |
| .input, | |
| .textarea { | |
| max-width: 100%; | |
| min-width: 0; | |
| text-overflow: ellipsis; | |
| } | |
| .row > select.input { | |
| flex: 1 1 160px; | |
| } | |
| .chip { | |
| max-width: 100%; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .small-link, | |
| .source-card a.mono { | |
| display: block; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .account { | |
| max-width: 100%; | |
| } | |
| .account .mono { | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| max-width: 220px; | |
| display: inline-block; | |
| vertical-align: bottom; | |
| } | |
| .pill { | |
| flex-shrink: 0; | |
| } | |
| .artifact-head h3, | |
| .nb-card h3, | |
| .kit-view h2 { | |
| overflow-wrap: anywhere; | |
| } | |
| .metrics, | |
| .picker-actions, | |
| .artifact-actions { | |
| flex-wrap: wrap; | |
| } | |
| .map-side h2, | |
| .map-side .doc-title { | |
| overflow-wrap: anywhere; | |
| } | |
| .sidebar-user .mono { | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .reader-line span:last-child { | |
| min-width: 0; | |
| overflow-wrap: anywhere; | |
| } | |
| /* Content uses the full width next to the sidebar (open or collapsed); centred only on very wide screens. */ | |
| .page-wrap, | |
| .mc, | |
| .nbv { | |
| width: 100%; | |
| max-width: 1760px; | |
| margin-inline: auto; | |
| } | |
| .shell-main { | |
| width: 100%; | |
| } | |
| @media (min-width: 900px) { | |
| .shell.collapsed .shell-main { | |
| padding-left: 24px; | |
| padding-right: 24px; | |
| } | |
| } | |
| @media (min-width: 1100px) { | |
| /* Wider screens give the side columns room instead of leaving it empty. */ | |
| .nbv { | |
| grid-template-columns: minmax(240px, 300px) minmax(0, 1fr) minmax(320px, 400px); | |
| } | |
| .kit-layout { | |
| grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); | |
| } | |
| .map-layout { | |
| grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); | |
| } | |
| } | |
| /* Simplified layouts (2026-09-28): bigger components, fewer steps */ | |
| .clamp-1 { | |
| max-width: 100%; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| /* Mission Control */ | |
| .mc-hero { | |
| display: grid; | |
| gap: 18px; | |
| padding: clamp(18px, 3vw, 28px); | |
| } | |
| .mc-ask { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| color: var(--blue); | |
| } | |
| .mc-ask .input { | |
| flex: 1; | |
| min-width: 0; | |
| height: 54px; | |
| font-size: 1.05rem; | |
| } | |
| .mc-ask .btn { | |
| height: 54px; | |
| padding: 0 28px; | |
| } | |
| .mc-actions { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| gap: 12px; | |
| } | |
| @media (max-width: 900px) { | |
| .mc-actions { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| } | |
| .mc-action { | |
| display: grid; | |
| justify-items: start; | |
| align-content: start; | |
| gap: 6px; | |
| min-height: 132px; | |
| padding: 18px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| color: var(--white); | |
| font: inherit; | |
| text-align: left; | |
| text-decoration: none; | |
| cursor: pointer; | |
| transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; | |
| } | |
| .mc-action svg { | |
| color: var(--blue); | |
| margin-bottom: 6px; | |
| } | |
| .mc-action:hover:not(:disabled) { | |
| border-color: var(--blue-60); | |
| box-shadow: var(--glow-sm); | |
| transform: translateY(-2px); | |
| } | |
| .mc-action:disabled { | |
| opacity: 0.5; | |
| cursor: default; | |
| } | |
| .mc-more { | |
| display: grid; | |
| place-items: center; | |
| width: 28px; | |
| height: 28px; | |
| margin-bottom: 6px; | |
| border: 1px dashed var(--blue-60); | |
| border-radius: 999px; | |
| color: var(--blue); | |
| font-size: 1.1rem; | |
| line-height: 1; | |
| } | |
| .mc-next { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| padding: 14px 18px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: var(--radius-sm); | |
| background: var(--blue-05); | |
| } | |
| .mc-next p { | |
| margin: 0; | |
| flex: 1 1 320px; | |
| } | |
| .mc-stats { | |
| display: grid; | |
| grid-template-columns: repeat(4, minmax(0, 1fr)); | |
| gap: 12px; | |
| } | |
| @media (max-width: 720px) { | |
| .mc-stats { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| } | |
| .mc-stat { | |
| display: grid; | |
| gap: 2px; | |
| padding: 14px 18px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| color: var(--white); | |
| text-decoration: none; | |
| transition: border-color 0.2s; | |
| } | |
| .mc-stat:hover { | |
| border-color: var(--line-strong); | |
| } | |
| .mc-stat strong { | |
| font: 600 1.6rem var(--font-display, inherit); | |
| } | |
| /* Notebook view: conversation rail | current chat | notebook tools. */ | |
| .nbv { | |
| grid-template-areas: | |
| "history" | |
| "chat" | |
| "side"; | |
| } | |
| .nbv-history { | |
| grid-area: history; | |
| gap: 8px; | |
| max-height: 260px; | |
| padding: 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius); | |
| background: var(--surface); | |
| backdrop-filter: blur(6px); | |
| } | |
| .nbv-history:hover { | |
| border-color: var(--line); | |
| box-shadow: none; | |
| } | |
| .nbv-history-back { | |
| display: flex; | |
| align-items: center; | |
| gap: 7px; | |
| min-height: 34px; | |
| padding: 4px 7px; | |
| border-radius: 7px; | |
| color: var(--text-2); | |
| font-size: 0.78rem; | |
| text-decoration: none; | |
| transition: color 0.15s, background 0.15s; | |
| } | |
| .nbv-history-back:hover { | |
| color: var(--white); | |
| background: var(--surface-2); | |
| } | |
| .nbv-chat { | |
| grid-area: chat; | |
| } | |
| .nbv-side { | |
| grid-area: side; | |
| } | |
| .nbv-history-head { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| min-height: 52px; | |
| padding: 3px 4px 9px 8px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .nbv-history-head > div { | |
| display: grid; | |
| gap: 2px; | |
| min-width: 0; | |
| } | |
| .nbv-history-head > .nbv-history-actions { | |
| display: flex; | |
| gap: 2px; | |
| overflow: visible; | |
| } | |
| .nbv-history-head h2 { | |
| font-size: 0.95rem; | |
| letter-spacing: 0; | |
| } | |
| .nbv-history-head span { | |
| font-size: 0.7rem; | |
| } | |
| .nbv-new-chat, | |
| .nbv-close-history, | |
| .nbv-show-history { | |
| display: grid; | |
| flex: 0 0 auto; | |
| place-items: center; | |
| width: 32px; | |
| height: 32px; | |
| min-height: 0; | |
| padding: 0; | |
| border: 0; | |
| border-radius: 8px; | |
| background: transparent; | |
| color: var(--text-2); | |
| cursor: pointer; | |
| transition: color 0.15s, background 0.15s; | |
| } | |
| .nbv-new-chat:hover:not(:disabled), | |
| .nbv-close-history:hover, | |
| .nbv-show-history:hover { | |
| background: var(--surface-2); | |
| color: var(--white); | |
| } | |
| .nbv-new-chat:focus-visible, | |
| .nbv-close-history:focus-visible, | |
| .nbv-show-history:focus-visible { | |
| outline-offset: 1px; | |
| } | |
| .nbv-show-history { | |
| margin-right: 2px; | |
| } | |
| .nbv-new-chat:disabled, | |
| .nbv-chat-link:disabled { | |
| opacity: 0.55; | |
| cursor: not-allowed; | |
| } | |
| .nbv-chat-list { | |
| display: grid; | |
| align-content: start; | |
| gap: 2px; | |
| min-height: 0; | |
| padding: 2px 0; | |
| overflow-y: auto; | |
| scrollbar-width: thin; | |
| scrollbar-color: var(--line-strong) transparent; | |
| } | |
| .nbv-chat-list-label { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin: 0; | |
| padding: 8px 9px 4px; | |
| color: var(--text-3); | |
| font: 500 0.68rem var(--font-body); | |
| letter-spacing: 0.04em; | |
| } | |
| .nbv-chat-item { | |
| display: grid; | |
| grid-template-columns: minmax(0, 1fr) 2rem; | |
| align-items: center; | |
| border: 1px solid transparent; | |
| border-radius: 8px; | |
| transition: background 0.15s, border-color 0.15s; | |
| } | |
| .nbv-chat-item:hover { | |
| background: var(--surface-2); | |
| } | |
| .nbv-chat-item.active { | |
| border-color: var(--line); | |
| background: var(--surface-2); | |
| } | |
| .nbv-chat-link { | |
| display: block; | |
| width: 100%; | |
| min-width: 0; | |
| padding: 9px 6px 9px 10px; | |
| border: 0; | |
| background: transparent; | |
| color: var(--text-2); | |
| font: 400 0.82rem var(--font-body); | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .nbv-chat-item.active .nbv-chat-link, | |
| .nbv-chat-link:hover { | |
| color: var(--white); | |
| } | |
| .nbv-chat-link > span:first-child { | |
| display: block; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .nbv-chat-delete { | |
| display: grid; | |
| place-items: center; | |
| width: 1.625rem; | |
| min-width: 1.625rem; | |
| height: 1.625rem; | |
| margin-right: 0.25rem; | |
| padding: 0; | |
| border: 0; | |
| border-radius: 6px; | |
| background: var(--surface-2); | |
| color: var(--text-2); | |
| font: 500 0.68rem var(--font-body); | |
| cursor: pointer; | |
| opacity: 0; | |
| } | |
| .nbv-chat-item:hover .nbv-chat-delete, | |
| .nbv-chat-item:focus-within .nbv-chat-delete, | |
| .nbv-chat-delete.armed { | |
| opacity: 1; | |
| } | |
| .nbv-chat-delete:hover, | |
| .nbv-chat-delete.armed { | |
| color: var(--white); | |
| background: var(--blue-20); | |
| } | |
| .nbv-history-empty { | |
| padding: 16px 9px; | |
| line-height: 1.5; | |
| } | |
| @media (min-width: 900px) { | |
| .shell.notebook-focus .shell-main { | |
| padding: 0; | |
| } | |
| .shell.notebook-focus .nbv { | |
| width: 100%; | |
| max-width: none; | |
| margin: 0; | |
| } | |
| .nbv { | |
| grid-template-columns: clamp(11rem, 15vw, 13rem) minmax(0, 1fr); | |
| grid-template-areas: | |
| "history chat" | |
| "history side"; | |
| column-gap: 0; | |
| } | |
| .nbv-history { | |
| max-height: calc(100vh - var(--main-pad-top) - var(--main-pad-bottom)); | |
| border-right: 0; | |
| border-radius: var(--radius) 0 0 var(--radius); | |
| } | |
| .shell.notebook-focus .nbv-history { | |
| position: relative; | |
| top: auto; | |
| align-self: stretch; | |
| height: 100%; | |
| max-height: none; | |
| border-top-left-radius: 0; | |
| border-bottom-left-radius: 0; | |
| } | |
| .nbv-chat { | |
| border-radius: 0 var(--radius) var(--radius) 0; | |
| } | |
| .nbv-side { | |
| margin-left: 1rem; | |
| } | |
| .nbv-history-closed { | |
| grid-template-columns: minmax(0, 1fr); | |
| grid-template-areas: | |
| "chat" | |
| "side"; | |
| } | |
| .nbv-history-closed .nbv-chat { | |
| border-radius: var(--radius); | |
| } | |
| .nbv-history-closed .nbv-side { | |
| margin-left: 0; | |
| } | |
| } | |
| @media (min-width: 1100px) and (max-width: 1349px) { | |
| .nbv { | |
| height: auto; | |
| } | |
| .nbv-history { | |
| position: sticky; | |
| top: var(--main-pad-top); | |
| align-self: start; | |
| height: calc(100vh - var(--main-pad-top) - var(--main-pad-bottom)); | |
| } | |
| } | |
| @media (min-width: 1350px) { | |
| .shell.notebook-focus .nbv { | |
| height: 100vh; | |
| min-height: 100vh; | |
| } | |
| .nbv { | |
| grid-template-columns: clamp(11rem, 15vw, 13rem) minmax(0, 1fr) clamp(18rem, 24vw, 24rem); | |
| grid-template-areas: "history chat side"; | |
| } | |
| .nbv.nbv-history-closed { | |
| grid-template-columns: minmax(0, 1fr) clamp(18rem, 24vw, 24rem); | |
| grid-template-areas: "chat side"; | |
| } | |
| .nbv.nbv-history-closed .nbv-side { | |
| margin-left: 1rem; | |
| } | |
| } | |
| .nbv-titlebar { | |
| display: flex; | |
| align-items: baseline; | |
| gap: 8px; | |
| min-width: 0; | |
| } | |
| .nbv-titlebar .nbv-title { | |
| margin: 0; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .turn, | |
| .turn-md, | |
| .turn-md .md { | |
| min-width: 0; | |
| overflow-wrap: anywhere; | |
| } | |
| .turn-assistant { | |
| width: 100%; | |
| justify-self: start; | |
| } | |
| .turn-user { | |
| max-width: min(85%, 48rem); | |
| } | |
| .nbv-empty { | |
| display: grid; | |
| justify-items: center; | |
| gap: 12px; | |
| padding: 48px 16px; | |
| text-align: center; | |
| color: var(--blue); | |
| } | |
| .nbv-chat-loading { | |
| display: grid; | |
| min-height: 100%; | |
| place-items: center; | |
| } | |
| .nbv-chat-loading .loading { | |
| flex-direction: column; | |
| padding: 32px; | |
| text-align: center; | |
| } | |
| .nbv-starters { | |
| display: grid; | |
| gap: 8px; | |
| width: min(100%, 520px); | |
| } | |
| .nbv-starter { | |
| padding: 12px 16px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| color: var(--text); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| transition: border-color 0.2s, background 0.2s; | |
| } | |
| .nbv-starter:hover { | |
| border-color: var(--blue-60); | |
| background: var(--blue-05); | |
| } | |
| .nbv-ask .input { | |
| height: 3.5rem; | |
| padding-right: 4rem; | |
| font-size: 1rem; | |
| } | |
| .nbv-ask { | |
| position: relative; | |
| display: block; | |
| width: min(100%, 64rem); | |
| margin-inline: auto; | |
| } | |
| .nbv-ask .nbv-send { | |
| position: absolute; | |
| top: 50%; | |
| right: 0.375rem; | |
| width: 2.75rem; | |
| height: 2.75rem; | |
| padding: 0; | |
| border-radius: 50%; | |
| transform: translateY(-50%); | |
| } | |
| .nbv-send-spinner { | |
| width: 1rem; | |
| height: 1rem; | |
| border: 0.125rem solid rgba(255, 255, 255, 0.4); | |
| border-top-color: var(--white); | |
| border-radius: 50%; | |
| animation: spin 0.7s linear infinite; | |
| } | |
| .nbv-make { | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| gap: 8px; | |
| } | |
| .nbv-make button { | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| color: var(--white); | |
| font: 500 0.875rem var(--font-body); | |
| text-align: left; | |
| cursor: pointer; | |
| transition: border-color 0.2s, box-shadow 0.2s; | |
| } | |
| .nbv-make button:hover:not(:disabled) { | |
| border-color: var(--blue-60); | |
| } | |
| .nbv-make button:disabled { | |
| opacity: 0.5; | |
| cursor: default; | |
| } | |
| .nbv-make .nbv-make-main { | |
| grid-column: 1 / -1; | |
| display: grid; | |
| gap: 2px; | |
| padding: 16px; | |
| border-color: var(--blue-35); | |
| background: var(--blue-05); | |
| } | |
| .nbv-make .nbv-make-main strong { | |
| font-size: 1rem; | |
| } | |
| /* Notebooks: big clickable cards, options in a menu */ | |
| .nb-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); | |
| gap: 14px; | |
| } | |
| .nb-grid .nb-card { | |
| position: relative; | |
| min-height: 170px; | |
| } | |
| .nb-grid .nb-card-link { | |
| height: 100%; | |
| align-content: start; | |
| color: var(--white); | |
| } | |
| .nb-card-link svg { | |
| color: var(--blue); | |
| } | |
| .nb-archive { | |
| border-color: var(--blue-35); | |
| background: var(--blue-05); | |
| } | |
| .nb-new { | |
| display: grid; | |
| justify-items: start; | |
| align-content: center; | |
| gap: 4px; | |
| border-style: dashed; | |
| border-color: var(--line-strong); | |
| color: var(--white); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .nb-new:hover { | |
| border-color: var(--blue-60); | |
| } | |
| .card-menu { | |
| position: absolute; | |
| top: 10px; | |
| right: 10px; | |
| } | |
| .card-menu-list { | |
| position: absolute; | |
| top: 34px; | |
| right: 0; | |
| z-index: 5; | |
| display: grid; | |
| min-width: 140px; | |
| padding: 6px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: var(--radius-sm); | |
| background: var(--black, #000); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .card-menu-list button { | |
| padding: 8px 10px; | |
| border: 0; | |
| border-radius: 6px; | |
| background: none; | |
| color: var(--text); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .card-menu-list button:hover { | |
| background: var(--blue-10); | |
| } | |
| .nb-matches { | |
| max-height: 320px; | |
| overflow: auto; | |
| } | |
| /* Create (Studio): format tiles and one row of choices */ | |
| .format-grid { | |
| display: grid; | |
| grid-template-columns: repeat(5, minmax(0, 1fr)); | |
| gap: 12px; | |
| } | |
| @media (max-width: 900px) { | |
| .format-grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| } | |
| } | |
| .format-tile { | |
| display: grid; | |
| justify-items: center; | |
| align-content: center; | |
| gap: 10px; | |
| min-height: 120px; | |
| padding: 16px 10px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| color: var(--white); | |
| font: inherit; | |
| text-align: center; | |
| text-decoration: none; | |
| cursor: pointer; | |
| transition: border-color 0.2s, box-shadow 0.2s, background 0.2s; | |
| } | |
| .format-tile svg { | |
| color: var(--blue); | |
| } | |
| .format-tile:hover { | |
| border-color: var(--line-strong); | |
| } | |
| .format-tile.on { | |
| border-color: var(--blue); | |
| background: var(--blue-05); | |
| box-shadow: var(--glow-sm); | |
| } | |
| .studio-row { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: flex-end; | |
| gap: 12px; | |
| } | |
| .studio-row .field { | |
| flex: 1 1 200px; | |
| } | |
| .studio-row .field:first-child { | |
| flex: 2 1 280px; | |
| } | |
| .studio-go { | |
| height: 44px; | |
| padding: 0 26px; | |
| } | |
| /* Launch Kit: post cards to start, a thin rail of kits once one is open */ | |
| @media (min-width: 1100px) { | |
| .kit-layout.kit-open { | |
| grid-template-columns: minmax(200px, 260px) minmax(0, 1fr); | |
| } | |
| } | |
| .kit-rail { | |
| display: grid; | |
| gap: 10px; | |
| align-content: start; | |
| } | |
| .post-cards { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); | |
| gap: 12px; | |
| } | |
| .post-card { | |
| display: grid; | |
| align-content: space-between; | |
| gap: 10px; | |
| min-height: 150px; | |
| padding: 18px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: transparent; | |
| color: var(--white); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s; | |
| } | |
| .post-card strong { | |
| font-size: 1.02rem; | |
| line-height: 1.35; | |
| } | |
| .post-card-go { | |
| color: var(--blue); | |
| font-size: 0.8125rem; | |
| font-weight: 600; | |
| } | |
| .post-card:hover:not(:disabled) { | |
| border-color: var(--blue-60); | |
| box-shadow: var(--glow-sm); | |
| transform: translateY(-2px); | |
| } | |
| .post-card:disabled { | |
| opacity: 0.6; | |
| cursor: default; | |
| } | |
| /* Launchpad: account chips in one line, calendar first, ideas beside it */ | |
| .lp-accounts { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 8px; | |
| } | |
| .lp-chip { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 5px 12px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: 999px; | |
| background: transparent; | |
| color: var(--white); | |
| font: inherit; | |
| font-size: 0.8125rem; | |
| } | |
| .lp-chip img { | |
| border-radius: 999px; | |
| } | |
| .lp-chip.warn { | |
| border-color: #ff8a3d; | |
| } | |
| .lp-chip.add { | |
| border-style: dashed; | |
| color: var(--text-2); | |
| cursor: pointer; | |
| } | |
| .lp-chip.add:hover { | |
| border-color: var(--blue); | |
| color: var(--white); | |
| } | |
| .lp-layout { | |
| display: grid; | |
| gap: 16px; | |
| align-items: start; | |
| } | |
| @media (min-width: 1200px) { | |
| .lp-layout { | |
| grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); | |
| } | |
| } | |
| .lp-ideas { | |
| align-content: start; | |
| } | |
| .lp-ideas .idea { | |
| display: grid; | |
| gap: 6px; | |
| padding-bottom: 12px; | |
| border-bottom: 1px solid var(--line); | |
| } | |
| .lp-ideas .idea:last-child { | |
| border-bottom: 0; | |
| } | |
| .lp-empty { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| justify-content: space-between; | |
| gap: 12px; | |
| margin-bottom: 12px; | |
| padding: 12px 14px; | |
| border: 1px dashed var(--line-strong); | |
| border-radius: var(--radius-sm); | |
| } | |
| .lp-empty p { | |
| margin: 0; | |
| } | |
| /* Topic map: full width until a topic or the briefing is open */ | |
| @media (min-width: 1100px) { | |
| .map-layout.map-full { | |
| grid-template-columns: minmax(0, 1fr); | |
| } | |
| } | |
| .map-menu { | |
| position: relative; | |
| top: auto; | |
| right: auto; | |
| } | |
| details.map-legend summary { | |
| cursor: pointer; | |
| list-style: none; | |
| } | |
| details.map-legend:not([open]) { | |
| padding: 4px 10px; | |
| } | |
| details.map-legend[open] summary { | |
| margin-bottom: 4px; | |
| } | |
| .topic-actions { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| /* Sources: one smart input, files drop anywhere */ | |
| .add-smart { | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .add-smart .input { | |
| flex: 1 1 320px; | |
| height: 50px; | |
| font-size: 1rem; | |
| } | |
| .add-smart .btn { | |
| height: 50px; | |
| padding: 0 22px; | |
| } | |
| .page-wrap.drop-over { | |
| outline: 2px dashed var(--blue); | |
| outline-offset: 8px; | |
| border-radius: var(--radius); | |
| } | |
| /* Sidebar: seven stops, Settings pinned to the bottom */ | |
| @media (min-width: 900px) { | |
| .sidebar .side-settings { | |
| margin-top: auto; | |
| } | |
| .sidebar .side-settings ~ .sidebar-user { | |
| margin-top: 0; | |
| } | |
| } | |
| @media (max-width: 899px) { | |
| .sidebar { | |
| position: relative; | |
| } | |
| .sidebar .side-settings { | |
| position: absolute; | |
| top: 14px; | |
| right: 16px; | |
| padding: 8px; | |
| } | |
| .sidebar .side-settings .side-label { | |
| display: none; | |
| } | |
| } | |
| @media (min-width: 900px) { | |
| .shell.collapsed .side-settings { | |
| display: none; | |
| } | |
| } | |
| .tabs a.tab { | |
| text-decoration: none; | |
| } | |
| /* ---------- Mind map: the right-rail tile and list, the dialog, and the galaxy explorer ---------- */ | |
| .nbv-make .nbv-make-map { | |
| grid-column: 1 / -1; | |
| display: grid; | |
| gap: 2px; | |
| } | |
| .mm-list { | |
| display: grid; | |
| gap: 6px; | |
| } | |
| .mm-row { | |
| position: relative; | |
| display: flex; | |
| flex-wrap: wrap; | |
| align-items: center; | |
| gap: 6px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| padding: 4px 6px 4px 4px; | |
| } | |
| .mm-row.is-ready:hover { | |
| border-color: var(--blue-60); | |
| } | |
| .mm-row-main { | |
| flex: 1; | |
| min-width: 0; | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 6px; | |
| border: 0; | |
| background: transparent; | |
| color: var(--white); | |
| font: inherit; | |
| text-align: left; | |
| cursor: pointer; | |
| } | |
| .mm-row-main:disabled { | |
| cursor: default; | |
| opacity: 0.7; | |
| } | |
| .mm-row-art { | |
| flex: none; | |
| color: var(--blue); | |
| } | |
| .mm-row-text { | |
| display: grid; | |
| min-width: 0; | |
| } | |
| .mm-row-text strong { | |
| font-size: 0.875rem; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .mm-row-progress { | |
| flex-basis: 100%; | |
| padding: 0 6px 6px; | |
| } | |
| .mm-dialog { | |
| display: grid; | |
| gap: 16px; | |
| } | |
| .mm-dialog-h { | |
| margin: 0 0 8px; | |
| font: 500 0.95rem var(--font-body); | |
| } | |
| .mm-pick-toggle { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px 14px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: 999px; | |
| background: transparent; | |
| color: var(--white); | |
| font: 0.875rem var(--font-body); | |
| cursor: pointer; | |
| } | |
| .mm-pick { | |
| margin-top: 8px; | |
| max-height: 200px; | |
| overflow: auto; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| padding: 4px; | |
| } | |
| .mm-pick-item { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| padding: 6px 8px; | |
| border-radius: 6px; | |
| font-size: 0.875rem; | |
| cursor: pointer; | |
| } | |
| .mm-pick-item:hover { | |
| background: var(--surface-2); | |
| } | |
| .mm-pick-all { | |
| color: var(--text-2); | |
| border-bottom: 1px solid var(--line); | |
| border-radius: 6px 6px 0 0; | |
| } | |
| .mm-focus.input { | |
| width: 100%; | |
| height: auto; | |
| min-height: 150px; | |
| padding: 14px 16px; | |
| border-radius: var(--radius-sm); | |
| resize: vertical; | |
| line-height: 1.6; | |
| } | |
| /* Explorer */ | |
| .mm-overlay { | |
| position: fixed; | |
| inset: 0; | |
| z-index: 45; | |
| background: radial-gradient(ellipse at 50% 45%, #0a1226 0%, #03060d 55%, #000 100%); | |
| color: var(--white); | |
| } | |
| .mm-stage { | |
| position: absolute; | |
| inset: 0; | |
| overflow: hidden; | |
| } | |
| .mm-svg { | |
| display: block; | |
| cursor: grab; | |
| touch-action: none; | |
| user-select: none; | |
| } | |
| .mm-svg:active { | |
| cursor: grabbing; | |
| } | |
| .mm-star { | |
| fill: #fff; | |
| opacity: 0.5; | |
| } | |
| .mm-twinkle { | |
| animation: mm-twinkle 4s ease-in-out infinite; | |
| } | |
| @keyframes mm-twinkle { | |
| 50% { | |
| opacity: 0.12; | |
| } | |
| } | |
| .mm-orbit { | |
| fill: none; | |
| stroke: var(--blue); | |
| stroke-width: 1; | |
| stroke-opacity: 0.3; | |
| pointer-events: none; | |
| } | |
| .mm-orbit-0 { | |
| stroke-opacity: 0.55; | |
| } | |
| .mm-link { | |
| stroke: var(--blue); | |
| stroke-width: 1; | |
| pointer-events: none; | |
| } | |
| .mm-node { | |
| cursor: pointer; | |
| outline: none; | |
| } | |
| .mm-hit { | |
| fill: transparent; | |
| } | |
| .mm-body { | |
| fill: #06101f; | |
| stroke: var(--blue); | |
| stroke-width: 1.5; | |
| vector-effect: non-scaling-stroke; | |
| transition: fill 0.2s; | |
| } | |
| .mm-l1 .mm-body { | |
| fill: var(--blue); | |
| stroke: #8fbaff; | |
| } | |
| .mm-l3 .mm-body { | |
| fill: #fff; | |
| stroke: none; | |
| } | |
| .mm-node:hover .mm-body, | |
| .mm-node:focus-visible .mm-body, | |
| .mm-node.is-focus .mm-body { | |
| fill: #fff; | |
| stroke: #8fbaff; | |
| stroke-width: 3; | |
| } | |
| .mm-pulse { | |
| animation: mm-breathe 5s ease-in-out infinite; | |
| transform-box: fill-box; | |
| transform-origin: center; | |
| } | |
| @keyframes mm-breathe { | |
| 50% { | |
| transform: scale(1.12); | |
| } | |
| } | |
| .mm-label, | |
| .mm-note, | |
| .mm-more { | |
| fill: #fff; | |
| font-family: var(--font-display); | |
| paint-order: stroke; | |
| stroke: #000; | |
| stroke-width: 0.22em; | |
| stroke-linejoin: round; | |
| pointer-events: none; | |
| } | |
| .mm-l0 .mm-label { | |
| font-weight: 600; | |
| } | |
| .mm-note { | |
| fill: rgba(255, 255, 255, 0.78); | |
| font-family: var(--font-body); | |
| } | |
| .mm-more { | |
| fill: #8fbaff; | |
| font-family: var(--font-mono); | |
| } | |
| .mm-top { | |
| position: absolute; | |
| top: 14px; | |
| left: 14px; | |
| right: 14px; | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 12px; | |
| pointer-events: none; | |
| } | |
| .mm-top > * { | |
| pointer-events: auto; | |
| } | |
| .mm-title { | |
| min-width: 0; | |
| display: grid; | |
| gap: 2px; | |
| padding-top: 2px; | |
| } | |
| .mm-title strong { | |
| font: 600 1rem var(--font-display); | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .mm-trail { | |
| font-size: 0.75rem; | |
| color: var(--text-3); | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .mm-trail .link-btn { | |
| font-size: inherit; | |
| } | |
| .mm-btn { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 38px; | |
| height: 38px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: 50%; | |
| background: rgba(8, 12, 22, 0.92); | |
| color: var(--white); | |
| font: 500 1.1rem var(--font-body); | |
| cursor: pointer; | |
| } | |
| .mm-btn:hover { | |
| border-color: var(--blue-60); | |
| } | |
| .mm-btn-text { | |
| width: auto; | |
| padding: 0 14px; | |
| border-radius: 999px; | |
| font-size: 0.8rem; | |
| margin-left: auto; | |
| } | |
| .mm-btn-sm { | |
| width: 28px; | |
| height: 28px; | |
| } | |
| .mm-controls { | |
| position: absolute; | |
| left: 14px; | |
| bottom: 44px; | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .mm-hint { | |
| position: absolute; | |
| left: 14px; | |
| bottom: 14px; | |
| margin: 0; | |
| font-size: 0.72rem; | |
| pointer-events: none; | |
| } | |
| .mm-panel { | |
| position: absolute; | |
| top: 0; | |
| right: 0; | |
| bottom: 0; | |
| width: 340px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| padding: 64px 20px 20px; | |
| overflow: auto; | |
| background: rgba(4, 8, 16, 0.94); | |
| border-left: 1px solid var(--line); | |
| transition: transform 0.3s; | |
| } | |
| .mm-panel.is-closed { | |
| transform: translateX(100%); | |
| } | |
| .mm-panel-head { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| position: absolute; | |
| top: 14px; | |
| left: 20px; | |
| right: 14px; | |
| } | |
| .mm-panel h3 { | |
| margin: 0; | |
| font: 600 1.25rem var(--font-display); | |
| } | |
| .mm-note-text { | |
| margin: 0; | |
| color: var(--text-2); | |
| line-height: 1.55; | |
| } | |
| .mm-panel-label { | |
| margin: 8px 0 0; | |
| font-size: 0.7rem; | |
| letter-spacing: 0.08em; | |
| text-transform: uppercase; | |
| color: var(--text-3); | |
| } | |
| .mm-chips, | |
| .mm-sources { | |
| list-style: none; | |
| margin: 0; | |
| padding: 0; | |
| } | |
| .mm-chips { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .mm-chip { | |
| padding: 5px 11px; | |
| border: 1px solid var(--blue-35); | |
| border-radius: 999px; | |
| background: var(--blue-05); | |
| color: var(--white); | |
| font: 0.8rem var(--font-body); | |
| cursor: pointer; | |
| } | |
| .mm-chip:hover { | |
| border-color: var(--blue); | |
| } | |
| .mm-sources li + li { | |
| margin-top: 10px; | |
| } | |
| .mm-quote { | |
| margin: 4px 0 0; | |
| padding-left: 10px; | |
| border-left: 2px solid var(--blue-35); | |
| } | |
| .mm-panel .btn { | |
| align-self: flex-start; | |
| margin-top: 6px; | |
| } | |
| @media (max-width: 819px) { | |
| .mm-panel { | |
| top: auto; | |
| width: auto; | |
| left: 0; | |
| max-height: 38%; | |
| padding: 18px 16px 16px; | |
| border-left: 0; | |
| border-top: 1px solid var(--line); | |
| } | |
| .mm-panel-head { | |
| position: static; | |
| } | |
| .mm-controls { | |
| bottom: calc(38% + 14px); | |
| } | |
| .mm-hint { | |
| display: none; | |
| } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .mm-twinkle, | |
| .mm-pulse { | |
| animation: none; | |
| } | |
| } | |
| .modal.modal-wide:has(.mm-dialog) { | |
| width: min(960px, 100%); | |
| } | |
| /* ---------- Mind map galaxy: deep space, coloured arms, glowing stars (these rules refine the ones above) ---------- */ | |
| .mm-overlay { | |
| background: | |
| radial-gradient(ellipse 60% 50% at 18% 28%, rgba(33, 124, 255, 0.14), transparent 70%), | |
| radial-gradient(ellipse 55% 55% at 82% 72%, rgba(33, 124, 255, 0.22), transparent 70%), | |
| radial-gradient(ellipse 40% 35% at 62% 16%, rgba(33, 124, 255, 0.08), transparent 70%), | |
| radial-gradient(ellipse at 50% 45%, #13224a 0%, #0a1430 60%, #060c20 100%); | |
| } | |
| .mm-overlay::before { | |
| content: ""; | |
| position: absolute; | |
| inset: -20%; | |
| pointer-events: none; | |
| background: linear-gradient(118deg, transparent 38%, rgba(160, 190, 255, 0.06) 46%, rgba(205, 220, 255, 0.1) 50%, rgba(160, 190, 255, 0.06) 54%, transparent 62%); | |
| filter: blur(28px); | |
| } | |
| .mm-vignette { | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| background: radial-gradient(ellipse at 50% 50%, transparent 55%, rgba(4, 9, 26, 0.45) 100%); | |
| } | |
| .mm-meteor { | |
| position: absolute; | |
| top: 10%; | |
| left: -12%; | |
| width: 150px; | |
| height: 1.5px; | |
| pointer-events: none; | |
| opacity: 0; | |
| background: linear-gradient(90deg, transparent, #fff); | |
| animation: mm-meteor 12s linear infinite 3s; | |
| } | |
| @keyframes mm-meteor { | |
| 0% { | |
| transform: translate(0, 0) rotate(24deg); | |
| opacity: 0; | |
| } | |
| 1.5% { | |
| opacity: 0.9; | |
| } | |
| 7% { | |
| transform: translate(75vw, 34vw) rotate(24deg); | |
| opacity: 0; | |
| } | |
| 100% { | |
| transform: translate(75vw, 34vw) rotate(24deg); | |
| opacity: 0; | |
| } | |
| } | |
| .mm-orbit { | |
| stroke-width: 1; | |
| stroke-opacity: 0.32; | |
| stroke-dasharray: none; | |
| } | |
| .mm-satellite { | |
| opacity: 0.85; | |
| } | |
| .mm-link { | |
| stroke-width: 1; | |
| } | |
| .mm-flow { | |
| stroke-dasharray: 3 8; | |
| animation: mm-flow 1.6s linear infinite; | |
| } | |
| @keyframes mm-flow { | |
| to { | |
| stroke-dashoffset: -22; | |
| } | |
| } | |
| .mm-halo { | |
| pointer-events: none; | |
| opacity: 0.8; | |
| } | |
| .mm-node:hover .mm-halo { | |
| opacity: 1; | |
| } | |
| .mm-spike { | |
| fill: none; | |
| stroke: #fff; | |
| stroke-width: 0.9; | |
| stroke-opacity: 0.38; | |
| vector-effect: non-scaling-stroke; | |
| pointer-events: none; | |
| } | |
| .mm-body { | |
| stroke-width: 1.5; | |
| } | |
| .mm-l1 .mm-body { | |
| fill: currentColor; | |
| stroke: #fff; | |
| stroke-opacity: 0.7; | |
| filter: none; | |
| } | |
| .mm-l2 .mm-body { | |
| fill: #1c3f86; | |
| stroke: currentColor; | |
| stroke-width: 1.8; | |
| } | |
| .mm-l3 .mm-body { | |
| fill: #fff; | |
| stroke: none; | |
| } | |
| .mm-spark { | |
| fill: #fff; | |
| pointer-events: none; | |
| } | |
| .mm-l2 .mm-spark { | |
| fill: currentColor; | |
| } | |
| .mm-l3 .mm-spark { | |
| display: none; | |
| } | |
| .mm-node:hover .mm-body, | |
| .mm-node:focus-visible .mm-body, | |
| .mm-node.is-focus .mm-body { | |
| fill: currentColor; | |
| stroke: #fff; | |
| stroke-opacity: 1; | |
| stroke-width: 2; | |
| filter: none; | |
| } | |
| .mm-node.is-focus .mm-spark, | |
| .mm-node:hover .mm-spark { | |
| fill: #fff; | |
| } | |
| .mm-sources .link-btn { | |
| background: none; | |
| border: 0; | |
| padding: 0; | |
| color: #fff; | |
| text-align: left; | |
| text-decoration: underline; | |
| text-decoration-color: color-mix(in srgb, var(--c, #4f9bff) 60%, transparent); | |
| text-underline-offset: 3px; | |
| } | |
| .mm-corona { | |
| fill: none; | |
| stroke: #bcd6ff; | |
| stroke-opacity: 0.5; | |
| stroke-width: 1; | |
| stroke-dasharray: 2 6; | |
| vector-effect: non-scaling-stroke; | |
| pointer-events: none; | |
| } | |
| .mm-corona-2 { | |
| stroke-opacity: 0.2; | |
| stroke-dasharray: none; | |
| } | |
| .mm-focus-ring { | |
| fill: none; | |
| stroke: currentColor; | |
| stroke-width: 1.5; | |
| pointer-events: none; | |
| animation: mm-ring 2.2s ease-in-out infinite; | |
| } | |
| @keyframes mm-ring { | |
| 0%, | |
| 100% { | |
| opacity: 0.9; | |
| } | |
| 50% { | |
| opacity: 0.25; | |
| } | |
| } | |
| .mm-l0 .mm-label { | |
| letter-spacing: 0.14em; | |
| font-weight: 700; | |
| } | |
| .mm-l1 .mm-label { | |
| font-weight: 600; | |
| } | |
| .mm-l3 .mm-label { | |
| fill: rgba(255, 255, 255, 0.88); | |
| } | |
| .mm-panel { | |
| background: linear-gradient(180deg, rgba(8, 14, 30, 0.96), rgba(3, 6, 14, 0.97)); | |
| border-left-color: color-mix(in srgb, var(--c, #4f9bff) 35%, transparent); | |
| } | |
| .mm-panel::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| height: 2px; | |
| background: linear-gradient(90deg, var(--c, #4f9bff), transparent); | |
| } | |
| .mm-panel h3 { | |
| text-shadow: 0 0 24px color-mix(in srgb, var(--c, #4f9bff) 60%, transparent); | |
| } | |
| .mm-chip { | |
| border-color: color-mix(in srgb, var(--c, #4f9bff) 55%, transparent); | |
| background: color-mix(in srgb, var(--c, #4f9bff) 12%, transparent); | |
| } | |
| .mm-chip:hover { | |
| border-color: var(--c, #4f9bff); | |
| background: color-mix(in srgb, var(--c, #4f9bff) 24%, transparent); | |
| } | |
| .mm-quote { | |
| border-left-color: color-mix(in srgb, var(--c, #4f9bff) 55%, transparent); | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .mm-meteor, | |
| .mm-flow, | |
| .mm-focus-ring { | |
| animation: none; | |
| } | |
| } | |
| .mm-trail .link-btn { | |
| background: none; | |
| border: 0; | |
| padding: 0; | |
| color: var(--text-2); | |
| } | |
| .mm-trail .link-btn:hover { | |
| color: #fff; | |
| } | |
| .mm-shapes { | |
| margin-left: auto; | |
| display: inline-flex; | |
| gap: 2px; | |
| padding: 3px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: 999px; | |
| background: rgba(8, 12, 22, 0.92); | |
| } | |
| .mm-shape { | |
| padding: 6px 12px; | |
| border: 0; | |
| border-radius: 999px; | |
| background: transparent; | |
| color: var(--text-2); | |
| font: 500 0.78rem var(--font-body); | |
| cursor: pointer; | |
| } | |
| .mm-shape:hover { | |
| color: #fff; | |
| } | |
| .mm-shape.is-on { | |
| background: var(--blue); | |
| color: #fff; | |
| } | |
| .mm-btn-text { | |
| margin-left: 0; | |
| } | |
| /* Thumbs up / down under an answer */ | |
| .fb { | |
| display: grid; | |
| gap: 8px; | |
| } | |
| .fb-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| } | |
| .fb-btn { | |
| display: inline-grid; | |
| place-items: center; | |
| width: 30px; | |
| height: 30px; | |
| border: 1px solid transparent; | |
| border-radius: 8px; | |
| background: transparent; | |
| color: var(--text-3); | |
| cursor: pointer; | |
| transition: color 0.15s, border-color 0.15s, background 0.15s; | |
| } | |
| .fb-btn:hover { | |
| color: var(--white); | |
| border-color: var(--line-strong); | |
| } | |
| .fb-btn.is-on { | |
| color: var(--blue); | |
| border-color: var(--blue-35); | |
| background: var(--blue-10); | |
| } | |
| .fb-why { | |
| display: grid; | |
| gap: 8px; | |
| padding: 12px; | |
| border: 1px solid var(--line); | |
| border-radius: var(--radius-sm); | |
| background: var(--surface); | |
| } | |
| .fb-why p { | |
| margin: 0; | |
| } | |
| .fb-chips { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 6px; | |
| } | |
| .fb-chip { | |
| padding: 5px 11px; | |
| border: 1px solid var(--line-strong); | |
| border-radius: 999px; | |
| background: transparent; | |
| color: var(--text-2); | |
| font: 0.8rem var(--font-body); | |
| cursor: pointer; | |
| } | |
| .fb-chip.is-on { | |
| border-color: var(--blue); | |
| background: var(--blue-10); | |
| color: var(--white); | |
| } | |
| .fb-note.input { | |
| height: auto; | |
| padding: 10px 12px; | |
| border-radius: var(--radius-sm); | |
| font-size: 0.9rem; | |
| resize: vertical; | |
| line-height: 1.5; | |
| } | |