:root{--color-primary: #6366f1;--color-primary-dark: #4f46e5;--color-secondary: #8b5cf6;--color-accent: #ec4899;--color-success: #10b981;--color-danger: #ef4444;--color-warning: #f59e0b;--color-bg-primary: #ffffff;--color-bg-secondary: #c3c3ce;--color-bg-tertiary: #bfbfc7;--color-surface: rgba(245, 245, 245, .582);--color-surface-hover: rgba(255, 255, 255, .1);--color-text-primary: #000000;--color-text-secondary: rgba(66, 65, 65, .7);--color-text-muted: rgba(255, 255, 255, .5);--gradient-primary: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);--gradient-accent: linear-gradient(135deg, #ec4899 0%, #8b5cf6 100%);--gradient-success: linear-gradient(135deg, #10b981 0%, #059669 100%);--gradient-danger: linear-gradient(135deg, #ef4444 0%, #b91c1c 100%);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(99, 102, 241, .4);--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--radius-sm: .375rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-xl: 1.5rem;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1)}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--color-bg-primary);color:var(--color-text-primary);overflow-x:hidden;min-height:100dvh;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{min-height:100dvh;display:flex;flex-direction:column}#header{background:var(--color-bg-secondary);border-bottom:1px solid rgba(255,255,255,.1);position:sticky;top:0;z-index:100;backdrop-filter:blur(10px);box-shadow:var(--shadow-md);height:8vdh}.header-content{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-md) var(--spacing-lg);max-width:1400px;margin:0 auto}.logo{display:flex;align-items:center;gap:var(--spacing-md)}.logo-text{font-size:1.5rem;font-weight:700;background:var(--gradient-primary);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.controls{display:flex;gap:var(--spacing-md);position:absolute;left:50%;transform:translate(-50%)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-md);border:none;border-radius:var(--radius-md);font-family:inherit;font-weight:600;cursor:pointer;transition:all var(--transition-base);outline:none;position:relative;overflow:hidden}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-record{background:var(--gradient-danger);color:#fff;box-shadow:var(--shadow-md);width:56px;height:56px;border-radius:50%}.btn-record:not(:disabled):hover{transform:scale(1.05);box-shadow:0 0 30px #ef444480}.btn-record:not(:disabled):active{transform:scale(.95)}.btn-record.recording{animation:pulse 2s infinite;background:var(--gradient-danger)}@keyframes pulse{0%,to{box-shadow:0 0 #ef4444b3}50%{box-shadow:0 0 0 20px #ef444400}}.btn-stop{background:var(--color-danger);color:#fff;box-shadow:var(--shadow-md);width:56px;height:56px;border-radius:var(--radius-md)}.btn-stop:not(:disabled):hover{transform:scale(1.05);box-shadow:0 0 30px #ef444480}.btn-menu{background:var(--color-surface);color:var(--color-text-primary);width:48px;height:48px;border-radius:var(--radius-md)}.btn-menu:hover{background:var(--color-surface-hover)}.btn-primary{background:var(--gradient-primary);color:#fff;padding:var(--spacing-md) var(--spacing-xl);font-size:1rem}.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.btn-secondary{background:var(--color-surface);color:var(--color-text-primary);padding:var(--spacing-md) var(--spacing-xl);font-size:1rem}.btn-secondary:hover{background:var(--color-surface-hover)}.btn-close{background:transparent;color:var(--color-text-secondary);padding:var(--spacing-sm);width:32px;height:32px}.btn-close:hover{background:var(--color-surface);color:var(--color-text-primary)}.menu-container{position:relative}.dropdown-menu{position:absolute;top:calc(100% + var(--spacing-sm));right:0;background:var(--color-bg-tertiary);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);min-width:250px;opacity:0;visibility:hidden;transform:translateY(-10px);transition:all var(--transition-base);overflow:hidden;backdrop-filter:blur(10px)}.dropdown-menu.show{opacity:1;visibility:visible;transform:translateY(0)}.menu-item{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);color:var(--color-text-primary);text-decoration:none;transition:all var(--transition-fast);border-left:3px solid transparent}.menu-item:hover{background:var(--color-surface-hover);border-left-color:var(--color-primary);padding-left:calc(var(--spacing-lg) + 4px)}.menu-item.active{background:var(--color-surface);border-left-color:var(--color-primary)}#content{flex:1;max-width:1400px;width:100%;margin:0 auto;display:flex;flex-direction:column;min-height:calc(100dvh - 80px)}.modal{position:fixed;inset:0;background:#000c;backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;transition:all var(--transition-base);padding:var(--spacing-lg)}.modal.show{opacity:1;visibility:visible}.modal-content{background:var(--color-bg-secondary);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);max-width:500px;width:100%;max-height:90vh;overflow-y:auto;transform:scale(.9);transition:transform var(--transition-base)}.modal.show .modal-content{transform:scale(1)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-xl);border-bottom:1px solid rgba(255,255,255,.1)}.modal-header h2{font-size:1.5rem;font-weight:700}form{padding:var(--spacing-xl)}.form-group{margin-bottom:var(--spacing-lg)}.form-group label{display:block;margin-bottom:var(--spacing-sm);color:var(--color-text-secondary);font-weight:500;font-size:.875rem}.form-group input[type=text]{width:100%;padding:var(--spacing-md);background:var(--color-surface);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:inherit;font-size:1rem;transition:all var(--transition-base)}.form-group input[type=text]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #6366f11a;background:var(--color-surface-hover)}.radio-group{display:flex;gap:var(--spacing-md)}.radio-label{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);background:var(--color-surface);border:2px solid rgba(255,255,255,.1);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base)}.radio-label:hover{background:var(--color-surface-hover);border-color:var(--color-primary)}.radio-label input[type=radio]{margin-right:var(--spacing-sm)}.radio-label input[type=radio]:checked+span{color:var(--color-primary);font-weight:600}.radio-label:has(input[type=radio]:checked){background:#6366f11a;border-color:var(--color-primary)}.modal-actions{display:flex;gap:var(--spacing-md);padding-top:var(--spacing-lg);border-top:1px solid rgba(255,255,255,.1)}.modal-actions .btn{flex:1}.camera-container{position:relative;width:100%;max-width:800px;margin:0 auto;overflow:hidden;box-shadow:var(--shadow-lg);background:var(--color-bg-tertiary);height:92dvh}.camera-wrapper{position:relative;height:92dvh}#videoElement{position:absolute;top:0;left:0;width:100%;height:92dvh;object-fit:cover}#canvasElement{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.recording-indicator{position:absolute;top:var(--spacing-lg);left:var(--spacing-lg);display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:#000000b3;backdrop-filter:blur(10px);border-radius:var(--radius-md);font-weight:600}.rec-dot{width:12px;height:12px;background:var(--color-danger);border-radius:50%;animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:.3}}.frame-count{position:absolute;top:var(--spacing-lg);right:var(--spacing-lg);padding:var(--spacing-sm) var(--spacing-md);background:#000000b3;backdrop-filter:blur(10px);border-radius:var(--radius-md);font-weight:600;font-variant-numeric:tabular-nums}.list-header{margin-bottom:var(--spacing-xl)}.list-header h1{font-size:2rem;font-weight:700;margin-bottom:var(--spacing-md)}.filters{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-bg-secondary);border-radius:var(--radius-lg);border:1px solid rgba(255,255,255,.1)}.filter-group{flex:0 0 auto;min-width:140px}.filter-group label{display:none}.filter-group select,.filter-group input{width:100%;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:inherit;transition:all var(--transition-base);font-size:.9rem}.filter-group select:focus,.filter-group input:focus{outline:none;border-color:var(--color-primary);background:var(--color-surface-hover)}.filter-group.compact select{min-width:140px;max-width:200px}.items-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--spacing-lg);margin-top:var(--spacing-xl)}.item-card{background:var(--color-bg-secondary);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);padding:var(--spacing-lg);transition:all var(--transition-base);position:relative;overflow:hidden}.item-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--gradient-primary);transform:scaleX(0);transition:transform var(--transition-base)}.item-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--color-primary)}.item-card:hover:before{transform:scaleX(1)}.item-title{font-size:1.25rem;font-weight:600;margin-bottom:var(--spacing-sm)}.item-meta{display:flex;flex-direction:column;gap:var(--spacing-xs);margin-bottom:var(--spacing-md);color:var(--color-text-secondary);font-size:.875rem}.item-tag{display:inline-block;padding:var(--spacing-xs) var(--spacing-sm);background:var(--color-surface);border-radius:var(--radius-sm);font-size:.75rem;font-weight:600;text-transform:uppercase}.item-actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.btn-icon{flex:1;padding:var(--spacing-sm);background:var(--color-surface);color:var(--color-text-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);font-family:inherit;font-weight:500}.btn-icon:hover{background:var(--color-primary);transform:translateY(-2px)}.btn-icon.danger:hover{background:var(--color-danger)}.visualizer-container{width:100%;height:100%;display:flex;flex:1;flex-direction:column;gap:var(--spacing-md);min-height:calc(100dvh - 80px)}.visualizer-title h1{font-size:1.4rem;margin:0;text-align:center;flex:1}.visualizer-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);align-items:center;color:var(--color-text-secondary)}.visualizer-container .list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm)}.visualizer-title{display:flex;flex-direction:column;gap:var(--spacing-xs)}.visualizer-meta .item-tag{font-size:.65rem;padding:4px 8px}.visualizer-top{display:flex;align-items:center;gap:var(--spacing-sm)}.visualizer-tags{display:flex;gap:var(--spacing-xs);flex-wrap:wrap}.visualizer-info{font-size:.85rem;color:var(--color-text-secondary)}.spacer{width:48px}.visualizer-meta .meta-small{font-size:.75rem;margin-left:var(--spacing-sm)}.small-btn{padding:var(--spacing-sm) var(--spacing-md);font-size:.9rem}.visualizer-canvas-wrapper{position:relative;flex:1;width:100%;height:100%;min-height:0}#visualizerCanvas{width:100%;height:100%;background:var(--color-bg-tertiary);box-shadow:var(--shadow-lg);display:block}.clip-progress{position:absolute;left:var(--spacing-md);right:var(--spacing-md);bottom:var(--spacing-md);height:8px;border-radius:var(--radius-sm);background:#ffffff1a;overflow:hidden}.clip-progress-bar{height:100%;width:0%;background:var(--gradient-primary);transition:width 80ms linear}.view-switch{margin-top:var(--spacing-sm);display:flex;align-items:center;gap:var(--spacing-sm)}.switch{display:inline-flex;align-items:center;gap:var(--spacing-sm);cursor:pointer}.switch input{position:absolute;opacity:0}.switch .slider{width:40px;height:20px;background:#ffffff4d;border-radius:999px;position:relative;transition:background var(--transition-base)}.switch .slider:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--color-primary);border-radius:50%;transition:transform var(--transition-base),background var(--transition-base)}.switch input:checked+.slider{background:var(--gradient-primary)}.switch input:checked+.slider:after{transform:translate(20px);background:#fff}.switch-label{font-size:.85rem;color:var(--color-text-secondary)}.play-toggle{position:absolute;left:50%;bottom:var(--spacing-lg);transform:translate(-50%);width:64px;height:64px;border-radius:50%;border:none;color:#000;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--transition-base),box-shadow var(--transition-base)}.play-toggle:hover{transform:translate(-50%) scale(1.05);box-shadow:var(--shadow-glow)}.empty-state{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);color:var(--color-text-secondary)}.empty-state svg{width:120px;height:120px;margin-bottom:var(--spacing-lg);opacity:.3}.empty-state h3{font-size:1.5rem;margin-bottom:var(--spacing-sm);color:var(--color-text-primary)}@media (max-width: 768px){.header-content{padding:var(--spacing-sm) var(--spacing-md)}.controls{position:static;transform:none}.logo-text{font-size:1.25rem}.btn-record,.btn-stop{width:48px;height:48px}.items-grid{grid-template-columns:1fr}.filters{flex-direction:column}.filter-group{min-width:100%}.visualizer-container{flex:1;min-height:calc(100dvh - 72px)}.visualizer-canvas-wrapper{min-height:calc(100dvh - 160px)}#visualizerCanvas{height:calc(100dvh - 200px)}}.loading{display:inline-block;width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:var(--color-primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.hidden{display:none!important}.text-center{text-align:center}.mt-lg{margin-top:var(--spacing-lg)}.mb-lg{margin-bottom:var(--spacing-lg)}
