*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;background:#060b17;color:#e6ebff}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.button{border:0;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600;cursor:pointer}.button-primary{background:#4f83ff;color:#fff}.button-secondary{background:#2a355b;color:#fff}.button:disabled{opacity:.5;cursor:not-allowed}.muted{color:#a6b0d3}.error{color:#ff9090}.app-shell{min-height:100dvh;position:relative;display:flex;align-items:center;justify-content:center;padding:20px}.app-shell-result{align-items:flex-start;padding-block:32px}.flow-card{width:min(600px,100%);background:#161d33;border:1px solid #2e3a63;border-radius:14px;padding:22px;display:grid;grid-gap:14px;gap:14px}.result-view{width:min(1120px,100%);gap:20px}.result-hero{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:14px;gap:14px}.metric-card{background:#11182c;border:1px solid #2b375d;border-radius:14px;padding:16px;display:grid;grid-gap:10px;gap:10px}.gallery-header p,.lightbox-header p,.metric-card p{margin:0}.metric-value{margin:0;font-size:clamp(1.5rem,1.6vw + 1rem,2.4rem);line-height:1.1}.gallery-section{display:grid;grid-gap:12px;gap:12px}.gallery-header{display:grid;grid-gap:4px;gap:4px}.gallery-header h2,.lightbox-header h2{margin:0}.gallery-empty{padding:16px;border-radius:12px;border:1px dashed #364673;background:rgba(13,20,37,.65)}.gallery-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(180px,220px);grid-gap:12px;gap:12px;overflow-x:auto;padding-bottom:4px}.gallery-card{border:1px solid #32416d;border-radius:14px;background:#0d1425;padding:10px;color:inherit;display:grid;grid-gap:10px;gap:10px;cursor:pointer;text-align:left}.gallery-card:hover{border-color:#5b88ff}.gallery-image{width:100%;aspect-ratio:4/3;border-radius:10px;object-fit:cover;background:#0a1020}.gallery-card-label{font-size:14px;font-weight:600}.scene-section{margin-top:4px}.scene-viewer-shell{border:1px solid #32416d;border-radius:14px;background:#0d1425;padding:10px}.scene-viewer-frame{height:520px;border-radius:12px;overflow:hidden;background:#0a1020}.scene-viewer-loading{width:100%;height:100%;text-align:center;padding:16px}.lightbox-backdrop,.scene-viewer-loading{display:flex;align-items:center;justify-content:center}.lightbox-backdrop{position:fixed;inset:0;background:rgba(5,8,16,.84);padding:20px;z-index:20}.lightbox-dialog{width:min(1100px,100%);max-height:min(90dvh,900px);background:#0f172c;border:1px solid #31406c;border-radius:16px;display:grid;grid-gap:16px;gap:16px;padding:18px}.lightbox-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.lightbox-content{min-height:0;overflow:auto;display:flex;align-items:center;justify-content:center}.lightbox-image{max-width:100%;max-height:calc(90dvh - 140px);border-radius:12px;object-fit:contain;background:#060b17}.record-view{width:100%;min-height:100dvh;position:relative;overflow:hidden;background:#000}.camera-preview{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.guidance-overlay{position:absolute;left:12px;right:12px;top:14px;z-index:3;background:rgba(8,12,24,.72);border:1px solid rgba(150,170,220,.25);border-radius:12px;padding:12px}.guidance-title{margin:0 0 8px;font-weight:700}.guidance-list{margin:0 0 10px;padding-left:20px}.record-controls{position:absolute;left:0;right:0;bottom:14px;display:grid;grid-template-columns:1fr 1.2fr 1fr;grid-gap:10px;gap:10px;padding:0 12px;z-index:3}.unsupported-recorder{position:absolute;left:12px;right:12px;bottom:86px;z-index:4;border-radius:12px;border:1px solid #7a2136;background:rgba(58,18,32,.92);color:#ffd6df;padding:10px}.permission-gate{width:min(560px,100%);background:#161d33;border:1px solid #2e3a63;border-radius:14px;padding:22px;display:grid;grid-gap:12px;gap:12px}.error-banner{position:fixed;top:12px;left:50%;transform:translateX(-50%);width:min(640px,calc(100% - 24px));border-radius:12px;border:1px solid #7a2136;background:#3a1220;color:#ffd6df;padding:12px;display:flex;justify-content:space-between;gap:10px;align-items:center;z-index:11}.progress-overlay{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100% - 24px));background:rgba(14,20,37,.95);border:1px solid #2e3a63;border-radius:12px;padding:12px 14px;display:grid;grid-gap:12px;gap:12px;text-align:center;z-index:10}.progress-overlay p{margin:0}.progress-track{width:100%;height:10px;border-radius:999px;background:#131f3f;border:1px solid #2a3d73;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#3f72f8,#64a0ff);transition:width .16s ease}.waiting-indicator{display:flex;align-items:center;justify-content:center;gap:8px;min-height:18px}.waiting-indicator span{width:10px;height:10px;border-radius:999px;background:#64a0ff;opacity:.35;animation:waiting-pulse 1.1s ease-in-out infinite}.waiting-indicator span:nth-child(2){animation-delay:.15s}.waiting-indicator span:nth-child(3){animation-delay:.3s}@keyframes waiting-pulse{0%,80%,to{transform:scale(.8);opacity:.35}40%{transform:scale(1);opacity:1}}@media (min-width:900px){.record-view{width:min(520px,100%);min-height:90dvh;border-radius:18px;border:1px solid #2d3b64}}@media (max-width:820px){.metrics-grid{grid-template-columns:1fr}.gallery-strip{grid-auto-columns:minmax(160px,70vw)}.lightbox-dialog{padding:14px}.lightbox-header{flex-direction:column}.scene-viewer-frame{height:360px}}