/* Fallback utilities to protect critical layout from Tailwind purge/mismatch */
.w-3{width:.75rem}.h-3{height:.75rem}
.w-4{width:1rem}.h-4{height:1rem}
.w-5{width:1.25rem}.h-5{height:1.25rem}
.w-6{width:1.5rem}.h-6{height:1.5rem}
.w-8{width:2rem}.h-8{height:2rem}
.w-10{width:2.5rem}.h-10{height:2.5rem}
.w-16{width:4rem}.h-16{height:4rem}
.w-56{width:14rem}.h-56{height:14rem}
.w-full{width:100%}
.max-w-full{max-width:100%}
.px-5{padding-left:1.25rem;padding-right:1.25rem}
.py-4{padding-top:1rem;padding-bottom:1rem}
.p-3{padding:.75rem}
.rounded-2xl{border-radius:1rem}
.tracking-tight{letter-spacing:-0.01em}
.text-white{color:#ffffff}
.whitespace-nowrap{white-space:nowrap}
.translate-x-1{transform:translateX(.25rem)}
.min-h-screen{min-height:100vh}
.h-screen{height:100vh}
.min-w-0{min-width:0}
.overflow-hidden{overflow:hidden}
.flex{display:flex}
.items-center{align-items:center}
.justify-center{justify-content:center}
.flex-col{flex-direction:column}
.gap-4{gap:1rem}
svg{max-width:100%;height:auto;max-height:80vh}
img{max-width:100%;height:auto}

/* Constrain potential giant svgs added dynamically */
svg[data-protect], img[data-protect] { max-width: 36rem; max-height: 36rem; }

/* Small utility to visually limit elements that might overflow */
.limit-auto { max-width: 100%; box-sizing: border-box; }
