File size: 17,152 Bytes
31c7d49
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
@import './e2e-lab.css';

.web-app { padding-bottom: 72px; }
.web-hero { max-width: 760px; padding: clamp(56px, 8vw, 112px) 0 46px; }
.web-hero h1 { margin: 0; font-size: clamp(3.5rem, 8vw, 7.2rem); font-weight: 500; letter-spacing: -.07em; line-height: .88; }
.web-hero h1 em { color: transparent; font-style: normal; -webkit-text-stroke: 1px rgba(225,232,255,.48); }
.web-hero > p { max-width: 670px; margin: 28px 0 0; color: #a9b0c1; font-size: 1rem; line-height: 1.8; }
.compatibility-panel { display: grid; grid-template-columns: minmax(170px, .45fr) 1fr; gap: 30px; margin-bottom: 14px; padding: 22px 26px; border: 1px solid var(--line); background: rgba(13,17,29,.65); }
.compatibility-panel h2 { margin: 8px 0 0; font-size: 1rem; font-weight: 600; }
.compatibility-panel ul { display: flex; flex-wrap: wrap; align-content: center; gap: 8px; margin: 0; padding: 0; list-style: none; }
.compatibility-panel li { padding: 8px 10px; border: 1px solid var(--line); color: var(--muted); font: .62rem/1.4 var(--mono); }
.compatibility-panel li.is-ready { border-color: rgba(198,255,74,.28); color: var(--lime); }
.compatibility-panel li.is-warning { border-color: rgba(255,190,83,.3); color: #ffca71; }
.compatibility-panel li.is-problem { border-color: rgba(255,111,145,.35); color: #ff9bb3; }
.web-workspace { display: grid; grid-template-columns: minmax(310px, .86fr) minmax(0, 1.35fr); gap: 14px; align-items: stretch; }
.web-controls, .model-panel { padding: clamp(24px, 3vw, 42px); }
.file-picker { display: flex; width: 100%; min-height: 78px; align-items: center; justify-content: space-between; margin-top: 28px; padding: 16px 18px; border-color: rgba(198,255,74,.5); color: #0b0e0a; background: var(--lime); font-weight: 800; text-align: left; }
.file-picker b { padding: 8px 10px; color: var(--ink); background: #10150e; font: .62rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.url-label { display: grid; gap: 4px; margin-top: 20px; }
.url-label span { color: #d9deeb; font-size: .76rem; font-weight: 600; }
.url-label small { color: #6f778b; font: .58rem/1.4 var(--mono); }
.url-row { display: grid; grid-template-columns: 1fr auto; gap: 8px; margin-top: 9px; }
.url-row button { padding-inline: 13px; font: .61rem var(--mono); text-transform: uppercase; }
.image-preview { display: grid; gap: 8px; margin: 15px 0 0; padding: 10px; border: 1px solid var(--line); background: repeating-conic-gradient(#161b27 0 25%, #0f131d 0 50%) 50% / 16px 16px; }
.image-preview[hidden] { display: none; }
.image-preview img { display: block; width: 100%; max-height: 280px; border: 1px solid rgba(255,255,255,.11); object-fit: contain; background: #080b11; }
.image-preview figcaption { color: #aab3c3; font: .55rem var(--mono); letter-spacing: .08em; text-transform: uppercase; }
.image-summary { min-height: 59px; margin-top: 15px; padding: 13px; border-left: 1px solid var(--line-bright); color: var(--muted); background: rgba(0,0,0,.18); font: .62rem/1.6 var(--mono); }
.image-summary[data-state="ready"] { border-color: var(--lime); color: #cbd2df; }
.image-summary[data-state="warning"] { border-color: #ffca71; color: #ffd18a; }
.drop-zone { display: block; width: 100%; min-height: 38px; margin-top: 12px; padding: 11px; border: 1px dashed var(--line-bright); color: #727b8e; background: transparent; font: .58rem/1 var(--mono); text-align: center; text-transform: uppercase; }
.web-controls.is-dragging .drop-zone { border-color: var(--cyan); color: var(--cyan); background: rgba(88,230,255,.06); }
.preview-panel-web { display: flex; min-height: 680px; padding: clamp(24px, 3vw, 42px); flex-direction: column; overflow: hidden; }
.viewer-state { padding: 8px 10px; border: 1px solid var(--line); color: var(--muted); font: .58rem/1 var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.viewer-state[data-state="ready"] { border-color: rgba(198,255,74,.28); color: var(--lime); }
.viewer-state[data-state="failed"] { border-color: rgba(255,111,145,.38); color: #ff9bb3; }
#web-preview-root { min-height: 555px; flex: 1; margin-top: 22px; border: 1px solid var(--line); background: radial-gradient(circle at center, rgba(91,79,172,.15), transparent 38%), #030509; }
#web-preview-root .preview-panel { display: flex; height: 100%; min-height: 555px; margin: 0; border: 0; flex-direction: column; background: transparent; }
#web-preview-root .preview-toolbar { position: absolute; z-index: 3; right: 14px; bottom: 14px; left: 14px; display: flex; justify-content: space-between; gap: 12px; color: #9ba3b5; font: .6rem var(--mono); }
#web-preview-root .splat-canvas-shell { position: relative; min-height: 555px; flex: 1; overflow: hidden; background: #030509; }
#web-preview-root .splat-canvas-host { position: absolute; inset: 0; }
#web-preview-root .splat-canvas-host canvas { display: block; width: 100% !important; height: 100% !important; }
#web-preview-root .splat-empty { position: absolute; inset: 0; display: grid; place-items: center; color: #aab2c2; font: .73rem var(--mono); }
.download-row { display: flex; gap: 8px; margin-top: 13px; }
.download-row button { flex: 1; min-height: 43px; font: .64rem var(--mono); }
.model-panel { margin-top: 14px; }
.model-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(190px, .4fr); gap: 26px; align-items: end; }
.model-panel label { display: grid; gap: 5px; }
.model-panel label span { color: #d9deeb; font-size: .76rem; font-weight: 600; }
.model-panel label small { color: #6f778b; font: .58rem/1.4 var(--mono); }
.model-status { min-height: 76px; padding: 13px; border-left: 1px solid var(--line-bright); color: var(--muted); background: rgba(0,0,0,.18); font: .6rem/1.65 var(--mono); }
.primary-action { display: flex; width: 100%; align-items: center; justify-content: space-between; min-height: 59px; margin-top: 23px; padding: 0 20px; border-color: var(--lime); color: #0b0e0a; background: var(--lime); font-weight: 800; }
.primary-action b { font-size: 1.2rem; }
.primary-action.is-working { color: #d9edaf; border-color: #758c3d; background: #263214; }
.run-feedback { margin-top: 14px; padding: 17px; border: 1px solid var(--line); background: rgba(0,0,0,.22); }
.run-feedback small { display: block; color: #6f778b; font: .56rem/1 var(--mono); letter-spacing: .12em; }
.run-feedback p { margin: 8px 0 0; color: #b9c0cf; font: .68rem/1.6 var(--mono); white-space: pre-wrap; }
.progress-track { height: 3px; margin-top: 14px; overflow: hidden; background: rgba(255,255,255,.07); }
.progress-track span { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--cyan), var(--lime)); transition: width .2s ease; }
.secondary-actions { display: flex; gap: 16px; margin-top: 12px; }
.secondary-actions button { min-height: 32px; padding: 0; border: 0; color: #8e97aa; background: none; font: .58rem var(--mono); text-decoration: underline; }
.diagnostics { margin-top: 14px; border: 1px solid rgba(255,111,145,.38); color: #ffb0c1; background: rgba(75,14,33,.2); }
.diagnostics[hidden] { display: none; }
.diagnostics > p { margin: 0; padding: 15px; font-size: .73rem; line-height: 1.6; }
.diagnostics details { border-top: 1px solid rgba(255,111,145,.2); padding: 11px 15px; font: .6rem/1.6 var(--mono); }
.diagnostics summary { cursor: pointer; }
.diagnostics pre { overflow: auto; white-space: pre-wrap; }
.model-panel .model-advanced { margin-top: 14px; border-top: 1px solid var(--line); }
.model-panel .model-advanced summary { padding: 14px 0; color: #8992a4; cursor: pointer; font: .62rem var(--mono); }
.model-panel .model-advanced label { display: grid; gap: 5px; padding-bottom: 16px; }
.model-panel .model-advanced label span { color: #d9deeb; font-size: .76rem; font-weight: 600; }
.model-panel .model-advanced label small { color: #6f778b; font: .58rem/1.4 var(--mono); }
.privacy-note { margin: 14px 0 0; color: #747d90; font-size: .7rem; line-height: 1.7; }
@media (max-width: 980px) { .web-workspace { grid-template-columns: 1fr; } .preview-panel-web { min-height: 550px; } #web-preview-root, #web-preview-root .preview-panel, #web-preview-root .splat-canvas-shell { min-height: 430px; } }
@media (max-width: 620px) { .compatibility-panel, .model-layout { grid-template-columns: 1fr; gap: 18px; } .web-workspace { margin-inline: -12px; } .url-row { grid-template-columns: 1fr; } .preview-panel-web { min-height: 470px; } #web-preview-root, #web-preview-root .preview-panel, #web-preview-root .splat-canvas-shell { min-height: 350px; } }

/* Keep the canvas compositor isolated while a completed scene is replaced. */
#web-preview-root { contain: layout paint; isolation: isolate; }
.viewer-state[data-state="retained"] { border-color: rgba(88,230,255,.34); color: var(--cyan); }
.preview-run-state { min-height: 34px; margin: 12px 0 0; color: #8790a3; font: .58rem/1.55 var(--mono); }
.preview-run-state[data-state="working"] { color: #c5d19d; }
.preview-run-state[data-state="retained"] { color: var(--cyan); }
.preview-run-state[data-state="ready"] { color: var(--lime); }
.preview-run-state[data-state="failed"] { color: #ff9bb3; }
.generation-flow { margin-top: 14px; padding: 18px; border: 1px solid var(--line); background: linear-gradient(115deg, rgba(88,230,255,.035), rgba(198,255,74,.02)); }
.flow-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; }
.flow-heading h3 { margin: 0; color: #dde3ef; font-size: .78rem; font-weight: 600; }
.flow-steps { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 16px 0 0; padding: 0; list-style: none; }
.flow-steps li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 9px; min-height: 84px; padding: 11px; border: 1px solid rgba(255,255,255,.07); color: #6f7789; background: rgba(0,0,0,.14); }
.flow-steps li > div { min-width: 0; }
.flow-steps strong, .flow-steps span:not(.flow-marker) { display: block; }
.flow-steps strong { color: #9ba3b4; font: .62rem/1.3 var(--mono); text-transform: uppercase; }
.flow-steps span:not(.flow-marker) { margin-top: 5px; font: .56rem/1.45 var(--mono); }
.flow-marker { color: #555d6e; font: .58rem var(--mono); }
.flow-steps small { grid-column: 2; align-self: end; color: #555d6e; font: .49rem var(--mono); letter-spacing: .1em; }
.flow-steps li[data-state="active"] { border-color: rgba(88,230,255,.42); color: #aebacb; background: rgba(88,230,255,.055); }
.flow-steps li[data-state="active"] strong, .flow-steps li[data-state="active"] .flow-marker, .flow-steps li[data-state="active"] small { color: var(--cyan); }
.flow-steps li[data-state="complete"] { border-color: rgba(198,255,74,.24); color: #9da98b; }
.flow-steps li[data-state="complete"] strong, .flow-steps li[data-state="complete"] .flow-marker, .flow-steps li[data-state="complete"] small { color: var(--lime); }
@media (max-width: 760px) { .flow-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 460px) { .flow-heading { display: block; } .flow-heading h3 { margin-top: 8px; } .flow-steps { grid-template-columns: 1fr; } }

.benchmark-report { margin-top: 14px; padding: 18px; border: 1px solid rgba(198,255,74,.24); background: linear-gradient(115deg, rgba(198,255,74,.045), rgba(88,230,255,.025)); }
.benchmark-report[hidden] { display: none; }
.benchmark-report .flow-heading { align-items: center; }
.benchmark-report h3 { margin: 5px 0 0; color: #dde3ef; font-size: .78rem; font-weight: 600; }
.benchmark-report button { min-height: 32px; padding: 0 11px; color: var(--lime); border-color: rgba(198,255,74,.36); font: .58rem var(--mono); letter-spacing: .06em; text-transform: uppercase; }
.benchmark-summary { margin: 14px 0 0; color: #c4ccda; font: .65rem/1.55 var(--mono); }
.benchmark-details { max-height: 300px; margin: 12px 0 0; padding: 13px; overflow: auto; border: 1px solid var(--line); color: #aab5c7; background: rgba(0,0,0,.22); font: .6rem/1.6 var(--mono); white-space: pre-wrap; }
@media (max-width: 460px) { .benchmark-report .flow-heading { display: flex; justify-content: space-between; } }

.hero-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 23px; }
.github-link, .hero-text-link { display: inline-flex; align-items: center; gap: 7px; min-height: 37px; padding: 0 12px; border: 1px solid var(--line-bright); color: #dce4f2; font: .59rem var(--mono); letter-spacing: .04em; text-decoration: none; text-transform: uppercase; }
.github-link { border-color: rgba(198,255,74,.42); color: var(--lime); background: rgba(198,255,74,.04); }
.github-link:hover, .github-link:focus-visible { border-color: var(--lime); background: rgba(198,255,74,.1); }
.hero-text-link:hover, .hero-text-link:focus-visible { border-color: var(--cyan); color: var(--cyan); }
.experiment-panel { display: grid; grid-template-columns: minmax(230px, .7fr) minmax(0, 1.3fr); gap: clamp(28px, 5vw, 76px); margin-top: 14px; padding: clamp(26px, 4vw, 52px); border-color: rgba(88,230,255,.26); background: linear-gradient(118deg, rgba(88,230,255,.065), rgba(198,255,74,.035)); }
.experiment-intro h2 { max-width: 510px; margin: 10px 0 0; color: #ecf1fb; font-size: clamp(1.45rem, 2.8vw, 2.55rem); font-weight: 500; letter-spacing: -.045em; line-height: 1.06; }
.experiment-copy { display: grid; align-content: start; gap: 17px; }
.experiment-copy p { max-width: 720px; margin: 0; color: #b7c0d1; font-size: .89rem; line-height: 1.78; }
.experiment-copy .github-link { justify-self: start; margin-top: 5px; }
@media (max-width: 760px) { .experiment-panel { grid-template-columns: 1fr; gap: 23px; } }
@media (max-width: 460px) { .hero-actions { display: grid; } .github-link, .hero-text-link { justify-content: space-between; } }

/* Readability and keyboard-navigation refinements. */
.skip-link { position: fixed; z-index: 20; top: 10px; left: 10px; padding: 11px 14px; transform: translateY(-160%); border: 1px solid var(--cyan); color: #061014; background: var(--cyan); font: .75rem var(--mono); text-decoration: none; transition: transform .18s ease; }
.skip-link:focus { transform: translateY(0); }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
:where(a, summary, [tabindex]):focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; }
.continue-to-engine { display: flex; min-height: 44px; align-items: center; justify-content: space-between; margin-top: 10px; padding: 0 12px; border: 1px solid rgba(88,230,255,.28); color: var(--cyan); font: .72rem var(--mono); letter-spacing: .035em; text-decoration: none; text-transform: uppercase; }
.continue-to-engine:hover { border-color: var(--cyan); background: rgba(88,230,255,.06); }
.compatibility-panel li { font-size: .72rem; }
.url-label small, .model-panel label small, .model-panel .model-advanced label small { font-size: .68rem; }
.image-preview figcaption, .viewer-state, .model-panel .model-advanced summary, .run-feedback small { font-size: .67rem; }
.drop-zone, .download-row button, .secondary-actions button { font-size: .72rem; }
.drop-zone { min-height: 44px; color: #9da8ba; }
.model-status { font-size: .72rem; }
.run-feedback p { font-size: .76rem; }
.preview-run-state, .benchmark-summary { font-size: .7rem; }
.flow-steps strong { font-size: .69rem; }
.flow-steps span:not(.flow-marker) { font-size: .66rem; }
.flow-marker, .flow-steps small { color: #8b95a8; font-size: .64rem; }
.secondary-actions button { min-height: 40px; color: #b5bece; }
.benchmark-report button, .github-link, .hero-text-link { min-height: 42px; font-size: .67rem; }
@media (max-width: 620px) { .secondary-actions { flex-direction: column; gap: 4px; } .secondary-actions button { min-height: 44px; justify-content: flex-start; } }
@media (prefers-reduced-motion: reduce) { .skip-link, .progress-track span { transition: none; } }

.progress-detail-switch { display: inline-flex; flex: 0 0 auto; padding: 3px; border: 1px solid var(--line-bright); background: rgba(0,0,0,.2); }
.progress-detail-switch button { min-height: 34px; padding: 0 11px; border: 0; color: #aeb8c9; background: transparent; font: .66rem var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.progress-detail-switch button[aria-pressed="true"] { color: #09100d; background: var(--lime); }
.progress-detail-switch button:hover:not([aria-pressed="true"]) { color: var(--cyan); background: rgba(88,230,255,.07); transform: none; }
.progress-detail-description { max-width: 740px; margin: 12px 0 0; color: #aab4c6; font: .7rem/1.6 var(--mono); }
@media (max-width: 620px) { .generation-flow .flow-heading { display: grid; align-items: start; } .progress-detail-switch { width: 100%; } .progress-detail-switch button { flex: 1; min-height: 42px; } }

.image-url-error { margin-top: 9px; padding: 11px 12px; border-left: 2px solid var(--danger); color: #ffc0cf; background: rgba(100,18,42,.24); font: .72rem/1.55 var(--mono); }
.image-url-error[hidden] { display: none; }
.image-url-error a { color: #ffd1dc; }

/* Keep pointer gestures inside the static viewer instead of competing with page touch gestures. */
#web-preview-root .splat-canvas-host { touch-action: none; }