.appGridWrapper { display: flex; flex-direction: column; flex-grow: 1; } .appGrid { display: grid; grid-template-columns: 240px 1fr; grid-template-rows: auto 1fr 210px; overflow: hidden; } .appGrid header { grid-row: 1; grid-column: 1/3; } .appGrid .settings { grid-column: 1; grid-row: 2; background-color: var(--c400); } .appGrid .viewer { grid-column: 2; grid-row: 2; background-color: var(--c200); } .appGrid .tools { grid-column: 1; grid-row: 3; background-color: var(--c300); padding: 8px; } .appGrid .tools .time { line-height: 1; height: 20px; } .appGrid .tools .time .framerate { font-weight: 500; color: var(--c700); } .appGrid .tools .time .timecode { font-weight: 500; color: var(--gruble); } .appGrid .tools .MuiButtonGroup-root, .appGrid .tools .zoom { margin-top: 8px; } .appGrid .tools .zoom { display: grid; grid-template-columns: 24px 1fr 24px; } .appGrid .tools .zoom .spacing { margin: -4px 8px; } .appGrid .tools .zoom .spacing .MuiSlider-root { color: var(--gruble); } .appGrid .tools .MuiButtonGroup-root .MuiButton-root { border-width: 2px; padding: 8px; color: var(--c800); border-color: var(--c400); margin-right: -1px; } .appGrid .tools .MuiButtonGroup-root .MuiButton-root:first-child { border-radius: 6px 0 0 6px; } .appGrid .tools .MuiButtonGroup-root .MuiButton-root:last-child { border-radius: 0 6px 6px 0; } .appGrid .tools .MuiButtonGroup-root .MuiButton-root .loopStartEnd { display: inline-block; white-space: nowrap; line-height: 0; position: relative; height: 24px; width: 36px; } .appGrid .tools .MuiButtonGroup-root .MuiButton-root .loopStartEnd .start { left: -3px; } .appGrid .tools .MuiButtonGroup-root .MuiButton-root .loopStartEnd .end { right: -3px; } .appGrid .timeline { grid-column: 2; grid-row: 3; background-color: var(--c100); overflow: hidden; } .appGrid .viewer { display: grid; grid-template-rows: 1fr 80px; } .appGrid .viewer .player { margin: 16px; margin-bottom: 0px; line-height: 0; } .appGrid .viewer .player .outer { border: 8px solid var(--piss); border-radius: 8px; } .appGrid .viewer .player { --aspect-ratio-h: 16; --aspect-ratio-v: 9; } .appGrid .viewer .player .outer { aspect-ratio: 16 / 9; max-width: 100%; max-height: 100%; width: 100%; } .appGrid .viewer .controls { position: relative; } .appGrid .viewer .controls .abscenter { margin-left: 24px; } .appGrid .viewer .controls .r0 { margin-right: 16px; } .appGrid .viewer .controls .MuiFab-root.playPause { background-color: var(--blue); } .appGrid .viewer .controls .MuiFab-root { color: var(--fg); } .appGrid .viewer .controls .MuiFab-root:not(.playPause) { background-color: var(--transparent); box-shadow: none; margin: 4px; } .appGrid .timeline .keyframes { height: 100%; width: calc(var(--zoom) * var(--total-frames) * 1px); } .appGrid .timeline .keyframes .frame { background-color: transparent; height: 100%; width: calc(var(--zoom) * 1px); display: inline-block; border-radius: 2px 2px 0 0; overflow: visible; left: calc(var(--zoom) * (var(--frame)) * 1px); } .appGrid .timeline .keyframes .frame:nth-child(30n) .line { background-color: var(--c300); top: 28px; width: 2px; border-radius: 2px 2px 0 0; } .appGrid .timeline .keyframes .frame .timecode { display: none; } .appGrid .timeline .keyframes .frame .keyframeWrapper { line-height: 0; top: 44px; z-index: 999; color: var(--gruble); width: 24px; height: 24px; } .appGrid .timeline .keyframes .frame .keyframeWrapper.current { color: var(--piss); } .appGrid .timeline .keyframes .frame .keyframeWrapper.current .loop .connector { background-color: var(--piss); } .appGrid .timeline .keyframes .frame .keyframeWrapper , .appGrid .timeline .keyframes .frame .keyframeWrapper .loop .connector { transition-property: color, background-color; transition-duration: .2s; } .appGrid .timeline .keyframes .frame:nth-child(30n) .timecode { color: var(--c700); font-weight: 500; line-height: 1; display: inline-block; top: 12px; } .appGrid .timeline .timelineInner { overflow-y: hidden; overflow-x: scroll; white-space: nowrap; } .timeline .scrubber { width: 2px; overflow: visible; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3)); z-index: 999999999; left: calc((var(--zoom) * (var(--frame) + 0.5)) * 1px - 1px) } .timeline .frameOverlay { left: 2px; width: calc(var(--zoom) * 1px - 2px); background-color: var(--blue); opacity: .0; } .timeline .scrubber .head { fill: var(--blue); z-index: 1; cursor: grab; } .timeline .scrubber .head:active { cursor: grabbing; } .timeline .scrubber .needle { background-color: var(--blue); } .timeline .labels .label { transform: translate(-50%, -100%); color: var(--c700); }