/* ==========================================================================
   Dashboard v2 — Tailwind-compat layer (GENERATED — do not edit by hand)

   Built by scripts/dashboard-v2/build-compat-css.js from the class names the
   shared tab scripts (public/js/tabs/*.js) and shared partials inject at
   runtime. /dashboard/v2 loads Skynet UI instead of the Tailwind CDN, so every
   Tailwind palette class those scripts still emit is expressed here with
   Skynet UI theme tokens: bg-gray-800 → --sk-surface, text-purple-400 →
   --sk-primary-text, hover:bg-red-700 → --sk-danger-hover, and so on.

   Regenerate after changing a tab script:  npm run build:dashboard-v2-compat
   Only classes Skynet UI does not define itself are emitted, so this file
   never overrides the framework.
   ========================================================================== */

/* Keyframes referenced by animate-* utilities */
@keyframes dv2-spin { to { transform: rotate(360deg); } }
@keyframes dv2-ping { 75%, 100% { transform: scale(2); opacity: 0; } }
@keyframes dv2-pulse { 50% { opacity: .5; } }
@keyframes dv2-bounce { 0%, 100% { transform: translateY(-25%); animation-timing-function: cubic-bezier(.8,0,1,1); } 50% { transform: none; animation-timing-function: cubic-bezier(0,0,.2,1); } }
@keyframes dv2-slide-in { from { opacity: 0; transform: translateX(1rem); } to { opacity: 1; transform: none; } }
@keyframes dv2-fade-in { from { opacity: 0; } to { opacity: 1; } }

/* Tailwind's bg-black/bg-white + bg-opacity-N pairing */
.bg-black.bg-opacity-50, .bg-black.bg-opacity-75, .bg-black.bg-opacity-60, .bg-black.bg-opacity-80, .bg-black.bg-opacity-90 { background-color: rgba(0, 0, 0, var(--dv2-bg-alpha, 1)); }


.-translate-x-1\/2 { --dv2-tx: calc(50% * -1); transform: translate(var(--dv2-tx, 0), var(--dv2-ty, 0)) rotate(var(--dv2-rotate, 0)) scale(var(--dv2-scale-x, 1), var(--dv2-scale-y, 1)); }
.bg-blue-900 { background-color: color-mix(in srgb, var(--sk-info) 28%, var(--sk-bg)); }
.bg-gray-700\/30 { background-color: color-mix(in srgb, var(--sk-surface-2) 30%, transparent); }
.bg-gray-700\/50 { background-color: color-mix(in srgb, var(--sk-surface-2) 50%, transparent); }
.bg-gray-800 { background-color: var(--sk-surface); }
.bg-green-900\/20 { background-color: color-mix(in srgb, color-mix(in srgb, var(--sk-success) 28%, var(--sk-bg)) 20%, transparent); }
.bg-purple-900 { background-color: color-mix(in srgb, var(--sk-primary) 28%, var(--sk-bg)); }
.bg-red-900 { background-color: color-mix(in srgb, var(--sk-danger) 28%, var(--sk-bg)); }
.bg-yellow-900 { background-color: color-mix(in srgb, var(--sk-warning) 28%, var(--sk-bg)); }
.bg-yellow-900\/20 { background-color: color-mix(in srgb, color-mix(in srgb, var(--sk-warning) 28%, var(--sk-bg)) 20%, transparent); }
.border-gray-600 { border-color: var(--sk-border-2); }
.border-gray-700 { border-color: var(--sk-border); }
.border-green-500\/30 { border-color: color-mix(in srgb, var(--sk-success) 30%, transparent); }
.border-purple-500\/30 { border-color: color-mix(in srgb, var(--sk-primary) 30%, transparent); }
.border-yellow-500\/30 { border-color: color-mix(in srgb, var(--sk-warning) 30%, transparent); }
.bottom-20 { bottom: 5rem; }
.flex-shrink-0 { flex-shrink: 0; }
.from-purple-500 { --sk-grad-from: var(--sk-primary); --sk-grad-stops: var(--sk-grad-from), var(--sk-grad-to, transparent); }
.h-5 { height: 1.25rem; }
.hover\:bg-gray-750:hover { background-color: var(--sk-surface-2); }
.hover\:border-purple-500:hover { border-color: var(--sk-primary); }
.hover\:text-blue-300:hover { color: var(--sk-info-text); }
.hover\:text-red-500:hover { color: var(--sk-danger-text); }
.hover\:text-white:hover { color: var(--sk-text); }
.left-1\/2 { left: 50%; }
.py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
.text-blue-300 { color: var(--sk-info-text); }
.text-blue-400 { color: var(--sk-info-text); }
.text-gray-300 { color: var(--sk-text-2); }
.text-gray-400 { color: var(--sk-muted); }
.text-gray-500 { color: var(--sk-muted); }
.text-green-300 { color: var(--sk-success-text); }
.text-green-400 { color: var(--sk-success-text); }
.text-purple-300 { color: var(--sk-primary-text); }
.text-red-300 { color: var(--sk-danger-text); }
.text-red-400 { color: var(--sk-danger-text); }
.text-white { color: var(--sk-text); }
.text-yellow-300 { color: var(--sk-warning-text); }
.text-yellow-400 { color: var(--sk-warning-text); }
.to-pink-500 { --sk-grad-to: var(--sk-primary); }
.w-5 { width: 1.25rem; }
.z-\[1001\] { z-index: 1001; }

/* 42 rules from 112 distinct class tokens across 3 sources.
   55 tokens are Skynet UI classes and were skipped.
   Not generated (page-specific classes styled in dashboard-v2.css or by the tab scripts): 13.
   Not generated (Tailwind classes with no safe token mapping): none */
