Jack-ki1's picture
Upload 31 files
f62a6a7 verified
Raw
History Blame Contribute Delete
15.5 kB
/* ---------------------------------------------------------- layout shell */
#app { display: flex; flex-direction: column; height: 100vh; overflow: hidden; }
#topnav {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 16px;
background: var(--surface);
border-bottom: 1px solid var(--border);
flex-wrap: wrap;
z-index: 20;
}
.brand { display: flex; align-items: center; gap: 8px; margin-right: 4px; }
.brand-badge {
width: 30px; height: 30px; border-radius: 9px;
background: linear-gradient(135deg, var(--brand), var(--accent-teal));
display: flex; align-items: center; justify-content: center; color: #fff;
flex-shrink: 0;
}
.brand-text { line-height: 1.1; }
.brand-text .name { font-weight: 700; font-size: 14px; }
.brand-text .tag { font-size: 10px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; }
.theme-toggle { display: flex; background: var(--surface-2); border-radius: 10px; padding: 2px; border: 1px solid var(--border); }
.theme-toggle button { padding: 6px 8px; border-radius: 8px; color: var(--text-faint); }
.theme-toggle button.is-active { background: var(--brand); color: #fff; }
#model-picker-btn {
display: flex; align-items: center; gap: 10px;
padding: 6px 12px; min-width: 220px;
border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2);
}
#model-picker-btn .mp-icon { color: var(--brand); }
#model-picker-btn .mp-text { text-align: left; line-height: 1.15; flex: 1; }
#model-picker-btn .mp-name { font-weight: 700; font-size: 13px; }
#model-picker-btn .mp-sub { font-size: 10px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; }
#framework-badges { display: flex; gap: 6px; flex-wrap: wrap; }
.nav-spacer { flex: 1; }
#topnav .right-controls { display: flex; align-items: center; gap: 8px; }
/* model picker dropdown */
#model-dropdown {
position: absolute; top: 54px; left: 190px; width: 380px; max-height: 60vh;
overflow-y: auto; z-index: 50; padding: 8px; display: none;
}
#model-dropdown.open { display: block; }
.model-dropdown-group { padding: 6px 8px 2px; font-size: 10px; font-weight: 700; letter-spacing: 0.06em; color: var(--text-faint); }
.model-dropdown-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 10px; border-radius: 8px; }
.model-dropdown-item:hover { background: var(--surface-2); }
.model-dropdown-item .name { font-weight: 600; font-size: 13px; }
.model-dropdown-item .sub { font-size: 10px; color: var(--text-faint); }
/* ------------------------------------------------------------- main row */
#main { flex: 1; display: flex; min-height: 0; }
#sidebar {
width: 360px; flex-shrink: 0; overflow-y: auto;
background: var(--surface); border-right: 1px solid var(--border);
padding: 16px;
}
.sidebar-header { margin-bottom: 14px; }
.sidebar-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: 0.06em; color: var(--brand); text-transform: uppercase; }
.sidebar-title { font-size: 20px; font-weight: 700; margin-top: 2px; }
.sidebar-lede { font-size: 12.5px; color: var(--text-dim); margin-top: 4px; }
.back-row { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; color: var(--text-dim); font-size: 12px; }
.back-row button { display: flex; align-items: center; gap: 4px; color: var(--text-dim); }
.back-row button:hover { color: var(--text); }
.module-list { display: flex; flex-direction: column; gap: 8px; }
.module-card {
display: flex; align-items: center; gap: 12px; padding: 14px;
border: 1px solid var(--border); border-radius: 12px; background: var(--surface);
text-align: left;
}
.module-card:hover { background: var(--surface-2); }
.module-card .icon-box {
width: 38px; height: 38px; border-radius: 10px; background: var(--brand-tint); color: var(--brand);
display: flex; align-items: center; justify-content: center; flex-shrink: 0;
}
.module-card .body { flex: 1; }
.module-card .title { font-weight: 700; font-size: 13.5px; }
.module-card .sub { font-size: 10px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; letter-spacing: 0.03em; }
.module-card .chev { color: var(--text-faint); }
/* Modeling & Intelligence panel */
.info-card { padding: 16px; margin-bottom: 12px; }
.info-card-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.info-card-head .icon-box { width: 34px; height: 34px; border-radius: 9px; background: var(--surface-2); display: flex; align-items: center; justify-content: center; color: var(--brand); }
.info-card-head .name { font-weight: 700; font-size: 15px; }
.info-card-badges { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 10px; }
.info-card-desc { font-size: 12.5px; line-height: 1.55; color: var(--text-dim); }
.meta-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin: 12px 0; }
.meta-cell { background: var(--surface-2); border-radius: 10px; padding: 8px 10px; }
.meta-cell .label { font-size: 9px; letter-spacing: 0.05em; color: var(--text-faint); text-transform: uppercase; }
.meta-cell .value { font-size: 12.5px; font-weight: 700; margin-top: 2px; }
.box { border-radius: 12px; padding: 10px 12px; margin-bottom: 10px; }
.box-title { font-size: 10.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
.box ul { margin: 0; padding-left: 16px; font-size: 12px; line-height: 1.6; }
.box-info { background: var(--info-bg); color: var(--info-fg); }
.box-good { background: var(--good-bg); color: var(--good-fg); }
.box-bad { background: var(--bad-bg); color: var(--bad-fg); }
.box-info ul, .box-good ul, .box-bad ul { color: var(--text); }
.framework-row { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
/* Architecture & Theory */
.arch-empty { text-align: center; padding: 30px 16px; color: var(--text-dim); }
.arch-empty .ring { width: 46px; height: 46px; border: 2px solid var(--text-faint); border-radius: 50%; margin: 0 auto 12px; display:flex; align-items:center; justify-content:center; }
.arch-empty .ring::after { content: ""; width: 18px; height: 18px; border: 2px solid var(--text-faint); border-radius: 50%; }
.arch-empty .title { font-weight: 700; font-size: 14px; color: var(--text); margin-bottom: 6px; }
.arch-empty .sub { font-size: 12px; line-height: 1.5; }
.layer-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; max-height: 220px; overflow-y: auto; }
.layer-row { display: flex; align-items: center; justify-content: space-between; padding: 7px 10px; border-radius: 8px; background: var(--surface-2); font-size: 12px; }
.layer-row .dot { width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; flex-shrink: 0; }
.layer-row .name-wrap { display: flex; align-items: center; }
.layer-row .sub { color: var(--text-faint); font-size: 10.5px; font-family: 'JetBrains Mono', monospace; }
.code-toggle { display: flex; gap: 6px; margin-bottom: 8px; }
.code-toggle button { flex: 1; padding: 8px; border-radius: 9px; border: 1px solid var(--border); font-size: 12px; font-weight: 700; background: var(--surface-2); }
.code-toggle button.is-active { background: var(--brand); color: #fff; border-color: transparent; }
.code-actions { display: flex; gap: 6px; margin: 8px 0; }
.code-actions .btn { flex: 1; justify-content: center; font-size: 11.5px; padding: 7px; }
pre.code-block {
background: #0F1117; color: #D7DAE6; border-radius: 10px; padding: 12px;
font-family: 'JetBrains Mono', monospace; font-size: 11px; line-height: 1.55;
overflow-x: auto; margin: 0; white-space: pre;
}
textarea.code-input {
width: 100%; min-height: 180px; background: #0F1117; color: #D7DAE6;
border-radius: 10px; padding: 12px; font-size: 11px; line-height: 1.55; border: 1px solid var(--border);
resize: vertical;
}
.upload-row { display: flex; gap: 6px; align-items: center; margin-top: 8px; }
.upload-row input[type="file"] { font-size: 11px; flex: 1; }
.analyze-status { font-size: 11px; color: var(--text-faint); margin-top: 6px; }
/* Hyperparams */
.hp-row { margin-bottom: 16px; }
.hp-row .hp-label { display: flex; justify-content: space-between; font-size: 12px; font-weight: 600; margin-bottom: 6px; }
.hp-row .hp-value { color: var(--brand); font-family: 'JetBrains Mono', monospace; }
.hp-select-row { display: flex; gap: 6px; flex-wrap: wrap; }
.hp-select-row button { padding: 6px 10px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface-2); font-size: 11.5px; font-family: 'JetBrains Mono', monospace; }
.hp-select-row button.is-active { background: var(--brand); color: #fff; border-color: transparent; }
.hp-empty { color: var(--text-dim); font-size: 12.5px; padding: 12px 0; }
/* Metrics */
.metric-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 14px; }
.metric-tile { background: var(--surface-2); border-radius: 10px; padding: 10px 12px; }
.metric-tile .label { font-size: 9.5px; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-faint); }
.metric-tile .value { font-size: 18px; font-weight: 700; margin-top: 2px; font-family: 'JetBrains Mono', monospace; }
.spark-wrap { background: var(--surface-2); border-radius: 10px; padding: 10px; margin-bottom: 10px; }
.spark-wrap .label { font-size: 10px; color: var(--text-faint); margin-bottom: 4px; text-transform: uppercase; letter-spacing: 0.04em; }
.spark-wrap svg { width: 100%; height: 60px; display: block; }
/* Benchmarking & History */
.history-timeline { position: relative; padding-left: 20px; }
.history-timeline::before { content: ""; position: absolute; left: 5px; top: 4px; bottom: 4px; width: 2px; background: var(--border); }
.history-item { position: relative; margin-bottom: 16px; }
.history-item::before { content: ""; position: absolute; left: -20px; top: 3px; width: 10px; height: 10px; border-radius: 50%; background: var(--brand); border: 2px solid var(--surface); }
.history-item .year { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 12px; color: var(--brand); }
.history-item .origin { font-size: 11.5px; color: var(--text-faint); margin-bottom: 4px; }
.history-item .blurb { font-size: 12.5px; line-height: 1.6; color: var(--text-dim); }
/* Playground */
.playground-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 3px; aspect-ratio: 1; margin-bottom: 12px; }
.playground-cell { border-radius: 3px; background: var(--surface-2); border: 1px solid var(--border); cursor: pointer; }
.playground-actions { display: flex; gap: 6px; margin-bottom: 12px; }
.playground-actions .btn { flex: 1; justify-content: center; }
.playground-result { text-align: center; padding: 10px; background: var(--surface-2); border-radius: 10px; }
.playground-result .digit { font-size: 34px; font-weight: 700; font-family: 'JetBrains Mono', monospace; color: var(--brand); }
.prob-bars { display: flex; align-items: flex-end; gap: 3px; height: 60px; margin-top: 10px; }
.prob-bar { flex: 1; background: var(--surface-3); border-radius: 3px 3px 0 0; position: relative; display: flex; align-items: flex-end; justify-content: center; }
.prob-bar .fill { width: 100%; background: var(--brand); border-radius: 3px 3px 0 0; }
.prob-bar .tick { position: absolute; bottom: -16px; font-size: 9px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; }
/* -------------------------------------------------------------- stage */
#stage-wrap { flex: 1; position: relative; background: #0A0E1A; overflow: hidden; }
#stage { position: absolute; inset: 0; width: 100%; height: 100%; touch-action: none; cursor: grab; }
#stage:active { cursor: grabbing; }
.stage-caption {
position: absolute; top: 14px; left: 16px; z-index: 5;
font-family: 'JetBrains Mono', monospace; font-size: 11px; color: #A9B0D0;
background: rgba(15,17,28,0.6); backdrop-filter: blur(6px);
padding: 6px 12px; border-radius: 8px; border: 1px solid rgba(140,150,200,0.15);
}
.stage-hint {
position: absolute; top: 14px; right: 16px; z-index: 5;
font-family: 'JetBrains Mono', monospace; font-size: 10.5px; color: #6FE0C8;
background: rgba(15,17,28,0.6); backdrop-filter: blur(6px);
padding: 6px 12px; border-radius: 8px; border: 1px solid rgba(111,224,200,0.2);
}
.stage-toolbar {
position: absolute; top: 14px; left: 50%; transform: translateX(-50%); z-index: 6;
display: flex; gap: 6px; background: rgba(15,17,28,0.6); backdrop-filter: blur(6px);
padding: 5px; border-radius: 10px; border: 1px solid rgba(140,150,200,0.15);
}
.stage-toolbar button {
padding: 7px 10px; border-radius: 7px; color: #C7CCE0; font-size: 11.5px; font-weight: 600;
display: flex; align-items: center; gap: 5px;
}
.stage-toolbar button:hover { background: rgba(140,150,200,0.14); }
.stage-toolbar button.is-active { background: #6D5EF0; color: #fff; }
.stage-toolbar .divider { width: 1px; background: rgba(140,150,200,0.2); margin: 4px 2px; }
.data-pass {
position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); z-index: 6;
display: flex; align-items: center; gap: 10px;
background: rgba(15,17,28,0.7); backdrop-filter: blur(6px);
padding: 8px 16px; border-radius: 12px; border: 1px solid rgba(140,150,200,0.15);
min-width: 320px;
}
.data-pass label { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; color: #A9B0D0; white-space: nowrap; }
.data-pass input[type="range"] { accent-color: #F5B44A; }
.system-log {
position: absolute; bottom: 20px; left: 16px; z-index: 5;
font-family: 'JetBrains Mono', monospace; font-size: 10.5px; color: #5B6172;
}
/* Copilot */
.copilot-fab {
position: absolute; bottom: 20px; right: 20px; z-index: 8;
width: 52px; height: 52px; border-radius: 50%;
background: linear-gradient(135deg, #6D5EF0, #16A3A3);
display: flex; align-items: center; justify-content: center; color: #fff;
box-shadow: 0 6px 20px rgba(109,94,240,0.4);
}
.copilot-fab:hover { transform: scale(1.06); }
.copilot-panel {
position: absolute; bottom: 84px; right: 20px; z-index: 9;
width: 320px; max-height: 420px; display: none; flex-direction: column;
background: rgba(20,22,32,0.92); backdrop-filter: blur(10px);
border: 1px solid rgba(140,150,200,0.18); border-radius: 14px; overflow: hidden;
}
.copilot-panel.open { display: flex; }
.copilot-head { padding: 12px 14px; border-bottom: 1px solid rgba(140,150,200,0.15); font-size: 12.5px; font-weight: 700; color: #E7E9F5; display: flex; justify-content: space-between; align-items: center; }
.copilot-body { flex: 1; overflow-y: auto; padding: 12px 14px; font-size: 12px; color: #C7CCE0; line-height: 1.55; display: flex; flex-direction: column; gap: 10px; }
.copilot-msg.user { color: #8FE0D0; }
.copilot-msg.assistant { color: #E7E9F5; }
.copilot-msg.error { color: #F08282; }
.copilot-input-row { display: flex; gap: 6px; padding: 10px; border-top: 1px solid rgba(140,150,200,0.15); }
.copilot-input-row input { flex: 1; background: rgba(255,255,255,0.06); border: 1px solid rgba(140,150,200,0.2); color: #fff; border-radius: 8px; padding: 8px 10px; font-size: 12px; }
.copilot-input-row button { background: #6D5EF0; color: #fff; border-radius: 8px; padding: 0 12px; }
.config-popover { display: none; }
.config-popover.open { display: block; }
/* responsive */
@media (max-width: 860px) {
#sidebar { width: 100%; position: absolute; z-index: 15; height: calc(100% - 58px); }
#stage-wrap { width: 100%; }
#model-dropdown { left: 12px; width: calc(100vw - 24px); }
}