UNPKG

besper-frontend-site-dev-main

Version:

Professional B-esper Frontend Site - Site-wide integration toolkit for full website bot deployment

631 lines (547 loc) 11.9 kB
/* B-esper Site Global CSS - Shared across all pages */ /* CSS Custom Properties (Variables) */ :root { /* Colors - Professional design system matching B-esper brand */ --primary-blue: #022d54; --secondary-blue: #0052a3; --dark-blue: #011831; --light-blue: #e3f2fd; --success-green: #10b981; --warning-orange: #f59e0b; --error-red: #ef4444; --text-primary: #022d54; --text-secondary: #6c757d; --text-muted: #718096; --background-primary: #ffffff; --background-secondary: #f7fafc; --background-tertiary: #edf2f7; --border-color: #e2e8f0; --border-light: #f1f5f9; /* Typography */ --font-family-primary: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif; --font-family-mono: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace; /* Font Sizes */ --font-size-xs: 0.75rem; --font-size-sm: 0.875rem; --font-size-base: 1rem; --font-size-lg: 1.125rem; --font-size-xl: 1.25rem; --font-size-2xl: 1.5rem; --font-size-3xl: 1.875rem; --font-size-4xl: 2.25rem; /* Spacing */ --spacing-1: 0.25rem; --spacing-2: 0.5rem; --spacing-3: 0.75rem; --spacing-4: 1rem; --spacing-5: 1.25rem; --spacing-6: 1.5rem; --spacing-8: 2rem; --spacing-10: 2.5rem; --spacing-12: 3rem; --spacing-16: 4rem; --spacing-20: 5rem; /* Border Radius */ --radius-sm: 0.125rem; --radius-base: 0.25rem; --radius-md: 0.375rem; --radius-lg: 0.5rem; --radius-xl: 0.75rem; --radius-2xl: 1rem; --radius-full: 9999px; /* Shadows */ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05); --shadow-base: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); /* Transitions */ --transition-fast: 150ms ease-in-out; --transition-base: 200ms ease-in-out; --transition-slow: 300ms ease-in-out; /* Z-index */ --z-dropdown: 1000; --z-sticky: 1020; --z-fixed: 1030; --z-modal-backdrop: 1040; --z-modal: 1050; --z-popover: 1060; --z-tooltip: 1070; } /* Reset and Base Styles */ * { box-sizing: border-box; } body { font-family: var(--font-family-primary); font-size: var(--font-size-base); line-height: 1.6; color: var(--text-primary); background-color: var(--background-primary); margin: 0; padding: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Container Classes */ .bsp-container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 var(--spacing-4); } .bsp-container-fluid { width: 100%; padding: 0 var(--spacing-4); } .bsp-container-sm { max-width: 640px; } .bsp-container-md { max-width: 768px; } .bsp-container-lg { max-width: 1024px; } .bsp-container-xl { max-width: 1280px; } /* Typography Classes */ .bsp-heading-1 { font-size: var(--font-size-4xl); font-weight: 700; line-height: 1.2; color: var(--text-primary); margin: 0 0 var(--spacing-6) 0; } .bsp-heading-2 { font-size: var(--font-size-3xl); font-weight: 600; line-height: 1.3; color: var(--text-primary); margin: 0 0 var(--spacing-5) 0; } .bsp-heading-3 { font-size: var(--font-size-2xl); font-weight: 600; line-height: 1.4; color: var(--text-primary); margin: 0 0 var(--spacing-4) 0; } .bsp-heading-4 { font-size: var(--font-size-xl); font-weight: 500; line-height: 1.4; color: var(--text-primary); margin: 0 0 var(--spacing-3) 0; } .bsp-text-body { font-size: var(--font-size-base); line-height: 1.6; color: var(--text-primary); margin: 0 0 var(--spacing-4) 0; } .bsp-text-small { font-size: var(--font-size-sm); line-height: 1.5; color: var(--text-secondary); } .bsp-text-muted { color: var(--text-muted); } .bsp-text-center { text-align: center; } .bsp-text-left { text-align: left; } .bsp-text-right { text-align: right; } /* Button Classes */ .bsp-btn { display: inline-flex; align-items: center; justify-content: center; padding: var(--spacing-3) var(--spacing-6); font-size: var(--font-size-base); font-weight: 500; line-height: 1; border: 1px solid transparent; border-radius: var(--radius-lg); text-decoration: none; cursor: pointer; transition: all var(--transition-base); white-space: nowrap; user-select: none; } .bsp-btn:disabled { opacity: 0.6; cursor: not-allowed; } .bsp-btn-primary { background-color: var(--primary-blue); color: white; border-color: var(--primary-blue); } .bsp-btn-primary:hover:not(:disabled) { background-color: var(--secondary-blue); border-color: var(--secondary-blue); } .bsp-btn-secondary { background-color: transparent; color: var(--primary-blue); border-color: var(--primary-blue); } .bsp-btn-secondary:hover:not(:disabled) { background-color: var(--primary-blue); color: white; } .bsp-btn-outline { background-color: transparent; color: var(--text-primary); border-color: var(--border-color); } .bsp-btn-outline:hover:not(:disabled) { background-color: var(--background-secondary); border-color: var(--text-secondary); } .bsp-btn-success { background-color: var(--success-green); color: white; border-color: var(--success-green); } .bsp-btn-warning { background-color: var(--warning-orange); color: white; border-color: var(--warning-orange); } .bsp-btn-danger { background-color: var(--error-red); color: white; border-color: var(--error-red); } /* Button Sizes */ .bsp-btn-sm { padding: var(--spacing-2) var(--spacing-4); font-size: var(--font-size-sm); } .bsp-btn-lg { padding: var(--spacing-4) var(--spacing-8); font-size: var(--font-size-lg); } .bsp-btn-xl { padding: var(--spacing-5) var(--spacing-10); font-size: var(--font-size-xl); } /* Card Classes */ .bsp-card { background-color: var(--background-primary); border: 1px solid var(--border-color); border-radius: var(--radius-xl); box-shadow: var(--shadow-sm); overflow: hidden; } .bsp-card-header { padding: var(--spacing-6); border-bottom: 1px solid var(--border-color); background-color: var(--background-secondary); } .bsp-card-body { padding: var(--spacing-6); } .bsp-card-footer { padding: var(--spacing-6); border-top: 1px solid var(--border-color); background-color: var(--background-secondary); } /* Form Classes */ .bsp-form-group { margin-bottom: var(--spacing-5); } .bsp-form-label { display: block; font-size: var(--font-size-sm); font-weight: 500; color: var(--text-primary); margin-bottom: var(--spacing-2); } .bsp-form-input { width: 100%; padding: var(--spacing-3); font-size: var(--font-size-base); line-height: 1.5; color: var(--text-primary); background-color: var(--background-primary); border: 1px solid var(--border-color); border-radius: var(--radius-lg); transition: border-color var(--transition-base), box-shadow var(--transition-base); } .bsp-form-input:focus { outline: none; border-color: var(--primary-blue); box-shadow: 0 0 0 3px rgba(88, 151, 222, 0.1); } .bsp-form-textarea { resize: vertical; min-height: 100px; } .bsp-form-select { background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e"); background-position: right 0.5rem center; background-repeat: no-repeat; background-size: 1.5em 1.5em; padding-right: 2.5rem; appearance: none; } /* Layout Classes */ .bsp-flex { display: flex; } .bsp-flex-col { flex-direction: column; } .bsp-flex-wrap { flex-wrap: wrap; } .bsp-items-center { align-items: center; } .bsp-items-start { align-items: flex-start; } .bsp-items-end { align-items: flex-end; } .bsp-justify-center { justify-content: center; } .bsp-justify-between { justify-content: space-between; } .bsp-justify-around { justify-content: space-around; } .bsp-justify-evenly { justify-content: space-evenly; } .bsp-gap-1 { gap: var(--spacing-1); } .bsp-gap-2 { gap: var(--spacing-2); } .bsp-gap-3 { gap: var(--spacing-3); } .bsp-gap-4 { gap: var(--spacing-4); } .bsp-gap-5 { gap: var(--spacing-5); } .bsp-gap-6 { gap: var(--spacing-6); } .bsp-gap-8 { gap: var(--spacing-8); } /* Grid Classes */ .bsp-grid { display: grid; } .bsp-grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bsp-grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bsp-grid-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } .bsp-grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } .bsp-grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } .bsp-grid-cols-12 { grid-template-columns: repeat(12, minmax(0, 1fr)); } /* Spacing Classes */ .bsp-m-0 { margin: 0; } .bsp-m-1 { margin: var(--spacing-1); } .bsp-m-2 { margin: var(--spacing-2); } .bsp-m-3 { margin: var(--spacing-3); } .bsp-m-4 { margin: var(--spacing-4); } .bsp-m-5 { margin: var(--spacing-5); } .bsp-m-6 { margin: var(--spacing-6); } .bsp-m-8 { margin: var(--spacing-8); } .bsp-p-0 { padding: 0; } .bsp-p-1 { padding: var(--spacing-1); } .bsp-p-2 { padding: var(--spacing-2); } .bsp-p-3 { padding: var(--spacing-3); } .bsp-p-4 { padding: var(--spacing-4); } .bsp-p-5 { padding: var(--spacing-5); } .bsp-p-6 { padding: var(--spacing-6); } .bsp-p-8 { padding: var(--spacing-8); } /* Utility Classes */ .bsp-w-full { width: 100%; } .bsp-h-full { height: 100%; } .bsp-min-h-screen { min-height: 100vh; } .bsp-block { display: block; } .bsp-inline { display: inline; } .bsp-inline-block { display: inline-block; } .bsp-hidden { display: none; } .bsp-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } /* Loading Indicators */ .bsp-loading-spinner { display: inline-block; width: 40px; height: 40px; border: 3px solid var(--border-light); border-top: 3px solid var(--primary-blue); border-radius: 50%; animation: bsp-spin 1s linear infinite; } .bsp-loading-indicator { text-align: center; padding: var(--spacing-12); color: var(--text-muted); } .bsp-loading-message { margin-top: var(--spacing-5); font-family: var(--font-family-primary); } @keyframes bsp-spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Alert Classes */ .bsp-alert { padding: var(--spacing-4); margin-bottom: var(--spacing-4); border: 1px solid transparent; border-radius: var(--radius-lg); } .bsp-alert-info { color: #0c4a6e; background-color: #e0f2fe; border-color: #7dd3fc; } .bsp-alert-success { color: #064e3b; background-color: #dcfce7; border-color: #86efac; } .bsp-alert-warning { color: #92400e; background-color: #fef3c7; border-color: #fcd34d; } .bsp-alert-error { color: #991b1b; background-color: #fee2e2; border-color: #fca5a5; } /* Responsive Design */ @media (max-width: 640px) { .bsp-container { padding: 0 var(--spacing-2); } .bsp-grid-cols-2, .bsp-grid-cols-3, .bsp-grid-cols-4, .bsp-grid-cols-6 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .bsp-heading-1 { font-size: var(--font-size-3xl); } .bsp-heading-2 { font-size: var(--font-size-2xl); } } @media (min-width: 641px) and (max-width: 768px) { .bsp-grid-cols-3, .bsp-grid-cols-4, .bsp-grid-cols-6 { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (min-width: 769px) and (max-width: 1024px) { .bsp-grid-cols-4, .bsp-grid-cols-6 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }