Spaces:
Sleeping
Sleeping
| /* โโ Timeline shell โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */ | |
| .timeline { | |
| height: 180px; | |
| background: #080818; | |
| border-top: 1px solid #2a2a4a; | |
| display: flex; | |
| flex-direction: column; | |
| font-family: 'JetBrains Mono', monospace; | |
| font-size: 10px; | |
| flex-shrink: 0; | |
| user-select: none; | |
| } | |
| /* โโ Controls bar โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */ | |
| .tl-controls { | |
| display: flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 6px 12px; | |
| background: #0d0d22; | |
| border-bottom: 1px solid #1e1e3a; | |
| flex-shrink: 0; | |
| } | |
| .tl-btn { | |
| padding: 4px 9px; | |
| background: #13132a; | |
| border: 1px solid #2a2a5a; | |
| border-radius: 4px; | |
| color: #8888bb; | |
| cursor: pointer; | |
| font-size: 11px; | |
| font-family: 'JetBrains Mono', monospace; | |
| transition: all 0.15s; | |
| } | |
| .tl-btn:hover { border-color: #6666ff; color: #aaaaff; background: #1a1a3a; } | |
| .tl-play { font-size: 13px; min-width: 32px; text-align: center; } | |
| .tl-play.playing { border-color: #44cc44; color: #88ff88; background: #0e1e0e; } | |
| .tl-time { | |
| font-size: 10px; | |
| color: #aaaacc; | |
| font-weight: 700; | |
| letter-spacing: 1px; | |
| min-width: 100px; | |
| padding: 0 6px; | |
| } | |
| .tl-kf-btn { | |
| background: #1a1a0a; | |
| border-color: #5a5a22; | |
| color: #cccc44; | |
| font-size: 9px; | |
| font-weight: 700; | |
| letter-spacing: 1px; | |
| padding: 4px 10px; | |
| } | |
| .tl-kf-btn:not(.disabled):hover { border-color: #aaaa44; color: #ffff66; background: #2a2a0e; } | |
| .tl-kf-btn.disabled { opacity: 0.3; cursor: not-allowed; } | |
| .tl-duration { | |
| display: flex; | |
| align-items: center; | |
| gap: 5px; | |
| margin-left: auto; | |
| color: #555577; | |
| font-size: 9px; | |
| } | |
| .tl-duration input { | |
| width: 44px; | |
| background: #13132a; | |
| border: 1px solid #2a2a4a; | |
| border-radius: 3px; | |
| color: #aaaacc; | |
| padding: 3px 5px; | |
| font-family: 'JetBrains Mono', monospace; | |
| font-size: 9px; | |
| text-align: center; | |
| outline: none; | |
| } | |
| /* โโ Body (labels + tracks) โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */ | |
| .tl-body { | |
| display: flex; | |
| flex: 1; | |
| overflow: hidden; | |
| min-height: 0; | |
| } | |
| /* Labels column */ | |
| .tl-labels { | |
| width: 140px; | |
| flex-shrink: 0; | |
| border-right: 1px solid #1e1e3a; | |
| overflow-y: auto; | |
| padding-top: 24px; /* align with ruler */ | |
| } | |
| .tl-empty { color: #333355; padding: 10px; font-size: 9px; text-align: center; } | |
| .tl-label { | |
| display: flex; | |
| align-items: center; | |
| gap: 5px; | |
| padding: 0 10px; | |
| height: 32px; | |
| border-bottom: 1px solid #111128; | |
| color: #666688; | |
| font-size: 9px; | |
| } | |
| .tl-label.active { background: #111130; color: #aaaaff; } | |
| .tl-label-dot { color: #4444aa; font-size: 11px; flex-shrink: 0; } | |
| .tl-label-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } | |
| .tl-kf-count { | |
| background: #2a2a0a; | |
| color: #aaaa44; | |
| font-size: 8px; | |
| padding: 1px 4px; | |
| border-radius: 2px; | |
| flex-shrink: 0; | |
| } | |
| /* Tracks wrapper */ | |
| .tl-tracks-wrap { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| /* โโ Ruler โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */ | |
| .tl-ruler { | |
| height: 24px; | |
| background: #0d0d22; | |
| border-bottom: 1px solid #1e1e3a; | |
| position: relative; | |
| cursor: crosshair; | |
| flex-shrink: 0; | |
| overflow: hidden; | |
| } | |
| .tl-tick { | |
| position: absolute; | |
| top: 0; | |
| transform: translateX(-50%); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| pointer-events: none; | |
| } | |
| .tl-tick::before { | |
| content: ''; | |
| display: block; | |
| width: 1px; | |
| height: 8px; | |
| background: #3a3a5a; | |
| } | |
| .tl-tick span { font-size: 8px; color: #444466; margin-top: 1px; } | |
| /* Playhead needle (ruler) */ | |
| .tl-playhead { | |
| position: absolute; | |
| top: 0; | |
| bottom: 0; | |
| width: 2px; | |
| background: #ffcc00; | |
| transform: translateX(-1px); | |
| pointer-events: none; | |
| box-shadow: 0 0 6px #ffcc0099; | |
| z-index: 5; | |
| } | |
| /* โโ Track rows โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ */ | |
| .tl-tracks { flex: 1; overflow-y: auto; } | |
| .tl-track { | |
| position: relative; | |
| height: 32px; | |
| border-bottom: 1px solid #111128; | |
| background: #0a0a1e; | |
| transition: background 0.1s; | |
| } | |
| .tl-track.active { background: #0d0d28; } | |
| /* Playhead ghost line on each track */ | |
| .tl-track-playhead { | |
| position: absolute; | |
| top: 0; bottom: 0; | |
| width: 1px; | |
| background: #ffcc0055; | |
| transform: translateX(-0.5px); | |
| pointer-events: none; | |
| z-index: 2; | |
| } | |
| /* Connection line between keyframes */ | |
| .tl-kf-line { | |
| position: absolute; | |
| top: 50%; | |
| height: 2px; | |
| background: linear-gradient(90deg, #ffcc0077, #ffcc0033); | |
| transform: translateY(-50%); | |
| pointer-events: none; | |
| z-index: 1; | |
| } | |
| /* Keyframe diamond marker */ | |
| .tl-kf-diamond { | |
| position: absolute; | |
| top: 50%; | |
| transform: translate(-50%, -50%); | |
| color: #ffcc00; | |
| font-size: 12px; | |
| cursor: pointer; | |
| z-index: 3; | |
| text-shadow: 0 0 6px #ffcc0099; | |
| transition: all 0.1s; | |
| line-height: 1; | |
| } | |
| .tl-kf-diamond:hover { | |
| color: #ff4444; | |
| text-shadow: 0 0 8px #ff444499; | |
| transform: translate(-50%, -50%) scale(1.4); | |
| } |