:root { color: #eef2ff; background: #070a12; font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-synthesis: none; --ink: #eef2ff; --muted: #8b93a7; --line: rgba(174, 190, 228, 0.13); --line-bright: rgba(174, 190, 228, 0.25); --panel: rgba(14, 18, 31, 0.78); --panel-strong: #101523; --lime: #c6ff4a; --cyan: #58e6ff; --violet: #8f7cff; --danger: #ff6f91; --mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; } * { box-sizing: border-box; } html { min-width: 320px; scroll-behavior: smooth; } body { min-width: 320px; min-height: 100vh; margin: 0; overflow-x: hidden; background: linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.018) 1px, transparent 1px), radial-gradient(circle at 76% 12%, rgba(87, 71, 188, .17), transparent 32rem), #070a12; background-size: 48px 48px, 48px 48px, auto, auto; } a { color: inherit; } button, input, select { font: inherit; } button, a, input, select { -webkit-tap-highlight-color: transparent; } .ambient { position: fixed; z-index: -1; width: 24rem; height: 24rem; border-radius: 50%; filter: blur(110px); opacity: .16; pointer-events: none; } .ambient-one { top: -10rem; left: -8rem; background: var(--cyan); } .ambient-two { right: -8rem; bottom: 4rem; background: var(--violet); } .topbar { display: flex; align-items: center; justify-content: space-between; width: min(100% - 40px, 1500px); min-height: 76px; margin: 0 auto; border-bottom: 1px solid var(--line); } .brand, .topbar-meta { display: flex; align-items: center; } .brand { gap: 12px; color: var(--ink); font-size: .78rem; font-weight: 800; letter-spacing: .16em; text-decoration: none; } .brand b { color: var(--lime); font-weight: 800; } .brand-mark { position: relative; display: grid; width: 28px; height: 28px; place-items: center; border: 1px solid rgba(198, 255, 74, .55); transform: rotate(45deg); } .brand-mark::before, .brand-mark::after, .brand-mark span { content: ""; position: absolute; border: 1px solid var(--lime); } .brand-mark::before { inset: 5px; } .brand-mark::after { inset: 9px; background: var(--lime); } .brand-mark span { inset: -5px 11px; border-width: 0 1px; opacity: .5; } .topbar-meta { gap: 28px; font: 500 .68rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; } .topbar-meta a { color: var(--muted); text-decoration: none; transition: color .2s ease; } .topbar-meta a:hover { color: var(--ink); } .capability { display: flex; align-items: center; gap: 8px; color: var(--muted); } .capability i { width: 6px; height: 6px; border-radius: 50%; background: #e0b23b; box-shadow: 0 0 12px currentColor; } .capability.is-ready { color: var(--lime); } .capability.is-ready i { background: var(--lime); } .capability.is-missing { color: var(--danger); } .capability.is-missing i { background: var(--danger); } .app-shell { width: min(100% - 40px, 1500px); margin: 0 auto; } .hero { padding: clamp(62px, 9vw, 130px) 0 clamp(52px, 7vw, 96px); } .eyebrow, .section-index { color: var(--muted); font: 500 .66rem/1 var(--mono); letter-spacing: .14em; text-transform: uppercase; } .eyebrow { display: flex; align-items: center; gap: 12px; margin-bottom: 28px; } .eyebrow span { color: var(--lime); } .eyebrow::after { content: ""; width: 72px; height: 1px; background: var(--line-bright); } .hero h1 { max-width: 1000px; margin: 0; color: #f5f7ff; font-size: clamp(3.45rem, 8.1vw, 8.6rem); font-weight: 500; letter-spacing: -.07em; line-height: .88; } .hero h1 em { color: transparent; font-style: normal; -webkit-text-stroke: 1px rgba(225, 232, 255, .48); } .hero > p { max-width: 670px; margin: 38px 0 0; color: #a9b0c1; font-size: clamp(.98rem, 1.4vw, 1.17rem); line-height: 1.8; } .pipeline { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 38px; color: #c4cad8; font: 500 .66rem/1 var(--mono); letter-spacing: .08em; text-transform: uppercase; } .pipeline span { padding: 9px 12px; border: 1px solid var(--line); background: rgba(255,255,255,.02); } .pipeline i { color: var(--lime); font-style: normal; } .workspace-grid { display: grid; grid-template-columns: minmax(310px, .78fr) minmax(0, 1.45fr); gap: 14px; align-items: stretch; } .panel { position: relative; border: 1px solid var(--line); background: linear-gradient(145deg, rgba(18, 23, 39, .86), rgba(9, 13, 23, .82)); box-shadow: 0 30px 80px rgba(0,0,0,.18); backdrop-filter: blur(24px); } .panel::before { content: ""; position: absolute; inset: -1px auto auto -1px; width: 34px; height: 34px; border-top: 1px solid var(--lime); border-left: 1px solid var(--lime); pointer-events: none; } .control-panel { padding: clamp(24px, 3.2vw, 44px); } .panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; } .panel-heading h2 { margin: 10px 0 0; font-size: clamp(1.35rem, 2vw, 1.8rem); font-weight: 600; letter-spacing: -.035em; } .local-badge { padding: 7px 9px; border: 1px solid rgba(198,255,74,.28); color: var(--lime); background: rgba(198,255,74,.06); font: 500 .6rem/1 var(--mono); letter-spacing: .14em; } .panel-copy { margin: 22px 0 30px; color: var(--muted); font-size: .82rem; line-height: 1.7; } .field-stack, .advanced-fields { display: grid; gap: 10px; } .field-stack label, .advanced-fields label, #e2e-generation-controls label { display: grid !important; gap: 4px !important; margin-top: 12px; } label span, #e2e-generation-controls label span { color: #d9deeb; font-size: .76rem; font-weight: 600; } label small { color: #6f778b; font: .58rem/1.4 var(--mono); } input, select { width: 100%; min-width: 0; height: 45px; border: 1px solid var(--line-bright); border-radius: 0; outline: none; color: #dce2f1; background: rgba(3, 6, 12, .58); padding: 0 13px; font: .68rem/1 var(--mono); transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; } input:focus, select:focus { border-color: rgba(88,230,255,.62); background: rgba(4,10,17,.86); box-shadow: 0 0 0 3px rgba(88,230,255,.08); } select { appearance: none; background-image: linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%); background-position: calc(100% - 17px) 19px,calc(100% - 12px) 19px; background-size: 5px 5px; background-repeat: no-repeat; } .advanced { margin-top: 24px; border-block: 1px solid var(--line); } .advanced summary { display: flex; justify-content: space-between; padding: 18px 0; color: #cdd3e0; cursor: pointer; list-style: none; font-size: .76rem; font-weight: 600; } .advanced summary::-webkit-details-marker { display: none; } .advanced summary::before { content: "+"; margin-right: 10px; color: var(--lime); font: 500 .9rem var(--mono); } .advanced[open] summary::before { content: "−"; } .advanced summary small { margin-left: auto; color: var(--muted); font: .6rem var(--mono); letter-spacing: .08em; text-transform: uppercase; } .advanced-fields { padding-bottom: 22px; } .run-actions { display: grid; grid-template-columns: 1fr auto; gap: 8px; margin-top: 26px; } button { min-height: 44px; border: 1px solid var(--line-bright); color: #dfe4f0; background: rgba(255,255,255,.035); cursor: pointer; transition: transform .2s ease, border-color .2s ease, background .2s ease, color .2s ease; } button:hover:not(:disabled) { transform: translateY(-1px); border-color: rgba(198,255,74,.5); } button:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; } button:disabled { opacity: .38; cursor: not-allowed; } .run-button { display: flex; align-items: center; justify-content: space-between; min-height: 54px; padding: 0 18px; border-color: var(--lime); color: #0b0e0a; background: var(--lime); font-size: .77rem; font-weight: 800; } .run-button:hover:not(:disabled) { color: #080a07; background: #d6ff79; box-shadow: 0 10px 35px rgba(198,255,74,.12); } .run-button b { font-size: 1.1rem; } .cancel-button { padding-inline: 17px; font: .65rem var(--mono); text-transform: uppercase; } .status-card { display: grid; grid-template-columns: auto 1fr; gap: 12px; margin-top: 14px; padding: 14px; border: 1px solid var(--line); background: rgba(0,0,0,.2); } .status-pulse { width: 7px; height: 7px; margin-top: 4px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 14px rgba(198,255,74,.55); animation: pulse 2.2s ease-in-out infinite; } .status-card small { color: #697186; font: 500 .56rem/1 var(--mono); letter-spacing: .12em; } .status-card p { margin: 7px 0 0; color: #aeb5c5; font: .63rem/1.65 var(--mono); } #e2e-generation-controls { display: grid !important; gap: 18px !important; margin: 28px 0 0 !important; padding: 28px 0 0 !important; border: 0 !important; border-top: 1px solid var(--line) !important; border-radius: 0 !important; } #e2e-generation-controls h2 { margin: 0 !important; font-size: .8rem !important; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; } #e2e-generation-controls > div { gap: 8px !important; } #e2e-generation-controls > div:first-of-type { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } #e2e-generation-controls button { min-height: 36px; padding: 7px 10px; font: .62rem var(--mono); } #e2e-generation-controls [data-steps-preset] { min-width: 36px; color: var(--lime); } #e2e-generation-controls [data-testid="e2e-storage-status"], #e2e-generation-controls [data-testid="e2e-image-status"] { padding-left: 12px; border-left: 1px solid var(--line-bright); color: var(--muted); font: .59rem/1.6 var(--mono); } #e2e-generation-controls table { min-width: 760px; font: .55rem/1.5 var(--mono); } #e2e-generation-controls th, #e2e-generation-controls td { padding: 9px 8px; border-bottom: 1px solid var(--line); text-align: left; white-space: nowrap; } #e2e-generation-controls th { color: #7f8799; font-weight: 500; text-transform: uppercase; } #e2e-generation-controls td { color: #b7bece; } .viewer-panel { display: flex; min-height: 790px; padding: clamp(24px, 3.2vw, 44px); flex-direction: column; overflow: hidden; } .viewer-heading { margin-bottom: 22px; } .viewer-heading > p { margin: 0; padding: 8px 10px; border: 1px solid var(--line); color: #8d95a7; background: rgba(0,0,0,.18); font: .58rem/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; } .viewer-heading > p::before { content: "●"; margin-right: 7px; color: #555e71; } .viewer-heading > p[data-viewer-state="ready"] { color: var(--lime); border-color: rgba(198,255,74,.28); } .viewer-heading > p[data-viewer-state="ready"]::before { color: var(--lime); } .viewer-heading > p[data-viewer-state="loading"] { color: var(--cyan); } #e2e-preview-root { position: relative; width: 100%; min-height: 620px; flex: 1; overflow: hidden; border: 1px solid var(--line); background: radial-gradient(circle at center, rgba(91,79,172,.15), transparent 38%), #030509; } #e2e-preview-root::before, #e2e-preview-root::after { content: ""; position: absolute; z-index: 3; pointer-events: none; } #e2e-preview-root::before { inset: 14px; border: 1px solid rgba(255,255,255,.035); } #e2e-preview-root::after { inset: 50% 0 auto; height: 1px; background: linear-gradient(90deg,transparent,rgba(88,230,255,.12),transparent); } #e2e-preview-root .preview-panel { display: flex; width: 100%; height: 100%; min-height: 620px; flex-direction: column; } #e2e-preview-root .preview-toolbar { position: absolute; z-index: 4; right: 18px; bottom: 18px; left: 18px; display: flex; justify-content: space-between; gap: 1rem; color: #9ba3b5; font: .6rem var(--mono); } #e2e-preview-root .splat-canvas-shell { position: relative; flex: 1; min-height: 600px; overflow: hidden; background: #030509; } #e2e-preview-root .splat-canvas-host { position: absolute; inset: 0; } #e2e-preview-root .splat-canvas-host canvas { display: block; width: 100% !important; height: 100% !important; } #e2e-preview-root .splat-empty { position: absolute; inset: 0; display: grid; place-items: center; color: #b8bfce; } .viewer-placeholder { position: absolute; inset: 0; display: grid; z-index: 0; place-content: center; justify-items: center; text-align: center; background-image: radial-gradient(circle, rgba(255,255,255,.08) 1px, transparent 1px); background-size: 18px 18px; mask-image: radial-gradient(circle, #000, transparent 68%); } .orbital { position: relative; width: 170px; height: 170px; border: 1px solid rgba(88,230,255,.18); border-radius: 50%; animation: rotate 18s linear infinite; } .orbital::before, .orbital::after { content: ""; position: absolute; border-radius: 50%; border: 1px solid rgba(143,124,255,.28); transform: rotate(62deg); } .orbital::before { inset: 20px -14px; } .orbital::after { inset: -14px 20px; transform: rotate(-35deg); } .orbital span { position: absolute; inset: 54px; border-radius: 50%; background: radial-gradient(circle at 38% 30%, #e8ffb5, var(--lime) 14%, #725fff 48%, transparent 70%); filter: blur(.3px); box-shadow: 0 0 55px rgba(143,124,255,.35); } .orbital i { position: absolute; top: 50%; left: -3px; width: 6px; height: 6px; border-radius: 50%; background: var(--cyan); box-shadow: 0 0 12px var(--cyan); } .viewer-placeholder p { margin: 32px 0 5px; color: #d9deeb; font-size: .8rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; } .viewer-placeholder small { color: #6e7689; font: .6rem var(--mono); } .preview-panel + .viewer-placeholder, #e2e-preview-root:has(.preview-panel) > .viewer-placeholder { display: none; } .viewer-footer { display: flex; justify-content: space-between; padding: 13px 2px 0; color: #626a7d; font: .55rem/1 var(--mono); letter-spacing: .09em; } .notice { display: grid; grid-template-columns: auto 1fr; gap: 20px; margin: 14px 0 70px; padding: 22px 24px; border: 1px solid var(--line); color: var(--muted); background: rgba(13,17,29,.56); } .notice span { color: var(--lime); font: .6rem var(--mono); letter-spacing: .12em; } .notice p { max-width: 920px; margin: 0; font-size: .72rem; line-height: 1.7; } .error { margin: 14px 0; padding: 18px; overflow: auto; border: 1px solid rgba(255,111,145,.36); color: #ff9bb3; background: rgba(75,14,33,.22); font: .7rem/1.7 var(--mono); white-space: pre-wrap; } footer { display: flex; justify-content: space-between; width: min(100% - 40px, 1500px); margin: 0 auto; padding: 24px 0 36px; border-top: 1px solid var(--line); color: #596174; font: .55rem/1 var(--mono); letter-spacing: .1em; } @keyframes pulse { 50% { opacity: .35; box-shadow: 0 0 3px rgba(198,255,74,.2); } } @keyframes rotate { to { transform: rotate(360deg); } } @media (max-width: 980px) { .workspace-grid { grid-template-columns: 1fr; } .viewer-panel { min-height: 680px; } #e2e-preview-root, #e2e-preview-root .preview-panel { min-height: 520px; } #e2e-preview-root .splat-canvas-shell { min-height: 500px; } } @media (max-width: 620px) { .topbar, .app-shell, footer { width: min(100% - 24px, 1500px); } .topbar { min-height: 66px; } .topbar-meta { gap: 12px; } .topbar-meta > a { display: none; } .hero { padding-top: 58px; } .hero h1 { font-size: clamp(3.1rem, 16vw, 5rem); } .pipeline i { display: none; } .workspace-grid { margin-inline: -12px; } .panel { border-inline: 0; } .viewer-panel { min-height: 570px; } #e2e-preview-root, #e2e-preview-root .preview-panel { min-height: 400px; } #e2e-preview-root .splat-canvas-shell { min-height: 380px; } .viewer-heading { display: grid; } .viewer-heading > p { margin-top: 12px; width: fit-content; } .viewer-footer span:nth-child(2) { display: none; } .notice { grid-template-columns: 1fr; } footer { gap: 20px; line-height: 1.5; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; } }