| @import "@xyflow/react/dist/style.css"; |
|
|
| :root { |
| --bg: #101419; |
| --panel: #f4f1e8; |
| --panel-soft: #ebe7da; |
| --ink: #192024; |
| --muted: #69706f; |
| --line: rgba(25, 32, 36, 0.16); |
| --teal: #5bb8ad; |
| --coral: #df765f; |
| --gold: #d7a64f; |
| --blue: #4c78c7; |
| --danger: #b74d4d; |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| html, |
| body { |
| height: 100%; |
| margin: 0; |
| } |
|
|
| body { |
| background: |
| radial-gradient(circle at 15% 18%, rgba(91, 184, 173, 0.22), transparent 30%), |
| radial-gradient(circle at 84% 12%, rgba(223, 118, 95, 0.18), transparent 28%), |
| linear-gradient(135deg, #101419 0%, #1d2427 52%, #17191f 100%); |
| color: var(--ink); |
| font-family: Arial, Helvetica, sans-serif; |
| letter-spacing: 0; |
| } |
|
|
| button, |
| input, |
| textarea { |
| font: inherit; |
| } |
|
|
| button { |
| cursor: pointer; |
| } |
|
|
| a { |
| color: inherit; |
| text-decoration: none; |
| } |
|
|
| .venice-shell { |
| height: 100vh; |
| overflow: hidden; |
| position: relative; |
| } |
|
|
| .topbar { |
| align-items: center; |
| display: flex; |
| gap: 14px; |
| left: 20px; |
| position: absolute; |
| right: 20px; |
| top: 18px; |
| z-index: 20; |
| } |
|
|
| .brand { |
| align-items: center; |
| background: rgba(244, 241, 232, 0.96); |
| border: 1px solid rgba(255, 255, 255, 0.55); |
| border-radius: 8px; |
| box-shadow: 0 18px 60px rgba(0, 0, 0, 0.22); |
| display: flex; |
| gap: 10px; |
| padding: 10px 12px; |
| } |
|
|
| .brand-mark { |
| align-items: center; |
| background: var(--ink); |
| border-radius: 6px; |
| color: var(--panel); |
| display: inline-flex; |
| height: 32px; |
| justify-content: center; |
| width: 32px; |
| } |
|
|
| .brand h1 { |
| font-size: 16px; |
| line-height: 1; |
| margin: 0; |
| } |
|
|
| .brand p { |
| color: var(--muted); |
| font-size: 12px; |
| margin: 3px 0 0; |
| white-space: nowrap; |
| } |
|
|
| .search-panel { |
| align-items: stretch; |
| background: rgba(244, 241, 232, 0.96); |
| border: 1px solid rgba(255, 255, 255, 0.58); |
| border-radius: 8px; |
| box-shadow: 0 18px 60px rgba(0, 0, 0, 0.22); |
| display: grid; |
| flex: 1; |
| gap: 10px; |
| grid-template-columns: minmax(240px, 1fr) auto auto; |
| min-width: 0; |
| padding: 10px; |
| } |
|
|
| .query-input, |
| .branch-input { |
| background: #fffdf6; |
| border: 1px solid var(--line); |
| border-radius: 6px; |
| color: var(--ink); |
| min-width: 0; |
| outline: none; |
| padding: 12px 13px; |
| } |
|
|
| .query-input:focus, |
| .branch-input:focus { |
| border-color: var(--teal); |
| box-shadow: 0 0 0 3px rgba(91, 184, 173, 0.18); |
| } |
|
|
| .file-button, |
| .primary-button, |
| .icon-button, |
| .pill-button { |
| align-items: center; |
| border: 0; |
| border-radius: 6px; |
| display: inline-flex; |
| font-weight: 700; |
| gap: 8px; |
| justify-content: center; |
| min-height: 42px; |
| padding: 0 14px; |
| } |
|
|
| .file-button { |
| background: #ebe7da; |
| color: var(--ink); |
| position: relative; |
| } |
|
|
| .file-button input { |
| inset: 0; |
| opacity: 0; |
| position: absolute; |
| } |
|
|
| .primary-button { |
| background: var(--ink); |
| color: var(--panel); |
| } |
|
|
| .primary-button:disabled, |
| .icon-button:disabled, |
| .pill-button:disabled { |
| cursor: not-allowed; |
| opacity: 0.55; |
| } |
|
|
| .canvas { |
| height: 100%; |
| width: 100%; |
| } |
|
|
| .react-flow__pane { |
| cursor: grab; |
| } |
|
|
| .react-flow__pane.dragging { |
| cursor: grabbing; |
| } |
|
|
| .react-flow__background { |
| opacity: 0.55; |
| } |
|
|
| .react-flow__controls { |
| background: rgba(244, 241, 232, 0.92); |
| border: 1px solid rgba(255, 255, 255, 0.55); |
| border-radius: 8px; |
| box-shadow: 0 16px 44px rgba(0, 0, 0, 0.22); |
| overflow: hidden; |
| } |
|
|
| .image-node { |
| background: var(--panel); |
| border: 1px solid rgba(255, 255, 255, 0.7); |
| border-radius: 8px; |
| box-shadow: 0 20px 70px rgba(0, 0, 0, 0.28); |
| overflow: hidden; |
| width: 760px; |
| } |
|
|
| .image-node.selected { |
| box-shadow: |
| 0 0 0 3px rgba(91, 184, 173, 0.85), |
| 0 24px 80px rgba(0, 0, 0, 0.34); |
| } |
|
|
| .node-handle { |
| background: var(--teal); |
| border: 2px solid var(--panel); |
| height: 12px; |
| width: 12px; |
| } |
|
|
| .node-image-wrap { |
| background: #192024; |
| height: 500px; |
| overflow: hidden; |
| position: relative; |
| } |
|
|
| .node-image-wrap img { |
| display: block; |
| height: 100%; |
| object-fit: cover; |
| width: 100%; |
| } |
|
|
| .node-badge { |
| background: rgba(25, 32, 36, 0.82); |
| border-radius: 999px; |
| color: #fffdf6; |
| font-size: 11px; |
| font-weight: 700; |
| left: 12px; |
| padding: 7px 10px; |
| position: absolute; |
| top: 12px; |
| } |
|
|
| .node-body { |
| padding: 18px; |
| } |
|
|
| .node-title { |
| color: var(--ink); |
| font-size: 24px; |
| line-height: 1.2; |
| margin: 0; |
| } |
|
|
| .node-summary { |
| color: var(--muted); |
| font-size: 15px; |
| line-height: 1.45; |
| margin: 10px 0 14px; |
| } |
|
|
| .fact-overlay { |
| align-items: flex-end; |
| background: linear-gradient(to top, rgba(16, 20, 25, 0.72), rgba(16, 20, 25, 0)); |
| bottom: 0; |
| display: grid; |
| gap: 8px; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| left: 0; |
| padding: 82px 16px 16px; |
| position: absolute; |
| right: 0; |
| } |
|
|
| .fact-pin { |
| background: rgba(255, 253, 246, 0.94); |
| border: 1px solid rgba(255, 255, 255, 0.72); |
| border-radius: 7px; |
| color: var(--ink); |
| min-width: 0; |
| padding: 9px 10px; |
| } |
|
|
| .fact-pin span, |
| .fact-card strong { |
| display: block; |
| font-size: 12px; |
| font-weight: 800; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .fact-pin small { |
| color: var(--muted); |
| display: block; |
| font-size: 11px; |
| line-height: 1.3; |
| margin-top: 3px; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .fact-grid { |
| display: grid; |
| gap: 8px; |
| grid-template-columns: repeat(3, minmax(0, 1fr)); |
| margin: 0 0 12px; |
| } |
|
|
| .fact-card { |
| background: #fffdf6; |
| border: 1px solid var(--line); |
| border-radius: 6px; |
| min-width: 0; |
| padding: 9px; |
| } |
|
|
| .fact-card span { |
| color: var(--muted); |
| display: -webkit-box; |
| font-size: 11px; |
| line-height: 1.32; |
| margin-top: 4px; |
| overflow: hidden; |
| -webkit-box-orient: vertical; |
| -webkit-line-clamp: 2; |
| } |
|
|
| .source-list { |
| display: grid; |
| gap: 7px; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| margin-top: 10px; |
| } |
|
|
| .source-chip { |
| align-items: center; |
| background: #fffdf6; |
| border: 1px solid var(--line); |
| border-radius: 6px; |
| color: var(--ink); |
| display: grid; |
| gap: 2px; |
| grid-template-columns: 1fr auto; |
| min-width: 0; |
| padding: 8px 9px; |
| } |
|
|
| .source-chip span { |
| font-size: 12px; |
| font-weight: 700; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .source-chip small { |
| color: var(--muted); |
| font-size: 11px; |
| grid-column: 1 / -1; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .branch-dock { |
| background: rgba(244, 241, 232, 0.96); |
| border: 1px solid rgba(255, 255, 255, 0.6); |
| border-radius: 8px; |
| bottom: 20px; |
| box-shadow: 0 18px 60px rgba(0, 0, 0, 0.24); |
| display: grid; |
| gap: 10px; |
| grid-template-columns: 1fr auto; |
| left: 50%; |
| max-width: 760px; |
| padding: 10px; |
| position: absolute; |
| transform: translateX(-50%); |
| width: calc(100% - 40px); |
| z-index: 20; |
| } |
|
|
| .branch-meta { |
| color: var(--muted); |
| font-size: 12px; |
| grid-column: 1 / -1; |
| padding: 0 2px; |
| } |
|
|
| .suggestions { |
| display: flex; |
| gap: 8px; |
| grid-column: 1 / -1; |
| overflow-x: auto; |
| padding-bottom: 2px; |
| } |
|
|
| .pill-button { |
| background: #ebe7da; |
| color: var(--ink); |
| font-size: 12px; |
| min-height: 34px; |
| white-space: nowrap; |
| } |
|
|
| .toast { |
| background: rgba(244, 241, 232, 0.96); |
| border: 1px solid rgba(255, 255, 255, 0.6); |
| border-radius: 8px; |
| bottom: 22px; |
| box-shadow: 0 18px 60px rgba(0, 0, 0, 0.24); |
| color: var(--ink); |
| left: 20px; |
| max-width: 360px; |
| padding: 13px 14px; |
| position: absolute; |
| z-index: 21; |
| } |
|
|
| .toast strong { |
| display: block; |
| font-size: 13px; |
| margin-bottom: 4px; |
| } |
|
|
| .toast p { |
| color: var(--muted); |
| font-size: 12px; |
| line-height: 1.4; |
| margin: 0; |
| } |
|
|
| .spin { |
| animation: spin 0.85s linear infinite; |
| } |
|
|
| @keyframes spin { |
| to { |
| transform: rotate(360deg); |
| } |
| } |
|
|
| .empty-state { |
| color: rgba(244, 241, 232, 0.78); |
| left: 50%; |
| max-width: 520px; |
| position: absolute; |
| text-align: center; |
| top: 52%; |
| transform: translate(-50%, -50%); |
| z-index: 1; |
| } |
|
|
| .empty-state h2 { |
| color: #fffdf6; |
| font-size: 42px; |
| line-height: 1.02; |
| margin: 0 0 12px; |
| } |
|
|
| .empty-state p { |
| line-height: 1.5; |
| margin: 0; |
| } |
|
|
| @media (max-width: 760px) { |
| .topbar { |
| align-items: stretch; |
| flex-direction: column; |
| } |
|
|
| .brand { |
| width: 100%; |
| } |
|
|
| .search-panel { |
| grid-template-columns: 1fr; |
| } |
|
|
| .empty-state h2 { |
| font-size: 32px; |
| } |
|
|
| .branch-dock { |
| grid-template-columns: 1fr; |
| } |
|
|
| .image-node { |
| width: 680px; |
| } |
|
|
| .node-image-wrap { |
| height: 440px; |
| } |
|
|
| .fact-grid, |
| .source-list { |
| grid-template-columns: 1fr; |
| } |
| } |