venice / src /app /globals.css
divyamagrawal06's picture
Mirror Venice frontend
6fffa8d verified
raw
history blame
8.36 kB
@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;
}
}