/* Video Shotcraft timeline-travel: 12-frame hold, 92-frame accelerate-then-brake
   travel, and 6-frame milestone lighting. Adapted to a readable legal calendar. */
.cp-cal { position: relative; padding-left: clamp(22px, 2.6vw, 34px); }
.cp-cal::before, .cp-cal::after { content: ''; position: absolute; left: 5px; top: 0; bottom: 0; width: 2px; transform-origin: top; pointer-events: none; }
.cp-cal::before { background: var(--ch-line-2); }
.cp-cal::after { background: var(--ch-ink); }
.cp-cal > li { position: relative; }
.cp-cal > li::before { content: ''; position: absolute; left: calc(-1 * clamp(22px, 2.6vw, 34px)); top: clamp(22px, 2.5vw, 31px); width: 12px; height: 12px; background: var(--ch-ivory); border: 2px solid var(--ch-ink); box-sizing: border-box; }
.cp-cal > li:nth-child(3)::before { background: #b23f1d; border-color: #b23f1d; }
.cp-cal.is-traveling::after { animation: compliance-axis 3.07s cubic-bezier(.45,0,.15,1) .4s both; }
.cp-cal.is-traveling > li::before { animation: compliance-stop .2s cubic-bezier(.16,1,.3,1) calc(.4s + var(--milestone) * .45s) both; }
@keyframes compliance-axis { from { transform: scaleY(0); } to { transform: scaleY(1); } }
@keyframes compliance-stop { from { transform: scale(.45); background: var(--ch-ivory); } to { transform: scale(1); } }
/* Shotcraft title-demote-to-label, text-selection-sweep: a selection highlight
   wipes across each commitment number and releases from left to right. */
.cp-pledge-num { position: relative; display: inline-block; padding: 0 3px; border-radius: 3px; }
.cp-pledge-num::after { content: ''; position: absolute; top: .08em; bottom: .08em; left: 0; width: 0; background: rgba(178,63,29,.22); border-right: 2px solid #91391e; pointer-events: none; opacity: 0; }
.cp-pledges.is-sweeping .cp-pledge-num::after { animation: pledge-select .72s cubic-bezier(.3,0,.2,1) calc(.12s + var(--pledge) * .22s) both; }
@keyframes pledge-select { 0% { left: 0; width: 0; opacity: 1; } 38% { left: 0; width: 100%; opacity: 1; } 72% { left: 0; width: 100%; opacity: 1; } 99% { left: 100%; width: 0; opacity: 1; } 100% { left: 100%; width: 0; opacity: 0; } }
/* Shotcraft fui-hud-moves, reticle-lock-on: four corner ticks converge onto
   the Default column with a 0.94x overshoot and a brief ink flash. */
.cp-map-col--default { position: relative; }
.cp-reticle { position: absolute; inset: 8px; opacity: 0; pointer-events: none; }
.cp-reticle i { position: absolute; width: 14px; height: 14px; border-color: var(--ip-accent-on-ink); border-style: solid; border-width: 0; }
.cp-reticle i:nth-child(1) { top: 0; left: 0; border-top-width: 2px; border-left-width: 2px; }
.cp-reticle i:nth-child(2) { top: 0; right: 0; border-top-width: 2px; border-right-width: 2px; }
.cp-reticle i:nth-child(3) { bottom: 0; left: 0; border-bottom-width: 2px; border-left-width: 2px; }
.cp-reticle i:nth-child(4) { bottom: 0; right: 0; border-bottom-width: 2px; border-right-width: 2px; }
.cp-map.is-locking .cp-reticle { animation: reticle-lock 1.3s cubic-bezier(.2,.75,.3,1) .15s both; }
.cp-map.is-locking .cp-map-col--default { animation: reticle-flash 1.3s ease-out .15s both; }
@keyframes reticle-lock { 0% { transform: scale(1.16); opacity: 0; } 36% { transform: scale(.94); opacity: 1; } 52% { transform: scale(1); opacity: 1; } 82% { transform: scale(1); opacity: 1; } 100% { transform: scale(1); opacity: 0; } }
@keyframes reticle-flash { 0%, 34%, 100% { background-color: var(--ch-ink); } 44% { background-color: #213766; } }
/* Shotcraft beat-step-list-theme-cycle: each GDPR right cell steps into
   full ink with white text on a crisp beat, holds briefly, and returns to ivory. */
.cp-rights.is-cycling .cp-right { animation: right-cell-beat .42s steps(1, end) calc(.08s + var(--right) * .22s) both; }
.cp-rights.is-cycling .cp-right h3 { animation: right-title-beat .42s steps(1, end) calc(.08s + var(--right) * .22s) both; }
.cp-rights.is-cycling .cp-right a { animation: right-link-beat .42s steps(1, end) calc(.08s + var(--right) * .22s) both; }
@keyframes right-cell-beat { 0%, 100% { background-color: var(--ch-ivory); } 15%, 80% { background-color: var(--ch-ink); } }
@keyframes right-title-beat { 0%, 100% { color: var(--ch-ink); } 15%, 80% { color: #fdf8ea; } }
@keyframes right-link-beat { 0%, 100% { color: var(--ch-label); } 15%, 80% { color: #f3a189; } }
/* Shotcraft brand-ink-open: each instrument title presses into place with a
   warm coral glint along its baseline. */
.cp-lex-row { position: relative; }
.cp-lex-row::after { content: ''; position: absolute; left: 0; right: 2em; bottom: -1px; height: 2px; background: var(--ch-orange); transform: scaleX(0); transform-origin: left; opacity: 0; pointer-events: none; }
.cp-lex-name { display: inline-block; transform-origin: left bottom; }
.cp-lex.is-imprinting .cp-lex-name { animation: lex-impress .4s cubic-bezier(.2,.75,.3,1) calc(.1s + var(--lex) * .32s) both; }
.cp-lex.is-imprinting .cp-lex-row::after { animation: lex-glint .52s cubic-bezier(.3,0,.2,1) calc(.22s + var(--lex) * .32s) both; }
@keyframes lex-impress { 0% { transform: scale(1.16); filter: blur(4px); } 100% { transform: scale(1); filter: blur(0); } }
@keyframes lex-glint { 0% { transform: scaleX(0); opacity: 1; } 55% { transform: scaleX(1); opacity: 1; } 100% { transform: scaleX(1); opacity: 0; } }
/* Shotcraft research-card-stack-scroll: each primary source row steps upward
   into focus with a left index bar and settles cleanly. */
.cp-source { position: relative; }
.cp-source::before { content: ''; position: absolute; left: 0; top: 18px; bottom: 18px; width: 3px; background: var(--ch-orange); transform: scaleY(0); transform-origin: top; opacity: 0; pointer-events: none; }
.cp-source-list.is-scrolling .cp-source { animation: source-card-step .46s cubic-bezier(.2,.75,.3,1) calc(.08s + var(--source) * .22s) both; }
.cp-source-list.is-scrolling .cp-source::before { animation: source-bar-step .46s cubic-bezier(.3,0,.2,1) calc(.08s + var(--source) * .22s) both; }
@keyframes source-card-step { 0%, 100% { transform: translateY(0); } 45% { transform: translateY(-4px); } }
@keyframes source-bar-step { 0% { transform: scaleY(0); opacity: 1; } 55% { transform: scaleY(1); opacity: 1; } 100% { transform: scaleY(1); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .cp-cal.is-traveling::after, .cp-cal.is-traveling > li::before, .cp-pledges.is-sweeping .cp-pledge-num::after, .cp-map.is-locking .cp-reticle, .cp-lex.is-imprinting .cp-lex-row::after, .cp-source-list.is-scrolling .cp-source::before { animation: none; opacity: 0; } .cp-map.is-locking .cp-map-col--default, .cp-rights.is-cycling .cp-right, .cp-rights.is-cycling .cp-right h3, .cp-rights.is-cycling .cp-right a, .cp-lex.is-imprinting .cp-lex-name, .cp-source-list.is-scrolling .cp-source { animation: none; filter: none; } }
