@font-face { font-family: Inter; src: url('/fonts/InterVariable.woff2') format('woff2'); font-style: normal; font-weight: 100 900; font-display: swap; } :root { color-scheme: dark; --bg: #10171d; --line: #2b3641; --text: #f4f5fa; --muted: #a8bbd2; --subtle: #8599ae; --violet: #8d65ff; --purple: #7254f5; --green: #4be8ae; --top: clamp(28px, 4.7svh, 42px); font: 16px Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; } * { box-sizing: border-box; } body { margin: 0; background: var(--bg); color: var(--text); } .icon-definitions { position: absolute; width: 0; height: 0; overflow: hidden; } .icon { width: 24px; height: 24px; display: block; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: none; pointer-events: none; } button, select, input { font: inherit; } button, select { cursor: pointer; color: inherit; } button { display: inline-flex; align-items: center; justify-content: center; gap: 12px; padding: 10px 18px; min-height: 46px; border: 1px solid transparent; border-radius: 11px; background: transparent; font-size: 1rem; white-space: nowrap; line-height: 1.25; transition: background 0.16s, color 0.16s; } button:hover { background: #ffffff08; color: #fff; } button:disabled { opacity: 0.5; cursor: default; } button:focus-visible, select:focus-visible, input:focus-visible, a:focus-visible, canvas:focus-visible, summary:focus-visible { outline: 2px solid #b298ff; outline-offset: 4px; } [hidden] { display: none !important; } a { color: #b8a3ff; text-decoration: none; } a:hover { text-decoration: underline; } .workspace { display: grid; grid-template-columns: 54% 46%; height: 100svh; min-height: 740px; } .brain-pane, .fly-pane { min-width: 0; min-height: 0; display: grid; position: relative; } .brain-pane { container: brain / inline-size; --panel-pad: clamp(20px, 4.8cqw, 46px); grid-template-rows: auto minmax(0, 1fr) auto auto; background: radial-gradient(ellipse at 42% 40%, #0b141d 0, #10171d 72%); border-right: 1px solid #35424e; } .fly-pane { container: response / inline-size; --panel-pad: clamp(20px, 4.2cqw, 36px); grid-template-rows: minmax(0, 1fr) auto auto; background: #10171d; } .pane-head { display: flex; align-items: flex-start; gap: 24px; padding: var(--top) var(--panel-pad) 0; min-height: 112px; min-width: 0; } .section-index { font-size: 1.5rem; line-height: 1.5; color: var(--violet); font-weight: 450; flex: none; } .pane-title { min-width: 0; } .pane-head h1, .pane-head h2 { font-size: clamp(22px, 3.5cqw, 30px); font-weight: 530; letter-spacing: -0.03em; line-height: 1.3; margin: 0; } .pane-title p { font-size: 1rem; line-height: 1.4; color: var(--muted); margin: 7px 0 0; } .projection-control { margin-left: auto; flex: none; display: flex; align-items: center; position: relative; } .projection-control select { appearance: none; width: 5.5em; border: 0; background: transparent; color: var(--muted); font-size: 1.125rem; padding: 8px 29px 8px 7px; } .projection-control:has(option[value='cns']:checked) select { width: 12.5em; } .projection-control .icon { position: absolute; right: 0; width: 18px; height: 18px; color: var(--muted); pointer-events: none; } select option { background: #1b2530; color: var(--text); } .brain-stage, .fly-stage { position: relative; min-width: 0; min-height: 0; overflow: hidden; } .brain-stage { margin-top: 16px; } .brain-stage canvas, .fly-stage canvas { position: absolute; inset: 0; display: block; width: 100%; height: 100%; outline-offset: -5px; } .brain-stage canvas { touch-action: none; cursor: crosshair; } .brain-loading { position: absolute; inset: 0; display: grid; place-content: center; color: var(--muted); background: #10171df5; font-size: 0.9375rem; } .brain-key { display: grid; grid-template-columns: 1fr auto 1fr; align-items: start; gap: 16px; padding: 10px var(--panel-pad) 0; min-height: 66px; } .side-label { color: var(--muted); font-size: 1.125rem; } .side-label:last-child { text-align: right; } .activity-key { display: flex; gap: 28px; align-items: center; justify-content: center; color: var(--muted); font-size: 0.875rem; padding-top: 25px; } .activity-key span { display: flex; align-items: center; gap: 13px; white-space: nowrap; } .activity-key i { width: 12px; height: 12px; border-radius: 50%; box-shadow: inset 0 0 0 2px #ffffff15; } .rest { background: #7f9db7; } .stim { background: #a479ff; box-shadow: 0 0 9px #8252cf60 !important; } .fire { background: #ffc56b; box-shadow: 0 0 8px #f6b65366 !important; } .paint-controls { padding: 34px var(--panel-pad) 46px; min-width: 0; } .paint-tools { display: grid; grid-template-columns: max-content max-content minmax(0, 1fr) max-content max-content; align-items: center; gap: 8px; min-width: 0; } .tool-button { color: #d0dcef; } .tool-button[aria-pressed='true'] { background: linear-gradient(115deg, #443482, #39327a); color: #fff; } .primary { background: linear-gradient(115deg, #694ef0, #5c44e8); border-color: #9a80ff25; color: #fff; box-shadow: inset 0 1px #ffffff10; padding-inline: 18px; } .primary:hover { background: linear-gradient(115deg, #795dff, #6b50f4); } .primary:disabled { opacity: 0.6; } .brush-size { display: grid; grid-template-columns: auto minmax(24px, 1fr) auto; align-items: center; gap: 14px; min-width: 0; color: var(--muted); font-size: 0.875rem; padding-left: 20px; border-left: 1px solid #26323e; white-space: nowrap; } .brush-size input { width: 100%; min-width: 0; margin: 0; } .brush-size output { min-width: 40px; font-variant-numeric: tabular-nums; } input[type='range'] { appearance: none; height: 8px; background: linear-gradient(to right, #8c66ff var(--range, 29.1%), #29333f var(--range, 29.1%)); border: 1px solid #3a4654; border-radius: 10px; cursor: pointer; } input[type='range']::-webkit-slider-thumb { appearance: none; width: 21px; height: 21px; border-radius: 50%; background: linear-gradient(#9875ff, #6449fa); border: 2px solid #f5f0ff; box-shadow: 0 1px 5px #0008; } input[type='range']::-moz-range-thumb { width: 17px; height: 17px; border-radius: 50%; background: #8966ff; border: 2px solid #f5f0ff; } .actions { margin-top: 26px; } .field-label { display: block; color: var(--subtle); font-size: 0.9375rem; letter-spacing: 0.025em; margin: 0 0 8px 2px; } .examples { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; } .examples button { min-width: 0; color: #c2d1e6; justify-content: center; gap: 21px; padding: 11px 12px; min-height: 50px; } .examples .icon { width: 27px; height: 27px; color: #f2f1f8; } .examples button[aria-pressed='true'] { background: #262449; color: #b5a6f8; } .examples button[aria-pressed='true'] .icon { color: #beaaff; } .fly-head { align-items: flex-start; gap: 22px; min-height: 94px; } .fly-head h2 { font-size: clamp(22px, 3.7cqw, 30px); } .transport { margin-left: auto; display: flex; align-items: center; gap: 8px; flex: none; } .transport button { font-size: 1rem; padding: 3px 7px; gap: 13px; color: #c5d3e7; min-height: 34px; } .transport .icon { width: 22px; height: 22px; color: #f4f4fc; } .divider { height: 29px; width: 1px; background: #27333f; margin: 0 8px; } .response-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 var(--panel-pad); min-height: 50px; } .body-state { min-width: 0; display: flex; align-items: center; gap: 18px; color: var(--green); font-size: 1.125rem; white-space: nowrap; } .body-state #behavior { overflow: hidden; text-overflow: ellipsis; } .body-state #behavior-dot { width: 12px; height: 12px; border-radius: 50%; background: currentColor; flex: none; } .body-state[data-rest='true'] { color: #a8bbd2; } .body-state small { font-size: 0.75rem; color: var(--subtle); white-space: normal; max-width: 120px; line-height: 1.4; } .body-state small:empty { display: none; } .camera-tabs { display: flex; align-items: center; gap: 21px; flex: none; } .camera-tabs button { color: #9eb4d0; border-radius: 0; position: relative; min-height: 42px; padding: 8px 15px; font-size: 1.0625rem; } .camera-tabs button[aria-pressed='true'] { color: #fff; } .camera-tabs button[aria-pressed='true']:after { content: ''; position: absolute; height: 5px; background: #9471ff; left: 10px; right: 10px; bottom: 0; border-radius: 3px; } .fly-surface { position: relative; isolation: isolate; display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; min-width: 0; min-height: 0; overflow: hidden; background: #10171d; } .fly-surface .fly-stage { position: absolute; inset: 0; margin: 0; z-index: 0; mask-image: none; -webkit-mask-image: none; } .fly-surface .fly-head { grid-row: 1; } .fly-surface .response-bar { grid-row: 2; } .fly-surface .specimen-line { grid-row: 4; min-height: 56px; padding-bottom: 14px; } .fly-surface .fly-head, .fly-surface .response-bar, .fly-surface .specimen-line { z-index: 1; pointer-events: none; background: none; } .fly-surface button { pointer-events: auto; } .fly-surface .pane-head h2, .fly-surface .body-state, .fly-surface .specimen-line { text-shadow: 0 1px 8px #050a10aa; } .specimen-line { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 var(--panel-pad); min-height: 42px; color: var(--muted); font-size: 0.875rem; } .specimen-line > span:first-child { font-style: italic; } .scale { display: flex; align-items: center; gap: 13px; white-space: nowrap; font-style: normal; } #scale-bar { display: block; height: 6px; border: 1.5px solid #bdccdc; border-top: 0; } .readouts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 36px var(--panel-pad) 0; } .readouts > div { min-width: 0; padding: 0 23px; border-left: 1px solid #2b3743; } .readouts > div:first-child { padding-left: 0; border-left: 0; } .readouts > div:last-child { padding-right: 0; } .readouts span { display: block; font-size: 1rem; color: var(--muted); margin-bottom: 8px; white-space: nowrap; } .readouts output { display: block; font-size: 1.5rem; line-height: 1.25; font-weight: 500; font-variant-numeric: tabular-nums; min-height: 30px; margin-bottom: 13px; } .meter, .balance { height: 14px; border: 1px solid #3b4654; border-radius: 8px; background: linear-gradient(#2b3541, #242e38); position: relative; } .meter { overflow: hidden; } .meter i, .balance i { position: absolute; left: 0; top: 0; bottom: 0; width: 0; border-radius: 8px; background: linear-gradient(90deg, #8e65ff, #8d6bff); transition: width 0.1s; } .balance i { left: 50%; border-radius: 0; } .balance b { position: absolute; left: 50%; top: -6px; bottom: -5px; width: 2px; background: #e1e9f6; transform: translateX(-1px); transition: left 0.1s; } .scene-footer { display: flex; align-items: center; gap: 12px; padding: 28px var(--panel-pad) 42px; min-height: 106px; position: relative; } .info-button { color: #adc0d8; padding: 0; min-height: 28px; width: 24px; border-radius: 50%; flex: none; } .info-button .icon { width: 22px; height: 22px; } .status-copy { max-height: 4.2em; overflow: auto; color: var(--subtle); font-size: 0.75rem; line-height: 1.4; min-width: 0; overflow-wrap: anywhere; } .status-copy strong { display: block; color: #c6d3e5; font-weight: 450; } .status-copy span { display: block; } .status-copy[data-state='ready'] { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); } .status-copy[data-state='error'] { color: #ffa7ae; } .start-button { margin-top: 18px; width: 100%; font-size: 0.875rem; min-height: 38px; padding: 7px 13px; background: #3a316e; color: #e7ddff; } .compute-select { margin-left: auto; position: relative; color: var(--muted); font-size: 1rem; } .compute-select > summary { display: flex; align-items: center; gap: 14px; cursor: pointer; list-style: none; min-height: 35px; white-space: nowrap; } .compute-select > summary::-webkit-details-marker { display: none; } .compute-select > summary .icon { width: 18px; height: 18px; } .status-light { width: 11px; height: 11px; border-radius: 50%; background: #667f96; } .status-light.live { background: var(--green); } .status-light.error { background: #ff9099; } .compute-options { position: absolute; bottom: calc(100% + 15px); right: 0; width: 310px; padding: 20px; background: #1a232efb; border: 1px solid #394657; box-shadow: 0 16px 50px #0007; border-radius: 12px; z-index: 5; } .compute-options label { display: flex; align-items: center; gap: 12px; font-size: 0.875rem; } .compute-options label:first-child { flex-direction: column; align-items: stretch; } .compute-options select { padding: 9px; border: 1px solid #445168; background: #202c3a; border-radius: 6px; font-size: 0.875rem; } .compute-options .check { margin-top: 20px; } .compute-options p { font-size: 0.8125rem; line-height: 1.5; color: var(--subtle); margin: 18px 0 0; } .check input { accent-color: var(--purple); } #progress { position: absolute; bottom: 0; left: 0; width: 100%; height: 2px; border: 0; accent-color: var(--violet); } progress::-webkit-progress-bar { background: #1b2634; } progress::-webkit-progress-value { background: var(--violet); } #neuron-tooltip { position: absolute; pointer-events: none; background: #17232df5; border: 1px solid #3e4d61; border-radius: 8px; padding: 10px 13px; font-size: 0.8125rem; line-height: 1.5; max-width: 240px; box-shadow: 0 5px 20px #0006; white-space: pre-line; z-index: 2; } dialog { color: var(--text); background: #18212c; border: 1px solid #3b4b60; border-radius: 14px; width: min(480px, calc(100vw - 32px)); padding: 26px; max-height: 85svh; } dialog::backdrop { background: #060b12bf; backdrop-filter: blur(8px); } .dialog-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 18px; } .dialog-heading h2 { font-size: 1.25rem; letter-spacing: -0.025em; margin: 0; font-weight: 550; } .dialog-heading button { font-size: 1.5rem; min-height: 36px; padding: 3px 10px; } dialog label { display: flex; align-items: center; gap: 14px; margin: 22px 0; font-size: 0.9375rem; } dialog input[type='range'] { flex: 1; min-width: 50px; } dialog output { min-width: 50px; font-variant-numeric: tabular-nums; } .model-details { border-top: 1px solid var(--line); padding-top: 18px; font-size: 0.875rem; color: #b2c1d3; } summary { cursor: pointer; } dialog p { font-size: 1rem; line-height: 1.6; } .sources { display: flex; flex-direction: column; gap: 12px; padding-top: 6px; font-size: 0.875rem; } @container brain (max-width:900px) { .pane-head { gap: 18px; } .paint-tools { gap: 6px; } .paint-tools button { padding-inline: 13px; gap: 10px; } .brush-size { padding-left: 13px; gap: 11px; } .examples { gap: 8px; } .examples button { gap: 15px; } .projection-control select { font-size: 1rem; } } @container brain (max-width:760px) { .pane-head { min-height: 104px; } .pane-title p { font-size: 0.875rem; } .paint-tools button { padding-inline: 10px; font-size: 0.9375rem; gap: 8px; } .paint-tools .icon { width: 22px; height: 22px; } .brush-size { grid-template-columns: minmax(24px, 1fr) auto; padding-left: 12px; gap: 10px; } .brush-size > span { display: none; } .examples button { gap: 10px; font-size: 0.875rem; padding-inline: 6px; } .activity-key { gap: 22px; font-size: 0.8125rem; } .activity-key span { gap: 10px; } } @container brain (max-width:610px) { .pane-head { gap: 14px; flex-wrap: wrap; } .projection-control { align-self: flex-start; } .projection-control select { font-size: 0.875rem; } .paint-tools { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; } .paint-tools button { padding-inline: 5px; gap: 8px; } .brush-size { grid-column: 1/-1; grid-row: 2; grid-template-columns: auto minmax(30px, 1fr) auto; border: 0; padding: 13px 0 0; } .brush-size > span { display: block; } .paint-tools .primary { grid-column: 4; grid-row: 1; } .paint-tools #clear { grid-column: 3; grid-row: 1; } .examples { gap: 4px; } .examples .icon { width: 23px; height: 23px; } .examples button { gap: 7px; } .paint-controls { padding-top: 24px; padding-bottom: 30px; } .brain-key { min-height: 58px; } .activity-key { gap: 16px; } .activity-key span { gap: 8px; } } @container brain (max-width:580px) { .paint-tools button { flex-direction: column; white-space: normal; font-size: 0.875rem; gap: 5px; padding: 9px 2px; } } @container brain (max-width:430px) { .paint-tools button > span { min-height: 2.3em; display: grid; place-items: center; line-height: 1.15; } .paint-tools button { flex-direction: column; font-size: 0.875rem; gap: 5px; padding: 9px 2px; } .examples button { flex-direction: column; gap: 6px; font-size: 0.875rem; } .pane-head { row-gap: 8px; } .pane-title { flex: 1; } .projection-control { flex-basis: 100%; justify-content: flex-end; } .brain-key { padding-inline: 20px; gap: 8px; } .activity-key { gap: 13px; font-size: 0.75rem; } .activity-key span { gap: 7px; } .activity-key i { width: 10px; height: 10px; } .section-index { font-size: 1.25rem; } } @container response (max-width:730px) { .fly-head { gap: 16px; } .transport { gap: 5px; } .transport button { padding-inline: 4px; gap: 8px; font-size: 0.875rem; } .transport .icon { width: 20px; height: 20px; } .divider { margin-inline: 3px; } .camera-tabs { gap: 10px; } .camera-tabs button { padding-inline: 12px; font-size: 1rem; } .body-state { gap: 12px; font-size: 1rem; } .body-state small { display: none; } .readouts > div { padding-inline: 16px; } .readouts span { font-size: 0.875rem; } .compute-select { font-size: 0.9375rem; } } @container response (max-width:565px) { .fly-head { flex-wrap: wrap; row-gap: 6px; min-height: 110px; } .transport { flex-basis: 100%; justify-content: flex-end; } .divider { display: none; } .camera-tabs { gap: 4px; } .camera-tabs button { padding-inline: 9px; font-size: 0.9375rem; } .response-bar { gap: 8px; } .specimen-line { font-size: 0.75rem; gap: 10px; } .scale { gap: 8px; } .readouts > div { padding-inline: 12px; } .readouts span { font-size: 0.8125rem; } .readouts output { font-size: clamp(1rem, 4.6cqw, 1.25rem); } .meter, .balance { height: 11px; } .readouts { margin-top: 25px; } .compute-select { font-size: 0.875rem; } .compute-select > summary { gap: 10px; } .scene-footer { padding-top: 26px; padding-bottom: 30px; min-height: 91px; } .compute-options { width: min(310px, calc(100vw - 40px)); } } @media (min-width: 901px) and (max-height: 820px) { .pane-head { min-height: 100px; } .fly-head { min-height: 86px; } .paint-controls { padding-top: 22px; padding-bottom: 28px; } .readouts { margin-top: 22px; } .scene-footer { padding-top: 24px; padding-bottom: 28px; min-height: 87px; } .brain-key { min-height: 58px; } .activity-key { padding-top: 19px; } .brain-stage { margin-top: 10px; } } @media (max-width: 900px) { .workspace { height: auto; min-height: 0; grid-template-columns: 1fr; } .brain-pane { border-right: 0; border-bottom: 1px solid #35424e; grid-template-rows: auto clamp(310px, 52vw, 450px) auto auto; } .fly-pane { grid-template-rows: clamp(510px, 76vw, 650px) auto auto; } .pane-head { padding-top: 28px; } .fly-head { padding-top: 30px; } .brain-stage { margin-top: 12px; } .paint-controls { padding-bottom: 30px; } .scene-footer { padding-bottom: 30px; } .readouts { margin-top: 28px; } } @media (prefers-reduced-motion: reduce) { * { transition: none !important; } } .setup-dialog { position: fixed; inset: 0; width: 100%; height: 100%; height: 100svh; max-width: none; max-height: none; margin: 0; padding: 24px; border: 0; border-radius: 0; background: #0c141deb; overflow: auto; } .setup-dialog[open] { display: grid; place-items: center; } .setup-dialog::backdrop { background: #0c141d; backdrop-filter: none; } .setup-content { width: min(100%, 440px); padding: 36px; background: linear-gradient(145deg, #1b2531, #141e29); border: 1px solid #344150; border-radius: 20px; box-shadow: 0 24px 100px #0005; } .setup-content h2 { margin: 0 0 20px; font-size: 2rem; letter-spacing: -0.04em; font-weight: 550; } .setup-content p { margin: 0; color: #c2cfe0; font-size: 1rem; line-height: 1.55; } .setup-content #setup-detail { margin-top: 12px; color: var(--muted); font-size: 0.875rem; overflow-wrap: anywhere; } .setup-content .primary { width: 100%; margin-top: 26px; min-height: 50px; } .setup-content .setup-note { margin-top: 17px; font-size: 0.8125rem; color: var(--subtle); line-height: 1.5; } #setup-progress { display: block; width: 100%; height: 5px; margin-top: 22px; border: 0; border-radius: 4px; overflow: hidden; accent-color: var(--violet); } #setup-progress::-webkit-progress-bar { background: #2a3543; } #setup-progress::-webkit-progress-value { background: var(--violet); } #setup-progress::-moz-progress-bar { background: var(--violet); } .setup-dialog[data-state='error'] #setup-detail { color: #ffb1b8; } .setup-dialog[data-state='loading'] #setup-button .icon { display: none; } @media (max-width: 480px) { .setup-dialog { padding: 18px; } .setup-content { padding: 28px; } .setup-content h2 { font-size: 1.75rem; } }