@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=JetBrains+Mono:wght@400;500;600&display=swap'); :root { /* Colors */ --color-bg: #f8fafb; --color-surface: #ffffff; --color-surface-elevated: #ffffff; --color-primary: #0d0d0d; --color-primary-hover: #1a1a1a; --color-secondary: #6b7280; --color-tertiary: #9ca3af; --color-accent: #0066ff; --color-accent-hover: #0052cc; --color-success: #10b981; --color-warning: #f59e0b; --color-error: #ef4444; --color-border: #e5e7eb; --color-border-hover: #d1d5db; --color-divider: #f3f4f6; /* Typography */ --font-family-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; --font-family-mono: 'JetBrains Mono', monospace; --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; --font-size-5xl: 3rem; --font-weight-light: 300; --font-weight-normal: 400; --font-weight-medium: 500; --font-weight-semibold: 600; --font-weight-bold: 700; --font-weight-extrabold: 800; --font-weight-black: 900; --line-height-tight: 1.25; --line-height-snug: 1.375; --line-height-normal: 1.5; --line-height-relaxed: 1.625; /* Spacing */ --space-px: 1px; --space-0: 0; --space-1: 0.25rem; --space-2: 0.5rem; --space-3: 0.75rem; --space-4: 1rem; --space-5: 1.25rem; --space-6: 1.5rem; --space-8: 2rem; --space-10: 2.5rem; --space-12: 3rem; --space-16: 4rem; --space-20: 5rem; --space-24: 6rem; --space-32: 8rem; /* Sizing */ --size-4: 1rem; --size-6: 1.5rem; --size-8: 2rem; --size-10: 2.5rem; --size-12: 3rem; --size-16: 4rem; --size-20: 5rem; --size-24: 6rem; /* Border Radius */ --radius-none: 0; --radius-sm: 0.125rem; --radius-base: 0.375rem; --radius-md: 0.5rem; --radius-lg: 0.75rem; --radius-xl: 1rem; --radius-2xl: 1.5rem; --radius-full: 9999px; /* Shadows */ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); /* Transitions */ --transition-none: none; --transition-all: all 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-opacity: opacity 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-transform: transform 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-colors: color 150ms cubic-bezier(0.4, 0, 0.2, 1), background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), border-color 150ms cubic-bezier(0.4, 0, 0.2, 1); /* Z-index */ --z-dropdown: 10; --z-modal: 20; --z-popover: 30; --z-tooltip: 40; --z-toast: 50; } /* Reset and Base Styles */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { height: 100%; font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; font-variant-ligatures: none; } body { height: 100%; font-family: var(--font-family-primary); font-size: var(--font-size-base); font-weight: var(--font-weight-normal); line-height: var(--line-height-normal); color: var(--color-primary); background-color: var(--color-bg); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; } /* Layout */ .container { width: 100%; max-width: 1280px; margin: 0 auto; padding-left: var(--space-4); padding-right: var(--space-4); } @media (min-width: 640px) { .container { padding-left: var(--space-6); padding-right: var(--space-6); } } @media (min-width: 1024px) { .container { padding-left: var(--space-8); padding-right: var(--space-8); } } /* Header with Advanced Animations */ .app-header { text-align: center; margin-bottom: var(--space-12); padding-top: var(--space-16); position: relative; overflow: hidden; } .app-header::before { content: ''; position: absolute; top: 0; left: 50%; width: 200%; height: 200%; background: radial-gradient(circle at center, rgba(0, 102, 255, 0.05) 0%, transparent 70%); transform: translateX(-50%) translateY(-20%); animation: heroGlow 8s ease-in-out infinite; } @keyframes heroGlow { 0%, 100% { opacity: 0.3; transform: translateX(-50%) translateY(-20%) scale(1); } 50% { opacity: 0.6; transform: translateX(-50%) translateY(-20%) scale(1.1); } } .hero-content { position: relative; z-index: 2; } .hero-title { font-size: var(--font-size-4xl); font-weight: var(--font-weight-extrabold); letter-spacing: -0.025em; line-height: var(--line-height-tight); color: var(--color-primary); margin-bottom: var(--space-6); display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3); } .hero-word { display: inline-block; opacity: 0; transform: translateY(30px) rotateX(90deg); animation: wordReveal 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; transform-origin: center bottom; } @keyframes wordReveal { 0% { opacity: 0; transform: translateY(30px) rotateX(90deg) scale(0.8); } 50% { opacity: 0.8; transform: translateY(10px) rotateX(45deg) scale(1.05); } 100% { opacity: 1; transform: translateY(0) rotateX(0deg) scale(1); } } .hero-word:first-child { font-size: 1.2em; animation: emojiPulse 2s ease-in-out infinite; } @keyframes emojiPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } .hero-subtitle { font-size: var(--font-size-lg); color: var(--color-secondary); font-weight: var(--font-weight-medium); max-width: 32rem; margin: 0 auto var(--space-8); display: flex; flex-direction: column; gap: var(--space-1); } .hero-line { display: inline-block; opacity: 0; transform: translateY(20px); animation: lineReveal 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards; } @keyframes lineReveal { 0% { opacity: 0; transform: translateY(20px); filter: blur(10px); } 100% { opacity: 1; transform: translateY(0); filter: blur(0px); } } .hero-decoration { width: 60px; height: 4px; background: var(--color-accent); margin: 0 auto; border-radius: var(--radius-full); opacity: 0; transform: scaleX(0); animation: decorationReveal 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; position: relative; overflow: hidden; } .hero-decoration::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.6), transparent); animation: decorationShine 3s ease-in-out infinite; } @keyframes decorationReveal { 0% { opacity: 0; transform: scaleX(0); } 100% { opacity: 1; transform: scaleX(1); } } @keyframes decorationShine { 0% { left: -100%; } 100% { left: 100%; } } /* Responsive Header */ @media (min-width: 768px) { .hero-title { font-size: var(--font-size-5xl); } .hero-subtitle { font-size: var(--font-size-xl); flex-direction: row; gap: var(--space-2); } .hero-decoration { width: 80px; height: 5px; } } @media (max-width: 640px) { .hero-title { font-size: var(--font-size-3xl); gap: var(--space-2); } .hero-subtitle { font-size: var(--font-size-base); } } /* Main Content */ .main-content { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-2xl); box-shadow: var(--shadow-lg); overflow: hidden; min-height: 600px; position: relative; backdrop-filter: blur(8px); } .main-content::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--color-border), transparent); } /* Screen Management */ .screen { display: none; min-height: 600px; animation: fadeIn 400ms cubic-bezier(0.16, 1, 0.3, 1); } .screen.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); padding: var(--space-3) var(--space-6); font-family: inherit; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); line-height: 1; text-decoration: none; border: 1px solid transparent; border-radius: var(--radius-lg); cursor: pointer; transition: var(--transition-all); white-space: nowrap; user-select: none; position: relative; overflow: hidden; } .btn:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; } .btn-primary { background: var(--color-primary); color: var(--color-surface); border-color: var(--color-primary); box-shadow: var(--shadow-xs); } .btn-primary:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); box-shadow: var(--shadow-sm); transform: translateY(-1px); } .btn-primary:active { transform: translateY(0); box-shadow: var(--shadow-xs); } .btn-secondary { background: var(--color-surface); color: var(--color-primary); border-color: var(--color-border); } .btn-secondary:hover { background: var(--color-bg); border-color: var(--color-border-hover); box-shadow: var(--shadow-sm); } .btn-large { padding: var(--space-4) var(--space-8); font-size: var(--font-size-base); border-radius: var(--radius-xl); } .btn-accent { background: var(--color-accent); color: var(--color-surface); border-color: var(--color-accent); } .btn-accent:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); transform: translateY(-1px); box-shadow: var(--shadow-md); } /* Form Styles */ .form-container { max-width: 42rem; margin: 0 auto; padding: var(--space-8); } .form-header { text-align: center; margin-bottom: var(--space-10); } .form-title { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--color-primary); margin-bottom: var(--space-2); } .form-subtitle { font-size: var(--font-size-base); color: var(--color-secondary); font-weight: var(--font-weight-medium); } /* Progress Indicator */ .progress-container { margin-bottom: var(--space-10); } .step-indicator { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--space-6); position: relative; } .step-indicator::before { content: ''; position: absolute; top: 50%; left: 0; right: 0; height: 2px; background: var(--color-divider); transform: translateY(-50%); z-index: 1; } .step-item { display: flex; flex-direction: column; align-items: center; gap: var(--space-2); position: relative; z-index: 2; background: var(--color-bg); padding: 0 var(--space-2); min-width: 0; flex: 1; } .step-circle { width: var(--size-8); height: var(--size-8); border-radius: var(--radius-full); border: 2px solid var(--color-border); background: var(--color-surface); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-tertiary); transition: var(--transition-all); } .step-item.active .step-circle { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-surface); box-shadow: var(--shadow-md); } .step-item.completed .step-circle { background: var(--color-success); border-color: var(--color-success); color: var(--color-surface); } .step-item.completed .step-circle::before { content: '✓'; font-size: var(--font-size-sm); } .step-label { font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); color: var(--color-tertiary); text-align: center; line-height: var(--line-height-tight); } .step-item.active .step-label { color: var(--color-primary); font-weight: var(--font-weight-semibold); } .step-item.completed .step-label { color: var(--color-success); } /* Progress Bar */ .progress-bar { height: 8px; background: var(--color-divider); border-radius: var(--radius-full); overflow: hidden; position: relative; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--color-primary), var(--color-accent)); border-radius: var(--radius-full); transition: width 600ms cubic-bezier(0.16, 1, 0.3, 1); position: relative; } .progress-fill::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); animation: shimmer 2s infinite; } @keyframes shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* Form Groups and Fields */ .form-step { display: none; animation: slideIn 400ms cubic-bezier(0.16, 1, 0.3, 1); } .form-step.active { display: block; } @keyframes slideIn { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: translateX(0); } } .step-header { margin-bottom: var(--space-8); text-align: center; } .step-title { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); color: var(--color-primary); margin-bottom: var(--space-2); display: flex; align-items: center; justify-content: center; gap: var(--space-3); } .step-description { font-size: var(--font-size-base); color: var(--color-secondary); max-width: 28rem; margin: 0 auto; } .form-group { margin-bottom: var(--space-6); } .form-label { display: block; font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-primary); margin-bottom: var(--space-2); line-height: var(--line-height-normal); } .form-input, .form-select, .form-textarea { width: 100%; padding: var(--space-3) var(--space-4); font-family: inherit; font-size: var(--font-size-base); line-height: var(--line-height-normal); color: var(--color-primary); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); transition: var(--transition-colors); appearance: none; } .form-input:focus, .form-select:focus, .form-textarea:focus { outline: none; border-color: var(--color-accent); box-shadow: 0 0 0 3px rgb(0 102 255 / 0.1); } .form-input::placeholder, .form-textarea::placeholder { color: var(--color-tertiary); } .form-textarea { resize: vertical; min-height: 5rem; } .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 var(--space-3) center; background-repeat: no-repeat; background-size: 1rem 1rem; padding-right: var(--space-10); } /* Navigation */ .form-navigation { display: flex; justify-content: space-between; align-items: center; margin-top: var(--space-10); padding-top: var(--space-6); border-top: 1px solid var(--color-divider); } /* Dashboard Cards */ .dashboard-container { padding: var(--space-8); } .dashboard-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-8); flex-wrap: wrap; gap: var(--space-4); } .dashboard-title { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--color-primary); } .dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr)); gap: var(--space-6); margin-top: var(--space-8); } .dashboard-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: var(--space-6); transition: var(--transition-all); box-shadow: var(--shadow-xs); position: relative; overflow: hidden; } .dashboard-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--color-accent), var(--color-primary)); transform: scaleX(0); transition: transform 300ms cubic-bezier(0.16, 1, 0.3, 1); } .dashboard-card:hover { border-color: var(--color-border-hover); box-shadow: var(--shadow-lg); transform: translateY(-2px); } .dashboard-card:hover::before { transform: scaleX(1); } .card-header { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); } .card-icon { font-size: var(--font-size-xl); } .card-title { font-size: var(--font-size-lg); font-weight: var(--font-weight-semibold); color: var(--color-primary); } .card-description { color: var(--color-secondary); line-height: var(--line-height-relaxed); margin-bottom: var(--space-6); } /* Loading Screen */ .loading-container { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-16) var(--space-8); text-align: center; } .spinner { width: var(--size-16); height: var(--size-16); border: 3px solid var(--color-divider); border-top: 3px solid var(--color-accent); border-radius: var(--radius-full); animation: spin 1s linear infinite; margin-bottom: var(--space-6); } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-message { font-size: var(--font-size-lg); font-weight: var(--font-weight-medium); color: var(--color-primary); margin-bottom: var(--space-2); } .loading-subtitle { font-size: var(--font-size-base); color: var(--color-secondary); } /* Demo Elements */ .demo-banner { background: linear-gradient(135deg, #fef3c7, #fde68a); border: 1px solid #f59e0b; color: #92400e; padding: var(--space-4); border-radius: var(--radius-xl); margin-bottom: var(--space-8); text-align: center; font-weight: var(--font-weight-medium); } .demo-scenarios { display: grid; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); gap: var(--space-4); margin-top: var(--space-6); } .demo-card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: var(--space-5); cursor: pointer; transition: var(--transition-all); box-shadow: var(--shadow-xs); position: relative; overflow: hidden; } .demo-card::after { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, var(--color-accent), var(--color-primary)); opacity: 0; transition: opacity 300ms ease; pointer-events: none; } .demo-card:hover { border-color: var(--color-accent); box-shadow: var(--shadow-lg); transform: translateY(-4px); } .demo-card:hover::after { opacity: 0.03; } .demo-card h4 { font-size: var(--font-size-base); font-weight: var(--font-weight-semibold); color: var(--color-primary); margin-bottom: var(--space-2); } .demo-card p { font-size: var(--font-size-sm); color: var(--color-secondary); line-height: var(--line-height-relaxed); } /* Strategy Output */ .strategy-container { max-width: 56rem; margin: 0 auto; padding: var(--space-8); } .strategy-header { text-align: center; margin-bottom: var(--space-12); } .strategy-title { font-size: var(--font-size-3xl); font-weight: var(--font-weight-bold); color: var(--color-primary); margin-bottom: var(--space-2); } .strategy-subtitle { font-size: var(--font-size-lg); color: var(--color-secondary); margin-bottom: var(--space-6); } .strategy-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-3); } .strategy-section { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: var(--space-8); margin-bottom: var(--space-6); box-shadow: var(--shadow-xs); border-left: 4px solid var(--color-accent); } .section-header { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-6); } .section-icon { width: var(--size-8); height: var(--size-8); background: var(--color-primary); color: var(--color-surface); border-radius: var(--radius-lg); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-sm); font-weight: var(--font-weight-bold); } .section-title { font-size: var(--font-size-xl); font-weight: var(--font-weight-bold); color: var(--color-primary); } .section-content p { color: var(--color-secondary); line-height: var(--line-height-relaxed); margin-bottom: var(--space-4); } .section-content ul { color: var(--color-secondary); padding-left: var(--space-5); line-height: var(--line-height-relaxed); } .section-content li { margin-bottom: var(--space-2); } /* Chart Placeholder */ .chart-placeholder { width: 100%; height: 12rem; background: var(--color-bg); border: 1px solid var(--color-border); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; color: var(--color-tertiary); font-weight: var(--font-weight-medium); margin: var(--space-6) 0; position: relative; overflow: hidden; } .chart-placeholder::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.4), transparent); animation: shimmer 3s infinite; } /* Tags */ .tag { display: inline-flex; align-items: center; padding: var(--space-1) var(--space-3); font-size: var(--font-size-xs); font-weight: var(--font-weight-medium); color: var(--color-surface); background: var(--color-primary); border-radius: var(--radius-full); margin-right: var(--space-2); margin-bottom: var(--space-2); } /* 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-left { text-align: left; } .text-right { text-align: right; } .hidden { display: none !important; } .block { display: block; } .flex { display: flex; } .inline-flex { display: inline-flex; } .grid { display: grid; } /* Responsive Design */ @media (max-width: 640px) { .container { padding-left: var(--space-4); padding-right: var(--space-4); } .app-header { padding-top: var(--space-8); margin-bottom: var(--space-8); } .app-header h1 { font-size: var(--font-size-3xl); } .form-container { padding: var(--space-4); } .dashboard-container { padding: var(--space-4); } .dashboard-grid { grid-template-columns: 1fr; gap: var(--space-4); } .demo-scenarios { grid-template-columns: 1fr; } .strategy-container { padding: var(--space-4); } .strategy-section { padding: var(--space-6); } .form-navigation { flex-direction: column; gap: var(--space-3); } .form-navigation .btn { width: 100%; } .step-indicator { margin-bottom: var(--space-4); } .step-label { font-size: 0.625rem; } }