/* Lifecycle is backend truth. Motion decorates only its explicit permission. */
.vivian-media-card { margin-top:12px; padding:12px; border:1px solid rgba(170,180,255,.25); border-radius:18px; background:rgba(120,130,210,.06); overflow:hidden; }
.vivian-media-content { display:grid; gap:8px; }
.vivian-media-content img,.vivian-media-content video { display:block; object-fit:contain; max-width:100%; height:auto; }
.vivian-media-status { font-size:.75rem; opacity:.7; margin-top:8px; }
.vivian-media-actions { justify-self:end; position:relative; }
.vivian-media-actions summary { cursor:pointer; padding:10px; }
.vivian-media-actions button,.vivian-media-actions a { min-height:44px; display:inline-flex; align-items:center; padding:8px 12px; color:inherit; background:transparent; border:0; text-decoration:none; cursor:pointer; }
[data-vivian-permission="INTRO"].vivian-media-card { animation:vivian-card-intro .25s ease-out; }
[data-vivian-permission="PREPARE"] .vivian-media-status,
[data-vivian-permission="LOOP"] .vivian-media-status,
[data-vivian-permission="FINALIZE"] .vivian-media-status { animation:vivian-media-breathe 2s ease-in-out infinite; }
[data-vivian-permission="RESOLVE_SUCCESS"].vivian-media-card { background:rgba(120,130,210,.035); }
[data-vivian-permission="RESOLVE_FAILURE"].vivian-media-card { border-color:rgba(240,110,110,.4); }
[data-vivian-permission="RESOLVE_CANCEL"].vivian-media-card { opacity:.75; }
[data-vivian-permission="HOLD_INTERRUPTED"] .vivian-media-status,
[data-vivian-permission="HOLD_UNCERTAIN"] .vivian-media-status,
[data-vivian-permission="DECORATIVE_ONLY"] .vivian-media-status { animation:none; }
@keyframes vivian-media-breathe { 50% { opacity:.4; } }
@keyframes vivian-card-intro { from { opacity:.5; } to { opacity:1; } }
@media (prefers-reduced-motion: reduce) { .vivian-media-card,.vivian-media-card * { animation:none !important; transition:none !important; } }
