/* CSS Variables - Modern AI SaaS Theme */ :root { --bg-primary: #ffffff; --bg-secondary: #f8f9fa; --bg-tertiary: #f1f3f5; --text-primary: #1a1a1a; --text-secondary: #495057; --text-muted: #868e96; --accent: #6366f1; --accent-hover: #4f46e5; --accent-light: #eef2ff; --danger: #ef4444; --danger-hover: #dc2626; --border: #e9ecef; --shadow: 0 1px 3px rgba(0,0,0,0.1); --shadow-lg: 0 10px 40px rgba(0,0,0,0.1); --radius: 12px; --radius-sm: 8px; } /* Reset & Base */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; background: var(--bg-primary); color: var(--text-primary); line-height: 1.6; } .container { max-width: 1200px; margin: 0 auto; padding: 0 24px; } .container-narrow { max-width: 680px; } /* Header */ .header { background: var(--bg-primary); border-bottom: 1px solid var(--border); padding: 16px 0; position: sticky; top: 0; z-index: 100; } .header-content { display: flex; justify-content: space-between; align-items: center; } .logo { display: flex; align-items: center; gap: 10px; font-weight: 600; font-size: 18px; } .logo-icon { font-size: 24px; } .logo-text { color: var(--text-primary); } .nav { display: flex; gap: 24px; } .nav-link { color: var(--text-secondary); text-decoration: none; font-weight: 500; padding: 8px 0; border-bottom: 2px solid transparent; transition: all 0.2s; } .nav-link:hover, .nav-link.active { color: var(--accent); border-bottom-color: var(--accent); } /* Main Content */ .main { min-height: calc(100vh - 70px); } .page { display: none; padding: 60px 0; } .page.active { display: block; } /* Hero Section */ .hero { text-align: center; padding: 80px 0; max-width: 800px; margin: 0 auto; } .hero-title { font-size: clamp(36px, 5vw, 56px); font-weight: 700; line-height: 1.1; margin-bottom: 20px; color: var(--text-primary); } .hero-subtitle { font-size: clamp(18px, 2vw, 22px); color: var(--text-secondary); margin-bottom: 40px; line-height: 1.5; } /* Features */ .features { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 32px; margin-top: 60px; } .feature-card { background: var(--bg-secondary); padding: 32px; border-radius: var(--radius); text-align: center; transition: transform 0.2s, box-shadow 0.2s; } .feature-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); } .feature-icon { font-size: 48px; margin-bottom: 16px; } .feature-card h3 { font-size: 20px; font-weight: 600; margin-bottom: 12px; color: var(--text-primary); } .feature-card p { color: var(--text-secondary); line-height: 1.6; } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 24px; border: none; border-radius: var(--radius-sm); font-size: 16px; font-weight: 500; cursor: pointer; transition: all 0.2s; text-decoration: none; } .btn-primary { background: var(--accent); color: white; } .btn-primary:hover { background: var(--accent-hover); } .btn-secondary { background: var(--bg-tertiary); color: var(--text-primary); } .btn-secondary:hover { background: var(--border); } .btn-danger { background: var(--danger); color: white; } .btn-danger:hover { background: var(--danger-hover); } .btn-lg { padding: 16px 32px; font-size: 18px; } .btn-sm { padding: 8px 16px; font-size: 14px; } .btn-block { width: 100%; } /* Forms */ .form-card { background: var(--bg-primary); border: 1px solid var(--border); border-radius: var(--radius); padding: 40px; box-shadow: var(--shadow); } .form-title { font-size: 28px; font-weight: 600; margin-bottom: 32px; color: var(--text-primary); text-align: center; } .form-group { margin-bottom: 24px; } .form-group label { display: block; font-weight: 500; margin-bottom: 10px; color: var(--text-primary); } .form-group textarea { width: 100%; padding: 14px; border: 1px solid var(--border); border-radius: var(--radius-sm); font-size: 16px; font-family: inherit; resize: vertical; transition: border-color 0.2s; } .form-group textarea:focus { outline: none; border-color: var(--accent); } /* Radio Groups */ .radio-group { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; } .radio-card { display: flex; align-items: center; justify-content: center; padding: 14px 20px; background: var(--bg-secondary); border: 2px solid var(--border); border-radius: var(--radius-sm); cursor: pointer; transition: all 0.2s; font-weight: 500; } .radio-card:hover { border-color: var(--accent); background: var(--accent-light); } .radio-card input[type="radio"] { display: none; } .radio-card:has(input:checked) { border-color: var(--accent); background: var(--accent-light); color: var(--accent); } /* Slide Selector */ .slide-selector { display: flex; gap: 12px; } .slide-option { flex: 1; display: flex; align-items: center; justify-content: center; padding: 16px; background: var(--bg-secondary); border: 2px solid var(--border); border-radius: var(--radius-sm); cursor: pointer; transition: all 0.2s; font-weight: 600; font-size: 18px; } .slide-option:hover { border-color: var(--accent); } .slide-option input[type="radio"] { display: none; } .slide-option:has(input:checked) { border-color: var(--accent); background: var(--accent-light); color: var(--accent); } /* Editor Layout */ .editor-container { display: grid; grid-template-columns: 280px 1fr 300px; gap: 24px; height: calc(100vh - 130px); min-height: 600px; } .editor-sidebar, .editor-settings { background: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; display: flex; flex-direction: column; } .sidebar-header, .settings-header { padding: 20px; border-bottom: 1px solid var(--border); display: flex; justify-content: space-between; align-items: center; } .sidebar-header h3, .settings-header h3 { font-size: 16px; font-weight: 600; } .slide-thumbnails { flex: 1; overflow-y: auto; padding: 16px; } .thumbnail { background: var(--bg-primary); border: 2px solid var(--border); border-radius: var(--radius-sm); padding: 12px; margin-bottom: 12px; cursor: pointer; transition: all 0.2s; } .thumbnail:hover { border-color: var(--accent); } .thumbnail.active { border-color: var(--accent); background: var(--accent-light); } .thumbnail-number { font-size: 12px; color: var(--text-muted); margin-bottom: 6px; } .thumbnail-title { font-size: 13px; font-weight: 500; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* Slide Preview */ .editor-main { display: flex; flex-direction: column; gap: 16px; } .slide-preview-container { flex: 1; background: var(--bg-tertiary); border-radius: var(--radius); display: flex; align-items: center; justify-content: center; padding: 40px; overflow: auto; } .slide-preview { background: white; width: 100%; max-width: 900px; aspect-ratio: 16/9; border-radius: 8px; box-shadow: var(--shadow-lg); padding: 60px; display: flex; flex-direction: column; justify-content: center; } .slide-content { height: 100%; display: flex; flex-direction: column; justify-content: center; } .slide-content h2 { font-size: 36px; font-weight: 700; color: var(--text-primary); margin-bottom: 24px; line-height: 1.2; } .slide-content ul { list-style: none; } .slide-content li { font-size: 20px; color: var(--text-secondary); padding: 12px 0; padding-left: 28px; position: relative; line-height: 1.5; } .slide-content li::before { content: "•"; position: absolute; left: 0; color: var(--accent); font-size: 24px; line-height: 1.4; } .editor-controls { display: flex; justify-content: center; align-items: center; gap: 24px; padding: 16px; } .slide-counter { font-weight: 600; color: var(--text-secondary); min-width: 80px; text-align: center; } /* Settings Panel */ .settings-content { padding: 20px; display: flex; flex-direction: column; gap: 12px; } .divider { border: none; border-top: 1px solid var(--border); margin: 8px 0; } /* Loading Overlay */ .loading-overlay { display: none; position: fixed; inset: 0; background: rgba(255,255,255,0.95); z-index: 1000; align-items: center; justify-content: center; } .loading-overlay.active { display: flex; } .loading-content { text-align: center; } .loading-spinner { width: 48px; height: 48px; border: 4px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 1s linear infinite; margin: 0 auto 20px; } @keyframes spin { to { transform: rotate(360deg); } } .loading-content p { font-size: 18px; color: var(--text-secondary); } /* Responsive */ @media (max-width: 1024px) { .editor-container { grid-template-columns: 1fr; height: auto; } .editor-sidebar, .editor-settings { display: none; } .slide-preview-container { min-height: 400px; } } @media (max-width: 768px) { .header-content { flex-direction: column; gap: 16px; } .nav { gap: 16px; } .hero { padding: 40px 0; } .features { grid-template-columns: 1fr; } .form-card { padding: 24px; } .radio-group { grid-template-columns: 1fr; } }