/* ============================================================
   GadgetCity Todo — Components (Cards, Modals, Badges, Buttons, Forms, etc.)
   ============================================================ */

/* ── Buttons ── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-lg);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:all var(--transition-fast);line-height:1.5;white-space:nowrap;position:relative;overflow:hidden}
.btn::after{content:'';position:absolute;inset:0;background:linear-gradient(rgba(255,255,255,.1),transparent);opacity:0;transition:opacity var(--transition-fast)}
.btn:hover::after{opacity:1}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--color-primary);color:white;box-shadow:0 1px 3px rgba(79,70,229,.4)}
.btn-primary:hover{background:var(--color-primary-dark);box-shadow:0 4px 12px rgba(79,70,229,.4)}
.btn-secondary{background:var(--color-gray-100);color:var(--color-gray-700);border:1px solid var(--color-gray-200)}
.btn-secondary:hover{background:var(--color-gray-200);color:var(--color-gray-900)}
.btn-danger{background:var(--color-danger);color:white;box-shadow:0 1px 3px rgba(239,68,68,.3)}
.btn-danger:hover{background:var(--color-danger-dark)}
.btn-ghost{color:var(--color-gray-600)}
.btn-ghost:hover{background:var(--color-gray-100);color:var(--color-gray-900)}
.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--font-size-xs)}
.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--font-size-md)}
.btn-icon{width:36px;height:36px;padding:0;border-radius:var(--radius-lg)}
.btn:disabled,.btn.loading{opacity:.6;pointer-events:none}
.btn.loading .btn-text{opacity:0}
.btn.loading::before{content:'';position:absolute;width:18px;height:18px;border:2px solid transparent;border-top-color:currentColor;border-radius:50%;animation:spin .6s linear infinite}
.btn-success{background:var(--color-success);color:white;box-shadow:0 1px 3px rgba(16,185,129,.3)}
.btn-success:hover{background:var(--color-success-dark)}

/* ── Cards ── */
.card{background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);padding:var(--space-5);transition:all var(--transition-fast)}
.card:hover{box-shadow:var(--shadow-md)}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}
.card-title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold)}
.card-body{color:var(--color-gray-600)}
.card-footer{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-gray-100);display:flex;align-items:center;justify-content:space-between}

/* ── Badges ── */
.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px 10px;border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);line-height:1.6;white-space:nowrap}
.badge-pending{background:var(--status-pending-bg);color:var(--status-pending-text)}
.badge-in-progress,.badge-progress{background:var(--status-progress-bg);color:var(--status-progress-text)}
.badge-completed{background:var(--status-completed-bg);color:var(--status-completed-text)}
.badge-low{background:var(--priority-low-bg);color:var(--priority-low-text)}
.badge-medium{background:var(--priority-medium-bg);color:var(--priority-medium-text)}
.badge-high{background:var(--priority-high-bg);color:var(--priority-high-text)}
.badge-admin{background:var(--color-primary-50);color:var(--color-primary)}
.badge-employee{background:var(--color-gray-100);color:var(--color-gray-600)}
.badge-dot::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.badge-overdue{background:var(--color-danger-light);color:var(--color-danger-dark)}
.badge-due-today{background:var(--color-warning-light);color:var(--color-warning-dark)}

/* ── Forms ── */
.form-group{margin-bottom:var(--space-4)}
.form-label{display:block;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-700);margin-bottom:var(--space-1)}
.form-input,.form-select,.form-textarea{width:100%;padding:var(--space-2) var(--space-3);background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-lg);color:var(--color-gray-800);font-size:var(--font-size-base);transition:all var(--transition-fast);line-height:1.5}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}
.form-input::placeholder{color:var(--color-gray-400)}
.form-textarea{resize:vertical;min-height:80px}
.form-select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748B' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}
.form-error{font-size:var(--font-size-xs);color:var(--color-danger);margin-top:var(--space-1)}
.form-input.error{border-color:var(--color-danger);box-shadow:0 0 0 3px var(--color-danger-light)}
.form-hint{font-size:var(--font-size-xs);color:var(--color-gray-400);margin-top:var(--space-1)}
.form-checkbox{display:flex;align-items:center;gap:var(--space-2);cursor:pointer}
.form-checkbox input[type="checkbox"]{width:16px;height:16px;accent-color:var(--color-primary);cursor:pointer}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}

/* ── Custom Day Toggles ── */
.day-toggle-group{display:flex;gap:var(--space-2);flex-wrap:wrap}
.day-toggle{position:relative;cursor:pointer}
.day-toggle-input{position:absolute;opacity:0;width:0;height:0}
.day-toggle-label{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--color-white);border:1px solid var(--color-gray-200);color:var(--color-gray-600);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);transition:all var(--transition-fast)}
.day-toggle:hover .day-toggle-label{border-color:var(--color-gray-300);background:var(--color-gray-50)}
.day-toggle-input:checked + .day-toggle-label{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-white);box-shadow:0 2px 4px rgba(79,70,229,.3)}
.day-toggle-input:focus-visible + .day-toggle-label{outline:2px solid var(--color-primary);outline-offset:2px}

/* ── Modal ── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--space-4);animation:fadeIn var(--transition-fast) ease-out}
.modal{background:var(--color-white);border-radius:var(--radius-2xl);width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;box-shadow:var(--shadow-2xl);animation:slideUp var(--transition-slow) ease-out}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-gray-100)}
.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold)}
.modal-close{width:32px;height:32px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;color:var(--color-gray-400);transition:all var(--transition-fast)}
.modal-close:hover{background:var(--color-gray-100);color:var(--color-gray-700)}
.modal-body{flex:1;padding:var(--space-6);overflow-y:auto}
.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-gray-100)}

/* ── Toast ── */
.toast-container{position:fixed;top:var(--space-4);right:var(--space-4);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);max-width:380px}
.toast{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-white);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);border:1px solid var(--color-gray-200);animation:slideInRight var(--transition-slow) ease-out;position:relative;overflow:hidden}
.toast::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px}
.toast.toast-success::before{background:var(--color-success)}
.toast.toast-error::before{background:var(--color-danger)}
.toast.toast-warning::before{background:var(--color-warning)}
.toast.toast-info::before{background:var(--color-info)}
.toast-icon{flex-shrink:0;width:20px;height:20px;margin-top:1px}
.toast-content{flex:1;min-width:0}
.toast-message{font-size:var(--font-size-sm);color:var(--color-gray-700);line-height:var(--line-height-normal)}
.toast-dismiss{flex-shrink:0;width:20px;height:20px;color:var(--color-gray-400);cursor:pointer;transition:color var(--transition-fast)}
.toast-dismiss:hover{color:var(--color-gray-600)}
.toast.removing{animation:slideInRight var(--transition-slow) ease-in reverse forwards}

/* ── Loader ── */
.loader-overlay{position:fixed;inset:0;background:rgba(255,255,255,.8);backdrop-filter:blur(4px);z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--space-3)}
.loader-spinner{width:40px;height:40px;border:3px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}
.loader-text{font-size:var(--font-size-sm);color:var(--color-gray-500)}
.spinner-inline{width:20px;height:20px;border:2px solid var(--color-gray-200);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}

/* ── Skeleton ── */
.skeleton{background:linear-gradient(90deg,var(--color-gray-100) 25%,var(--color-gray-200) 50%,var(--color-gray-100) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}
.skeleton-text{height:14px;margin-bottom:var(--space-2);width:100%}
.skeleton-text:last-child{width:60%}
.skeleton-title{height:20px;width:40%;margin-bottom:var(--space-3)}
.skeleton-circle{border-radius:50%}

/* ── Progress Bar ── */
.progress-bar{width:100%;height:6px;background:var(--color-gray-100);border-radius:var(--radius-full);overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-primary-light));border-radius:var(--radius-full);transition:width var(--transition-slow) ease-out}

/* ── Avatar ── */
.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary-200),var(--color-primary));display:flex;align-items:center;justify-content:center;color:white;font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);flex-shrink:0;overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar-sm{width:24px;height:24px;font-size:10px}
.avatar-lg{width:42px;height:42px;font-size:var(--font-size-md)}
.avatar-xl{width:64px;height:64px;font-size:var(--font-size-xl)}
.avatar-stack{display:flex}
.avatar-stack .avatar{margin-left:-8px;border:2px solid var(--color-white)}
.avatar-stack .avatar:first-child{margin-left:0}
.avatar-stack .avatar-more{background:var(--color-gray-200);color:var(--color-gray-600)}

/* ── Empty State ── */
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16) var(--space-4);text-align:center}
.empty-state-icon{width:80px;height:80px;background:var(--color-gray-100);border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-4);color:var(--color-gray-400)}
.empty-state-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-gray-900);margin-bottom:var(--space-2)}
.empty-state-text{font-size:var(--font-size-sm);color:var(--color-gray-500);max-width:320px;margin-bottom:var(--space-6)}

/* ── Dropdown ── */
.dropdown{position:relative;display:inline-block}
.dropdown-menu{position:absolute;top:calc(100% + 4px);left:0;min-width:180px;background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:var(--space-2);z-index:var(--z-dropdown);animation:scaleIn var(--transition-fast) ease-out;display:none}
.dropdown-menu.open{display:block}
.dropdown-menu.right{left:auto;right:0}
.dropdown-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-gray-600);cursor:pointer;transition:all var(--transition-fast)}
.dropdown-item:hover{background:var(--color-gray-100);color:var(--color-gray-900)}
.dropdown-divider{height:1px;background:var(--color-gray-100);margin:var(--space-1) 0}

/* ── Tabs ── */
.tabs{display:flex;gap:0;border-bottom:1px solid var(--color-gray-200);margin-bottom:var(--space-6)}
.tab{padding:var(--space-3) var(--space-4);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-gray-500);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all var(--transition-fast)}
.tab:hover{color:var(--color-gray-700)}
.tab.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}

/* ── Tooltip ── */
[data-tooltip]{position:relative}
[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--color-gray-900);color:white;padding:4px 8px;border-radius:var(--radius-md);font-size:var(--font-size-xs);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--transition-fast);z-index:var(--z-dropdown)}
[data-tooltip]:hover::after{opacity:1}

/* ── Multi-select ── */
.multi-select-container{position:relative}
.multi-select-tags{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-1);min-height:40px;background:var(--color-white);border:1px solid var(--color-gray-300);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);align-items:center}
.multi-select-tags:focus-within{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-100)}
.multi-select-tag{display:flex;align-items:center;gap:4px;padding:2px 8px;background:var(--color-primary-50);color:var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium)}
.multi-select-tag-remove{cursor:pointer;opacity:.7;transition:opacity var(--transition-fast)}
.multi-select-tag-remove:hover{opacity:1}
.multi-select-input{flex:1;min-width:80px;border:none;outline:none;padding:var(--space-1) var(--space-2);font-size:var(--font-size-sm)}
.multi-select-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:200px;overflow-y:auto;background:var(--color-white);border:1px solid var(--color-gray-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);display:none}
.multi-select-dropdown.open{display:block}
.multi-select-option{padding:var(--space-2) var(--space-3);font-size:var(--font-size-sm);cursor:pointer;display:flex;align-items:center;gap:var(--space-2);transition:background var(--transition-fast)}
.multi-select-option:hover{background:var(--color-gray-100)}
.multi-select-option.selected{background:var(--color-primary-50);color:var(--color-primary)}
