ForgeSight / frontend /src /App.css
emergent-agent-e1
Auto-generated changes
2f00f43
/* ForgeSight — industrial brutalist theme */
@import url('https://fonts.googleapis.com/css2?family=Chivo:wght@300;400;700;900&family=IBM+Plex+Sans:wght@400;500;600&family=JetBrains+Mono:wght@400;500;700&display=swap');
:root {
--fs-bg: #0A0A0A;
--fs-surface: #141416;
--fs-surface-2: #1a1a1d;
--fs-border: rgba(255, 255, 255, 0.1);
--fs-border-strong: rgba(255, 255, 255, 0.2);
--fs-red: #ED1C24;
--fs-red-hot: #FF3B30;
--fs-amber: #F59E0B;
--fs-green: #10B981;
--fs-text: #FFFFFF;
--fs-text-mute: #A1A1AA;
--fs-text-dim: #71717A;
}
.App {
font-family: 'IBM Plex Sans', system-ui, sans-serif;
background: var(--fs-bg);
color: var(--fs-text);
letter-spacing: 0.005em;
}
.font-display { font-family: 'Chivo', sans-serif; }
.font-mono { font-family: 'JetBrains Mono', ui-monospace, monospace; }
/* Selection */
::selection {
background: var(--fs-red);
color: #fff;
}
/* Scrollbar */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: #0A0A0A; }
::-webkit-scrollbar-thumb { background: #2a2a2d; border: 2px solid #0A0A0A; }
::-webkit-scrollbar-thumb:hover { background: var(--fs-red); }
/* Industrial scanline overlay for agent console */
.fs-scanlines {
background-image: repeating-linear-gradient(
to bottom,
transparent 0px,
transparent 2px,
rgba(255, 255, 255, 0.015) 2px,
rgba(255, 255, 255, 0.015) 3px
);
}
/* Grid dots texture */
.fs-grid-dots {
background-image: radial-gradient(rgba(255, 255, 255, 0.06) 1px, transparent 1px);
background-size: 24px 24px;
}
/* Technical corner tick marks */
.fs-corners {
position: relative;
}
.fs-corners::before,
.fs-corners::after {
content: '';
position: absolute;
width: 10px;
height: 10px;
border-color: var(--fs-red);
border-style: solid;
border-width: 0;
}
.fs-corners::before {
top: -1px; left: -1px;
border-top-width: 1px; border-left-width: 1px;
}
.fs-corners::after {
bottom: -1px; right: -1px;
border-bottom-width: 1px; border-right-width: 1px;
}
/* Blinking terminal cursor */
.fs-cursor::after {
content: '▊';
display: inline-block;
margin-left: 2px;
color: var(--fs-red);
animation: fs-blink 1s steps(2) infinite;
}
@keyframes fs-blink {
0%, 50% { opacity: 1; }
51%, 100% { opacity: 0; }
}
/* Boot / entrance fade + slide */
.fs-rise {
animation: fs-rise 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes fs-rise {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: translateY(0); }
}
/* Pill button */
.fs-btn {
font-family: 'JetBrains Mono', monospace;
font-size: 0.75rem;
letter-spacing: 0.14em;
text-transform: uppercase;
padding: 0.65rem 1.1rem;
border: 1px solid var(--fs-border-strong);
background: transparent;
color: #fff;
transition: background-color 180ms ease, border-color 180ms ease, color 180ms ease, transform 180ms ease;
cursor: pointer;
}
.fs-btn:hover { border-color: var(--fs-red); color: var(--fs-red); }
.fs-btn-primary {
background: var(--fs-red);
border-color: var(--fs-red);
color: #fff;
}
.fs-btn-primary:hover { background: var(--fs-red-hot); border-color: var(--fs-red-hot); color: #fff; }
/* Tag chip */
.fs-chip {
font-family: 'JetBrains Mono', monospace;
font-size: 0.65rem;
letter-spacing: 0.2em;
text-transform: uppercase;
padding: 0.2rem 0.55rem;
border: 1px solid var(--fs-border-strong);
color: var(--fs-text-mute);
}
.fs-chip-pass { color: var(--fs-green); border-color: rgba(16, 185, 129, 0.4); }
.fs-chip-warn { color: var(--fs-amber); border-color: rgba(245, 158, 11, 0.4); }
.fs-chip-fail { color: var(--fs-red); border-color: rgba(237, 28, 36, 0.5); }
/* Label */
.fs-label {
font-family: 'JetBrains Mono', monospace;
font-size: 0.7rem;
letter-spacing: 0.22em;
text-transform: uppercase;
color: var(--fs-text-dim);
}
/* Dashed divider */
.fs-hr {
border: none;
border-top: 1px dashed var(--fs-border);
margin: 0;
}
/* Hero headline stroke effect */
.fs-stroke {
-webkit-text-stroke: 1px rgba(255, 255, 255, 0.25);
color: transparent;
}
/* Drop zone */
.fs-drop {
border: 1px dashed var(--fs-border-strong);
transition: border-color 180ms ease, background-color 180ms ease;
}
.fs-drop.fs-drop-active {
border-color: var(--fs-red);
background-color: rgba(237, 28, 36, 0.05);
}
/* Minor utility */
.fs-mono-small { font-family: 'JetBrains Mono', monospace; font-size: 0.72rem; letter-spacing: 0.1em; }
/* Telemetry bar */
.fs-bar {
height: 4px;
background: var(--fs-border);
overflow: hidden;
}
.fs-bar > div {
height: 100%;
background: var(--fs-red);
transition: width 400ms cubic-bezier(0.16, 1, 0.3, 1);
}
/* Keyboard style */
kbd {
font-family: 'JetBrains Mono', monospace;
font-size: 0.65rem;
padding: 2px 6px;
border: 1px solid var(--fs-border-strong);
background: #18181b;
color: var(--fs-text-mute);
}