* { box-sizing: border-box; margin: 0; } :root { --bg: #101014; --panel: #17171d; --line: #26262e; --fg: #e8e8ee; --dim: #8b8b98; --accent: #7ad0ff; } body { background: var(--bg); color: var(--fg); font: 14px/1.45 -apple-system, "SF Pro Text", Helvetica, sans-serif; height: 100vh; display: flex; flex-direction: column; overflow: hidden; } h1 { font-size: 17px; letter-spacing: 2px; color: var(--accent); } h1 span { color: var(--fg); } h2 { font-size: 11px; text-transform: uppercase; letter-spacing: 1.5px; color: var(--dim); margin-bottom: 8px; } .dim { color: var(--dim); font-size: 12px; } .hint { font-size: 11px; } kbd { background: var(--line); border-radius: 3px; padding: 0 4px; font-size: 10px; } header { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid var(--line); background: var(--panel); } header input#path { flex: 1; } input, button { background: #1f1f27; color: var(--fg); border: 1px solid var(--line); border-radius: 6px; padding: 6px 10px; font-size: 13px; } input:focus { outline: 1px solid var(--accent); } button { cursor: pointer; white-space: nowrap; } button:hover { border-color: var(--accent); } button.primary, #startRoto, #track { background: #14303f; border-color: #2b5a75; } .badge { font-size: 11px; color: var(--dim); border: 1px solid var(--line); border-radius: 10px; padding: 2px 8px; } #toast { font-size: 12px; color: var(--accent); transition: opacity .4s; } #toast.err { color: #ff8a80; } main { flex: 1; display: flex; min-height: 0; } #stage { flex: 1; display: flex; align-items: center; justify-content: center; background: #000; min-width: 0; } #cv { max-width: 100%; max-height: 100%; cursor: crosshair; } aside { width: 265px; overflow-y: auto; border-left: 1px solid var(--line); background: var(--panel); padding: 12px; } aside section { margin-bottom: 18px; } .row { display: flex; gap: 6px; align-items: center; margin: 6px 0; } .row.wrap { flex-wrap: wrap; } .wide { flex: 1; } progress { width: 100%; height: 6px; accent-color: var(--accent); } #feather { width: 56px; } .obj { display: flex; align-items: center; gap: 6px; padding: 4px 9px; border: 1px solid var(--line); border-radius: 14px; cursor: pointer; font-size: 12px; } .obj.active { border-color: var(--accent); background: #14303f; } .obj .swatch { width: 10px; height: 10px; border-radius: 50%; } #outlist div { padding: 3px 0; border-bottom: 1px dotted var(--line); word-break: break-all; font-size: 11px; } footer { border-top: 1px solid var(--line); background: var(--panel); padding: 6px 14px 10px; } #transport { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; } #transport .gap { width: 18px; } #frameLabel { margin-left: auto; font-variant-numeric: tabular-nums; } #timeline { position: relative; height: 44px; margin-bottom: 4px; user-select: none; } #thumbs { width: 100%; height: 100%; object-fit: fill; border-radius: 4px; opacity: .9; background: #000; } .shade { position: absolute; top: 0; height: 100%; background: rgba(10,10,14,.72); pointer-events: none; } #shadeL { left: 0; border-right: 2px solid var(--accent); } #shadeR { right: 0; border-left: 2px solid var(--accent); } #playhead { position: absolute; top: -2px; width: 2px; height: calc(100% + 4px); background: #fff; pointer-events: none; } #scrub { width: 100%; padding: 0; accent-color: var(--accent); }