/* * GOONDEX — COMPONENTS * Cards, stats, modals, chips, search, utility components. * Unified with dark-only theme + medium-intensity Flamingo Pink accents. */ /* ============================================ * CARD — Base component * ============================================ */ .card { background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: 20px; padding: 1.5rem; box-shadow: none; transition: none; } /* ============================================ * STAT CARDS (Dashboard) * ============================================ */ .stat-card { background: var(--color-bg-card); border-radius: 20px; padding: 1.5rem; display: flex; align-items: center; gap: 1.2rem; border: 1px solid var(--color-border); box-shadow: none; transition: none; } .stat-icon { font-size: 2.2rem; color: var(--color-brand); text-shadow: none; } .stat-content { flex: 1; } .stat-value { font-size: 2.2rem; font-weight: 700; color: var(--color-text-primary); } .stat-label { font-size: 0.95rem; color: var(--color-text-secondary); } .stat-actions { display: flex; flex-direction: column; gap: 0.35rem; text-align: right; } .stat-link { color: var(--color-brand); font-size: 0.9rem; text-decoration: none; } .stat-link:hover { text-decoration: underline; } /* ============================================ * SEARCH RESULTS DROPDOWN * ============================================ */ .search-results { margin-top: 0.75rem; background: var(--color-bg-card); border: 1px solid var(--color-border); border-radius: 20px; box-shadow: none; max-height: 340px; overflow-y: auto; padding: 0.5rem; } .search-result-item { padding: 0.75rem 1rem; border-radius: 12px; cursor: pointer; transition: none; } .search-result-title { font-size: 1rem; font-weight: 600; color: var(--color-text-primary); } /* ============================================ * TAG / CHIP COMPONENTS * ============================================ */ .tag, .chip { display: inline-block; padding: 0.35rem 0.7rem; font-size: 0.8rem; border-radius: var(--radius); background: rgba(255, 79, 163, 0.15); border: 1px solid rgba(255, 79, 163, 0.28); color: var(--color-brand); margin-right: 0.4rem; margin-bottom: 0.4rem; text-transform: capitalize; white-space: nowrap; } /* ============================================ * MODALS (Overlays, boxes, close buttons) * ============================================ */ .modal-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.78); backdrop-filter: blur(4px); z-index: 1000; opacity: 0; pointer-events: none; transition: opacity var(--transition); } .modal-overlay.active { opacity: 1; pointer-events: auto; } .modal-box { background: var(--color-bg-card); border: 1px solid var(--color-border-soft); border-radius: var(--radius-soft); padding: 2rem; max-width: 520px; margin: 12vh auto 0 auto; box-shadow: var(--shadow-elevated), var(--shadow-glow-pink-soft); animation: modalFadeIn 0.25s ease; } @keyframes modalFadeIn { from { opacity: 0; transform: translateY(-12px); } to { opacity: 1; transform: translateY(0); } } .modal-close { position: absolute; top: 1.1rem; right: 1.4rem; font-size: 1.4rem; color: var(--color-text-secondary); cursor: pointer; transition: color var(--transition); } .modal-close:hover { color: var(--color-brand); } /* Modal title */ .modal-title { font-size: 1.6rem; font-weight: 700; margin-bottom: 1rem; background: linear-gradient(135deg, var(--color-brand), var(--color-header)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; } /* ============================================ * GRID + UTIL COMPONENTS * ============================================ */ .grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; } .grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } .grid-auto { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.5rem; } /* Glow divider */ .divider-glow { height: 1px; width: 100%; margin: 1.5rem 0; background: linear-gradient( 90deg, transparent, rgba(255, 79, 163, 0.25), transparent ); }