/* ============================================ Premium Area Module – Custom Styles Modern, vibrant design for Oqtane Module ============================================ */ /* ── CSS Custom Properties ── */ :root { --pa-primary: #6366f1; --pa-primary-hover: #4f46e5; --pa-primary-light: rgba(99, 102, 241, 0.10); --pa-secondary: #8b5cf6; --pa-secondary-hover: #7c3aed; --pa-accent: #06b6d4; --pa-accent-hover: #0891b2; --pa-success: #10b981; --pa-success-hover: #059669; --pa-danger: #ef4444; --pa-danger-hover: #dc2626; --pa-warning: #f59e0b; --pa-text: #1e293b; --pa-text-muted: #64748b; --pa-bg: #f8fafc; --pa-card-bg: #ffffff; --pa-border: #e2e8f0; --pa-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08); --pa-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.10); --pa-shadow-lg: 0 10px 30px rgba(0, 0, 0, 0.12); --pa-radius: 12px; --pa-radius-lg: 16px; --pa-transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); } /* ── Premium Area Container ── */ .premium-area-wrapper { padding: 24px 0; } .premium-area-header { text-align: center; margin-bottom: 36px; } .premium-area-header h2 { font-size: 2rem; font-weight: 700; color: var(--pa-text); margin-bottom: 8px; letter-spacing: -0.5px; } .premium-area-header p { font-size: 1.1rem; color: var(--pa-text-muted); max-width: 500px; margin: 0 auto; } /* ── Navigation Cards (Index Page) ── */ .pa-nav-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; margin-bottom: 32px; } .pa-nav-card { display: flex; flex-direction: column; align-items: center; text-align: center; background: var(--pa-card-bg); border: 1px solid var(--pa-border); border-radius: var(--pa-radius-lg); padding: 40px 28px 36px; text-decoration: none !important; color: var(--pa-text) !important; box-shadow: var(--pa-shadow-sm); transition: var(--pa-transition); position: relative; overflow: hidden; cursor: pointer; } .pa-nav-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; border-radius: var(--pa-radius-lg) var(--pa-radius-lg) 0 0; transition: var(--pa-transition); } .pa-nav-card:hover { transform: translateY(-6px); box-shadow: var(--pa-shadow-lg); border-color: transparent; text-decoration: none !important; } .pa-nav-card--apply::before { background: linear-gradient(135deg, var(--pa-primary), var(--pa-secondary)); } .pa-nav-card--apply:hover { border-color: var(--pa-primary); } .pa-nav-card--search::before { background: linear-gradient(135deg, var(--pa-accent), #2dd4bf); } .pa-nav-card--search:hover { border-color: var(--pa-accent); } .pa-nav-card--list::before { background: linear-gradient(135deg, var(--pa-success), #34d399); } .pa-nav-card--list:hover { border-color: var(--pa-success); } .pa-nav-card:hover::before { height: 6px; } .pa-nav-icon { width: 72px; height: 72px; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-bottom: 20px; font-size: 28px; transition: var(--pa-transition); } .pa-nav-card--apply .pa-nav-icon { background: linear-gradient(135deg, rgba(99, 102, 241, 0.12), rgba(139, 92, 246, 0.12)); color: var(--pa-primary); } .pa-nav-card--apply:hover .pa-nav-icon { background: linear-gradient(135deg, var(--pa-primary), var(--pa-secondary)); color: #fff; transform: scale(1.1); } .pa-nav-card--search .pa-nav-icon { background: linear-gradient(135deg, rgba(6, 182, 212, 0.12), rgba(45, 212, 191, 0.12)); color: var(--pa-accent); } .pa-nav-card--search:hover .pa-nav-icon { background: linear-gradient(135deg, var(--pa-accent), #2dd4bf); color: #fff; transform: scale(1.1); } .pa-nav-card--list .pa-nav-icon { background: linear-gradient(135deg, rgba(16, 185, 129, 0.12), rgba(52, 211, 153, 0.12)); color: var(--pa-success); } .pa-nav-card--list:hover .pa-nav-icon { background: linear-gradient(135deg, var(--pa-success), #34d399); color: #fff; transform: scale(1.1); } .pa-nav-title { font-size: 1.3rem; font-weight: 700; margin-bottom: 8px; color: var(--pa-text); } .pa-nav-desc { font-size: 0.95rem; color: var(--pa-text-muted); line-height: 1.5; margin-bottom: 20px; } .pa-nav-arrow { display: inline-flex; align-items: center; gap: 6px; font-size: 0.9rem; font-weight: 600; color: var(--pa-text-muted); transition: var(--pa-transition); } .pa-nav-card--apply .pa-nav-arrow { color: var(--pa-primary); } .pa-nav-card--search .pa-nav-arrow { color: var(--pa-accent); } .pa-nav-card--list .pa-nav-arrow { color: var(--pa-success); } .pa-nav-card:hover .pa-nav-arrow { transform: translateX(4px); } /* ── Premium Buttons (replaces default Bootstrap blue) ── */ .pa-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-weight: 600; font-size: 0.95rem; padding: 12px 24px; border-radius: 10px; border: 2px solid transparent; cursor: pointer; transition: var(--pa-transition); text-decoration: none !important; line-height: 1.4; letter-spacing: 0.2px; } .pa-btn:focus-visible { outline: 2px solid var(--pa-primary); outline-offset: 2px; } /* Primary Button – Gradient */ .pa-btn-primary { background: linear-gradient(135deg, var(--pa-primary), var(--pa-secondary)); color: #fff !important; border-color: transparent; box-shadow: 0 4px 14px rgba(99, 102, 241, 0.35); } .pa-btn-primary:hover { background: linear-gradient(135deg, var(--pa-primary-hover), var(--pa-secondary-hover)); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.45); color: #fff !important; } .pa-btn-primary:active { transform: translateY(0); } /* Secondary Button – Ghost */ .pa-btn-secondary { background: transparent; color: var(--pa-text-muted) !important; border-color: var(--pa-border); } .pa-btn-secondary:hover { background: var(--pa-bg); color: var(--pa-text) !important; border-color: #cbd5e1; transform: translateY(-1px); } /* Success Button */ .pa-btn-success { background: linear-gradient(135deg, var(--pa-success), #34d399); color: #fff !important; box-shadow: 0 4px 14px rgba(16, 185, 129, 0.35); } .pa-btn-success:hover { background: linear-gradient(135deg, var(--pa-success-hover), #10b981); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(16, 185, 129, 0.45); color: #fff !important; } /* Danger Button */ .pa-btn-danger { background: linear-gradient(135deg, var(--pa-danger), #f87171); color: #fff !important; box-shadow: 0 4px 14px rgba(239, 68, 68, 0.30); } .pa-btn-danger:hover { background: linear-gradient(135deg, var(--pa-danger-hover), var(--pa-danger)); transform: translateY(-2px); box-shadow: 0 6px 20px rgba(239, 68, 68, 0.40); color: #fff !important; } /* Outline Variants */ .pa-btn-outline-danger { background: transparent; color: var(--pa-danger) !important; border-color: var(--pa-danger); } .pa-btn-outline-danger:hover { background: rgba(239, 68, 68, 0.08); transform: translateY(-1px); } .pa-btn-outline-info { background: transparent; color: var(--pa-accent) !important; border-color: var(--pa-accent); } .pa-btn-outline-info:hover { background: rgba(6, 182, 212, 0.08); transform: translateY(-1px); } .pa-btn-outline-secondary { background: transparent; color: var(--pa-text-muted) !important; border-color: var(--pa-border); } .pa-btn-outline-secondary:hover { background: var(--pa-bg); color: var(--pa-text) !important; border-color: #cbd5e1; transform: translateY(-1px); } /* Button Sizes */ .pa-btn-sm { font-size: 0.85rem; padding: 8px 16px; border-radius: 8px; } .pa-btn-lg { font-size: 1.1rem; padding: 16px 32px; border-radius: 12px; } /* ── Premium Cards ── */ .pa-card { background: var(--pa-card-bg); border: 1px solid var(--pa-border); border-radius: var(--pa-radius-lg); box-shadow: var(--pa-shadow-sm); overflow: hidden; transition: var(--pa-transition); } .pa-card:hover { box-shadow: var(--pa-shadow-md); } .pa-card-header { padding: 16px 24px; background: linear-gradient(135deg, var(--pa-primary-light), rgba(139, 92, 246, 0.06)); border-bottom: 1px solid var(--pa-border); font-weight: 700; font-size: 1.05rem; color: var(--pa-text); } .pa-card-body { padding: 24px; } /* ── Application Cards (ApplicationList) ── */ .pa-app-card { background: var(--pa-card-bg); border: 1px solid var(--pa-border); border-radius: var(--pa-radius-lg); box-shadow: var(--pa-shadow-sm); transition: var(--pa-transition); overflow: hidden; height: 100%; display: flex; flex-direction: column; } .pa-app-card:hover { box-shadow: var(--pa-shadow-md); transform: translateY(-3px); } .pa-app-card-body { padding: 24px; flex: 1; display: flex; flex-direction: column; } .pa-app-card-title { font-size: 1.15rem; font-weight: 700; color: var(--pa-text); margin-bottom: 4px; } .pa-app-card-author { font-size: 0.9rem; color: var(--pa-text-muted); margin-bottom: 12px; } .pa-app-card-desc { font-size: 0.95rem; color: var(--pa-text); line-height: 1.6; margin-bottom: 12px; flex: 1; } .pa-app-card-meta { font-size: 0.82rem; color: var(--pa-text-muted); margin-bottom: 16px; display: flex; align-items: center; gap: 6px; } .pa-app-card-actions { display: flex; gap: 8px; flex-wrap: wrap; } /* ── Status Badges ── */ .pa-badge { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.3px; } .pa-badge-success { background: rgba(16, 185, 129, 0.12); color: var(--pa-success); } .pa-badge-warning { background: rgba(245, 158, 11, 0.12); color: var(--pa-warning); } .pa-badge-danger { background: rgba(239, 68, 68, 0.12); color: var(--pa-danger); } /* ── Form Inputs (Premium Styling) ── */ .pa-form-control { border: 2px solid var(--pa-border); border-radius: 10px; padding: 12px 16px; font-size: 0.95rem; transition: var(--pa-transition); color: var(--pa-text); background: var(--pa-card-bg); } .pa-form-control:focus { border-color: var(--pa-primary); box-shadow: 0 0 0 3px var(--pa-primary-light); outline: none; } .pa-form-label { font-weight: 600; font-size: 0.9rem; color: var(--pa-text); margin-bottom: 6px; } /* ── Search Input Group ── */ .pa-search-group { display: flex; gap: 0; border-radius: var(--pa-radius); overflow: hidden; box-shadow: var(--pa-shadow-sm); border: 2px solid var(--pa-border); transition: var(--pa-transition); } .pa-search-group:focus-within { border-color: var(--pa-primary); box-shadow: 0 0 0 3px var(--pa-primary-light); } .pa-search-group input { flex: 1; border: none; padding: 14px 18px; font-size: 1rem; outline: none; background: var(--pa-card-bg); color: var(--pa-text); } .pa-search-group button { border: none; padding: 14px 28px; font-weight: 600; font-size: 0.95rem; background: linear-gradient(135deg, var(--pa-primary), var(--pa-secondary)); color: #fff; cursor: pointer; transition: var(--pa-transition); } .pa-search-group button:hover { background: linear-gradient(135deg, var(--pa-primary-hover), var(--pa-secondary-hover)); } /* ── User List Items ── */ .pa-user-item { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; background: var(--pa-card-bg); border: 1px solid var(--pa-border); border-radius: var(--pa-radius); margin-bottom: 8px; transition: var(--pa-transition); } .pa-user-item:hover { box-shadow: var(--pa-shadow-sm); border-color: #cbd5e1; } .pa-user-name { font-weight: 600; color: var(--pa-text); font-size: 1rem; } .pa-user-username { font-size: 0.85rem; color: var(--pa-text-muted); margin-left: 8px; } /* ── Section Headers ── */ .pa-section-title { font-size: 1.6rem; font-weight: 700; color: var(--pa-text); margin-bottom: 24px; position: relative; padding-bottom: 12px; } .pa-section-title::after { content: ''; position: absolute; bottom: 0; left: 0; width: 48px; height: 4px; background: linear-gradient(135deg, var(--pa-primary), var(--pa-secondary)); border-radius: 2px; } /* ── Alerts (Premium) ── */ .pa-alert { padding: 16px 20px; border-radius: var(--pa-radius); font-size: 0.95rem; display: flex; align-items: center; gap: 10px; } .pa-alert-info { background: rgba(99, 102, 241, 0.08); color: var(--pa-primary); border: 1px solid rgba(99, 102, 241, 0.20); } .pa-alert-warning { background: rgba(245, 158, 11, 0.08); color: #b45309; border: 1px solid rgba(245, 158, 11, 0.20); } .pa-alert-success { background: rgba(16, 185, 129, 0.08); color: var(--pa-success); border: 1px solid rgba(16, 185, 129, 0.20); } /* ── Modals (Premium overlay) ── */ .pa-modal-content { border-radius: var(--pa-radius-lg) !important; border: none !important; box-shadow: var(--pa-shadow-lg) !important; overflow: hidden; } .pa-modal-header { padding: 20px 24px !important; background: linear-gradient(135deg, var(--pa-primary-light), rgba(139, 92, 246, 0.06)); border-bottom: 1px solid var(--pa-border) !important; } .pa-modal-header h5 { font-weight: 700; color: var(--pa-text); } .pa-modal-body { padding: 24px !important; } .pa-modal-footer { padding: 16px 24px !important; border-top: 1px solid var(--pa-border) !important; gap: 8px; display: flex; } /* ── Utility ── */ .pa-gap-2 { gap: 8px; } .pa-gap-3 { gap: 12px; } .pa-mt-2 { margin-top: 8px; } .pa-mt-3 { margin-top: 16px; } .pa-mt-4 { margin-top: 24px; } .pa-mb-3 { margin-bottom: 16px; } .pa-d-flex { display: flex; } .pa-flex-wrap { flex-wrap: wrap; } /* ── Animations ── */ @keyframes pa-fadeIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } } .pa-nav-card { animation: pa-fadeIn 0.5s ease-out both; } .pa-nav-card:nth-child(1) { animation-delay: 0.05s; } .pa-nav-card:nth-child(2) { animation-delay: 0.15s; } .pa-nav-card:nth-child(3) { animation-delay: 0.25s; } .pa-app-card { animation: pa-fadeIn 0.4s ease-out both; } /* ── Responsive ── */ @media (max-width: 768px) { .pa-nav-grid { grid-template-columns: 1fr; } .pa-nav-card { padding: 28px 20px; } .pa-nav-icon { width: 56px; height: 56px; font-size: 22px; } }