:root{--bg: #0f1115;--bg-elev: #171a21;--bg-elev-2: #1e222b;--border: #2a2f3a;--border-strong: #3a4150;--text: #e6e9ef;--text-dim: #9aa3b2;--text-faint: #6b7280;--accent: #4c8dff;--accent-hover: #6aa0ff;--success: #3fb950;--warn: #d29922;--danger: #f85149;--radius: 10px;--radius-sm: 6px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.45}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select{font-family:inherit;font-size:inherit}a{color:var(--accent)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;border-bottom:1px solid var(--border);background:var(--bg-elev)}.app-title{font-weight:600;font-size:15px;display:flex;align-items:center;gap:8px}.app-title .dot{width:8px;height:8px;border-radius:50%;background:var(--success)}.app-subtitle{color:var(--text-dim);font-size:12px}.unsupported{max-width:640px;margin:60px auto;padding:24px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius)}.unsupported h2{margin-top:0}.unsupported ul{color:var(--text-dim)}.shell{display:grid;grid-template-columns:1fr 360px;height:calc(100vh - 49px);min-height:0}.main-area{overflow:auto;padding:20px}.sidebar{border-left:1px solid var(--border);background:var(--bg-elev);overflow-y:auto;display:flex;flex-direction:column}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--text-dim);margin-bottom:4px}.field input[type=number],.field input[type=text],.field select{width:100%;background:var(--bg-elev-2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);padding:7px 9px;outline:none}.field input:focus,.field select:focus{border-color:var(--accent)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn{background:var(--bg-elev-2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);padding:8px 14px;transition:background .12s ease}.btn:hover:not(:disabled){background:var(--border-strong)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{background:transparent;border-color:var(--border-strong);color:var(--danger)}.btn-block{width:100%}.sidebar-section{padding:16px;border-bottom:1px solid var(--border)}.sidebar-section h3{margin:0 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-dim)}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);padding:48px 24px;text-align:center;color:var(--text-dim);background:var(--bg-elev);cursor:pointer;transition:border-color .12s ease,background .12s ease;max-width:720px;margin:0 auto}.dropzone:hover,.dropzone.dragover{border-color:var(--accent);background:var(--bg-elev-2)}.dropzone-icon{font-size:32px;margin-bottom:8px}.dropzone strong{color:var(--text)}.dropzone-hint{margin-top:10px;font-size:12px;color:var(--text-faint)}.error-banner{background:#f851491f;border:1px solid var(--danger);color:#ffb4b0;padding:10px 12px;border-radius:var(--radius-sm);font-size:13px}.warn-banner{background:#d299221f;border:1px solid var(--warn);color:#f0c674;padding:10px 12px;border-radius:var(--radius-sm);font-size:13px}.meta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.meta-item{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px}.meta-item .k{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.meta-item .v{font-size:14px;font-weight:600;margin-top:2px}.compliance-list{list-style:none;margin:0;padding:0}.compliance-list li{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}.compliance-list li:last-child{border-bottom:none}.badge{font-size:11px;font-weight:600;padding:2px 8px;border-radius:999px;text-transform:uppercase;letter-spacing:.03em}.badge-meets{background:#3fb95026;color:var(--success)}.badge-change{background:#d2992226;color:var(--warn)}.badge-na{background:#9aa3b21f;color:var(--text-dim)}.progress-wrap{margin:8px 0}.progress-track{height:8px;background:var(--bg-elev-2);border-radius:999px;overflow:hidden;border:1px solid var(--border)}.progress-fill{height:100%;background:var(--accent);transition:width .15s ease}.progress-fill.indeterminate{width:35%!important;animation:pulse 1.1s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:1}}.preview-stage{position:relative;display:inline-block;background:#000;border-radius:var(--radius);overflow:hidden;line-height:0;max-width:100%}.preview-stage video,.preview-stage img{display:block;max-width:100%;max-height:60vh}.crop-shade{position:absolute;box-shadow:0 0 0 9999px #0000008c;border:2px solid var(--accent);cursor:move;touch-action:none}.crop-shade:before{content:attr(data-label);position:absolute;top:-22px;left:0;font-size:11px;color:var(--text);background:var(--accent);padding:1px 6px;border-radius:3px;white-space:nowrap}.seek-row{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:12px;color:var(--text-dim)}.seek-row input[type=range]{flex:1}.result-box{background:var(--bg-elev-2);border:1px solid var(--border);border-radius:var(--radius);padding:14px}.result-box h4{margin:0 0 8px}details.log{margin-top:12px}details.log summary{cursor:pointer;color:var(--text-dim);font-size:12px}details.log pre{max-height:200px;overflow:auto;background:#000;color:#9ad;padding:8px;border-radius:var(--radius-sm);font-size:11px}.tag{display:inline-block;background:var(--bg-elev-2);border:1px solid var(--border-strong);border-radius:999px;padding:1px 8px;font-size:11px;color:var(--text-dim)}.section-title{display:flex;align-items:center;gap:8px;margin:0 0 12px;font-size:15px;font-weight:600}.flex-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.stack{display:flex;flex-direction:column;gap:12px}.muted{color:var(--text-dim)}.faint{color:var(--text-faint);font-size:12px}
