:root{--primary-color:#2563eb;--primary-hover:#1d4ed8;--secondary-color:#1e40af;--success-color:#10b981;--danger-color:#ef4444;--warning-color:#f59e0b;--info-color:#3b82f6;--text-dark:#1f2937;--text-normal:#374151;--text-light:#6b7280;--text-lighter:#9ca3af;--bg-white:#fff;--bg-light:#f9fafb;--bg-gray:#f3f4f6;--bg-dark:#1f2937;--border-color:#e5e7eb;--border-light:#f3f4f6;--border-dark:#d1d5db;--spacing-xs:0.25rem;--spacing-sm:0.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 2px #0000000d;--shadow-md:0 2px 8px #00000014;--shadow-lg:0 4px 16px #0000001f;--shadow-xl:0 20px 60px #0000004d;--transition-fast:0.15s ease;--transition-normal:0.2s ease;--transition-slow:0.3s ease;--z-dropdown:100;--z-sticky:200;--z-modal:1000;--z-tooltip:2000}.flex{display:flex}.flex-col{flex-direction:column}.flex-center{justify-content:center}.flex-between,.flex-center{align-items:center;display:flex}.flex-between{justify-content:space-between}.flex-start{justify-content:flex-start}.flex-end,.flex-start{align-items:center;display:flex}.flex-end{justify-content:flex-end}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-xs{gap:var(--spacing-xs)}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.gap-xl{gap:var(--spacing-xl)}.m-0{margin:0}.mt-xs{margin-top:var(--spacing-xs)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mt-xl{margin-top:var(--spacing-xl)}.mb-xs{margin-bottom:var(--spacing-xs)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.mb-xl{margin-bottom:var(--spacing-xl)}.ml-auto{margin-left:auto}.mr-auto,.mx-auto{margin-right:auto}.mx-auto{margin-left:auto}.p-0{padding:0}.p-xs{padding:var(--spacing-xs)}.p-sm{padding:var(--spacing-sm)}.p-md{padding:var(--spacing-md)}.p-lg{padding:var(--spacing-lg)}.p-xl{padding:var(--spacing-xl)}.px-sm{padding-left:var(--spacing-sm);padding-right:var(--spacing-sm)}.px-md{padding-left:var(--spacing-md);padding-right:var(--spacing-md)}.px-lg{padding-left:var(--spacing-lg);padding-right:var(--spacing-lg)}.py-sm{padding-bottom:var(--spacing-sm);padding-top:var(--spacing-sm)}.py-md{padding-bottom:var(--spacing-md);padding-top:var(--spacing-md)}.py-lg{padding-bottom:var(--spacing-lg);padding-top:var(--spacing-lg)}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-md{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-primary{color:var(--primary-color)}.text-danger{color:var(--danger-color)}.text-success{color:var(--success-color)}.text-warning{color:var(--warning-color)}.text-muted{color:var(--text-light)}.text-normal{color:var(--text-normal)}.text-dark{color:var(--text-dark)}.text-white{color:var(--bg-white)}.bg-white{background-color:var(--bg-white)}.bg-light{background-color:var(--bg-light)}.bg-gray{background-color:var(--bg-gray)}.bg-primary{background-color:var(--primary-color)}.bg-success{background-color:var(--success-color)}.bg-danger{background-color:var(--danger-color)}.w-full{width:100%}.w-auto{width:auto}.max-w-none{max-width:none}.min-w-0{min-width:0}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.hidden{display:none}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.text-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:-webkit-sticky;position:sticky}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.border{border:1px solid var(--border-color)}.border-none{border:none}.rounded-sm{border-radius:var(--radius-sm)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.shadow-sm{box-shadow:var(--shadow-sm)}.shadow-md{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}.whitespace-nowrap{white-space:nowrap}.whitespace-normal{white-space:normal}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:var(--z-modal)}.modal{background:var(--bg-white);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-height:90vh;overflow-y:auto;padding:var(--spacing-xl);width:min(720px,90vw)}.modal-wide{width:min(960px,92vw)}.modal-narrow{width:min(560px,90vw)}.modal-header{color:var(--text-dark);font-size:var(--text-xl);font-weight:600;margin-bottom:var(--spacing-lg)}.badge{border-radius:var(--radius-sm);display:inline-block;font-size:.875rem;font-weight:500;line-height:1.25;padding:.25rem .75rem}.badge-active{background:#d1fae5;color:#065f46}.badge-completed{background:#dbeafe;color:#1e40af}.badge-upcoming{background:#fef3c7;color:#92400e}.badge-canceled,.badge-inactive{background:#f3f4f6;color:#6b7280}.badge-enrolled{background:#dbeafe;color:#1e40af}.badge-invited,.badge-pending{background:#fef3c7;color:#92400e}.badge-success{background:#d1fae5;color:#065f46}.badge-danger{background:#fee2e2;color:#991b1b}.badge-warning{background:#fef3c7;color:#92400e}.badge-info{background:#dbeafe;color:#1e40af}.form-label{color:var(--text-dark);display:block;font-weight:500;margin-bottom:var(--spacing-sm)}.form-label-required:after{color:var(--danger-color);content:" *";margin-left:2px}.form-actions{display:flex;gap:var(--spacing-sm);justify-content:flex-end;margin-top:var(--spacing-lg)}.form-grid-2{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:1fr 1fr}.form-grid-full{grid-column:1/-1}.card{background:var(--bg-white);border:1px solid var(--border-color);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--spacing-lg)}.card-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:var(--spacing-md)}.card-title{color:var(--text-dark);font-size:1.25rem;font-weight:600;margin:0}.card-body{color:var(--text-normal)}.btn-sm{font-size:.875rem;padding:.5rem .75rem}.btn-lg{font-size:1.125rem;padding:.75rem 1.5rem}.empty-state{background:var(--bg-light);border-radius:var(--radius-md);color:var(--text-light);padding:var(--spacing-xl);text-align:center}.empty-state-icon{font-size:3rem;margin-bottom:var(--spacing-md);opacity:.5}.empty-state-text{font-size:1rem;margin-bottom:var(--spacing-md)}.loading-spinner{animation:spin .6s linear infinite;border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);display:inline-block;height:1.5rem;width:1.5rem}@keyframes spin{to{transform:rotate(1turn)}}.divider{background:var(--border-color);height:1px;margin:var(--spacing-lg) 0}.action-buttons{display:flex;gap:var(--spacing-sm)}.status-dot{border-radius:50%;display:inline-block;height:8px;margin-right:var(--spacing-xs);width:8px}.status-dot-active{background-color:var(--success-color)}.status-dot-inactive{background-color:var(--text-light)}.status-dot-warning{background-color:var(--warning-color)}.status-dot-danger{background-color:var(--danger-color)}.container{margin:0 auto;max-width:1280px;padding:0 var(--spacing-lg)}.container-fluid{padding:0 var(--spacing-lg);width:100%}.admin-container-custom{margin:var(--spacing-2xl);max-width:none;width:auto}.grid{grid-gap:var(--spacing-md)}.grid,.grid-2{display:grid;gap:var(--spacing-md)}.grid-2{grid-gap:var(--spacing-md);grid-template-columns:1fr 1fr}.grid-3{grid-gap:var(--spacing-md);grid-template-columns:repeat(3,1fr)}.grid-3,.grid-4{display:grid;gap:var(--spacing-md)}.grid-4{grid-gap:var(--spacing-md);grid-template-columns:repeat(4,1fr)}.grid-auto{grid-gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid-auto,.grid-auto-sm{display:grid;gap:var(--spacing-md)}.grid-auto-sm{grid-gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.grid-auto-lg{grid-gap:var(--spacing-md);display:grid;gap:var(--spacing-md);grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.col-span-1{grid-column:span 1}.col-span-2{grid-column:span 2}.col-span-3{grid-column:span 3}.col-span-4{grid-column:span 4}.col-span-full{grid-column:1/-1}.page-header{margin-bottom:var(--spacing-xl)}.page-title{color:var(--text-dark);font-size:2rem;font-weight:700;margin:0 0 var(--spacing-sm) 0}.page-description{color:var(--text-light);font-size:1rem;margin:0}.filters-row{align-items:center;display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-bottom:var(--spacing-lg)}.table-wrap{border-radius:var(--radius-md);overflow-x:auto;width:100%}@media (max-width:1024px){.grid-3,.grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.admin-container-custom{margin:var(--spacing-lg)}.filters-row{align-items:stretch;flex-direction:column}.form-grid-2{grid-template-columns:1fr}}@media (max-width:640px){.container,.container-fluid{padding:0 var(--spacing-md)}}.stack{display:flex;flex-direction:column}.stack-xs>*+*{margin-top:var(--spacing-xs)}.stack-sm>*+*{margin-top:var(--spacing-sm)}.stack-md>*+*{margin-top:var(--spacing-md)}.stack-lg>*+*{margin-top:var(--spacing-lg)}.stack-xl>*+*{margin-top:var(--spacing-xl)}.hstack{align-items:center;display:flex}.hstack-xs{gap:var(--spacing-xs)}.hstack-sm{gap:var(--spacing-sm)}.hstack-md{gap:var(--spacing-md)}.hstack-lg{gap:var(--spacing-lg)}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-size:14px}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--bg-light);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;overflow-x:hidden}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}