Daedalus-Env / styles.css
Laksh718's picture
Replace Gradio scaffold with full Mechanism Design Dashboard (FastAPI + custom HTML/CSS/JS), wire Laksh718/daedalus-designer for live inference, embed real training plots in Training tab.
d918820 verified
/* ═══════════════════════════════════════════════════════════════
DAEDALUS — Dashboard Design System
Single-viewport, no-scroll simulation dashboard
═══════════════════════════════════════════════════════════════ */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap');
:root {
--bg: #06060f;
--bg2: #0a0a16;
--bg3: #0e0e1e;
--card: rgba(255,255,255,0.025);
--card2: rgba(255,255,255,0.04);
--card3: rgba(255,255,255,0.06);
--cyan: #00d4ff;
--purple: #7c3aed;
--emerald: #10b981;
--amber: #f59e0b;
--rose: #f43f5e;
--blue: #3b82f6;
--indigo: #6366f1;
--t1: #e2e8f0;
--t2: #94a3b8;
--t3: #64748b;
--t4: #475569;
--border: rgba(255,255,255,0.06);
--border2: rgba(255,255,255,0.1);
--grad1: linear-gradient(135deg, var(--cyan), var(--purple));
--grad2: linear-gradient(135deg, var(--emerald), var(--cyan));
--font: 'Inter', system-ui, sans-serif;
--mono: 'JetBrains Mono', monospace;
--r: 8px;
--r2: 12px;
}
*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }
html, body { height:100%; overflow:hidden; font-family:var(--font); background:var(--bg); color:var(--t1); font-size:14px; -webkit-font-smoothing:antialiased; }
::-webkit-scrollbar { width:4px; height:4px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.1); border-radius:2px; }
/* ── App Shell ─────────────────────────────────────── */
.app { display:grid; grid-template-rows:46px 1fr; height:100vh; width:100vw; }
/* ── Header ────────────────────────────────────────── */
.header {
display:flex; align-items:center; gap:12px;
padding:0 16px; background:rgba(6,6,15,0.92);
border-bottom:1px solid var(--border);
backdrop-filter:blur(20px); z-index:100;
}
.logo { font-size:1rem; font-weight:800; letter-spacing:3px; background:var(--grad1); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; flex-shrink:0; }
.header-sep { width:1px; height:24px; background:var(--border); flex-shrink:0; }
.tabs { display:flex; gap:4px; }
.tab-btn {
font-family:var(--font); font-size:0.72rem; font-weight:600;
padding:5px 12px; border-radius:6px; border:1px solid transparent;
background:transparent; color:var(--t3); cursor:pointer;
transition:all 150ms; letter-spacing:0.5px;
}
.tab-btn:hover { color:var(--t2); background:var(--card); }
.tab-btn.active { color:var(--cyan); background:rgba(0,212,255,0.08); border-color:rgba(0,212,255,0.15); }
.header-spacer { flex:1; }
.header-actions { display:flex; gap:6px; align-items:center; }
.h-btn {
font-family:var(--font); font-size:0.72rem; font-weight:600;
padding:4px 14px; border-radius:6px; border:none; cursor:pointer; transition:all 150ms;
}
.h-btn-primary { background:var(--grad1); color:#fff; }
.h-btn-primary:hover { box-shadow:0 0 12px rgba(0,212,255,0.3); }
.h-btn-secondary { background:var(--card); color:var(--t2); border:1px solid var(--border); }
.h-btn-secondary:hover { background:var(--card2); color:var(--t1); }
.round-info {
font-family:var(--mono); font-size:0.72rem; color:var(--cyan);
background:rgba(0,212,255,0.06); padding:3px 10px; border-radius:6px;
border:1px solid rgba(0,212,255,0.12);
}
.composite-info {
font-family:var(--mono); font-size:0.72rem; font-weight:700;
padding:3px 10px; border-radius:6px;
}
/* ── Tab Panels ────────────────────────────────────── */
.tab-panel { display:none; overflow:hidden; }
.tab-panel.active { display:flex; flex-direction:column; }
/* ── Simulation Dashboard ──────────────────────────── */
.sim-dashboard {
display:grid;
grid-template-columns:210px 1fr 270px;
grid-template-rows:1fr 90px;
gap:8px; padding:8px;
height:100%; overflow:hidden;
}
/* ── Controls Sidebar ──────────────────────────────── */
.controls {
grid-row:1/3;
background:var(--card); border:1px solid var(--border); border-radius:var(--r2);
padding:10px; display:flex; flex-direction:column; gap:8px;
overflow-y:auto; overflow-x:hidden;
}
.ctrl-group { }
.ctrl-title {
font-size:0.62rem; font-weight:700; letter-spacing:1.5px;
text-transform:uppercase; color:var(--t3); margin-bottom:6px;
display:flex; align-items:center; gap:5px;
}
.ctrl-row { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.ctrl-label { font-size:0.72rem; color:var(--t2); }
.ctrl-select {
background:var(--bg3); border:1px solid var(--border); border-radius:4px;
color:var(--t1); font-family:var(--font); font-size:0.72rem;
padding:3px 6px; cursor:pointer; outline:none; width:100%;
}
.ctrl-select:focus { border-color:var(--cyan); }
.toggle-row { display:flex; flex-wrap:wrap; gap:3px; margin-bottom:4px; }
.toggle-chip {
font-family:var(--font); font-size:0.6rem; font-weight:500;
padding:2px 7px; border-radius:4px;
border:1px solid var(--border); background:transparent;
color:var(--t4); cursor:pointer; transition:all 100ms;
}
.toggle-chip.active { background:rgba(0,212,255,0.1); border-color:rgba(0,212,255,0.25); color:var(--cyan); }
.slider-row { margin-bottom:6px; }
.slider-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:2px; }
.slider-lbl { font-size:0.68rem; color:var(--t2); }
.slider-val { font-family:var(--mono); font-size:0.65rem; color:var(--cyan); }
input[type="range"] {
-webkit-appearance:none; width:100%; height:3px; border-radius:2px;
background:rgba(255,255,255,0.06); outline:none; cursor:pointer;
}
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance:none; width:10px; height:10px; border-radius:50%;
background:var(--cyan); cursor:pointer; box-shadow:0 0 4px rgba(0,212,255,0.4);
}
.ctrl-sep { height:1px; background:var(--border); margin:4px 0; }
/* ── Auction Arena ─────────────────────────────────── */
.arena {
background:var(--card); border:1px solid var(--border); border-radius:var(--r2);
padding:10px; display:flex; flex-direction:column; overflow:hidden;
}
.arena-header {
display:flex; align-items:center; justify-content:space-between; margin-bottom:8px;
flex-shrink:0;
}
.arena-title { font-size:0.72rem; font-weight:700; letter-spacing:1px; text-transform:uppercase; color:var(--t2); }
.arena-grid {
display:grid; grid-template-columns:repeat(4,1fr); gap:6px;
flex:1; min-height:0;
}
.agent-cell {
display:flex; flex-direction:column; align-items:center;
padding:6px 4px; border-radius:var(--r);
background:rgba(255,255,255,0.01); border:1px solid transparent;
transition:all 200ms; gap:2px; min-height:0;
}
.agent-cell.winner { border-color:var(--cyan); background:rgba(0,212,255,0.04); box-shadow:0 0 10px rgba(0,212,255,0.1); }
.agent-cell.out { opacity:0.25; }
.agent-dot {
width:28px; height:28px; border-radius:50%;
display:flex; align-items:center; justify-content:center;
font-size:0.6rem; font-weight:700; color:#fff; flex-shrink:0;
}
.agent-label { font-size:0.6rem; font-weight:600; color:var(--t2); }
.agent-type { font-size:0.5rem; color:var(--t4); text-transform:uppercase; letter-spacing:0.5px; }
.agent-status { font-size:0.5rem; font-weight:600; }
.bid-wrap {
width:100%; height:44px; background:rgba(255,255,255,0.015);
border-radius:4px; position:relative; overflow:hidden;
display:flex; align-items:flex-end; flex-shrink:0;
}
.bid-fill {
width:100%; border-radius:4px 4px 0 0;
transition:height 0.5s cubic-bezier(.4,0,.2,1);
}
.val-line {
position:absolute; left:0; right:0; height:1px;
border-top:1.5px dashed rgba(255,255,255,0.15);
transition:bottom 0.5s cubic-bezier(.4,0,.2,1);
}
.bid-nums {
display:flex; justify-content:space-between; width:100%;
font-family:var(--mono); font-size:0.55rem; padding:0 2px; flex-shrink:0;
}
.bid-nums .bn-bid { font-weight:600; }
.bid-nums .bn-val { color:var(--t4); }
.paired-tag { font-size:0.45rem; color:var(--rose); }
/* ── Metrics Panel ─────────────────────────────────── */
.metrics {
display:flex; flex-direction:column; gap:8px;
overflow:hidden;
}
.metrics-top {
background:var(--card); border:1px solid var(--border); border-radius:var(--r2);
padding:10px; flex-shrink:0;
}
.metrics-title { font-size:0.62rem; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--t3); margin-bottom:8px; }
.m-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:8px; }
.m-box {
text-align:center; padding:6px;
border-radius:var(--r); background:rgba(255,255,255,0.015); border:1px solid var(--border);
}
.m-val { font-family:var(--mono); font-size:1.1rem; font-weight:700; line-height:1.2; }
.m-lbl { font-size:0.55rem; color:var(--t4); text-transform:uppercase; letter-spacing:0.8px; margin-top:1px; }
.m-bar { height:3px; border-radius:2px; background:rgba(255,255,255,0.04); margin-top:4px; overflow:hidden; }
.m-bar-fill { height:100%; border-radius:2px; transition:width 0.5s ease; }
.composite-box {
text-align:center; padding:8px;
border-radius:var(--r); border:1px solid rgba(0,212,255,0.1);
background:rgba(0,212,255,0.03);
}
.comp-label { font-size:0.55rem; color:var(--t3); text-transform:uppercase; letter-spacing:1px; }
.comp-value { font-family:var(--mono); font-size:1.4rem; font-weight:800; background:var(--grad1); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; }
.charts-panel {
background:var(--card); border:1px solid var(--border); border-radius:var(--r2);
padding:10px; flex:1; min-height:0;
display:flex; flex-direction:column; gap:6px; overflow:hidden;
}
.chart-box { flex:1; min-height:0; display:flex; flex-direction:column; }
.chart-head { font-size:0.55rem; font-weight:600; color:var(--t4); text-transform:uppercase; letter-spacing:0.8px; margin-bottom:2px; flex-shrink:0; }
.chart-box canvas { width:100% !important; flex:1; min-height:0; }
/* ── Timeline / Logs ───────────────────────────────── */
.timeline-bar {
grid-column:2/4;
background:var(--card); border:1px solid var(--border); border-radius:var(--r2);
padding:8px 10px; display:flex; flex-direction:column; overflow:hidden;
}
.timeline-head {
display:flex; align-items:center; justify-content:space-between;
margin-bottom:4px; flex-shrink:0;
}
.timeline-title { font-size:0.62rem; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; color:var(--t3); }
.timeline-scroll {
display:flex; gap:6px; overflow-x:auto; flex:1; align-items:stretch;
}
.t-event {
flex-shrink:0; min-width:130px; padding:6px 8px;
border-radius:var(--r); border:1px solid var(--border);
background:rgba(255,255,255,0.01); font-size:0.65rem;
}
.t-event .t-round { font-family:var(--mono); font-size:0.55rem; color:var(--cyan); margin-bottom:1px; }
.t-event .t-action { color:var(--t1); font-weight:600; margin-bottom:1px; }
.t-event .t-impact { font-family:var(--mono); font-size:0.55rem; }
.t-impact.pos { color:var(--emerald); }
.t-impact.neg { color:var(--rose); }
/* ── Architecture Tab ──────────────────────────────── */
.doc-scroll { overflow-y:auto; padding:24px 40px; max-width:1100px; margin:0 auto; height:100%; }
.doc-scroll h2 { font-size:1.4rem; font-weight:800; margin:0 0 8px; }
.doc-scroll h3 { font-size:1rem; font-weight:700; margin:20px 0 6px; color:var(--cyan); }
.doc-scroll p { font-size:0.85rem; color:var(--t2); line-height:1.7; margin-bottom:10px; max-width:800px; }
.doc-scroll strong { color:var(--t1); }
.doc-scroll code {
font-family:var(--mono); font-size:0.78rem; background:var(--card2);
padding:1px 5px; border-radius:3px; color:var(--cyan);
}
.doc-scroll pre {
background:var(--bg2); border:1px solid var(--border); border-radius:var(--r);
padding:12px 16px; overflow-x:auto; margin:8px 0 16px;
font-family:var(--mono); font-size:0.75rem; color:var(--t2); line-height:1.6;
}
/* Diagrams in docs */
.inv-row { display:grid; grid-template-columns:1fr 60px 1fr; gap:12px; align-items:center; margin:16px 0; }
.inv-card {
padding:16px; border-radius:var(--r2); border:1px solid var(--border);
text-align:center;
}
.inv-card.old { background:rgba(239,68,68,0.04); border-color:rgba(239,68,68,0.12); }
.inv-card.new { background:rgba(0,212,255,0.04); border-color:rgba(0,212,255,0.12); }
.inv-card h4 { font-size:0.95rem; margin-bottom:4px; }
.inv-card p { font-size:0.8rem; color:var(--t2); margin:0; }
.inv-arrow { text-align:center; color:var(--t4); font-size:1.4rem; }
.layer-box { border-radius:var(--r2); padding:12px; margin-bottom:6px; border:1px solid; }
.layer-box.l1 { background:rgba(0,212,255,0.03); border-color:rgba(0,212,255,0.1); }
.layer-box.l2 { background:rgba(16,185,129,0.03); border-color:rgba(16,185,129,0.1); margin:8px 0; }
.layer-box.l3 { background:rgba(245,158,11,0.03); border-color:rgba(245,158,11,0.1); }
.layer-tag { font-size:0.6rem; font-weight:700; letter-spacing:1.5px; text-transform:uppercase; margin-bottom:4px; }
.layer-desc { font-size:0.78rem; color:var(--t2); line-height:1.5; }
.agent-chips { display:flex; flex-wrap:wrap; gap:8px; margin:12px 0; }
.a-chip {
padding:10px 14px; border-radius:var(--r); border:1px solid var(--border);
background:var(--card); min-width:160px; flex:1;
}
.a-chip h5 { font-size:0.8rem; margin-bottom:3px; }
.a-chip p { font-size:0.7rem; color:var(--t3); margin:0; line-height:1.4; }
.reward-eq {
font-family:var(--mono); font-size:1.2rem; font-weight:600;
text-align:center; padding:16px;
background:var(--card); border:1px solid var(--border); border-radius:var(--r2);
margin:12px 0; letter-spacing:2px;
}
.term-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; margin:12px 0; }
.term-card {
padding:10px; border-radius:var(--r); border:1px solid var(--border);
background:var(--card); text-align:center;
}
.term-card .tc-sym { font-family:var(--mono); font-size:1.3rem; font-weight:700; }
.term-card .tc-name { font-size:0.7rem; font-weight:600; margin-top:2px; }
.term-card .tc-desc { font-size:0.6rem; color:var(--t3); margin-top:4px; line-height:1.4; }
/* Curriculum stages in training tab */
.stage-row { display:flex; gap:8px; margin:12px 0; overflow-x:auto; }
.stage-box {
flex:1; min-width:160px; padding:12px;
border-radius:var(--r2); border:1px solid var(--border); background:var(--card);
}
.stage-box .sb-num { font-family:var(--mono); font-size:0.6rem; font-weight:700; letter-spacing:1px; margin-bottom:4px; }
.stage-box h5 { font-size:0.8rem; margin-bottom:4px; }
.stage-box p { font-size:0.7rem; color:var(--t3); margin:0; line-height:1.4; }
.arch-flow {
display:grid; grid-template-columns:1fr 40px 1fr 40px 1fr; gap:0;
align-items:center; margin:16px 0;
}
.arch-node {
padding:14px; border-radius:var(--r2); border:1px solid var(--border);
background:var(--card); text-align:center;
}
.arch-node h5 { font-size:0.85rem; margin-bottom:4px; }
.arch-node p { font-size:0.7rem; color:var(--t3); margin:0; line-height:1.4; }
.arch-arr { text-align:center; color:var(--t4); font-size:1.2rem; }
/* ── Color Utilities ───────────────────────────────── */
.c-cyan { color:var(--cyan); }
.c-purple { color:var(--purple); }
.c-emerald { color:var(--emerald); }
.c-amber { color:var(--amber); }
.c-rose { color:var(--rose); }
.c-blue { color:var(--blue); }
/* ── Responsive ────────────────────────────────────── */
@media (max-width:1100px) {
.sim-dashboard { grid-template-columns:180px 1fr 240px; }
}
@media (max-width:900px) {
.sim-dashboard { grid-template-columns:1fr; grid-template-rows:auto auto auto; }
.controls { grid-row:auto; flex-direction:row; flex-wrap:wrap; }
.timeline-bar { grid-column:auto; }
.arena-grid { grid-template-columns:repeat(2,1fr); }
}
.active-ai {
border-color: var(--cyan) !important;
color: var(--cyan) !important;
background: rgba(0, 212, 255, 0.05) !important;
box-shadow: 0 0 15px rgba(0, 212, 255, 0.1);
}