:root{--bg-main:#09090b;--bg-surface:#18181b73;--bg-hud:#09090be6;--border-light:#ffffff0d;--border-focus:#ffffff40;--text-primary:#fafafa;--text-secondary:#a1a1aa;--text-muted:#52525b;--accent-primary:#fff;--accent-car:#0ea5e9;--accent-person:#f43f5e;--accent-bicycle:#10b981;--accent-motorcycle:#a855f7;--accent-bus:#eab308;--accent-truck:#ff7e3b;--font-sans:"Outfit", "Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", "Fira Code", monospace;font-family:var(--font-sans);background-color:var(--bg-main);color:var(--text-primary);box-sizing:border-box}*,:before,:after{box-sizing:inherit}body{background-color:var(--bg-main);-webkit-font-smoothing:antialiased;background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px);background-size:50px 50px;background-attachment:fixed;min-height:100vh;margin:0;padding:0}#root{flex-direction:column;gap:24px;width:100%;max-width:1400px;min-height:100vh;margin:0 auto;padding:24px;display:flex}.glass-panel{background:var(--bg-surface);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-light);border-radius:16px;padding:20px;transition:all .3s cubic-bezier(.4,0,.2,1);box-shadow:0 8px 32px #0000005e}.glass-panel:hover{border-color:#ffffff26}.glass-header{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-light);background:#11192880;border-radius:16px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:16px 24px;display:flex}.header-left{align-items:center;gap:16px;display:flex}.header-logo-icon{color:var(--accent-primary);width:32px;height:32px}.glass-header h1{background:linear-gradient(135deg,#fff 0%,#a5b4fc 100%);-webkit-text-fill-color:transparent;letter-spacing:-.5px;-webkit-background-clip:text;margin:0;font-size:24px;font-weight:800}.subtitle{color:var(--text-secondary);margin:2px 0 0;font-size:12px}.header-right{align-items:center;gap:12px;display:flex}.lang-switcher{border:1px solid var(--border-light);background:#ffffff0a;border-radius:8px;align-items:center;gap:4px;margin-right:8px;padding:3px 6px;display:flex}.lang-icon{color:var(--text-muted)}.lang-btn{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:700;transition:all .15s}.lang-btn:hover{color:#fff}.lang-btn.active{background:var(--accent-primary);color:#09090b;box-shadow:0 2px 8px -2px #ffffff1a}.status-badge{border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:8px 14px;font-size:12px;font-weight:600;display:flex}.badge-icon{width:14px;height:14px}.status-loaded{color:#34d399;background:#10b9811a;border-color:#10b98133}.status-loading{color:#fbbf24;background:#f59e0b1a;border-color:#f59e0b33}.status-active{color:#818cf8;background:#6366f11a;border-color:#6366f133}.status-idle{color:var(--text-secondary);background:#6b72801a;border-color:#6b728033}.main-layout{grid-template-columns:1.6fr 1fr;gap:24px;display:grid}@media (width<=1024px){.main-layout{grid-template-columns:1fr}}.layout-column{flex-direction:column;gap:24px;display:flex}.video-viewport{aspect-ratio:16/9;background:#04060a;border:1px solid #ffffff0d;border-radius:12px;width:100%;position:relative;overflow:hidden}.main-video-element{object-fit:contain;width:100%;height:100%}.overlay-canvas{object-fit:contain;pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.video-overlay-screen{z-index:10;color:#fff;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:16px;width:100%;height:100%;padding:20px;display:flex;position:absolute;top:0;left:0}.loading-screen,.error-screen{-webkit-backdrop-filter:blur(8px);background:#09090bd9}.loading-sub{color:var(--text-secondary);font-size:14px}.error-icon{color:var(--accent-person)}.play-overlay{cursor:pointer;background:#09090b26;transition:all .3s}.play-overlay:hover{background:#ffffff05}.play-overlay span{color:#fff;-webkit-backdrop-filter:blur(4px);background:#09090bbf;border:1px solid #ffffff0d;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:500;box-shadow:0 4px 12px #00000080}.play-btn-circle{background:var(--accent-primary);border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;transition:all .2s;display:flex;transform:scale(1);box-shadow:0 0 20px #ffffff26}.play-overlay:hover .play-btn-circle{transform:scale(1.1);box-shadow:0 0 30px #ffffff40}.play-icon-hud{fill:#09090b;color:#09090b;margin-left:4px}.viewport-hud{pointer-events:none;justify-content:space-between;display:flex;position:absolute;top:16px;left:16px;right:16px}.hud-metric{background:var(--bg-hud);border:1px solid var(--border-light);color:#34d399;border-radius:6px;padding:6px 12px;font-size:11px;font-weight:700}.video-controls{align-items:center;gap:16px;margin-top:16px;display:flex}.control-btn{cursor:pointer;border:none;border-radius:10px;align-items:center;gap:10px;padding:12px 24px;font-weight:700;transition:all .2s;display:flex}.btn-paused{background:var(--accent-primary);color:#09090b;box-shadow:0 4px 12px #ffffff0d}.btn-paused:hover{background:#e4e4e7}.btn-playing{color:#fff;background:#ffffff0f;border:1px solid #ffffff1a}.btn-playing:hover{background:#ffffff1f;border-color:#fff3}.file-upload-section{flex-grow:1}.upload-label{border:1px dashed var(--border-light);cursor:pointer;background:#ffffff0d;border-radius:10px;justify-content:center;align-items:center;gap:10px;padding:12px 20px;font-weight:600;transition:all .2s;display:flex}.upload-label:hover{border-color:var(--border-focus);background:#ffffff14}.drag-drop-zone{border:2px dashed var(--border-light);text-align:center;color:var(--text-secondary);border-radius:10px;margin-top:12px;padding:14px;font-size:12px;transition:all .2s}.drag-active{border-color:var(--accent-primary);background:#6366f10d}.url-input-form{margin-top:16px}.input-group{border:1px solid var(--border-light);background:#ffffff08;border-radius:10px;align-items:center;gap:8px;padding:4px 6px;display:flex}.input-icon{color:var(--text-muted);margin-left:8px}.text-input{color:#fff;background:0 0;border:none;flex-grow:1;padding:8px;font-size:13px}.text-input:focus{outline:none}.btn-secondary{color:#fff;cursor:pointer;background:#ffffff14;border:none;border-radius:8px;padding:8px 16px;font-weight:600;transition:all .2s}.btn-secondary:hover{background:#ffffff26}.stats-dashboard{grid-template-columns:1fr;gap:16px;display:grid}.stat-card{flex-direction:column;gap:16px;display:flex}.card-header{justify-content:space-between;align-items:center;display:flex}.title-area{flex-direction:column;display:flex}.stat-card h3{margin:0;font-size:16px;font-weight:700}.japanese-sub{opacity:.65;margin-top:2px;font-size:11px}.icon-wrapper{border-radius:12px;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.card-body{flex-direction:column;gap:10px;display:flex}.metric-row{color:var(--text-secondary);justify-content:space-between;align-items:center;font-size:13px;display:flex}.metric-value{font-family:var(--font-mono);color:var(--text-primary);font-weight:700}.live-row{background:#ffffff05;border:1px solid #ffffff08;border-radius:8px;padding:8px 12px}.live-value{font-size:18px}.metric-icon{vertical-align:text-bottom;color:var(--text-muted);margin-right:6px}.glow-car{box-shadow:0 4px 20px -5px #0ea5e926}.glow-person{box-shadow:0 4px 20px -5px #f43f5e26}.glow-bicycle{box-shadow:0 4px 20px -5px #eab30826}.live-dot{background-color:#10b981;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block}.settings-panel{flex-direction:column;gap:16px;display:flex}.panel-header{border-bottom:1px solid var(--border-light);align-items:center;gap:12px;padding-bottom:12px;display:flex}.panel-icon{color:var(--accent-primary)}.settings-panel h2{margin:0;font-size:16px;font-weight:700}.settings-grid{flex-direction:column;gap:16px;display:flex}.setting-item{flex-direction:column;gap:8px;display:flex}.setting-label-row{justify-content:space-between;font-size:13px;font-weight:600;display:flex}.label-value{color:var(--accent-primary)}.slider-input{-webkit-appearance:none;background:#ffffff14;border-radius:3px;outline:none;width:100%;height:6px}.slider-input::-webkit-slider-thumb{appearance:none;background:var(--accent-primary);cursor:pointer;border-radius:50%;width:16px;height:16px;transition:all .1s;box-shadow:0 0 10px #6366f180}.slider-input::-webkit-slider-thumb:hover{transform:scale(1.2)}.helper-text{color:var(--text-muted);margin:0;font-size:11px}.toggles-row{flex-direction:column;gap:12px;display:flex}.toggle-wrapper{cursor:pointer;justify-content:space-between;align-items:center;padding:4px 0;display:flex}.toggle-wrapper .label-text{font-size:13px;font-weight:600}.toggle-icon{color:var(--text-muted);transition:all .2s}.active-toggle{color:var(--accent-primary)}.danger-zone{border-top:1px solid var(--border-light);margin-top:8px;padding-top:16px}.danger-zone h3{text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px;margin:0 0 12px;font-size:12px;font-weight:700}.action-buttons{gap:12px;display:flex}.action-buttons button{flex:1;justify-content:center;align-items:center;gap:8px;padding:10px;font-size:12px;display:flex}.btn-danger{color:#f43f5e;cursor:pointer;background:#f43f5e1a;border:1px solid #f43f5e33;border-radius:8px;font-weight:600;transition:all .2s}.btn-danger:hover{background:#f43f5e33;border-color:#f43f5e}.focus-zone-section{border:1px solid var(--border-light);background:#ffffff05;border-radius:8px;flex-direction:column;gap:12px;margin-top:8px;padding:12px;display:flex}.border-bottom-only{border-bottom:1px solid #ffffff0d;padding-bottom:8px}.toggle-label-with-icon{align-items:center;gap:8px;display:flex}.focus-icon-prefix{color:var(--accent-primary)}.roi-sliders-container{flex-direction:column;gap:10px;display:flex}.helper-text-roi{color:var(--text-muted);margin:0 0 4px;font-size:11px;line-height:1.4}.roi-slider-row{flex-direction:column;gap:4px;display:flex}.roi-slider-label{color:var(--text-secondary);font-size:11px;font-weight:600}.slider-roi{height:4px!important}.slider-roi::-webkit-slider-thumb{width:12px!important;height:12px!important;box-shadow:0 0 6px #6366f166!important}.animated-fade-in{animation:.2s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 #10b981b3}70%{transform:scale(1);box-shadow:0 0 0 6px #10b98100}to{transform:scale(.95);box-shadow:0 0 #10b98100}}.animated-spin{animation:1.5s linear infinite spin}.animated-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.pulse{animation:2s infinite pulse}.smooth-draw{stroke-dasharray:1000;stroke-dashoffset:1000px;animation:2.5s forwards dash}@keyframes dash{to{stroke-dashoffset:0}}.status-alert-banner{color:#fbbf24;background:#f59e0b1a;border:1px solid #f59e0b33;border-radius:8px;align-items:center;gap:10px;margin-top:16px;padding:10px 14px;font-size:12px;font-weight:500;line-height:1.4;display:flex}.alert-banner-icon{color:#fbbf24;flex-shrink:0}.stats-dashboard-panel{flex-direction:column;gap:12px;padding:16px;display:flex}.compact-stats-table-wrapper{border:1px solid var(--border-light);background:#ffffff05;border-radius:8px;overflow:hidden}.compact-stats-table{border-collapse:collapse;text-align:left;width:100%}.compact-stats-table th{text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border-light);letter-spacing:.5px;padding:10px 14px;font-size:11px;font-weight:700}.compact-stats-table td{vertical-align:middle;border-bottom:1px solid #ffffff0a;padding:12px 14px}.compact-stats-table tr:last-child td{border-bottom:none}.stats-row{transition:background .15s}.stats-row:hover{background:#ffffff04}.cat-cell-content{align-items:center;gap:10px;display:flex}.cat-icon-frame{width:28px;height:28px;color:var(--cat-color);background:#ffffff0d;border:1px solid #ffffff14;border-radius:6px;justify-content:center;align-items:center;display:flex}.cat-text{flex-direction:column;display:flex}.cat-name{color:var(--text-light);font-size:13px;font-weight:600}.cat-sub{color:var(--text-muted);font-size:10px}.text-right{text-align:right}.live-badge{border:1px solid #ffffff08;border-radius:6px;align-items:center;gap:6px;padding:4px 8px;font-size:13px;font-weight:700;display:inline-flex}.inactive-badge{color:var(--text-muted);padding:4px 8px;font-size:13px;font-weight:600}.live-dot-mini{border-radius:50%;width:6px;height:6px}.total-badge{color:var(--text-light);background:#ffffff0a;border:1px solid #ffffff0f;border-radius:6px;align-items:center;gap:4px;padding:4px 8px;font-size:13px;font-weight:700;display:inline-flex}.hash-icon-mini{color:var(--text-muted)}.pulse-mini{animation:1.5s infinite pulse-glow-mini}@keyframes pulse-glow-mini{0%{opacity:.6;transform:scale(.9)}50%{opacity:1;transform:scale(1.2)}to{opacity:.6;transform:scale(.9)}}.live-pulse-icon{animation:2s infinite pulse-glow-icon}@keyframes pulse-glow-icon{0%{opacity:.7}50%{opacity:1;color:var(--accent-car)}to{opacity:.7}}.compact-stats-dashboard{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border-light);background:#ffffff04;align-items:stretch;margin-top:10px;margin-bottom:6px;border-radius:8px!important;flex-direction:row!important;gap:16px!important;padding:6px 12px!important;display:flex!important}.stats-column{flex-direction:column;flex:1;gap:2px;display:flex}.stats-column-divider{background:#ffffff0f;align-self:stretch;width:1px;margin:2px 0}.compact-stats-row{background:0 0;border-bottom:1px solid #ffffff08;flex-direction:row;justify-content:space-between;align-items:center;gap:12px;padding:4px 6px;display:flex!important}.stats-column .compact-stats-row:last-child{border-bottom:none}.compact-col-cat{flex-shrink:0;align-items:center;gap:8px;width:110px;display:flex}.compact-icon-frame{width:22px;height:22px;color:var(--cat-color);background:#ffffff0a;border:1px solid #ffffff0f;border-radius:5px;justify-content:center;align-items:center;display:flex}.compact-cat-name{color:var(--text-light);font-size:11px;font-weight:600}.compact-live-dot{border-radius:50%;width:5px;height:5px}.compact-col-metric{align-items:center;gap:6px;display:flex}.compact-metric-label{color:var(--text-muted);text-transform:uppercase;font-size:8px}.compact-metric-value{color:var(--text-light);font-size:12px;font-weight:700}.compact-metric-divider{background:#ffffff0f;width:1px;height:10px}.compact-metric-details{color:var(--text-muted);align-items:center;gap:1px;margin-left:2px;font-size:9px;display:inline-flex}.compact-metric-details .inline-icon{opacity:.7}.stats-reset-container{justify-content:flex-end;margin-top:4px;margin-bottom:12px;display:flex}.btn-reset{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #ffffff14;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:10px;font-weight:600;transition:all .2s;display:inline-flex}.btn-reset:hover{color:var(--text-primary);background:#ffffff0a;border-color:#fff3}.url-input-helper{color:var(--text-muted);margin-top:6px;padding:0 4px;font-size:11px;line-height:1.4}.mobile-suggest-banner{-webkit-backdrop-filter:blur(12px);background:#18181b99;border:1px solid #ffffff14;border-radius:12px;margin-bottom:16px;padding:14px 16px;animation:.3s cubic-bezier(.16,1,.3,1) slideDown;box-shadow:0 4px 20px #0003}.suggest-header{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.suggest-title-row{align-items:center;gap:8px;display:flex}.suggest-icon{font-size:16px}.mobile-suggest-banner h4{color:var(--text-primary);margin:0;font-size:13px;font-weight:700}.btn-close-suggest{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:18px;line-height:1;transition:color .2s}.btn-close-suggest:hover{color:var(--text-primary)}.suggest-desc{color:var(--text-secondary);margin:0;font-size:11px;line-height:1.5}.btn-secondary-camera{color:#fff;background:#ffffff0f;border:1px solid #ffffff1a}.btn-secondary-camera:hover{background:#ffffff1f;border-color:#fff3}.btn-danger-camera{color:#f43f5e;background:#f43f5e33;border:1px solid #f43f5e66;box-shadow:0 0 10px #f43f5e1a}.btn-danger-camera:hover{background:#f43f5e4d;border-color:#f43f5e99}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (width<=768px){#root{gap:16px;padding:12px}.glass-panel{border-radius:12px;padding:12px}.glass-header{border-radius:12px;flex-direction:column;align-items:flex-start;gap:10px;padding:12px 16px}.glass-header h1{font-size:20px}.video-viewport{max-height:55vh;aspect-ratio:3/4!important}.video-controls{flex-direction:column;align-items:stretch;gap:10px}.video-controls .control-btn,.video-controls .file-upload-section,.video-controls .upload-label{justify-content:center;width:100%}.url-input-form .input-group{background:0 0;border:none;flex-direction:column;align-items:stretch;gap:8px;padding:0}.url-input-form .input-icon{display:none}.url-input-form .text-input{border:1px solid var(--border-light);background:#ffffff08;border-radius:10px;width:100%;padding:10px 12px}.url-input-form .btn-secondary{border-radius:10px;width:100%;padding:10px}}.video-viewport.video-portrait{max-width:450px;margin:0 auto}.action-log-panel{flex-direction:column;gap:16px;display:flex}.panel-header-left{align-items:center;gap:10px;display:flex}.btn-clear-log{color:var(--text-secondary);cursor:pointer;background:0 0;border:1px solid #ffffff14;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:600;transition:all .2s;display:inline-flex}.btn-clear-log:hover{color:var(--text-primary);background:#ffffff0a;border-color:#fff3}.log-list-viewport{max-height:220px;padding-right:4px;overflow-y:auto}.log-list-viewport::-webkit-scrollbar{width:4px}.log-list-viewport::-webkit-scrollbar-track{background:0 0}.log-list-viewport::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.log-list-viewport::-webkit-scrollbar-thumb:hover{background:#fff3}.log-empty-state{height:100px;color:var(--text-muted);border:1px dashed var(--border-light);background:#ffffff03;border-radius:10px;justify-content:center;align-items:center;font-size:12px;display:flex}.log-items-container{flex-direction:column;gap:8px;display:flex}.log-item{background:#ffffff04;border:1px solid #ffffff05;border-radius:6px;align-items:center;padding:6px 8px;font-size:12px;transition:background .2s;display:flex}.log-item:hover{background:#ffffff08}.log-timestamp{font-family:var(--font-mono);color:var(--text-muted);flex-shrink:0;margin-right:8px;font-size:10px}.log-marker{border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-right:8px;display:inline-block}.log-message{color:var(--text-secondary);word-break:break-all;line-height:1.4}.log-type-warning .log-message{color:#f59e0b}
