UNPKG

brolostack

Version:

A Revolutionary, Zero-Cost Full-Stack Package Framework - Browser Local Stack

383 lines (321 loc) 5.88 kB
/* SaaS App Styles */ .app { max-width: 1400px; margin: 0 auto; padding: 20px; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #f8f9fa; min-height: 100vh; } .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 2rem; border-radius: 12px; margin-bottom: 2rem; text-align: center; box-shadow: 0 4px 20px rgba(102, 126, 234, 0.3); } .header h1 { margin: 0; font-size: 2.5rem; font-weight: 300; } .header p { margin: 0.5rem 0 0 0; opacity: 0.9; font-size: 1.1rem; } .dashboard { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 2rem; margin-bottom: 2rem; } .dashboard-card { background: white; border-radius: 12px; padding: 2rem; box-shadow: 0 2px 20px rgba(0,0,0,0.1); transition: transform 0.2s ease, box-shadow 0.2s ease; } .dashboard-card:hover { transform: translateY(-2px); box-shadow: 0 4px 30px rgba(0,0,0,0.15); } .card-header { display: flex; align-items: center; margin-bottom: 1.5rem; } .card-icon { font-size: 2rem; margin-right: 1rem; } .card-title { font-size: 1.25rem; font-weight: 600; color: #495057; margin: 0; } .card-value { font-size: 2.5rem; font-weight: bold; color: #667eea; margin-bottom: 0.5rem; } .card-subtitle { color: #6c757d; font-size: 0.9rem; } .main-content { display: grid; grid-template-columns: 2fr 1fr; gap: 2rem; } .section { background: white; border-radius: 12px; box-shadow: 0 2px 20px rgba(0,0,0,0.1); overflow: hidden; } .section-header { background: #f8f9fa; padding: 1.5rem; border-bottom: 1px solid #e9ecef; display: flex; justify-content: space-between; align-items: center; } .section-title { font-weight: 600; color: #495057; margin: 0; font-size: 1.25rem; } .section-content { padding: 1.5rem; } .form-group { margin-bottom: 1.5rem; } .form-group label { display: block; margin-bottom: 0.5rem; font-weight: 500; color: #495057; } .form-group input, .form-group textarea, .form-group select { width: 100%; padding: 0.75rem; border: 1px solid #ced4da; border-radius: 6px; font-size: 1rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .form-group input:focus, .form-group textarea:focus, .form-group select:focus { outline: none; border-color: #667eea; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); } .form-group textarea { resize: vertical; min-height: 100px; } .btn { background: #667eea; color: white; border: none; padding: 0.75rem 1.5rem; border-radius: 6px; cursor: pointer; font-size: 1rem; font-weight: 500; transition: all 0.15s ease-in-out; text-decoration: none; display: inline-block; text-align: center; } .btn:hover { background: #5a6fd8; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3); } .btn-secondary { background: #6c757d; } .btn-secondary:hover { background: #5a6268; } .btn-success { background: #28a745; } .btn-success:hover { background: #218838; } .btn-danger { background: #dc3545; } .btn-danger:hover { background: #c82333; } .btn-sm { padding: 0.5rem 1rem; font-size: 0.875rem; } .btn-outline { background: transparent; border: 2px solid #667eea; color: #667eea; } .btn-outline:hover { background: #667eea; color: white; } .customer-list { max-height: 500px; overflow-y: auto; } .customer-item { border: 1px solid #e9ecef; border-radius: 8px; padding: 1.5rem; margin-bottom: 1rem; transition: all 0.2s ease; background: #fafafa; } .customer-item:hover { box-shadow: 0 2px 12px rgba(0,0,0,0.1); transform: translateY(-1px); } .customer-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 1rem; } .customer-name { font-weight: 600; color: #495057; font-size: 1.1rem; margin: 0; } .customer-plan { background: #667eea; color: white; padding: 0.25rem 0.75rem; border-radius: 12px; font-size: 0.75rem; font-weight: 500; text-transform: uppercase; } .customer-email { color: #6c757d; margin-bottom: 0.5rem; } .customer-meta { display: flex; gap: 1rem; margin-bottom: 1rem; font-size: 0.875rem; color: #6c757d; } .customer-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; } .status-active { color: #28a745; font-weight: 500; } .status-inactive { color: #dc3545; font-weight: 500; } .status-trial { color: #ffc107; font-weight: 500; } .plan-basic { background: #6c757d; } .plan-pro { background: #667eea; } .plan-enterprise { background: #28a745; } .revenue-chart { height: 200px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 8px; display: flex; align-items: center; justify-content: center; color: white; font-size: 1.1rem; margin-bottom: 1rem; } .empty-state { text-align: center; padding: 3rem; color: #6c757d; } .empty-state h3 { margin-bottom: 0.5rem; color: #495057; } .empty-state p { margin-bottom: 1.5rem; } .analytics-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem; } .analytics-item { text-align: center; padding: 1rem; background: #f8f9fa; border-radius: 8px; } .analytics-value { font-size: 1.5rem; font-weight: bold; color: #667eea; margin-bottom: 0.25rem; } .analytics-label { font-size: 0.875rem; color: #6c757d; } @media (max-width: 1200px) { .dashboard { grid-template-columns: 1fr 1fr; } .main-content { grid-template-columns: 1fr; } } @media (max-width: 768px) { .dashboard { grid-template-columns: 1fr; } .header h1 { font-size: 2rem; } .customer-header { flex-direction: column; gap: 0.5rem; } .customer-meta { flex-direction: column; gap: 0.25rem; } }