.flash-layer { position: fixed; inset: 0; z-index: 100; pointer-events: none; }
.flash-edge { position: absolute; inset: 0; border: 4px solid var(--fc); box-shadow: inset 0 0 60px var(--fc); animation: flashPulse .9s ease-in-out infinite; }
.flash-layer.long { --fc: #2ecc9a; } .flash-layer.short { --fc: #ff6b6b; }
.flash-banner { pointer-events: auto; position: absolute; top: 14px; left: 50%; transform: translateX(-50%); width: min(460px, calc(100vw - 24px)); background: #101826; border: 2px solid var(--fc); border-radius: 12px; padding: 12px 14px; box-shadow: 0 12px 40px rgba(0,0,0,.6); animation: flashBanner .9s ease-in-out infinite; }
.flash-head { display: flex; align-items: center; gap: 8px; }
.flash-head b { flex: 1; font-size: 14px; color: var(--fc); }
.flash-ic { color: var(--fc); display: inline-flex; }
.flash-x { background: none; border: 0; color: #8493a8; font-size: 22px; cursor: pointer; line-height: 1; }
.flash-body { margin-top: 8px; font-size: 12.5px; display: grid; gap: 3px; color: #e3ebf5; }
.flash-body .warn { color: #f5b942; font-weight: 600; }
.flash-foot { margin-top: 8px; font-size: 11px; color: #8493a8; }
@keyframes flashPulse { 0%, 100% { opacity: .15; } 50% { opacity: 1; } }
@keyframes flashBanner { 0%, 100% { box-shadow: 0 12px 40px rgba(0,0,0,.6), 0 0 0 0 var(--fc); } 50% { box-shadow: 0 12px 40px rgba(0,0,0,.6), 0 0 26px 4px var(--fc); } }
@media (prefers-reduced-motion: reduce) { .flash-edge, .flash-banner { animation-duration: 2.4s; } }
