/** * BudgetDetailModal Styles */ .budget-detail-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 1rem; } .budget-detail-modal { background-color: var(--color-bg); border-radius: 16px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); width: 100%; max-width: 600px; max-height: 85vh; display: flex; flex-direction: column; overflow: hidden; animation: modalFadeIn 0.2s ease-out; } @keyframes modalFadeIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } .budget-detail-modal__header { padding: 1.5rem; border-bottom: 1px solid var(--color-border); display: flex; justify-content: space-between; align-items: center; background-color: var(--color-bg-secondary); } .budget-detail-modal__title-section { display: flex; flex-direction: column; gap: 0.25rem; } .budget-detail-modal__title { margin: 0; font-size: 1.25rem; font-weight: 700; color: var(--color-text); } .budget-detail-modal__period { font-size: 0.875rem; color: var(--color-text-secondary); } .budget-detail-modal__close { background: none; border: none; cursor: pointer; color: var(--color-text-secondary); padding: 0.5rem; border-radius: 50%; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; } .budget-detail-modal__close:hover { background-color: rgba(0, 0, 0, 0.05); color: var(--color-text); } .budget-detail-modal__content { flex: 1; overflow-y: auto; padding: 1.5rem; } .budget-detail-modal__summary { display: flex; justify-content: space-between; margin-bottom: 2rem; padding: 1rem; background: var(--color-bg-secondary); border-radius: 12px; border: 1px solid var(--color-border); } .budget-detail-modal__stat { display: flex; flex-direction: column; align-items: center; gap: 0.25rem; flex: 1; } .budget-detail-modal__stat-label { font-size: 0.75rem; color: var(--color-text-secondary); text-transform: uppercase; letter-spacing: 0.5px; } .budget-detail-modal__stat-value { font-size: 1.125rem; font-weight: 700; color: var(--color-text); font-family: 'Outfit', sans-serif; } .budget-detail-modal__stat-value--spent { color: var(--color-primary); } .budget-detail-modal__stat-value--remaining { color: var(--color-success); } .budget-detail-modal__stat-value--negative { color: var(--color-error); } .budget-detail-modal__stat-divider { width: 1px; background-color: var(--color-border); height: 40px; align-self: center; } .budget-detail-modal__transactions h4 { margin: 0 0 1rem 0; font-size: 1rem; color: var(--color-text); display: flex; align-items: center; gap: 0.5rem; } .budget-detail-modal__list { display: flex; flex-direction: column; gap: 0.75rem; } .budget-detail-modal__empty { text-align: center; padding: 2rem; color: var(--color-text-secondary); display: flex; flex-direction: column; align-items: center; gap: 0.5rem; } .budget-detail-modal__loading { display: flex; justify-content: center; padding: 2rem; } .budget-spinner { width: 24px; height: 24px; border: 2px solid var(--color-border); border-top-color: var(--color-primary); border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Chart */ .budget-detail-modal__chart { margin-bottom: 1.5rem; padding: 1rem; background: var(--color-bg); border-radius: 12px; border: 1px dashed var(--color-border); } .budget-detail-modal__chart-bars { display: flex; align-items: flex-end; justify-content: space-around; height: 100px; gap: 0.5rem; padding-bottom: 0.5rem; } .budget-detail-modal__chart-col { display: flex; flex-direction: column; align-items: center; flex: 1; height: 100%; justify-content: flex-end; gap: 0.25rem; } .budget-detail-modal__chart-bar { width: 80%; max-width: 20px; background: linear-gradient(180deg, var(--color-primary-light) 0%, var(--color-primary) 100%); border-radius: 4px; min-height: 4px; opacity: 0.8; transition: all 0.2s; } .budget-detail-modal__chart-bar:hover { opacity: 1; transform: scaleY(1.05); } .budget-detail-modal__quick-add-btn { display: flex; align-items: center; gap: 0.25rem; padding: 0.375rem 0.75rem; background-color: rgba(var(--color-primary-rgb), 0.1); color: var(--color-primary); border: 1px solid transparent; border-radius: 999px; font-size: 0.75rem; font-size: 0.75rem; font-weight: 600; cursor: pointer; transition: all 0.2s; } .budget-detail-modal__quick-add-btn:hover { background-color: var(--color-primary); color: white; transform: translateY(-1px); } /* AI Insight */ .budget-detail-modal__ai-insight { display: flex; gap: 0.75rem; padding: 1rem; margin-bottom: 1.5rem; border-radius: 12px; background: var(--glass-panel-bg); border: 1px solid transparent; align-items: flex-start; transition: all 0.3s ease; } .budget-detail-modal__ai-insight--normal { background: rgba(var(--color-primary-rgb), 0.05); border-color: rgba(var(--color-primary-rgb), 0.1); } .budget-detail-modal__ai-insight--normal .budget-detail-modal__ai-icon { color: var(--color-primary); } .budget-detail-modal__ai-insight--warning { background: rgba(245, 158, 11, 0.05); border-color: rgba(245, 158, 11, 0.2); } .budget-detail-modal__ai-insight--warning .budget-detail-modal__ai-icon { color: #F59E0B; } .budget-detail-modal__ai-insight--danger { background: rgba(239, 68, 68, 0.05); border-color: rgba(239, 68, 68, 0.2); } .budget-detail-modal__ai-insight--danger .budget-detail-modal__ai-icon { color: #EF4444; } .budget-detail-modal__ai-insight--success { background: rgba(16, 185, 129, 0.05); border-color: rgba(16, 185, 129, 0.2); } .budget-detail-modal__ai-insight--success .budget-detail-modal__ai-icon { color: #10B981; } .budget-detail-modal__ai-insight--info { background: rgba(59, 130, 246, 0.05); border-color: rgba(59, 130, 246, 0.2); } .budget-detail-modal__ai-insight--info .budget-detail-modal__ai-icon { color: #3B82F6; } .budget-detail-modal__ai-icon { margin-top: 2px; display: flex; align-items: center; justify-content: center; } .budget-detail-modal__ai-content { flex: 1; display: flex; flex-direction: column; gap: 0.25rem; } .budget-detail-modal__ai-title { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; opacity: 0.8; } .budget-detail-modal__ai-text { font-size: 0.9rem; line-height: 1.5; color: var(--color-text); margin: 0; }