@import"https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500&display=swap";@tailwind base;@tailwind components;@tailwind utilities;:root{--sidebar-width: 260px}@layer base{html{@apply antialiased;}body{@apply bg-slate-50 text-slate-800 font-sans;}*{@apply border-slate-200;}::-webkit-scrollbar{@apply w-1.5 h-1.5;}::-webkit-scrollbar-track{@apply bg-transparent;}::-webkit-scrollbar-thumb{@apply bg-slate-300 rounded-full;}::-webkit-scrollbar-thumb:hover{@apply bg-slate-400;}}@layer components{.card{@apply bg-white rounded-xl border border-slate-200 shadow-card;}.card-hover{@apply card transition-shadow duration-200 hover:shadow-card-hover;}.btn{@apply inline-flex items-center gap-2 px-4 py-2 rounded-lg font-medium text-sm transition-all duration-150 focus:outline-none focus:ring-2 focus:ring-offset-1 disabled:opacity-50 disabled:cursor-not-allowed;}.btn-primary{@apply btn bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 focus:ring-primary-500;}.btn-secondary{@apply btn bg-white text-slate-700 border border-slate-300 hover:bg-slate-50 active:bg-slate-100 focus:ring-slate-400;}.btn-danger{@apply btn bg-red-600 text-white hover:bg-red-700 focus:ring-red-500;}.btn-ghost{@apply btn text-slate-600 hover:bg-slate-100 focus:ring-slate-400;}.btn-sm{@apply px-3 py-1.5 text-xs rounded-md;}.btn-lg{@apply px-6 py-3 text-base;}.btn-icon{@apply btn p-2 aspect-square;}.form-label{@apply block text-sm font-medium text-slate-700 mb-1;}.form-input{@apply w-full px-3 py-2 bg-white border border-slate-300 rounded-lg text-sm placeholder:text-slate-400 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-primary-500 disabled:bg-slate-50 disabled:text-slate-500 disabled:cursor-not-allowed transition-shadow duration-150;}.form-select{@apply form-input appearance-none cursor-pointer;}.form-error{@apply text-red-600 text-xs mt-1;}.badge{@apply inline-flex items-center gap-1 px-2 py-0.5 rounded-full text-xs font-medium;}.badge-green{@apply badge bg-emerald-100 text-emerald-700;}.badge-blue{@apply badge bg-blue-100 text-blue-700;}.badge-amber{@apply badge bg-amber-100 text-amber-700;}.badge-red{@apply badge bg-red-100 text-red-700;}.badge-purple{@apply badge bg-purple-100 text-purple-700;}.badge-slate{@apply badge bg-slate-100 text-slate-600;}.badge-orange{@apply badge bg-orange-100 text-orange-700;}.data-table{@apply w-full text-sm;}.data-table th{@apply px-4 py-3 text-left text-xs font-semibold text-slate-500 uppercase tracking-wide bg-slate-50 border-b border-slate-200;}.data-table td{@apply px-4 py-3 border-b border-slate-100 text-slate-700;}.data-table tr:last-child td{@apply border-0;}.data-table tbody tr{@apply hover:bg-slate-50 transition-colors duration-100;}.stat-card{@apply card p-5 flex flex-col gap-2;}.stat-value{@apply text-3xl font-bold text-slate-900 font-mono;}.stat-label{@apply text-sm text-slate-500 font-medium;}.nav-item{@apply flex items-center gap-3 px-3 py-2 rounded-lg text-sm font-medium text-slate-600 hover:bg-primary-50 hover:text-primary-700 transition-all duration-150 cursor-pointer;}.nav-item.active{@apply bg-primary-100 text-primary-700;}.nav-group-label{@apply px-3 mb-1 text-xs font-semibold text-slate-400 uppercase tracking-wider;}.cal-flag-overdue{@apply text-red-600;}.cal-flag-due_soon{@apply text-orange-500;}.cal-flag-due_month{@apply text-amber-500;}.cal-flag-healthy{@apply text-emerald-600;}.cal-flag-no_date{@apply text-slate-400;}.skeleton{@apply bg-slate-200 rounded animate-pulse;}.page-header{@apply flex items-center justify-between mb-6;}.page-title{@apply text-xl font-bold text-slate-900;}.page-subtitle{@apply text-sm text-slate-500 mt-0.5;}}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.slide-in-right{animation:slideInRight .2s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .15s ease-out}
