/* ===== 基本設定 ===== */ :root { /* カラー */ --color-bg-primary: #23272A; /* Discord Dark Theme Base */ --color-bg-secondary: #2C2F33; /* Discord Darker */ --color-bg-tertiary: #36393F; /* Discord Input/Embed Background */ --color-accent-primary: #5865F2; /* Discord Blurple */ --color-accent-secondary: #43B581; /* Discord Green (online status, success) */ --color-accent-tertiary: #FAA61A; /* Discord Yellow (idle status, warning) */ --color-text-primary: #FFFFFF; --color-text-secondary: #B9BBBE; /* Discord Channel/Message Text */ --color-text-muted: #72767D; /* Discord Muted Text/Placeholder */ --color-warning: #ED4245; /* Discord Red (mention, error) */ --color-success: var(--color-accent-secondary); /* Consistent Success Green */ --color-warning-rgb: 237, 66, 69; /* For .feature-box.security */ /* Glassmorphism for Rosca - slightly different from main to fit Discord theme */ --rosca-glass-bg: rgba(44, 47, 51, 0.7); /* Darker glass for Discord feel */ --rosca-glass-border: 1px solid rgba(88, 101, 242, 0.3); /* Blurple border */ --rosca-glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37); --rosca-glass-blur: 8px; /* フォント */ --font-primary: 'Poppins', 'Inter', 'Whitney', 'Helvetica Neue', Helvetica, Arial, sans-serif; /* Added Whitney for Discord feel */ --font-secondary: 'Inter', 'Whitney', 'Helvetica Neue', Helvetica, Arial, sans-serif; /* アニメーション */ --transition-fast: 0.2s; --transition-medium: 0.3s; --transition-slow: 0.5s; /* サイズ */ --container-width: 1200px; --border-radius-sm: 3px; /* Discord's typical border radius */ --border-radius-md: 5px; --border-radius-lg: 8px; } /* ===== リセットとベース ===== */ * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; font-size: 16px; } body { font-family: var(--font-primary); background-color: var(--color-bg-primary); color: var(--color-text-primary); line-height: 1.6; overflow-x: hidden; position: relative; } .container { width: 100%; max-width: var(--container-width); margin: 0 auto; padding: 0 1.5rem; } a { text-decoration: none; color: var(--color-accent-primary); /* Default link to Blurple */ transition: color var(--transition-fast) ease; } a:hover { color: var(--color-text-primary); text-decoration: underline; } ul { list-style: none; } img { max-width: 100%; height: auto; } /* ===== 背景効果 (既存のものを維持、必要に応じて調整) ===== */ .noise { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFEmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMC0wNC0xOVQxNDo1Nzo0NCswMzowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjAtMDQtMTlUMTQ6NTk6MTcrMDM6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjAtMDQtMTlUMTQ6NTk6MTcrMDM6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0ic1JHQiBJRUM2MTk2Ni0yLjEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTA3NDZiNTEtZDg5Yi0yMzRl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'); opacity: 0.03; /* Slightly reduced for darker theme */ z-index: -2; pointer-events: none; } .gradient-bg { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(ellipse at top center, rgba(88, 101, 242, 0.15) 0%, rgba(35, 39, 42, 0) 60%); /* Blurple accent, fades to dark */ z-index: -1; pointer-events: none; } /* ===== ヘッダーとナビゲーション ===== */ header { position: fixed; top: 0; left: 0; width: 100%; z-index: 1000; background-color: var(--rosca-glass-bg); backdrop-filter: blur(var(--rosca-glass-blur)); -webkit-backdrop-filter: blur(var(--rosca-glass-blur)); border-bottom: var(--rosca-glass-border); transition: all var(--transition-medium) ease; box-shadow: var(--rosca-glass-shadow); } header.scrolled { background-color: rgba(30, 31, 34, 0.85); /* Darker on scroll */ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4); } nav { display: flex; justify-content: space-between; align-items: center; padding: 0.8rem 2rem; /* Slightly reduced padding */ max-width: var(--container-width); margin: 0 auto; } .logo span { /* Ensure logo text matches Rosca style */ font-size: 1.8rem; font-weight: 700; color: var(--color-text-primary); /* White logo text */ text-shadow: 0 0 8px rgba(88, 101, 242, 0.7); /* Blurple glow */ } .nav-links { display: flex; gap: 1.8rem; /* Slightly adjusted gap */ } .nav-links a { position: relative; font-weight: 500; padding: 0.5rem 0; color: var(--color-text-secondary); } .nav-links a:hover, .nav-links a.active { color: var(--color-text-primary); } .nav-links a::after { content: ''; position: absolute; bottom: -2px; /* Positioned slightly lower */ left: 0; width: 0; height: 2px; background-color: var(--color-accent-primary); border-radius: 2px; transition: width var(--transition-medium) ease; } .nav-links a:hover::after, .nav-links a.active::after { width: 100%; } .cta-buttons .btn-primary { background-color: var(--color-accent-primary); color: white; border: none; box-shadow: 0 2px 10px rgba(88, 101, 242, 0.3); } .cta-buttons .btn-primary:hover { background-color: #4752c4; /* Darker Blurple */ box-shadow: 0 4px 15px rgba(88, 101, 242, 0.5); transform: translateY(-2px); } /* ===== ヒーローセクション ===== */ #hero { min-height: 90vh; /* Adjusted height */ display: flex; align-items: center; justify-content: center; text-align: center; position: relative; overflow: hidden; padding: 6rem 2rem 4rem; /* Added padding */ background: transparent; /* Rely on .gradient-bg and .noise */ } #hero::before { /* Optional: subtle overlay if needed */ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(180deg, rgba(35, 39, 42, 0.5) 0%, rgba(35, 39, 42, 0.9) 100%); z-index: 0; } .hero-content { position: relative; z-index: 1; animation: fadeIn 1s ease-out forwards; } .hero-logo { margin-bottom: 1.5rem; display: flex; flex-direction: column; align-items: center; } .hero-logo h1 { font-size: clamp(3rem, 10vw, 5.5rem); /* Responsive font size */ font-weight: 700; color: var(--color-text-primary); text-shadow: 0 0 15px rgba(88, 101, 242, 0.6), 0 0 30px rgba(88, 101, 242, 0.4); margin: 0; line-height: 1.1; } .logo-glow { /* This can be enhanced if needed */ width: 150px; height: 150px; background-image: radial-gradient(circle, var(--color-accent-primary) 0%, transparent 70%); opacity: 0.3; filter: blur(30px); position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%) scale(1.5); animation: pulse 4s infinite ease-in-out; z-index: -1; } .hero-description { font-size: clamp(1.1rem, 2.5vw, 1.4rem); color: var(--color-text-secondary); margin-bottom: 2.5rem; max-width: 700px; margin-left: auto; margin-right: auto; } .hero-buttons .btn-primary { padding: 0.9rem 2.2rem; font-size: 1.1rem; text-transform: uppercase; letter-spacing: 0.5px; } .hero-buttons .btn-primary i { margin-right: 0.7rem; font-size: 1.2em; } /* Scroll Indicator - Keeping it simple and fitting Discord aesthetic */ .scroll-indicator { position: absolute; bottom: 30px; left: 50%; transform: translateX(-50%); opacity: 0.8; transition: opacity var(--transition-medium) ease; z-index: 2; } .scroll-indicator.hidden { opacity: 0; } .mouse { width: 25px; height: 40px; border: 2px solid var(--color-text-secondary); border-radius: 15px; position: relative; margin: 0 auto 10px; } .wheel { width: 4px; height: 8px; background-color: var(--color-text-secondary); border-radius: 2px; position: absolute; top: 8px; left: 50%; transform: translateX(-50%); animation: wheel 1.5s infinite ease-in-out; } @keyframes wheel { 0%, 100% { top: 8px; opacity: 1; } 50% { top: 15px; opacity: 0.5; } } .arrow { display: flex; flex-direction: column; align-items: center; } .arrow span { display: block; width: 10px; height: 10px; border-bottom: 2px solid var(--color-text-secondary); border-right: 2px solid var(--color-text-secondary); transform: rotate(45deg); margin-bottom: -6px; /* Overlap for chevron effect */ animation: bounce 1.5s infinite ease-in-out; } .arrow span:nth-child(2) { animation-delay: 0.1s; } .arrow span:nth-child(3) { animation-delay: 0.2s; } /* ===== セクション共通 ===== */ section { padding: 5rem 0; position: relative; } section:nth-child(even) { /* Alternating background for sections if desired */ background-color: var(--color-bg-secondary); } .section-title { font-size: clamp(2rem, 5vw, 3rem); font-weight: 700; color: var(--color-text-primary); text-align: center; margin-bottom: 1.5rem; position: relative; } .section-title::after { content: ''; display: block; width: 70px; height: 4px; background-color: var(--color-accent-primary); margin: 0.5rem auto 0; border-radius: 2px; } .section-description { font-size: 1.1rem; color: var(--color-text-secondary); text-align: center; max-width: 800px; margin: 0 auto 3rem auto; line-height: 1.7; } /* ===== 機能ショーケースセクション (rosca-showcase) ===== */ .rosca-showcase { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; align-items: center; /* Align items if they have different heights */ } .rosca-showcase-item { background: var(--rosca-glass-bg); backdrop-filter: blur(var(--rosca-glass-blur)); -webkit-backdrop-filter: blur(var(--rosca-glass-blur)); border-radius: var(--border-radius-lg); padding: 2rem; box-shadow: var(--rosca-glass-shadow); border: var(--rosca-glass-border); transition: transform var(--transition-medium) ease, box-shadow var(--transition-medium) ease; color: var(--color-text-secondary); /* Default text color for items */ } .rosca-showcase-item:hover { transform: translateY(-8px); box-shadow: 0 12px 40px rgba(88, 101, 242, 0.3); border-color: rgba(88, 101, 242, 0.5); } .rosca-showcase-item h3 { font-size: 1.5rem; font-weight: 600; color: var(--color-text-primary); margin-bottom: 1rem; display: flex; align-items: center; } .rosca-showcase-item h3 i { color: var(--color-accent-primary); margin-right: 0.75rem; font-size: 1.3em; width: 25px; /* Consistent icon width */ text-align: center; } .rosca-showcase-item p { margin-bottom: 1rem; line-height: 1.7; } .rosca-showcase-item .feature-list { margin-bottom: 1.5rem; padding-left: 0; /* Remove default padding if any */ } .rosca-showcase-item .feature-list li { margin-bottom: 0.5rem; display: flex; align-items: center; font-size: 0.95rem; } .rosca-showcase-item .feature-list li i.fa-check { color: var(--color-success); margin-right: 0.75rem; font-size: 1.1em; } .command-preview { /* Enhanced command preview */ background-color: var(--color-bg-tertiary); padding: 0.8rem 1rem; border-radius: var(--border-radius-md); font-family: 'Consolas', 'Menlo', 'Monaco', monospace; font-size: 0.9rem; color: var(--color-text-secondary); border: 1px solid rgba(255, 255, 255, 0.05); box-shadow: inset 0 1px 3px rgba(0,0,0,0.2); transition: all var(--transition-fast) ease; position: relative; overflow: hidden; } .command-preview code { color: var(--color-text-primary); /* Make code text stand out */ } .command-preview:hover { border-color: var(--color-accent-primary); box-shadow: inset 0 1px 3px rgba(0,0,0,0.2), 0 0 10px rgba(88, 101, 242, 0.2); } .rosca-image { position: relative; text-align: center; /* Center image if it's smaller */ } .rosca-preview { border-radius: var(--border-radius-lg); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); max-width: 100%; display: block; /* Remove extra space below image */ margin: 0 auto; /* Center image */ } .preview-overlay { /* Can be used for subtle gradient or hover effect on image */ position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: var(--border-radius-lg); background: linear-gradient(transparent, rgba(0,0,0,0.2)); pointer-events: none; } .floating-features { position: absolute; bottom: -120px; /* Changed from 20px to 40px */ left: 50%; transform: translateX(-50%); display: flex; gap: 1rem; z-index: 1; /* Ensure they are above overlay */ } .floating-feature { background: var(--rosca-glass-bg); backdrop-filter: blur(var(--rosca-glass-blur)); -webkit-backdrop-filter: blur(var(--rosca-glass-blur)); border: var(--rosca-glass-border); padding: 0.7rem 1.2rem; border-radius: var(--border-radius-md); font-size: 1rem; color: var(--color-text-primary); display: flex; align-items: center; box-shadow: var(--rosca-glass-shadow); transition: all var(--transition-medium) ease; text-shadow: 0 0 5px rgba(0,0,0,0.5); min-width: 150px; justify-content: center; } .floating-feature:hover { transform: translateY(-3px) scale(1.05); box-shadow: 0 6px 20px rgba(88, 101, 242, 0.25); color: var(--color-text-primary); } .floating-feature i { margin-right: 0.6rem; /* Slightly adjusted margin */ color: var(--color-accent-primary); } /* ===== 機能詳細セクション (features-grid) ===== */ .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; } .feature-box { background: var(--rosca-glass-bg); backdrop-filter: blur(var(--rosca-glass-blur)); -webkit-backdrop-filter: blur(var(--rosca-glass-blur)); border-radius: var(--border-radius-lg); padding: 2rem 1.5rem; box-shadow: var(--rosca-glass-shadow); border: var(--rosca-glass-border); transition: transform var(--transition-medium) ease, box-shadow var(--transition-medium) ease, border-color var(--transition-medium) ease; display: flex; flex-direction: column; } .feature-box:hover { transform: translateY(-10px) scale(1.02); box-shadow: 0 15px 45px rgba(88, 101, 242, 0.25); border-color: rgba(88, 101, 242, 0.6); } .feature-icon { font-size: 2.5rem; color: var(--color-accent-primary); margin-bottom: 1rem; text-align: center; height: 50px; /* Fixed height for icon area */ line-height: 50px; /* Vertically center icon */ } .feature-box h3 { font-size: 1.4rem; font-weight: 600; color: var(--color-text-primary); margin-bottom: 0.75rem; text-align: center; } .feature-content { flex-grow: 1; /* Allow content to grow and push command-example down */ display: flex; flex-direction: column; } .feature-content p { color: var(--color-text-secondary); font-size: 0.95rem; line-height: 1.6; margin-bottom: 1rem; text-align: center; /* Center short descriptions */ flex-grow: 1; } .feature-list { /* Used inside feature-box */ padding-left: 0; margin-bottom: 1rem; } .feature-list li { color: var(--color-text-secondary); font-size: 0.9rem; margin-bottom: 0.5rem; display: flex; align-items: flex-start; /* Align items to start for multi-line text */ } .feature-list li::before { /* Custom bullet point */ content: '\f058'; /* Font Awesome check-circle icon */ font-family: 'Font Awesome 6 Free'; font-weight: 900; /* Solid icon */ color: var(--color-accent-secondary); /* Green check */ margin-right: 0.75rem; font-size: 1em; line-height: 1.6; /* Align with text */ } .command-example { background-color: var(--color-bg-tertiary); padding: 0.7rem 1rem; border-radius: var(--border-radius-md); font-family: 'Consolas', 'Menlo', 'Monaco', monospace; font-size: 0.85rem; color: var(--color-text-secondary); margin-top: auto; /* Pushes to the bottom of the card */ border: 1px solid rgba(255, 255, 255, 0.08); text-align: center; } .command-example code { color: var(--color-text-primary); } .feature-box.security { /* Special styling for security box if needed */ border-color: rgba(var(--color-warning-rgb), 0.4); } .feature-box.security:hover { border-color: var(--color-warning); box-shadow: 0 15px 45px rgba(var(--color-warning-rgb), 0.25); } .feature-box.security .feature-icon i { color: var(--color-warning); } .security-features { margin-top: 1rem; } .security-feature-item { background: rgba(var(--color-warning-rgb), 0.1); padding: 0.5rem 0.75rem; border-radius: var(--border-radius-sm); margin-bottom: 0.5rem; font-size: 0.85rem; color: var(--color-text-secondary); display: flex; align-items: center; } .security-feature-item i { color: var(--color-warning); margin-right: 0.5rem; } .features-motto { text-align: center; margin-top: 3rem; font-size: 1.2rem; font-style: italic; color: var(--color-text-secondary); } .features-motto p::before, .features-motto p::after { content: '"'; color: var(--color-accent-primary); font-weight: bold; } /* ===== 導入ガイドセクション (guide-steps) ===== */ #guide { background-color: var(--color-bg-secondary); /* Give guide a distinct background */ } .guide-steps { background: var(--color-bg-primary); /* Inner container for steps */ border-radius: var(--border-radius-lg); padding: 2rem; box-shadow: 0 10px 30px rgba(0,0,0,0.2); } .step-indicators { display: flex; justify-content: space-around; margin-bottom: 2.5rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--color-bg-tertiary); position: relative; } .step { display: flex; flex-direction: column; align-items: center; cursor: pointer; opacity: 0.6; transition: opacity var(--transition-medium) ease, transform var(--transition-medium) ease; flex: 1; /* Distribute space evenly */ text-align: center; position: relative; /* For pseudo-elements */ } .step:not(:last-child)::after { /* Connector line */ content: ''; position: absolute; top: 20px; /* Vertically center with span */ left: 50%; width: calc(100% - 40px); /* Span between circles */ height: 2px; background-color: var(--color-bg-tertiary); z-index: 0; transform: translateX(20px); } .step.active::before { /* Active line segment */ content: ''; position: absolute; top: 20px; left: -50%; width: 100%; height: 2px; background-color: var(--color-accent-primary); z-index: 1; transform: translateX(20px); } .step:first-child.active::before { left: 0; width: 50%; transform: translateX(20px); } .step.active:not(:first-child)::before { width: 100%; left: -50%; } .step span { /* Step number circle */ width: 40px; height: 40px; border-radius: 50%; background-color: var(--color-bg-tertiary); color: var(--color-text-secondary); display: flex; justify-content: center; align-items: center; font-weight: 600; font-size: 1.1rem; margin-bottom: 0.75rem; transition: background-color var(--transition-medium) ease, color var(--transition-medium) ease, transform var(--transition-medium) ease; border: 2px solid var(--color-bg-tertiary); position: relative; z-index: 2; /* Above connector lines */ } .step p { font-size: 0.9rem; color: var(--color-text-secondary); font-weight: 500; transition: color var(--transition-medium) ease; } .step:hover span { background-color: var(--color-accent-primary); color: var(--color-text-primary); border-color: var(--color-accent-primary); transform: scale(1.1); } .step:hover p { color: var(--color-accent-primary); } .step.active { opacity: 1; } .step.active span { background-color: var(--color-accent-primary); color: var(--color-text-primary); border-color: var(--color-accent-primary); box-shadow: 0 0 15px rgba(88, 101, 242, 0.5); transform: scale(1.1); } .step.active p { color: var(--color-text-primary); font-weight: 600; } .step-content { min-height: 300px; /* Ensure consistent height */ position: relative; } .step-details { display: none; /* Hidden by default */ opacity: 0; transform: translateY(20px); transition: opacity var(--transition-slow) ease, transform var(--transition-slow) ease; text-align: left; /* Content within step details */ } .step-details.active { display: block; opacity: 1; transform: translateY(0); } .step-details h3 { font-size: 1.8rem; color: var(--color-text-primary); margin-bottom: 1rem; } .step-details p { color: var(--color-text-secondary); margin-bottom: 1.5rem; line-height: 1.7; } .step-details .btn { /* Style for buttons within step details */ margin-top: 1rem; } .step-image { max-width: 100%; /* Ensure image is responsive */ border-radius: var(--border-radius-md); box-shadow: 0 5px 20px rgba(0,0,0,0.2); margin-top: 1.5rem; } .image-placeholder { /* For steps without specific images */ background-color: var(--color-bg-tertiary); border-radius: var(--border-radius-md); min-height: 200px; display: flex; align-items: center; justify-content: center; color: var(--color-text-muted); font-style: italic; } .permission-list, .customize-options { list-style: none; padding-left: 0; margin-bottom: 1.5rem; } .permission-list li, .customize-options li { margin-bottom: 0.75rem; color: var(--color-text-secondary); font-size: 0.95rem; display: flex; align-items: center; } .permission-list li::before, .customize-options li::before { content: '\f00c'; /* Font Awesome check icon */ font-family: 'Font Awesome 6 Free'; font-weight: 900; /* Solid */ color: var(--color-success); margin-right: 0.75rem; } .command-examples { /* Container for command examples in guide */ background-color: var(--color-bg-tertiary); padding: 1.5rem; border-radius: var(--border-radius-md); border: 1px solid rgba(255, 255, 255, 0.08); } .command-examples .command { margin-bottom: 1rem; font-family: 'Consolas', 'Menlo', 'Monaco', monospace; } .command-examples .command code { background-color: var(--color-bg-primary); padding: 0.3rem 0.6rem; border-radius: var(--border-radius-sm); color: var(--color-accent-primary); font-weight: bold; } .command-examples .command .description { display: block; font-size: 0.85rem; color: var(--color-text-muted); margin-top: 0.3rem; margin-left: 0.5rem; } /* ===== CTAセクション ===== */ #cta { background-color: var(--color-accent-primary); padding: 4rem 0; text-align: center; color: var(--color-text-primary); position: relative; overflow: hidden; } #cta::before { /* Subtle pattern or texture */ content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-image: linear-gradient(45deg, rgba(255,255,255,0.05) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.05) 50%, rgba(255,255,255,0.05) 75%, transparent 75%, transparent); background-size: 30px 30px; opacity: 0.5; z-index: 0; } #cta .container { position: relative; z-index: 1; } #cta h2 { font-size: clamp(2rem, 5vw, 2.8rem); margin-bottom: 1rem; color: var(--color-text-primary); } #cta h2::after { /* Remove section title underline for CTA */ display: none; } #cta p { font-size: 1.1rem; margin-bottom: 2rem; color: rgba(255,255,255,0.85); max-width: 600px; margin-left: auto; margin-right: auto; } #cta .cta-buttons .btn { /* Make CTA buttons stand out */ padding: 0.8rem 2rem; font-size: 1.05rem; background-color: var(--color-text-primary); color: var(--color-accent-primary); box-shadow: 0 5px 15px rgba(0,0,0,0.2); border: none; } #cta .cta-buttons .btn:hover { background-color: var(--color-bg-secondary); color: var(--color-text-primary); transform: translateY(-3px) scale(1.03); box-shadow: 0 8px 20px rgba(0,0,0,0.3); } #cta .cta-buttons .btn i { margin-right: 0.6rem; } /* ===== フッター ===== */ footer { background-color: var(--color-bg-secondary); padding: 3rem 0 1.5rem; color: var(--color-text-secondary); border-top: 1px solid var(--color-bg-tertiary); } .footer-content { display: flex; flex-direction: column; align-items: center; text-align: center; } .footer-logo { font-size: 1.8rem; font-weight: 700; color: var(--color-accent-primary); margin-bottom: 1rem; } .footer-links { display: flex; gap: 1.5rem; margin-bottom: 1.5rem; flex-wrap: wrap; /* Allow wrapping on smaller screens */ justify-content: center; } .footer-links a { color: var(--color-text-secondary); font-size: 0.9rem; } .footer-links a:hover { color: var(--color-accent-primary); text-decoration: underline; } .social-links { display: flex; gap: 1rem; margin-bottom: 1.5rem; } .social-icon { font-size: 1.5rem; color: var(--color-text-muted); transition: color var(--transition-fast) ease, transform var(--transition-fast) ease; } .social-icon:hover { color: var(--color-accent-primary); transform: scale(1.2); } .footer-bottom { border-top: 1px solid var(--color-bg-tertiary); padding-top: 1.5rem; margin-top: 1.5rem; /* Add margin if not already there */ width: 100%; } .footer-bottom p { font-size: 0.85rem; color: var(--color-text-muted); } /* ===== アニメーションクラス (既存のものを活用・調整) ===== */ .fade-in { opacity: 0; transform: translateY(20px); transition: opacity 0.6s var(--transition-medium) ease-out, transform 0.6s var(--transition-medium) ease-out; } .fade-in.visible { opacity: 1; transform: translateY(0); } /* Add other animation classes (slide-in-left, slide-in-right, scale-in) if needed and ensure they are consistent */ .slide-in-left { opacity: 0; transform: translateX(-30px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; } .slide-in-left.visible { opacity: 1; transform: translateX(0); } /* ... and so on for other animations */ /* ===== レスポンシブデザイン ===== */ @media (max-width: 1024px) { .hero-logo h1 { font-size: 4rem; } .section-title { font-size: 2.5rem; } .features-grid, .rosca-showcase { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; } } @media (max-width: 768px) { nav { padding: 0.8rem 1rem; } .nav-links { /* Hide for hamburger */ display: none; flex-direction: column; position: absolute; top: 100%; /* Position below header */ left: 0; width: 100%; background-color: var(--rosca-glass-bg); backdrop-filter: blur(var(--rosca-glass-blur)); padding: 1rem 0; border-top: 1px solid var(--rosca-glass-border); box-shadow: 0 10px 20px rgba(0,0,0,0.2); } .nav-links.active { display: flex; } .nav-links a { padding: 0.8rem 1.5rem; text-align: center; width: 100%; } .nav-links a::after { display: none; } /* Remove underline animation for mobile menu */ .hamburger { display: flex; /* Show hamburger */ z-index: 1001; /* Above nav links if they overlap */ } /* Hamburger active state for X icon */ .hamburger.active span:nth-child(1) { transform: translateY(8px) rotate(45deg); } .hamburger.active span:nth-child(2) { opacity: 0; } .hamburger.active span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); } .hero-logo h1 { font-size: 3rem; } .hero-description { font-size: 1rem; padding: 0 1rem; } .hero-buttons .btn-primary { padding: 0.8rem 1.8rem; font-size: 1rem; } .section-title { font-size: 2rem; } .section-description { font-size: 1rem; padding: 0 1rem; } .step-indicators { flex-direction: column; gap: 1.5rem; border-bottom: none; } .step:not(:last-child)::after, .step.active::before { /* Remove connector lines for vertical layout */ display: none; } .step span { width: 35px; height: 35px; font-size: 1rem; } .step p { font-size: 0.85rem; } .guide-steps { padding: 1.5rem; } .step-content { min-height: auto; } /* Adjust height for mobile */ .floating-features { position: static; /* Change from absolute */ transform: none; flex-direction: column; /* Stack vertically */ align-items: center; margin-top: 1.5rem; gap: 0.8rem; } .rosca-showcase { grid-template-columns: 1fr; /* Stack items */ } .rosca-image { margin-top: 2rem; } #cta h2 { font-size: 1.8rem; } #cta p { font-size: 1rem; } .footer-links { gap: 1rem; } } @media (max-width: 480px) { .hero-logo h1 { font-size: 2.5rem; } .hero-description { font-size: 0.9rem; } .section-title { font-size: 1.8rem; } .section-description { font-size: 0.9rem; } .feature-box, .rosca-showcase-item { padding: 1.5rem; } .feature-box h3, .rosca-showcase-item h3 { font-size: 1.2rem; } .command-preview, .command-example { font-size: 0.8rem; } .cta-buttons .btn, #cta .cta-buttons .btn { /* Ensure CTA button is also responsive */ width: 100%; padding: 0.8rem 1rem; font-size: 0.95rem; } #cta .cta-buttons { display: flex; flex-direction: column; gap: 1rem; align-items: center; } .floating-feature { width: 80%; justify-content: center; } } /* Additional utility for neon button if used (from design_improvements.md) */ .neon-button { position: relative; display: inline-flex; /* Use inline-flex for icon alignment */ align-items: center; justify-content: center; padding: 15px 30px; color: #fff; background: transparent; border: 2px solid var(--color-accent-primary); /* Use Blurple for Rosca */ border-radius: var(--border-radius-md); text-transform: uppercase; letter-spacing: 1px; /* Adjusted spacing */ overflow: hidden; transition: 0.5s; cursor: pointer; font-weight: 600; } .neon-button:hover { background: var(--color-accent-primary); color: white; /* Ensure text is white on hover */ box-shadow: 0 0 10px var(--color-accent-primary), 0 0 20px var(--color-accent-primary), 0 0 40px var(--color-accent-primary); transform: translateY(-2px); } .neon-button span { /* Animated spans for glow effect - keep as is if functional */ position: absolute; display: block; } .neon-button span:nth-child(1) { top: 0; left: -100%; width: 100%; height: 2px; background: linear-gradient(90deg, transparent, var(--color-accent-primary)); animation: btn-anim1 1s linear infinite; } @keyframes btn-anim1 { 0% { left: -100%; } 50%,100% { left: 100%; } } .neon-button span:nth-child(2) { top: -100%; right: 0; width: 2px; height: 100%; background: linear-gradient(180deg, transparent, var(--color-accent-primary)); animation: btn-anim2 1s linear infinite; animation-delay: .25s } @keyframes btn-anim2 { 0% { top: -100%; } 50%,100% { top: 100%; } } .neon-button span:nth-child(3) { bottom: 0; right: -100%; width: 100%; height: 2px; background: linear-gradient(270deg, transparent, var(--color-accent-primary)); animation: btn-anim3 1s linear infinite; animation-delay: .5s } @keyframes btn-anim3 { 0% { right: -100%; } 50%,100% { right: 100%; } } .neon-button span:nth-child(4) { bottom: -100%; left: 0; width: 2px; height: 100%; background: linear-gradient(360deg, transparent, var(--color-accent-primary)); animation: btn-anim4 1s linear infinite; animation-delay: .75s } @keyframes btn-anim4 { 0% { bottom: -100%; } 50%,100% { bottom: 100%; } } .neon-button i { margin-right: 8px; } /* For icons inside neon buttons */ /* Gradient button (from design_improvements.md, adapted for Rosca) */ .gradient-button { padding: 12px 24px; /* Using Discord's Blurple and a slightly lighter shade for gradient */ background-image: linear-gradient(to right, var(--color-accent-primary), #7289DA); border: none; border-radius: 50px; /* Pill shape */ color: white; font-weight: 600; transition: all 0.3s ease; box-shadow: 0 8px 15px rgba(88, 101, 242, 0.25); text-transform: uppercase; letter-spacing: 0.5px; display: inline-flex; align-items: center; justify-content: center; } .gradient-button:hover { transform: translateY(-3px) scale(1.03); box-shadow: 0 12px 25px rgba(88, 101, 242, 0.35); } .gradient-button:active { transform: translateY(1px); box-shadow: 0 5px 10px rgba(88, 101, 242, 0.2); } .gradient-button i { margin-right: 8px; } /* Ensure generic .btn styles from main style.css are available or define alternatives */ .btn { /* Basic button styling if not using neon or gradient */ display: inline-flex; align-items: center; justify-content: center; padding: 0.6rem 1.3rem; border-radius: var(--border-radius-md); font-weight: 600; transition: all var(--transition-fast) ease; border: none; position: relative; overflow: hidden; background-color: var(--color-bg-tertiary); color: var(--color-text-secondary); border: 1px solid transparent; } .btn:hover { background-color: var(--color-accent-primary); color: var(--color-text-primary); border-color: var(--color-accent-primary); transform: translateY(-2px); box-shadow: 0 4px 10px rgba(88,101,242,0.2); } .btn i { margin-right: 0.5rem; } /* Ensure FontAwesome icons have consistent color */ i.fas, i.fab, i.far { /* General FontAwesome icon styling */ transition: color var(--transition-fast) ease; } .hamburger span { display: block; height: 2px; /* spanの高さも調整 */ width: 100%; background-color: var(--color-text-primary); border-radius: 3px; transition: all var(--transition-fast) ease; } /* ===== モバイルメニュー ===== */ .mobile-menu { position: fixed; top: 0; left: -100%; /* Initially hidden */ width: 80%; /* Adjust width as needed */ max-width: 300px; height: 100%; background-color: var(--color-bg-secondary); /* Roscaの背景色に合わせる */ box-shadow: 2px 0 10px rgba(0, 0, 0, 0.2); transition: left var(--transition-medium) ease; padding: 2rem; z-index: 1001; /* Ensure it's above the header */ overflow-y: auto; /* Allow scrolling if content overflows */ } .mobile-menu.active { left: 0; } .mobile-menu-links { display: flex; flex-direction: column; gap: 20px; margin-bottom: 30px; } .mobile-menu-links a { color: white; font-size: 1.2rem; text-decoration: none; } .mobile-cta-buttons { display: flex; flex-direction: column; gap: 15px; } .close-menu { position: absolute; top: 20px; right: 20px; font-size: 2rem; color: white; cursor: pointer; } body.menu-open { overflow: hidden; } @media (max-width: 768px) { .nav-links, .cta-buttons { display: none; } .hamburger { display: flex; width: 25px; /* 幅を狭く */ height: 18px; /* 高さを調整 */ } .hamburger span { height: 2px; /* spanの高さも調整 */ } /* モバイルメニュー内の要素の表示を制御 */ .mobile-menu .nav-links { display: flex; flex-direction: column; align-items: center; /* 中央揃え */ gap: 1.5rem; /* 適切な間隔 */ } .mobile-menu .nav-links a { display: block; color: white; font-size: 1.3rem; /* 文字サイズ調整 */ padding: 0.5rem 0; } .mobile-menu .cta-buttons { display: flex; flex-direction: column; align-items: center; /* 中央揃え */ gap: 1rem; /* 適切な間隔 */ margin-top: 2rem; /* 上部のマージン */ } .mobile-menu .cta-buttons .btn { display: block; width: 80%; /* ボタンの幅を調整 */ text-align: center; } }