/* =================================================
   utils.css — 프로젝트 유틸리티 클래스 모음
   순수 CSS로 작성된 레이아웃·간격·색상 유틸리티.
   외부 CSS 프레임워크 의존 없음.
   새 유틸리티 추가 시 이 파일에 직접 작성.
   ================================================= */

/* ── 색상 변수 ── */
:root {
  --tw-gray-50:    #f9fafb;
  --tw-gray-100:   #f3f4f6;
  --tw-gray-200:   #e5e7eb;
  --tw-gray-400:   #9ca3af;
  --tw-gray-500:   #6b7280;
  --tw-gray-600:   #4b5563;
  --tw-gray-700:   #374151;
  --tw-gray-800:   #1f2937;
  --tw-slate-50:   #f8fafc;
  --tw-slate-100:  #f1f5f9;
  --tw-slate-200:  #e2e8f0;
  --tw-slate-300:  #cbd5e1;
  --tw-slate-400:  #94a3b8;
  --tw-slate-500:  #64748b;
  --tw-slate-600:  #475569;
  --tw-slate-700:  #334155;
  --tw-slate-800:  #1e293b;
  --tw-slate-900:  #0f172a;
  --tw-blue-50:    #eff6ff;
  --tw-blue-100:   #dbeafe;
  --tw-blue-500:   #3b82f6;
  --tw-blue-600:   #2563eb;
  --tw-blue-700:   #1d4ed8;
  --tw-emerald-50: #ecfdf5;
  --tw-emerald-100:#d1fae5;
  --tw-emerald-400:#34d399;
  --tw-emerald-500:#10b981;
  --tw-emerald-600:#059669;
  --tw-emerald-700:#047857;
  --tw-emerald-800:#065f46;
  --tw-green-50:   #f0fdf4;
  --tw-green-200:  #bbf7d0;
  --tw-green-400:  #4ade80;
  --tw-green-500:  #22c55e;
  --tw-green-600:  #16a34a;
  --tw-green-700:  #15803d;
  --tw-green-800:  #166534;
  --tw-indigo-50:  #eef2ff;
  --tw-indigo-100: #e0e7ff;
  --tw-indigo-500: #6366f1;
  --tw-indigo-600: #4f46e5;
  --tw-indigo-700: #4338ca;
  --tw-orange-50:  #fff7ed;
  --tw-orange-100: #ffedd5;
  --tw-orange-200: #fed7aa;
  --tw-orange-400: #fb923c;
  --tw-orange-500: #f97316;
  --tw-orange-600: #ea580c;
  --tw-orange-700: #c2410c;
  --tw-pink-50:    #fdf2f8;
  --tw-pink-600:   #db2777;
  --tw-purple-50:  #faf5ff;
  --tw-purple-400: #c084fc;
  --tw-purple-500: #a855f7;
  --tw-purple-600: #9333ea;
  --tw-purple-700: #7e22ce;
  --tw-red-50:     #fef2f2;
  --tw-red-200:    #fecaca;
  --tw-red-600:    #dc2626;
  --tw-red-700:    #b91c1c;
  --tw-rose-50:    #fff1f2;
  --tw-rose-100:   #ffe4e6;
  --tw-rose-200:   #fecdd3;
  --tw-rose-300:   #fda4af;
  --tw-rose-400:   #fb7185;
  --tw-rose-500:   #f43f5e;
  --tw-sky-400:    #38bdf8;
  --tw-violet-400: #a78bfa;
  --tw-yellow-500: #eab308;
}

/* ══════════════════════════════════════════
   DISPLAY
══════════════════════════════════════════ */
.block         { display: block !important; }
.inline-block  { display: inline-block !important; }
.inline-flex   { display: inline-flex !important; }
.flex          { display: flex !important; }
.grid          { display: grid !important; }
.hidden        { display: none !important; }
.list-item     { display: list-item !important; }

/* ══════════════════════════════════════════
   FLEXBOX
══════════════════════════════════════════ */
.flex-1        { flex: 1 1 0% !important; }
.flex-col      { flex-direction: column !important; }
.flex-wrap     { flex-wrap: wrap !important; }
.flex-shrink-0 { flex-shrink: 0 !important; }
.shrink-0      { flex-shrink: 0 !important; }
.items-start   { align-items: flex-start !important; }
.items-center  { align-items: center !important; }
.items-end     { align-items: flex-end !important; }
.justify-center  { justify-content: center !important; }
.justify-between { justify-content: space-between !important; }
.mt-auto       { margin-top: auto !important; }
.ml-auto       { margin-left: auto !important; }
.mx-auto       { margin-left: auto !important; margin-right: auto !important; }

/* ══════════════════════════════════════════
   GRID
══════════════════════════════════════════ */
.grid-cols-1   { grid-template-columns: repeat(1, minmax(0, 1fr)) !important; }
.grid-cols-2   { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
.grid-cols-3   { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
.grid-cols-4   { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
.grid-cols-5   { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }
.grid-cols-7   { grid-template-columns: repeat(7, minmax(0, 1fr)) !important; }

/* ══════════════════════════════════════════
   GAP
══════════════════════════════════════════ */
.gap-1   { gap: 0.25rem !important; }
.gap-1\.5{ gap: 0.375rem !important; }
.gap-2   { gap: 0.5rem !important; }
.gap-3   { gap: 0.75rem !important; }
.gap-4   { gap: 1rem !important; }
.gap-6   { gap: 1.5rem !important; }

/* ══════════════════════════════════════════
   SPACE BETWEEN (Y)
══════════════════════════════════════════ */
.space-y-0\.5 > * + * { margin-top: 0.125rem !important; }
.space-y-2    > * + * { margin-top: 0.5rem !important; }
.space-y-3    > * + * { margin-top: 0.75rem !important; }
.space-y-4    > * + * { margin-top: 1rem !important; }
.space-y-5    > * + * { margin-top: 1.25rem !important; }
.space-y-6    > * + * { margin-top: 1.5rem !important; }

/* ══════════════════════════════════════════
   PADDING
══════════════════════════════════════════ */
.p-1    { padding: 0.25rem !important; }
.p-1\.5 { padding: 0.375rem !important; }
.p-2    { padding: 0.5rem !important; }
.p-3    { padding: 0.75rem !important; }
.p-3\.5 { padding: 0.875rem !important; }
.p-4    { padding: 1rem !important; }
.p-5    { padding: 1.25rem !important; }
.p-6    { padding: 1.5rem !important; }
.p-10   { padding: 2.5rem !important; }

.px-1   { padding-left: 0.25rem !important; padding-right: 0.25rem !important; }
.px-1\.5{ padding-left: 0.375rem !important; padding-right: 0.375rem !important; }
.px-2   { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
.px-2\.5{ padding-left: 0.625rem !important; padding-right: 0.625rem !important; }
.px-3   { padding-left: 0.75rem !important; padding-right: 0.75rem !important; }
.px-3\.5{ padding-left: 0.875rem !important; padding-right: 0.875rem !important; }
.px-4   { padding-left: 1rem !important; padding-right: 1rem !important; }
.px-5   { padding-left: 1.25rem !important; padding-right: 1.25rem !important; }
.px-6   { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }

.py-0\.5{ padding-top: 0.125rem !important; padding-bottom: 0.125rem !important; }
.py-1   { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
.py-1\.5{ padding-top: 0.375rem !important; padding-bottom: 0.375rem !important; }
.py-2   { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
.py-2\.5{ padding-top: 0.625rem !important; padding-bottom: 0.625rem !important; }
.py-3   { padding-top: 0.75rem !important; padding-bottom: 0.75rem !important; }
.py-3\.5{ padding-top: 0.875rem !important; padding-bottom: 0.875rem !important; }
.py-4   { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.py-6   { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.py-16  { padding-top: 4rem !important; padding-bottom: 4rem !important; }

.pt-2   { padding-top: 0.5rem !important; }
.pt-3   { padding-top: 0.75rem !important; }
.pt-4   { padding-top: 1rem !important; }
.pt-5   { padding-top: 1.25rem !important; }
.pb-2   { padding-bottom: 0.5rem !important; }
.pb-3   { padding-bottom: 0.75rem !important; }
.pb-4   { padding-bottom: 1rem !important; }
.pl-2   { padding-left: 0.5rem !important; }
.pr-3   { padding-right: 0.75rem !important; }
.pr-8   { padding-right: 2rem !important; }

/* ══════════════════════════════════════════
   MARGIN
══════════════════════════════════════════ */
.mb-0\.5{ margin-bottom: 0.125rem !important; }
.mb-1   { margin-bottom: 0.25rem !important; }
.mb-1\.5{ margin-bottom: 0.375rem !important; }
.mb-2   { margin-bottom: 0.5rem !important; }
.mb-2\.5{ margin-bottom: 0.625rem !important; }
.mb-3   { margin-bottom: 0.75rem !important; }
.mb-4   { margin-bottom: 1rem !important; }
.mb-5   { margin-bottom: 1.25rem !important; }
.mb-6   { margin-bottom: 1.5rem !important; }

.mt-0\.5{ margin-top: 0.125rem !important; }
.mt-1   { margin-top: 0.25rem !important; }
.mt-1\.5{ margin-top: 0.375rem !important; }
.mt-2   { margin-top: 0.5rem !important; }
.mt-3   { margin-top: 0.75rem !important; }
.mt-4   { margin-top: 1rem !important; }
.mt-6   { margin-top: 1.5rem !important; }

.ml-1   { margin-left: 0.25rem !important; }
.ml-2   { margin-left: 0.5rem !important; }
.mx-6   { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }

/* ══════════════════════════════════════════
   WIDTH
══════════════════════════════════════════ */
.w-1\.5 { width: 0.375rem !important; }
.w-2    { width: 0.5rem !important; }
.w-5    { width: 1.25rem !important; }
.w-9    { width: 2.25rem !important; }
.w-10   { width: 2.5rem !important; }
.w-11   { width: 2.75rem !important; }
.w-12   { width: 3rem !important; }
.w-14   { width: 3.5rem !important; }
.w-20   { width: 5rem !important; }
.w-40   { width: 10rem !important; }
.w-full { width: 100% !important; }

/* ══════════════════════════════════════════
   HEIGHT
══════════════════════════════════════════ */
.h-px   { height: 1px !important; }
.h-1\.5 { height: 0.375rem !important; }
.h-2    { height: 0.5rem !important; }
.h-2\.5 { height: 0.625rem !important; }
.h-3    { height: 0.75rem !important; }
.h-5    { height: 1.25rem !important; }
.h-6    { height: 1.5rem !important; }
.h-8    { height: 2rem !important; }
.h-9    { height: 2.25rem !important; }
.h-10   { height: 2.5rem !important; }
.h-11   { height: 2.75rem !important; }
.h-12   { height: 3rem !important; }
.h-14   { height: 3.5rem !important; }
.h-20   { height: 5rem !important; }
.h-28   { height: 7rem !important; }
.h-full { height: 100% !important; }

/* ══════════════════════════════════════════
   SIZE (width + height)
══════════════════════════════════════════ */
.size-10 { width: 2.5rem !important; height: 2.5rem !important; }

/* ══════════════════════════════════════════
   MIN / MAX
══════════════════════════════════════════ */
.min-w-0    { min-width: 0 !important; }
.min-w-24   { min-width: 6rem !important; }
.min-h-20   { min-height: 5rem !important; }
.min-h-40   { min-height: 10rem !important; }
.min-h-screen{ min-height: 100vh !important; }
.max-w-40   { max-width: 10rem !important; }
.max-w-lg   { max-width: 32rem !important; }
.max-w-4xl  { max-width: 56rem !important; }
.max-h-\[80vh\] { max-height: 80vh !important; }

/* ══════════════════════════════════════════
   POSITION
══════════════════════════════════════════ */
.fixed    { position: fixed !important; }
.absolute { position: absolute !important; }
.relative { position: relative !important; }
.sticky   { position: sticky !important; }
.inset-0  { top: 0 !important; right: 0 !important; bottom: 0 !important; left: 0 !important; }
.top-0\.5 { top: 0.125rem !important; }
.z-50     { z-index: 50 !important; }

/* ══════════════════════════════════════════
   BACKGROUND COLORS
══════════════════════════════════════════ */
.bg-transparent { background-color: transparent !important; }
.bg-white       { background-color: #ffffff !important; }
.bg-white\/20   { background-color: rgba(255,255,255,0.2) !important; }
.bg-white\/30   { background-color: rgba(255,255,255,0.3) !important; }
.bg-white\/70   { background-color: rgba(255,255,255,0.7) !important; }
.bg-black\/40   { background-color: rgba(0,0,0,0.4) !important; }

.bg-gray-50     { background-color: var(--tw-gray-50) !important; }
.bg-gray-50\/50 { background-color: rgba(249,250,251,0.5) !important; }
.bg-gray-100    { background-color: var(--tw-gray-100) !important; }
.bg-gray-200    { background-color: var(--tw-gray-200) !important; }

.bg-slate-50    { background-color: var(--tw-slate-50) !important; }
.bg-slate-100   { background-color: var(--tw-slate-100) !important; }
.bg-slate-200   { background-color: var(--tw-slate-200) !important; }

.bg-blue-50     { background-color: var(--tw-blue-50) !important; }

.bg-emerald-50  { background-color: var(--tw-emerald-50) !important; }
.bg-emerald-100 { background-color: var(--tw-emerald-100) !important; }
.bg-emerald-400 { background-color: var(--tw-emerald-400) !important; }
.bg-emerald-500 { background-color: var(--tw-emerald-500) !important; }

.bg-green-50    { background-color: var(--tw-green-50) !important; }
.bg-green-400   { background-color: var(--tw-green-400) !important; }

.bg-indigo-50   { background-color: var(--tw-indigo-50) !important; }

.bg-orange-50   { background-color: var(--tw-orange-50) !important; }
.bg-orange-400  { background-color: var(--tw-orange-400) !important; }

.bg-pink-50     { background-color: var(--tw-pink-50) !important; }

.bg-purple-50   { background-color: var(--tw-purple-50) !important; }
.bg-purple-400  { background-color: var(--tw-purple-400) !important; }
.bg-purple-600  { background-color: var(--tw-purple-600) !important; }

.bg-red-50      { background-color: var(--tw-red-50) !important; }

.bg-rose-50     { background-color: var(--tw-rose-50) !important; }

.bg-sky-400     { background-color: var(--tw-sky-400) !important; }
.bg-violet-400  { background-color: var(--tw-violet-400) !important; }

/* ── 동적 배경 (bg-primary/10) ── */
.bg-primary\/10 { background-color: rgba(19,127,236,0.1) !important; }

/* ══════════════════════════════════════════
   TEXT COLOR
══════════════════════════════════════════ */
.text-white      { color: #ffffff !important; }
.text-primary    { color: var(--primary, #137fec) !important; }

.text-gray-400   { color: var(--tw-gray-400) !important; }
.text-gray-500   { color: var(--tw-gray-500) !important; }
.text-gray-600   { color: var(--tw-gray-600) !important; }
.text-gray-700   { color: var(--tw-gray-700) !important; }
.text-gray-800   { color: var(--tw-gray-800) !important; }

.text-slate-300  { color: var(--tw-slate-300) !important; }
.text-slate-400  { color: var(--tw-slate-400) !important; }
.text-slate-500  { color: var(--tw-slate-500) !important; }
.text-slate-600  { color: var(--tw-slate-600) !important; }
.text-slate-700  { color: var(--tw-slate-700) !important; }
.text-slate-800  { color: var(--tw-slate-800) !important; }
.text-slate-900  { color: var(--tw-slate-900) !important; }

.text-blue-100   { color: var(--tw-blue-100) !important; }
.text-blue-500   { color: var(--tw-blue-500) !important; }
.text-blue-600   { color: var(--tw-blue-600) !important; }
.text-blue-700   { color: var(--tw-blue-700) !important; }

.text-emerald-600{ color: var(--tw-emerald-600) !important; }
.text-emerald-700{ color: var(--tw-emerald-700) !important; }
.text-emerald-800{ color: var(--tw-emerald-800) !important; }

.text-green-500  { color: var(--tw-green-500) !important; }
.text-green-600  { color: var(--tw-green-600) !important; }
.text-green-700  { color: var(--tw-green-700) !important; }
.text-green-800  { color: var(--tw-green-800) !important; }

.text-indigo-500 { color: var(--tw-indigo-500) !important; }
.text-indigo-600 { color: var(--tw-indigo-600) !important; }
.text-indigo-700 { color: var(--tw-indigo-700) !important; }

.text-orange-500 { color: var(--tw-orange-500) !important; }
.text-orange-600 { color: var(--tw-orange-600) !important; }
.text-orange-700 { color: var(--tw-orange-700) !important; }

.text-pink-600   { color: var(--tw-pink-600) !important; }

.text-purple-500 { color: var(--tw-purple-500) !important; }
.text-purple-600 { color: var(--tw-purple-600) !important; }
.text-purple-700 { color: var(--tw-purple-700) !important; }

.text-red-600    { color: var(--tw-red-600) !important; }
.text-red-700    { color: var(--tw-red-700) !important; }

.text-rose-300   { color: var(--tw-rose-300) !important; }
.text-rose-400   { color: var(--tw-rose-400) !important; }
.text-rose-500   { color: var(--tw-rose-500) !important; }

.text-yellow-500 { color: var(--tw-yellow-500) !important; }

/* ══════════════════════════════════════════
   FONT SIZE
══════════════════════════════════════════ */
.text-\[10px\] { font-size: 10px !important; }
.text-xs    { font-size: 0.75rem !important; line-height: 1rem !important; }
.text-sm    { font-size: 0.875rem !important; line-height: 1.25rem !important; }
.text-base  { font-size: 1rem !important; line-height: 1.5rem !important; }
.text-lg    { font-size: 1.125rem !important; line-height: 1.75rem !important; }
.text-xl    { font-size: 1.25rem !important; line-height: 1.75rem !important; }
.text-2xl   { font-size: 1.5rem !important; line-height: 2rem !important; }
.text-3xl   { font-size: 1.875rem !important; line-height: 2.25rem !important; }
.text-4xl   { font-size: 2.25rem !important; line-height: 2.5rem !important; }
.text-5xl   { font-size: 3rem !important; line-height: 1 !important; }
.text-7xl   { font-size: 4.5rem !important; line-height: 1 !important; }

/* ══════════════════════════════════════════
   TEXT ALIGN / DECORATION / TRANSFORM
══════════════════════════════════════════ */
.text-left    { text-align: left !important; }
.text-center  { text-align: center !important; }
.text-right   { text-align: right !important; }
.underline    { text-decoration-line: underline !important; }
.underline-offset-4 { text-underline-offset: 4px !important; }
.decoration-2 { text-decoration-thickness: 2px !important; }
.truncate     { overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.whitespace-nowrap { white-space: nowrap !important; }
.uppercase    { text-transform: uppercase !important; }

/* ══════════════════════════════════════════
   FONT WEIGHT
══════════════════════════════════════════ */
.font-normal   { font-weight: 400 !important; }
.font-medium   { font-weight: 500 !important; }
.font-semibold { font-weight: 600 !important; }
.font-bold     { font-weight: 700 !important; }

/* ══════════════════════════════════════════
   LINE HEIGHT / LETTER SPACING
══════════════════════════════════════════ */
.leading-tight   { line-height: 1.25 !important; }
.leading-snug    { line-height: 1.375 !important; }
.leading-normal  { line-height: 1.5 !important; }
.leading-relaxed { line-height: 1.625 !important; }
.tracking-tight  { letter-spacing: -0.025em !important; }

/* ══════════════════════════════════════════
   BORDER
══════════════════════════════════════════ */
.border      { border-width: 1px !important; border-style: solid !important; }
.border-2    { border-width: 2px !important; border-style: solid !important; }
.border-4    { border-width: 4px !important; border-style: solid !important; }
.border-t    { border-top-width: 1px !important; border-top-style: solid !important; }
.border-b    { border-bottom-width: 1px !important; border-bottom-style: solid !important; }
.border-r    { border-right-width: 1px !important; border-right-style: solid !important; }
.border-dashed { border-style: dashed !important; }

.border-gray-50  { border-color: var(--tw-gray-50) !important; }
.border-gray-100 { border-color: var(--tw-gray-100) !important; }
.border-gray-200 { border-color: var(--tw-gray-200) !important; }
.border-slate-100{ border-color: var(--tw-slate-100) !important; }
.border-slate-200{ border-color: var(--tw-slate-200) !important; }
.border-slate-300{ border-color: var(--tw-slate-300) !important; }
.border-green-200{ border-color: var(--tw-green-200) !important; }
.border-red-200  { border-color: var(--tw-red-200) !important; }
.border-emerald-100{ border-color: var(--tw-emerald-100) !important; }
.border-emerald-600{ border-color: var(--tw-emerald-600) !important; }
.border-orange-100 { border-color: var(--tw-orange-100) !important; }
.border-orange-200 { border-color: var(--tw-orange-200) !important; }
.border-rose-100   { border-color: var(--tw-rose-100) !important; }
.border-rose-200   { border-color: var(--tw-rose-200) !important; }
.border-indigo-100 { border-color: var(--tw-indigo-100) !important; }
.border-primary    { border-color: var(--primary, #137fec) !important; }

/* ══════════════════════════════════════════
   BORDER RADIUS
══════════════════════════════════════════ */
.rounded-full { border-radius: 9999px !important; }
.rounded-lg   { border-radius: 0.5rem !important; }
.rounded-xl   { border-radius: 0.75rem !important; }
.rounded-2xl  { border-radius: 1rem !important; }
.rounded-t-lg { border-top-left-radius: 0.5rem !important; border-top-right-radius: 0.5rem !important; }

/* ══════════════════════════════════════════
   SHADOW
══════════════════════════════════════════ */
.shadow    { box-shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06) !important; }
.shadow-sm { box-shadow: 0 1px 2px rgba(0,0,0,0.05) !important; }

/* ══════════════════════════════════════════
   OVERFLOW
══════════════════════════════════════════ */
.overflow-hidden   { overflow: hidden !important; }
.overflow-x-auto   { overflow-x: auto !important; }
.overflow-x-hidden { overflow-x: hidden !important; }
.overflow-y-auto   { overflow-y: auto !important; }

/* ══════════════════════════════════════════
   OPACITY / CURSOR / SELECT / RESIZE
══════════════════════════════════════════ */
.opacity-60    { opacity: 0.6 !important; }
.cursor-pointer{ cursor: pointer !important; }
.select-none   { user-select: none !important; }
.resize-none   { resize: none !important; }
.sr-only       { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border-width: 0 !important; }

/* ══════════════════════════════════════════
   TRANSITION
══════════════════════════════════════════ */
.transition           { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter !important; transition-timing-function: cubic-bezier(0.4,0,0.2,1) !important; transition-duration: 150ms !important; }
.transition-all       { transition-property: all !important; transition-timing-function: cubic-bezier(0.4,0,0.2,1) !important; transition-duration: 150ms !important; }
.transition-colors    { transition-property: color, background-color, border-color !important; transition-timing-function: cubic-bezier(0.4,0,0.2,1) !important; transition-duration: 150ms !important; }
.transition-transform { transition-property: transform !important; transition-timing-function: cubic-bezier(0.4,0,0.2,1) !important; transition-duration: 150ms !important; }

/* ══════════════════════════════════════════
   PSEUDO-CLASS: HOVER
══════════════════════════════════════════ */
.hover\:bg-blue-50:hover      { background-color: var(--tw-blue-50) !important; }
.hover\:bg-gray-100:hover     { background-color: var(--tw-gray-100) !important; }
.hover\:bg-purple-50:hover    { background-color: var(--tw-purple-50) !important; }
.hover\:bg-purple-700:hover   { background-color: var(--tw-purple-700) !important; }
.hover\:bg-red-50:hover       { background-color: var(--tw-red-50) !important; }
.hover\:shadow-md:hover       { box-shadow: 0 4px 6px rgba(0,0,0,0.07), 0 2px 4px rgba(0,0,0,0.06) !important; }
.hover\:text-blue-600:hover   { color: var(--tw-blue-600) !important; }
.hover\:text-gray-600:hover   { color: var(--tw-gray-600) !important; }
.hover\:text-purple-600:hover { color: var(--tw-purple-600) !important; }
.hover\:text-red-600:hover    { color: var(--tw-red-600) !important; }
.hover\:underline:hover       { text-decoration-line: underline !important; }

/* ══════════════════════════════════════════
   PSEUDO-CLASS: FOCUS
══════════════════════════════════════════ */
.focus\:border-primary:focus { border-color: var(--primary, #137fec) !important; }
.focus\:outline-none:focus   { outline: none !important; }
.focus\:ring-2:focus         { box-shadow: 0 0 0 2px rgba(59,130,246,0.4) !important; }
.focus\:ring-blue-300:focus  { --tw-ring-color: rgba(147,197,253,0.5); }

/* ══════════════════════════════════════════
   PSEUDO-CLASS: ACTIVE
══════════════════════════════════════════ */
.active\:scale-95:active { transform: scale(0.95) !important; }

/* ══════════════════════════════════════════
   PSEUDO-CLASS: LAST
══════════════════════════════════════════ */
.last\:border-0:last-child { border-width: 0 !important; }

/* ══════════════════════════════════════════
   RESPONSIVE: md (≥768px)
══════════════════════════════════════════ */
@media (min-width: 768px) {
  .md\:grid-cols-2   { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
  .md\:grid-cols-4   { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  .md\:hidden        { display: none !important; }
  .md\:items-center  { align-items: center !important; }
}
