/** * TigerStyle Life9 Admin Styles * * Modern, accessible admin interface styles for the backup plugin * Compatible with WordPress admin and Alpine.js components */ /* ============================================================================ Base Styles & Variables ========================================================================= */ :root { /* Color scheme */ --tigerstyle-primary: #1e40af; --tigerstyle-primary-hover: #1d4ed8; --tigerstyle-secondary: #059669; --tigerstyle-danger: #dc2626; --tigerstyle-warning: #d97706; --tigerstyle-success: #059669; --tigerstyle-info: #0284c7; /* Neutrals */ --tigerstyle-gray-50: #f9fafb; --tigerstyle-gray-100: #f3f4f6; --tigerstyle-gray-200: #e5e7eb; --tigerstyle-gray-300: #d1d5db; --tigerstyle-gray-400: #9ca3af; --tigerstyle-gray-500: #6b7280; --tigerstyle-gray-600: #4b5563; --tigerstyle-gray-700: #374151; --tigerstyle-gray-800: #1f2937; --tigerstyle-gray-900: #111827; /* Spacing */ --tigerstyle-spacing-xs: 0.25rem; --tigerstyle-spacing-sm: 0.5rem; --tigerstyle-spacing-md: 1rem; --tigerstyle-spacing-lg: 1.5rem; --tigerstyle-spacing-xl: 2rem; --tigerstyle-spacing-2xl: 3rem; /* Border radius */ --tigerstyle-radius-sm: 0.25rem; --tigerstyle-radius-md: 0.375rem; --tigerstyle-radius-lg: 0.5rem; --tigerstyle-radius-xl: 0.75rem; /* Shadows */ --tigerstyle-shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); --tigerstyle-shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --tigerstyle-shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); /* Transitions */ --tigerstyle-transition: all 0.2s ease-in-out; } /* ============================================================================ Layout Components ========================================================================= */ .tigerstyle-life9-admin { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; line-height: 1.6; } .tigerstyle-header { margin-bottom: var(--tigerstyle-spacing-xl); padding-bottom: var(--tigerstyle-spacing-lg); border-bottom: 2px solid var(--tigerstyle-gray-200); } .tigerstyle-header h1 { display: flex; align-items: center; gap: var(--tigerstyle-spacing-sm); margin: 0 0 var(--tigerstyle-spacing-sm) 0; font-size: 1.875rem; font-weight: 700; color: var(--tigerstyle-gray-900); } .tigerstyle-icon { font-size: 1.5em; } .tigerstyle-header .description { margin: 0; font-size: 1.125rem; color: var(--tigerstyle-gray-600); } .tigerstyle-card { background: white; border: 1px solid var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); padding: var(--tigerstyle-spacing-xl); margin-bottom: var(--tigerstyle-spacing-xl); box-shadow: var(--tigerstyle-shadow-sm); transition: var(--tigerstyle-transition); } .tigerstyle-card:hover { box-shadow: var(--tigerstyle-shadow-md); } .tigerstyle-card h3 { margin: 0 0 var(--tigerstyle-spacing-lg) 0; font-size: 1.25rem; font-weight: 600; color: var(--tigerstyle-gray-900); display: flex; align-items: center; gap: var(--tigerstyle-spacing-sm); } /* ============================================================================ Form Styles ========================================================================= */ .form-section { margin-bottom: var(--tigerstyle-spacing-xl); } .form-section h4 { margin: 0 0 var(--tigerstyle-spacing-md) 0; font-size: 1.125rem; font-weight: 600; color: var(--tigerstyle-gray-800); } .form-group { margin-bottom: var(--tigerstyle-spacing-lg); } .form-group label { display: block; margin-bottom: var(--tigerstyle-spacing-sm); font-weight: 500; color: var(--tigerstyle-gray-700); } .form-group input, .form-group select, .form-group textarea { width: 100%; max-width: 400px; padding: var(--tigerstyle-spacing-sm) var(--tigerstyle-spacing-md); border: 1px solid var(--tigerstyle-gray-300); border-radius: var(--tigerstyle-radius-md); font-size: 0.875rem; transition: var(--tigerstyle-transition); } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: var(--tigerstyle-primary); box-shadow: 0 0 0 3px rgb(30 64 175 / 0.1); } .form-group textarea { min-height: 80px; resize: vertical; } .form-group small { display: block; margin-top: var(--tigerstyle-spacing-xs); font-size: 0.75rem; color: var(--tigerstyle-gray-500); } /* ============================================================================ Option Selection Components ========================================================================= */ .backup-type-grid, .storage-options { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--tigerstyle-spacing-md); margin: var(--tigerstyle-spacing-lg) 0; } .backup-type-option, .storage-option, .source-option { position: relative; border: 2px solid var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); padding: var(--tigerstyle-spacing-lg); cursor: pointer; transition: var(--tigerstyle-transition); background: white; } .backup-type-option:hover, .storage-option:hover, .source-option:hover { border-color: var(--tigerstyle-primary); box-shadow: var(--tigerstyle-shadow-md); } .backup-type-option.selected, .storage-option.selected, .source-option.selected { border-color: var(--tigerstyle-primary); background: rgb(30 64 175 / 0.05); } .backup-type-option input, .storage-option input, .source-option input { position: absolute; top: var(--tigerstyle-spacing-sm); right: var(--tigerstyle-spacing-sm); margin: 0; width: auto; max-width: none; } .option-content { display: flex; flex-direction: column; gap: var(--tigerstyle-spacing-sm); } .option-icon { font-size: 1.5rem; } .option-title { font-weight: 600; color: var(--tigerstyle-gray-900); } .option-description { font-size: 0.875rem; color: var(--tigerstyle-gray-600); } /* ============================================================================ Progress Components ========================================================================= */ .tigerstyle-progress-container { padding: var(--tigerstyle-spacing-lg); border-radius: var(--tigerstyle-radius-lg); background: white; border: 1px solid var(--tigerstyle-info); } .tigerstyle-progress { width: 100%; } .progress-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--tigerstyle-spacing-md); } .progress-header h3 { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--tigerstyle-gray-900); } .progress-percentage { font-weight: 700; color: var(--tigerstyle-primary); } .progress-bar-container { width: 100%; height: 12px; background: var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); overflow: hidden; margin-bottom: var(--tigerstyle-spacing-md); } .progress-bar { height: 100%; background: linear-gradient(90deg, var(--tigerstyle-primary), var(--tigerstyle-secondary)); border-radius: var(--tigerstyle-radius-lg); transition: width 0.3s ease-in-out; min-width: 2px; } .progress-details p { margin: 0 0 var(--tigerstyle-spacing-sm) 0; font-weight: 500; color: var(--tigerstyle-gray-700); } .progress-stats { display: flex; gap: var(--tigerstyle-spacing-lg); font-size: 0.875rem; color: var(--tigerstyle-gray-600); } /* ============================================================================ Button Styles ========================================================================= */ .button.button-primary { background: var(--tigerstyle-primary); border-color: var(--tigerstyle-primary); color: white; font-weight: 500; transition: var(--tigerstyle-transition); } .button.button-primary:hover, .button.button-primary:focus { background: var(--tigerstyle-primary-hover); border-color: var(--tigerstyle-primary-hover); color: white; } .button.button-danger { background: var(--tigerstyle-danger); border-color: var(--tigerstyle-danger); color: white; } .button.button-danger:hover, .button.button-danger:focus { background: #b91c1c; border-color: #b91c1c; color: white; } .button.button-large { padding: var(--tigerstyle-spacing-sm) var(--tigerstyle-spacing-lg); font-size: 0.9rem; } .form-actions { display: flex; gap: var(--tigerstyle-spacing-md); margin-top: var(--tigerstyle-spacing-xl); padding-top: var(--tigerstyle-spacing-lg); border-top: 1px solid var(--tigerstyle-gray-200); } .step-actions { display: flex; justify-content: space-between; margin-top: var(--tigerstyle-spacing-xl); padding-top: var(--tigerstyle-spacing-lg); border-top: 1px solid var(--tigerstyle-gray-200); } /* ============================================================================ File Selection Components ========================================================================= */ .file-selection-container { border: 1px solid var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); padding: var(--tigerstyle-spacing-lg); background: var(--tigerstyle-gray-50); } .exclude-patterns { margin-top: var(--tigerstyle-spacing-lg); } .exclude-patterns h4 { margin: 0 0 var(--tigerstyle-spacing-sm) 0; font-size: 1rem; font-weight: 600; color: var(--tigerstyle-gray-800); } .pattern-tags { display: flex; flex-wrap: wrap; gap: var(--tigerstyle-spacing-sm); margin-bottom: var(--tigerstyle-spacing-md); } .pattern-tag { display: flex; align-items: center; gap: var(--tigerstyle-spacing-xs); padding: var(--tigerstyle-spacing-xs) var(--tigerstyle-spacing-sm); background: var(--tigerstyle-primary); color: white; border-radius: var(--tigerstyle-radius-md); font-size: 0.75rem; font-weight: 500; } .pattern-tag button { background: none; border: none; color: white; font-weight: bold; font-size: 0.875rem; cursor: pointer; padding: 0; margin: 0; line-height: 1; } .add-pattern { display: flex; gap: var(--tigerstyle-spacing-sm); margin-bottom: var(--tigerstyle-spacing-md); } .add-pattern input { flex: 1; max-width: 300px; } .pattern-presets { display: flex; flex-wrap: wrap; gap: var(--tigerstyle-spacing-sm); align-items: center; } .pattern-presets h5 { margin: 0; font-size: 0.875rem; font-weight: 500; color: var(--tigerstyle-gray-700); } .pattern-presets button { font-size: 0.75rem; padding: var(--tigerstyle-spacing-xs) var(--tigerstyle-spacing-sm); } /* ============================================================================ Upload Components ========================================================================= */ .upload-area { border: 2px dashed var(--tigerstyle-gray-300); border-radius: var(--tigerstyle-radius-lg); padding: var(--tigerstyle-spacing-2xl); text-align: center; transition: var(--tigerstyle-transition); background: var(--tigerstyle-gray-50); cursor: pointer; } .upload-area:hover, .upload-area.drag-over { border-color: var(--tigerstyle-primary); background: rgb(30 64 175 / 0.05); } .upload-content { display: flex; flex-direction: column; align-items: center; gap: var(--tigerstyle-spacing-md); } .upload-icon { font-size: 3rem; color: var(--tigerstyle-gray-400); } .upload-content h4 { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--tigerstyle-gray-900); } .upload-content p { margin: 0; color: var(--tigerstyle-gray-600); } .uploaded-file-info { margin-top: var(--tigerstyle-spacing-lg); padding: var(--tigerstyle-spacing-lg); background: white; border: 1px solid var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); } .file-details { display: flex; flex-direction: column; gap: var(--tigerstyle-spacing-xs); font-size: 0.875rem; } /* ============================================================================ Security Components ========================================================================= */ .password-strength { margin-top: var(--tigerstyle-spacing-sm); } .strength-meter { width: 100%; height: 6px; background: var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-md); overflow: hidden; margin-bottom: var(--tigerstyle-spacing-xs); } .strength-fill { height: 100%; transition: width 0.3s ease-in-out; border-radius: var(--tigerstyle-radius-md); } .strength-meter.weak .strength-fill { background: var(--tigerstyle-danger); } .strength-meter.fair .strength-fill { background: var(--tigerstyle-warning); } .strength-meter.good .strength-fill { background: #eab308; } .strength-meter.strong .strength-fill { background: var(--tigerstyle-success); } .strength-text { font-size: 0.75rem; font-weight: 500; } .password-mismatch { color: var(--tigerstyle-danger); font-size: 0.75rem; margin-top: var(--tigerstyle-spacing-xs); } /* ============================================================================ Warning & Alert Styles ========================================================================= */ .tigerstyle-warning-banner { border-left: 4px solid var(--tigerstyle-warning); margin-bottom: var(--tigerstyle-spacing-xl); } .final-warning { background: rgb(220 38 38 / 0.05); border: 2px solid var(--tigerstyle-danger); border-radius: var(--tigerstyle-radius-lg); padding: var(--tigerstyle-spacing-lg); margin: var(--tigerstyle-spacing-lg) 0; } .final-warning h4 { margin: 0 0 var(--tigerstyle-spacing-sm) 0; color: var(--tigerstyle-danger); display: flex; align-items: center; gap: var(--tigerstyle-spacing-sm); } .confirmation-section { margin: var(--tigerstyle-spacing-lg) 0; } .confirmation-checkbox { display: flex; align-items: flex-start; gap: var(--tigerstyle-spacing-sm); padding: var(--tigerstyle-spacing-md); background: var(--tigerstyle-gray-50); border-radius: var(--tigerstyle-radius-md); cursor: pointer; } .confirmation-checkbox input { margin: 0; width: auto; max-width: none; } /* ============================================================================ Backup List Components ========================================================================= */ .backup-list { display: flex; flex-direction: column; gap: var(--tigerstyle-spacing-md); } .backup-item { display: flex; align-items: center; padding: var(--tigerstyle-spacing-lg); border: 1px solid var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); background: white; cursor: pointer; transition: var(--tigerstyle-transition); } .backup-item:hover { border-color: var(--tigerstyle-primary); box-shadow: var(--tigerstyle-shadow-md); } .backup-item.selected { border-color: var(--tigerstyle-primary); background: rgb(30 64 175 / 0.05); } .backup-info { flex: 1; } .backup-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--tigerstyle-spacing-sm); } .backup-header h4 { margin: 0; font-size: 1rem; font-weight: 600; color: var(--tigerstyle-gray-900); } .backup-date { font-size: 0.75rem; color: var(--tigerstyle-gray-500); } .backup-details { display: flex; gap: var(--tigerstyle-spacing-md); margin-bottom: var(--tigerstyle-spacing-sm); font-size: 0.875rem; color: var(--tigerstyle-gray-600); } .backup-contents { display: flex; gap: var(--tigerstyle-spacing-sm); } .content-badge { padding: var(--tigerstyle-spacing-xs) var(--tigerstyle-spacing-sm); background: var(--tigerstyle-gray-100); border-radius: var(--tigerstyle-radius-md); font-size: 0.75rem; font-weight: 500; color: var(--tigerstyle-gray-700); } .backup-actions { display: flex; gap: var(--tigerstyle-spacing-sm); } /* ============================================================================ Advanced Options ========================================================================= */ .advanced-options { border: 1px solid var(--tigerstyle-gray-200); border-radius: var(--tigerstyle-radius-lg); overflow: hidden; } .advanced-options summary { padding: var(--tigerstyle-spacing-md) var(--tigerstyle-spacing-lg); background: var(--tigerstyle-gray-50); cursor: pointer; font-weight: 500; color: var(--tigerstyle-gray-700); border-bottom: 1px solid var(--tigerstyle-gray-200); } .advanced-options summary:hover { background: var(--tigerstyle-gray-100); } .advanced-content { padding: var(--tigerstyle-spacing-lg); } .checkbox-option { display: flex; align-items: flex-start; gap: var(--tigerstyle-spacing-sm); margin-bottom: var(--tigerstyle-spacing-md); cursor: pointer; } .checkbox-option input { margin: 0; width: auto; max-width: none; } .checkbox-option span { font-weight: 500; color: var(--tigerstyle-gray-700); } .checkbox-option small { display: block; margin-top: var(--tigerstyle-spacing-xs); color: var(--tigerstyle-gray-500); } /* ============================================================================ System Information ========================================================================= */ .extension-status { display: flex; gap: var(--tigerstyle-spacing-md); font-family: monospace; font-size: 0.875rem; } .system-actions { margin-top: var(--tigerstyle-spacing-lg); padding-top: var(--tigerstyle-spacing-lg); border-top: 1px solid var(--tigerstyle-gray-200); display: flex; gap: var(--tigerstyle-spacing-sm); } .test-connection { margin-top: var(--tigerstyle-spacing-md); display: flex; align-items: center; gap: var(--tigerstyle-spacing-md); } .test-success { color: var(--tigerstyle-success); font-weight: 500; } .test-error { color: var(--tigerstyle-danger); font-weight: 500; } /* ============================================================================ Responsive Design ========================================================================= */ @media (max-width: 768px) { .backup-type-grid, .storage-options { grid-template-columns: 1fr; } .progress-stats { flex-direction: column; gap: var(--tigerstyle-spacing-sm); } .form-actions, .step-actions { flex-direction: column; } .backup-item { flex-direction: column; align-items: flex-start; gap: var(--tigerstyle-spacing-md); } .backup-details { flex-direction: column; gap: var(--tigerstyle-spacing-sm); } .system-actions { flex-direction: column; } } /* ============================================================================ Animation & Transitions ========================================================================= */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .loading-spinner { display: flex; align-items: center; justify-content: center; padding: var(--tigerstyle-spacing-xl); color: var(--tigerstyle-gray-500); } .loading-spinner::before { content: "⏳"; margin-right: var(--tigerstyle-spacing-sm); animation: pulse 1.5s ease-in-out infinite; } /* Alpine.js transition classes */ [x-cloak] { display: none !important; } .x-transition-enter { animation: fadeIn 0.3s ease-out; } .x-transition-leave { animation: fadeIn 0.3s ease-out reverse; } /* ============================================================================ Utility Classes ========================================================================= */ .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; } .text-center { text-align: center; } .text-right { text-align: right; } .font-mono { font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; } .font-bold { font-weight: 700; } .text-sm { font-size: 0.875rem; } .text-xs { font-size: 0.75rem; } .mt-0 { margin-top: 0; } .mb-0 { margin-bottom: 0; } .mt-2 { margin-top: var(--tigerstyle-spacing-sm); } .mb-2 { margin-bottom: var(--tigerstyle-spacing-sm); } .mt-4 { margin-top: var(--tigerstyle-spacing-md); } .mb-4 { margin-bottom: var(--tigerstyle-spacing-md); }