Spaces:
Configuration error
Configuration error
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; }
|