/* Shotcraft draw-svg-trace: 40 frames of in-out cubic outline, followed by a
   10-frame handoff. Adapted to the existing Values plaque; flat ink only. */
.vs-trace { position: absolute; inset: -3px; width: calc(100% + 6px); height: calc(100% + 6px); overflow: visible; pointer-events: none; }
.vs-trace rect { fill: none; stroke: #91391e; stroke-width: 2; vector-effect: non-scaling-stroke; stroke-dasharray: 1; stroke-dashoffset: 1; opacity: 0; }
.vs-plaque.is-tracing .vs-trace rect { animation: values-trace 1.33s cubic-bezier(.65,0,.35,1) both, values-handoff .33s ease-out 1.33s both; }
@keyframes values-trace { from { stroke-dashoffset: 1; opacity: 1; } to { stroke-dashoffset: 0; opacity: 1; } }
@keyframes values-handoff { from { opacity: 1; } to { opacity: 0; } }
/* Shotcraft element-body-moves, contact-shadow-lift: one card lifts at a time
   with an independent desk shadow, then settles with a slight press. */
body.ip-sovereignty .vs-layers { isolation: isolate; }
body.ip-sovereignty .vs-layer { position: relative; }
body.ip-sovereignty .vs-layer::before { content: ''; position: absolute; inset: 4px -2px -4px 2px; border-radius: 12px; background: rgba(27,47,92,.14); filter: blur(6px); opacity: 0; z-index: -1; pointer-events: none; }
.vs-layers.is-lifting .vs-layer { animation: layer-lift 1.2s cubic-bezier(.22,.82,.24,1) calc(var(--layer) * 1.15s) both; }
.vs-layers.is-lifting .vs-layer::before { animation: layer-shadow 1.2s cubic-bezier(.22,.82,.24,1) calc(var(--layer) * 1.15s) both; }
@keyframes layer-lift { 0%, 100% { transform: translateY(0) scale(1); } 42% { transform: translateY(-14px) scale(1.03); } 82% { transform: translateY(1px) scale(.992); } }
@keyframes layer-shadow { 0%, 100% { transform: translate(0, 0) scale(1); opacity: 0; filter: blur(4px); } 42% { transform: translate(4px, 14px) scale(1.02); opacity: 1; filter: blur(14px); } 82% { transform: translate(0, 0) scale(.99); opacity: .2; filter: blur(3px); } }
/* Shotcraft icon-performance-moves, icon-pop-pulse-loop: each principle badge
   pops with a 1.18x overshoot and a brief ring ripple on arrival. */
body.ip-sovereignty .vs-badge { position: relative; }
body.ip-sovereignty .vs-badge::after { content: ''; position: absolute; inset: -1px; border: 1.5px solid #91391e; border-radius: inherit; opacity: 0; pointer-events: none; }
.vs-principles.is-popping .vs-badge { animation: badge-pop .44s cubic-bezier(.18,1.35,.32,1) calc(.1s + var(--badge) * .2s) both; }
.vs-principles.is-popping .vs-badge::after { animation: badge-ring .55s ease-out calc(.18s + var(--badge) * .2s) both; }
@keyframes badge-pop { 0%, 100% { transform: scale(1); } 45% { transform: scale(1.18); } 75% { transform: scale(.96); } }
@keyframes badge-ring { 0% { transform: scale(1); opacity: .75; } 100% { transform: scale(1.55); opacity: 0; } }
/* Shotcraft letterspace-materialize: wide-tracked small-caps signoff
   crystallizes into its tracking while its coral rule draws across. */
body.ip-sovereignty .vs-signoff::before { transform-origin: left center; }
body.ip-sovereignty .vs-signoff.is-crystallizing { animation: signoff-crystallize .9s cubic-bezier(.3,0,.2,1) .12s both; }
body.ip-sovereignty .vs-signoff.is-crystallizing::before { animation: signoff-rule-draw .55s cubic-bezier(.3,0,.2,1) .12s both; }
@keyframes signoff-crystallize { 0% { letter-spacing: .28em; filter: blur(2px); } 100% { letter-spacing: .15em; filter: blur(0); } }
@keyframes signoff-rule-draw { 0% { transform: scaleX(0); } 100% { transform: scaleX(1); } }
@media (prefers-reduced-motion: reduce) { .vs-plaque.is-tracing .vs-trace rect, .vs-layers.is-lifting .vs-layer::before, .vs-principles.is-popping .vs-badge::after { animation: none; opacity: 0; } .vs-layers.is-lifting .vs-layer, .vs-principles.is-popping .vs-badge, body.ip-sovereignty .vs-signoff.is-crystallizing, body.ip-sovereignty .vs-signoff.is-crystallizing::before { animation: none; filter: none; } }
