:root{--bg: #0d0f14;--bg-elev: #161a22;--bg-elev-2: #1e2430;--border: #2a3140;--text: #e6e9ef;--text-dim: #99a2b3;--accent: #f0643c;--accent-2: #4cc9a4;--radius: 14px;--shadow: 0 8px 30px rgba(0, 0, 0, .4);--maxw: 1180px;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(1200px 800px at 70% -10%,#1a2030 0%,var(--bg) 55%);color:var(--text);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 24px;background:#0d0f14bf;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;letter-spacing:.3px}.brand .globe{width:26px;height:26px;border-radius:50%;background:conic-gradient(from 180deg,var(--accent),var(--accent-2),var(--accent));box-shadow:0 0 18px #f0643c80}.container{max-width:var(--maxw);margin:0 auto;padding:28px 24px 80px}.page-title{font-size:28px;margin:8px 0 4px}.page-sub{color:var(--text-dim);margin:0 0 28px}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:10px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text);font-size:14px;font-weight:600;cursor:pointer;transition:transform .08s ease,background .15s ease,border-color .15s ease}.btn:hover{background:var(--bg-elev-2);border-color:#3a4458}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#1a0f0a}.btn.primary:hover{filter:brightness(1.07)}.btn.ghost{background:transparent}.btn.danger{color:#ff6b6b;border-color:#4a2a2f}.btn:disabled{opacity:.5;cursor:not-allowed}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:transform .12s ease,border-color .15s ease;display:flex;flex-direction:column}.card:hover{transform:translateY(-3px);border-color:#3a4458}.card .thumb{aspect-ratio:16 / 9;background:var(--bg-elev-2) center/cover no-repeat;position:relative;display:flex;align-items:center;justify-content:center;color:var(--text-dim)}.card .thumb .placeholder{font-size:13px}.card .body{padding:14px 16px}.card .body h3{margin:0 0 4px;font-size:16px}.card .body .meta{color:var(--text-dim);font-size:13px}.badge{position:absolute;top:10px;left:10px;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.4px;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-transform:uppercase}.badge.video{color:var(--accent)}.badge.photo{color:var(--accent-2)}.badge.vr{right:10px;left:auto;color:#fff}.status-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim)}.dot{width:8px;height:8px;border-radius:50%;background:var(--text-dim)}.dot.ready{background:var(--accent-2)}.dot.processing{background:#f5c451;animation:pulse 1.2s infinite}.dot.queued{background:#6b7689}.dot.failed{background:#ff6b6b}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.progress{height:4px;background:var(--bg-elev-2);border-radius:999px;overflow:hidden;margin-top:8px}.progress>span{display:block;height:100%;background:var(--accent);transition:width .3s ease}.empty{border:1px dashed var(--border);border-radius:var(--radius);padding:48px 24px;text-align:center;color:var(--text-dim)}.row{display:flex;align-items:center;gap:12px}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}input,textarea,select{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:10px 12px;font-size:14px;font-family:inherit}input:focus,textarea:focus{outline:none;border-color:var(--accent)}label{display:block;font-size:13px;color:var(--text-dim);margin:0 0 6px}.field{margin-bottom:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0009;display:flex;align-items:center;justify-content:center;padding:20px}.modal{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-width:460px;padding:24px}.modal h2{margin:0 0 16px;font-size:20px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);padding:32px;text-align:center;color:var(--text-dim);cursor:pointer;transition:border-color .15s,background .15s}.dropzone.drag{border-color:var(--accent);background:#f0643c0f}.upload-item{padding:12px 0;border-bottom:1px solid var(--border)}.upload-item:last-child{border-bottom:none}.crumbs{color:var(--text-dim);font-size:14px;margin-bottom:6px}.crumbs a:hover{color:var(--text)}.viewer-root{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;touch-action:none;user-select:none;-webkit-user-select:none}.viewer-root canvas,.viewer-root .a-canvas,.viewer-root .a-scene{touch-action:none!important}.viewer-bar{position:absolute;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:linear-gradient(to bottom,rgba(0,0,0,.65),transparent);color:#fff;pointer-events:none}.viewer-bar>*{pointer-events:auto}.viewer-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:#fff;z-index:5;flex-direction:column;gap:14px}.spinner{width:38px;height:38px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:var(--accent);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.video-controls{position:absolute;bottom:0;left:0;right:0;z-index:10;display:flex;align-items:center;gap:14px;padding:16px 20px;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);color:#fff}.video-controls input[type=range]{flex:1;width:auto;padding:0}.icon-btn{background:#ffffff1a;border:none;color:#fff;width:42px;height:42px;border-radius:50%;cursor:pointer;font-size:16px}.icon-btn:hover{background:#fff3}.viewer-root .a-enter-vr{bottom:84px!important;right:16px!important}.hint{font-size:12px;color:var(--text-dim)}
