@import"https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=Manrope:wght@300;400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}body{margin:0;font-family:Manrope,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#fbfbfb;color:#1a1a1a;font-size:16px;line-height:1.5}#root{height:100vh;overflow:hidden}:root{--color-primary: #1a1a1a;--color-primary-dark: #000000;--color-black: #1a1a1a;--color-white: #ffffff;--color-bg: #fbfbfb;--color-surface: #fbfbfb;--color-subtle: #f5f5f5;--color-text: #1a1a1a;--color-text-primary: #1a1a1a;--color-text-secondary: #666666;--color-text-muted: #a0aec0;--color-text-error: #c53030;--color-border: #333333;--color-border-hover: #666666;--color-border-focus: #1a1a1a;--color-input-border: #dddddd;--color-bg-primary: #fbfbfb;--color-bg-secondary: #f7fafc;--color-bg-tertiary: #edf2f7;--color-bg-hover: #f7fafc;--color-accent-green: #517e51;--color-accent-purple: #896895;--color-accent-pink: #929292;--color-accent-blue: #a8c5d5;--color-accent: #666666;--color-success: #48bb78;--color-success-light: #e8f5e9;--color-success-dark: #2e7d32;--color-warning: #ed8936;--color-warning-light: #fff3cd;--color-error: #f44336;--color-error-light: #ffebee;--color-error-dark: #c62828;--color-info: #2196f3;--color-info-light: #e3f2fd;--color-info-dark: #1565c0;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--spacing-2xl: 40px;--spacing-3xl: 48px;--spacing-4xl: 64px;--spacing-5xl: 80px;--spacing-6xl: 96px;--radius-sm: 2px;--radius-base: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-2xl: 16px;--radius-3xl: 24px;--radius-full: 9999px;--shadow-xs: 0 0 0 1px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .06);--font-heading: "Space Grotesk", sans-serif;--font-body: "Manrope", sans-serif;--font-family: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--font-size-5xl: 3rem;--font-size-6xl: 3.75rem;--font-size-7xl: 4.5rem;--font-size-8xl: 6rem;--font-size-9xl: 8rem;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--line-height-none: 1;--line-height-tight: 1.25;--line-height-snug: 1.375;--line-height-normal: 1.5;--line-height-relaxed: 1.625;--line-height-loose: 2;--letter-spacing-tighter: -.05em;--letter-spacing-tight: -.025em;--letter-spacing-normal: 0;--letter-spacing-wide: .025em;--letter-spacing-wider: .05em;--letter-spacing-widest: .1em;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--transition-standard: .3s cubic-bezier(.4, 0, .2, 1);--transition-smooth: .5s cubic-bezier(.4, 0, .2, 1);--header-height: 72px;--sidebar-width: 64px}:root.dark{--color-primary: #ffffff;--color-primary-dark: #e5e5e5;--color-black: #ffffff;--color-white: #1a1a1a;--color-bg: #0d0d0d;--color-surface: #1a1a1a;--color-subtle: #262626;--color-text: #f5f5f5;--color-text-primary: #f5f5f5;--color-text-secondary: #a3a3a3;--color-text-muted: #737373;--color-text-error: #f87171;--color-border: #404040;--color-border-hover: #525252;--color-border-focus: #737373;--color-input-border: #525252;--color-bg-primary: #0d0d0d;--color-bg-secondary: #171717;--color-bg-tertiary: #262626;--color-bg-hover: #262626;--color-accent-green: #6baa6b;--color-accent-purple: #a785b3;--color-accent-pink: #b0b0b0;--color-accent-blue: #7db3cc;--color-accent: #a3a3a3;--color-success: #4ade80;--color-success-light: #14532d;--color-success-dark: #86efac;--color-warning: #fb923c;--color-warning-light: #451a03;--color-error: #f87171;--color-error-light: #450a0a;--color-error-dark: #fca5a5;--color-info: #60a5fa;--color-info-light: #1e3a5f;--color-info-dark: #93c5fd;--shadow-xs: 0 0 0 1px rgba(255, 255, 255, .05);--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-base: 0 1px 3px 0 rgba(0, 0, 0, .4), 0 1px 2px 0 rgba(0, 0, 0, .3);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .4), 0 2px 4px -1px rgba(0, 0, 0, .3);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -2px rgba(0, 0, 0, .3);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 10px 10px -5px rgba(0, 0, 0, .3);--shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, .6);--shadow-inner: inset 0 2px 4px 0 rgba(0, 0, 0, .3)}:root.dark body{background:#0d0d0d;color:#f5f5f5}:root.dark ::-webkit-scrollbar-track{background:#262626}:root.dark ::-webkit-scrollbar-thumb{background:#525252}:root.dark ::-webkit-scrollbar-thumb:hover{background:#737373}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-tight);color:var(--color-text-primary)}.h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);letter-spacing:-.02em;line-height:var(--line-height-tight)}.h2{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);letter-spacing:-.01em;line-height:var(--line-height-tight)}.h3{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text-primary)}.text-body{font-size:var(--font-size-base);font-weight:var(--font-weight-normal);color:var(--color-text-primary)}.text-small{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:14px 36px;border:none;border-radius:var(--radius-lg);font-family:var(--font-body);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);letter-spacing:.5px;cursor:pointer;transition:var(--transition-standard);outline:none;text-decoration:none;text-transform:none}.btn-primary{background:var(--color-primary);color:var(--color-surface)}.btn-primary:hover:not(:disabled){background:var(--color-primary-dark);transform:translateY(-2px);box-shadow:0 8px 20px #00000026}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:transparent;color:var(--color-primary);border:2px solid var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-primary);color:var(--color-surface);border-color:var(--color-primary);transform:translateY(-2px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn--md{padding:8px 16px;letter-spacing:normal}.card{background:var(--color-white);border:none;border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-base);transition:var(--transition-standard)}.card-hover:hover{transform:translateY(-4px);box-shadow:0 12px 30px #00000014}.input{width:100%;padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius-lg);font-family:var(--font-body);font-size:var(--font-size-sm);color:var(--color-text-primary);background:var(--color-white);transition:var(--transition-base);outline:none}.input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #6666661a}.input::placeholder{color:var(--color-text-muted)}.badge{display:inline-flex;align-items:center;padding:var(--spacing-xs) var(--spacing-md);border-radius:var(--radius-base);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);text-transform:uppercase;letter-spacing:.5px}.badge-success{background:var(--color-success-light);color:var(--color-success-dark)}.badge-warning{background:var(--color-warning-light);color:var(--color-warning)}.badge-error{background:var(--color-error-light);color:var(--color-error-dark)}.badge-info{background:var(--color-info-light);color:var(--color-info-dark)}.badge-pending-approval{background:#f3e8ff;color:#7c3aed}.badge-qc-pending{background:#e0e7ff;color:#4338ca}.badge-revision{background:#fed7aa;color:#9a3412}.badge-qc-revision{background:#fee2e2;color:#991b1b}.badge-client-revision{background:#fef3c7;color:#92400e}.badge-revised{background:#fff3e0;color:#e65100;border:1px solid #ffb74d}.badge-delivered{background:#f3f4f6;color:#374151}.badge-placeholder{background:#f3f4f6;color:#d1d5db}.badge-placeholder:after{display:inline;content:"Loading...";background:linear-gradient(90deg,#d1d5db 25%,#e8eaed,#d1d5db 75%);background-size:200% 100%;animation:badge-ripple 1.5s linear infinite;color:transparent;line-height:1;margin-block:2.75px}@keyframes badge-ripple{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{display:inline-block;height:14px;border-radius:4px;background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6,#e5e7eb 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s linear infinite}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.w-full{width:100%}.btn.w-full{display:flex}.h-full{height:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-subtle)}::-webkit-scrollbar-thumb{background:var(--color-accent);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--color-primary)}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-in{animation:slideIn var(--transition-smooth)}.animate-fade-in{animation:fadeIn var(--transition-smooth)}.animate-slide-up{animation:slideUp var(--transition-smooth)}.grid-pattern{background-image:linear-gradient(rgba(0,0,0,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.02) 1px,transparent 1px);background-size:20px 20px}.subtle-grid{background-size:40px 40px;opacity:.03}.pattern-dots{background-image:radial-gradient(circle,rgba(0,0,0,.05) 1px,transparent 1px);background-size:20px 20px}.pattern-diagonal{background-image:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(0,0,0,.02) 10px,rgba(0,0,0,.02) 20px)}.accent-text{background:linear-gradient(135deg,var(--color-accent-purple),var(--color-accent-green));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.focus-visible:focus{outline:none;ring:2px solid rgba(102,102,102,.4);ring-offset:2px;ring-offset-color:#fbfbfb}:root.dark .badge-pending-approval{background:#4c1d95;color:#c4b5fd}:root.dark .badge-qc-pending{background:#312e81;color:#a5b4fc}:root.dark .badge-revision{background:#7c2d12;color:#fed7aa}:root.dark .badge-qc-revision{background:#7f1d1d;color:#fecaca}:root.dark .badge-client-revision{background:#78350f;color:#fde68a}:root.dark .badge-delivered{background:#374151;color:#d1d5db}:root.dark .badge-placeholder{background:#404040}:root.dark .badge-placeholder:after{color:#525252}:root.dark .card{background:#1a1a1a;border:1px solid #333333}:root.dark .input{background:#1a1a1a;border-color:#404040;color:#f5f5f5}:root.dark .input:focus{border-color:#737373;box-shadow:0 0 0 3px #73737333}:root.dark .input::placeholder{color:#737373}:root.dark .grid-pattern{background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 1px)}:root.dark .pattern-dots{background-image:radial-gradient(circle,rgba(255,255,255,.08) 1px,transparent 1px)}:root.dark .pattern-diagonal{background-image:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(255,255,255,.03) 10px,rgba(255,255,255,.03) 20px)}:root.dark .focus-visible:focus{ring-offset-color:#0d0d0d}.app-layout{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);min-height:var(--header-height);padding:var(--spacing-md) var(--spacing-xl);border-bottom:1px solid var(--color-input-border);background:var(--color-surface)}.brand-container{display:flex;align-items:center;gap:10px;text-decoration:none;transition:opacity var(--transition-base)}.brand-container:hover{opacity:.8}.inform-logo-img{height:32px;width:auto;object-fit:contain}.product-name{font-size:var(--font-size-xl);font-weight:var(--font-weight-normal);color:var(--color-text-secondary)}.env-tag{padding:2px var(--spacing-xs);border:1px solid var(--color-warning);border-radius:var(--radius-base);color:var(--color-warning);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);letter-spacing:var(--letter-spacing-wide)}.app-header-actions{display:flex;align-items:center;gap:var(--spacing-md)}.app-main{flex:1;overflow-y:auto;background:var(--color-bg)}.page{max-width:1100px;margin:0 auto;padding:var(--spacing-2xl) var(--spacing-xl)}.page-lede{color:var(--color-text-secondary);margin-bottom:var(--spacing-xl)}.start-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-lg) 0}.start-hint{width:100%;margin:0;color:var(--color-text-secondary);font-size:var(--font-size-sm)}.drop-zone{border:2px dashed var(--color-input-border);border-radius:var(--radius-xl);padding:var(--spacing-4xl) var(--spacing-xl);text-align:center;background:var(--color-subtle);transition:var(--transition-base)}.drop-zone:hover{border-color:var(--color-border-hover);background:var(--color-white)}.drop-zone.drag-active{border-color:var(--color-primary);background:var(--color-white)}.drop-zone-icon{width:56px;height:56px;margin:0 auto var(--spacing-lg);color:var(--color-text-muted)}.drop-zone-title{font-family:var(--font-heading);margin:0 0 var(--spacing-sm)}.drop-zone-hint{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0 0 var(--spacing-lg)}.file-input-hidden{display:none}.selected-file{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border:1px solid var(--color-input-border);border-radius:var(--radius-lg);background:var(--color-white);margin-bottom:var(--spacing-lg)}.selected-file-meta{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.progress-track{height:6px;border-radius:var(--radius-full);background:var(--color-bg-tertiary);overflow:hidden}.progress-fill{height:100%;background:var(--color-primary);transition:width var(--transition-base)}.notice{padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);font-size:var(--font-size-sm);margin-bottom:var(--spacing-lg)}.notice-warning{background:var(--color-warning-light);color:var(--color-warning)}.notice-error{background:var(--color-error-light);color:var(--color-error-dark)}.notice-success{background:var(--color-success-light);color:var(--color-success-dark)}.notice code{display:block;margin-top:var(--spacing-xs);font-size:var(--font-size-xs);overflow-wrap:anywhere}.notice code+code{opacity:.75}.notice summary{cursor:pointer}.viewer-layout{--viewer-panel-height: max(62vh, 380px);display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:var(--spacing-lg);align-items:start}.viewer-canvas{position:relative;width:100%;height:var(--viewer-panel-height);border-radius:var(--radius-lg);overflow:hidden;background:var(--color-subtle);box-shadow:var(--shadow-base)}.viewer-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--color-text-secondary);font-size:var(--font-size-sm);pointer-events:none}.viewer-side{display:flex;flex-direction:column;gap:var(--spacing-md)}.viewer-video{display:block;width:auto;height:auto;max-width:100%;max-height:var(--viewer-panel-height);margin:0 auto;object-fit:contain;border-radius:var(--radius-lg);background:var(--color-black)}.viewer-hint{color:var(--color-text-muted);font-size:var(--font-size-xs)}.stat-row{display:flex;justify-content:space-between;gap:var(--spacing-md);font-size:var(--font-size-sm);padding:var(--spacing-xs) 0}.stat-row dt{color:var(--color-text-secondary)}.stat-row dd{margin:0;font-variant-numeric:tabular-nums}@media(max-width:900px){.viewer-layout{grid-template-columns:1fr}}.scan-list{list-style:none;margin:0;padding:0;border:1px solid var(--color-input-border);border-radius:var(--radius-lg);overflow:hidden}.scan-list li+li{border-top:1px solid var(--color-input-border)}.scan-list-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);background:var(--color-surface);color:var(--color-text-primary);text-decoration:none;transition:background var(--transition-base)}.scan-list-row:hover{background:var(--color-bg)}.scan-list-name{display:flex;align-items:center;gap:var(--spacing-sm);font-weight:var(--font-weight-medium);min-width:0}.scan-list-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scan-list-when{white-space:nowrap}@media(max-width:640px){.scan-list-row{grid-template-columns:1fr auto;gap:var(--spacing-xs) var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md)}.scan-list-name{grid-column:1 / -1}}.address-grid{display:grid;grid-template-columns:2fr .6fr 1fr;gap:var(--spacing-md);margin-top:var(--spacing-md)}@media(max-width:640px){.address-grid{grid-template-columns:1fr}}.login-main{min-height:100%;display:flex;align-items:center;justify-content:center;padding:var(--spacing-3xl) var(--spacing-lg)}.login-container{width:100%;max-width:420px}.login-form-header{text-align:center;margin-bottom:var(--spacing-2xl)}.login-logo{height:32px;width:auto;object-fit:contain;margin-bottom:var(--spacing-xl)}.login-form-header h1{font-size:var(--font-size-3xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-tight);margin:0 0 var(--spacing-sm)}.login-form-header p{color:var(--color-text-secondary);margin:0}.login-form{display:flex;flex-direction:column;gap:var(--spacing-lg)}.email-auth-section{display:flex;flex-direction:column;gap:var(--spacing-md)}.auth-field{display:flex;flex-direction:column;gap:var(--spacing-xs);text-align:left}.auth-field label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.google-signin-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 16px;background:#fff;color:#3c4043;border:1px solid #dadce0;border-radius:var(--radius-md);font-family:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background-color var(--transition-base),box-shadow var(--transition-base)}.google-signin-btn:hover:not(:disabled){background:#f8f9fa;box-shadow:var(--shadow-sm)}.google-signin-btn:disabled{opacity:.6;cursor:not-allowed}.auth-submit-btn{padding:10px 16px;border:none;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-white);font-family:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:opacity var(--transition-base)}.auth-submit-btn:hover:not(:disabled){opacity:.9}.auth-submit-btn:disabled{opacity:.5;cursor:not-allowed}.auth-note{color:var(--color-text-secondary);font-size:var(--font-size-sm);text-align:center;margin:0;line-height:1.5}.user-menu-container{position:relative}.user-info{display:flex;align-items:center;gap:var(--spacing-sm);padding:6px 10px;border:none;border-radius:var(--radius-md);background:none;color:var(--color-text-secondary);font-family:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background .15s}.user-info:hover{background:var(--color-bg-hover)}.user-menu-chevron{transition:transform var(--transition-base)}.user-menu-chevron.open{transform:rotate(180deg)}.user-menu-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:200px;padding:var(--spacing-xs);border:1px solid var(--color-input-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-md);z-index:50}.user-menu-detail{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);padding:10px 12px;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.logout-button{display:flex;align-items:center;gap:var(--spacing-sm);padding:8px 16px;border:1px solid var(--color-input-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text-primary);font-family:inherit;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:all var(--transition-base)}.logout-button:hover{background:var(--color-bg);border-color:var(--color-border-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.spin-slow{animation:spin 2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.capability-list ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-sm)}.capability-list li{display:flex;align-items:flex-start;gap:var(--spacing-sm)}.capability-ok svg{color:var(--color-success);flex:none;margin-top:3px}.capability-missing svg{color:var(--color-text-muted);flex:none;margin-top:3px}.record-stage{display:none}.record-stage--active{display:block;position:fixed;inset:0;z-index:50;background:#000}.record-preview{width:100%;height:100%;object-fit:cover;display:block}.record-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:max(var(--spacing-md),env(safe-area-inset-top)) var(--spacing-md) max(var(--spacing-xl),env(safe-area-inset-bottom));pointer-events:none}.record-overlay>*{pointer-events:auto}.record-top{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm)}.record-top .record-stats{justify-content:center}.record-timer{align-self:center;display:inline-flex;align-items:baseline;gap:var(--spacing-sm);padding:.35rem .9rem;border-radius:var(--radius-lg);background:#0000008c;color:#fff;font-variant-numeric:tabular-nums}.record-timer-dot{color:#ff3b30;animation:record-blink 1s steps(2,start) infinite}.record-timer-clock{font-size:1.6rem;font-weight:600}.record-timer-left{font-size:var(--font-size-sm);opacity:.85}.record-timer--ending{background:#c81e1ed9}@keyframes record-blink{to{visibility:hidden}}.record-stats{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);align-items:center;color:#fff;font-size:var(--font-size-sm);text-shadow:0 1px 2px rgba(0,0,0,.8)}.record-controls{display:flex;justify-content:center;gap:var(--spacing-md)}.record-start,.record-stop,.record-close{color:#fff;border:2px solid #fff;border-radius:var(--radius-full);padding:var(--spacing-md) var(--spacing-xl);font-size:var(--font-size-lg)}.record-start,.record-stop{background:var(--color-error)}.record-close{background:#0000008c}.capture-missing{color:var(--color-text-muted)}.viewer-canvas--splat{background:var(--color-surface)}.splat-rail{position:absolute;inset:0;display:flex;flex-direction:column}.splat-rail-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.splat-rail-canvas{display:block;touch-action:none}.splat-rail-overlay{text-align:center}.splat-rail-controls{display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:var(--spacing-sm);flex-wrap:wrap;background:var(--color-surface);-webkit-user-select:none;user-select:none;touch-action:none}.splat-rail-readout{min-width:4.5em;text-align:center;font-size:var(--font-size-sm);font-variant-numeric:tabular-nums;color:var(--color-text-secondary)}.page--narrow{max-width:560px}.record-title{text-align:center;margin-top:0}.record-actions{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.record-actions .btn{width:100%;max-width:360px;justify-content:center;padding:14px var(--spacing-xl);font-size:var(--font-size-md)}.record-address{margin-top:var(--spacing-lg);color:var(--color-text-secondary)}.record-address summary{cursor:pointer;font-size:var(--font-size-sm);padding:var(--spacing-xs) 0}.record-address .address-grid{margin-top:var(--spacing-sm)}@media(max-width:640px){.page{padding:var(--spacing-lg) var(--spacing-md)}.app-header{padding:var(--spacing-sm) var(--spacing-md);flex-wrap:wrap}.product-name{font-size:var(--font-size-md)}.app-header-actions{gap:var(--spacing-sm)}.user-name{display:none}.record-stats{font-size:var(--font-size-xs);gap:var(--spacing-xs)}.record-start,.record-stop,.record-close{padding:var(--spacing-sm) var(--spacing-lg);font-size:var(--font-size-md)}.drop-zone{padding:var(--spacing-xl) var(--spacing-md)}.scan-list-row{flex-wrap:wrap}}.capability-card h3,.card>h3{margin-top:0}.capability-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--spacing-sm);font-size:var(--font-size-md)}.capability-hint{margin:var(--spacing-md) 0 0}.drop-zone-actions{display:flex;gap:var(--spacing-sm);justify-content:center;flex-wrap:wrap}.record-actions{display:flex;flex-direction:row;justify-content:center;gap:var(--spacing-md);margin:var(--spacing-xl) 0 0}.record-actions .btn{min-width:160px;justify-content:center;padding:14px var(--spacing-xl);font-size:var(--font-size-md)}.page--narrow .card+.card,.page--narrow .card+.progress-track,.page--narrow .selected-file+.card{margin-top:var(--spacing-md)}@media(max-width:640px){.page--narrow,.page--with-actions{padding-bottom:104px}.record-actions{position:fixed;left:0;right:0;bottom:0;z-index:40;margin:0;padding:var(--spacing-md) var(--spacing-md) max(var(--spacing-md),env(safe-area-inset-bottom));background:var(--color-surface);border-top:1px solid var(--color-input-border)}.record-actions .btn{flex:1;min-width:0}}.splat-rail-canvas{cursor:grab;touch-action:none}.splat-rail-canvas:active{cursor:grabbing}.splat-rail-btn{min-width:2.75rem;padding-left:var(--spacing-sm);padding-right:var(--spacing-sm)}.splat-rail-controls .btn.is-active{outline:2px solid var(--color-primary, currentColor);outline-offset:-2px}.scan-header{display:flex;align-items:center;gap:var(--spacing-md);flex-wrap:wrap;margin-bottom:var(--spacing-lg)}.viewer-main{min-width:0}.view-tabs{position:absolute;left:var(--spacing-sm);top:var(--spacing-sm);z-index:2;display:inline-flex;padding:2px;border-radius:var(--radius-lg);background:var(--color-subtle);box-shadow:var(--shadow-base)}.view-tab{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-md);border:0;border-radius:calc(var(--radius-lg) - 2px);background:transparent;color:var(--color-text-secondary);font:inherit;font-size:var(--font-size-sm);cursor:pointer}.view-tab.is-selected{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-base)}.view-size-toggles{position:absolute;right:var(--spacing-sm);top:var(--spacing-sm);z-index:2;display:inline-flex;gap:var(--spacing-xs)}.view-size-toggle{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border:0;border-radius:var(--radius-lg);background:var(--color-subtle);color:var(--color-text-secondary);box-shadow:var(--shadow-base);cursor:pointer}.view-size-toggle:hover{color:var(--color-text)}@media(pointer:coarse){.view-size-toggle{width:2.75rem;height:2.75rem}}@media(max-width:640px){.view-tab{padding-inline:var(--spacing-sm);font-size:var(--font-size-xs)}}.viewer-layout--theater{--viewer-panel-height: max(78vh, 480px);grid-template-columns:1fr}.scan-actions-card{display:flex;flex-direction:column;gap:var(--spacing-sm)}.scan-actions-status{display:flex;justify-content:space-between;align-items:center;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.splat-rail-focal{display:inline-flex;align-items:center;gap:.3rem;margin-left:var(--spacing-xs);color:var(--color-text-secondary)}.splat-rail-focal input[type=range]{width:6.5rem;accent-color:var(--color-text);cursor:ew-resize}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.flythrough-page{position:fixed;inset:0;background:#000}.flythrough-page .viewer-overlay{color:#ddd}.flythrough-page .splat-rail-controls{position:absolute;left:50%;bottom:max(var(--spacing-md),env(safe-area-inset-bottom));transform:translate(-50%);width:max-content;max-width:calc(100% - var(--spacing-md) * 2);border:1px solid rgb(255 255 255 / 14%);border-radius:1.5rem;background:#1616188c;-webkit-backdrop-filter:blur(20px) saturate(140%);backdrop-filter:blur(20px) saturate(140%);box-shadow:0 8px 30px #00000073}@supports not (backdrop-filter: blur(1px)){.flythrough-page .splat-rail-controls{background:#161618e0}}.flythrough-page .splat-rail-controls .btn-secondary{border-color:transparent;background:#ffffff1f;color:#f2f2f2}.flythrough-page .splat-rail-controls .btn-secondary:hover:not(:disabled){border-color:transparent;background:#ffffff38;color:#fff}.flythrough-page .splat-rail-controls .btn:disabled{opacity:.4}.flythrough-page .splat-rail-readout,.flythrough-page .splat-rail-focal{color:#e8e8e8}.flythrough-page-back{position:absolute;top:var(--spacing-sm);left:var(--spacing-sm);z-index:2;display:inline-flex;align-items:center;gap:.35rem;background:var(--color-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-base)}.flythrough-page-message{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);color:#ddd}.view-tab--link{padding-inline:.5rem;text-decoration:none}
