/* Reachy Mini for Home Assistant - Style */ /* Color scheme: Home Assistant blue tones */ :root { --ha-blue: #03a9f4; --ha-blue-dark: #0288d1; --ha-blue-light: #4fc3f7; --ha-cyan: #00bcd4; --bg-dark: #0d1117; --bg-card: #161b22; --bg-card-hover: #1c2128; --text-primary: #f0f6fc; --text-secondary: #8b949e; --accent: var(--ha-blue); --accent-glow: rgba(3, 169, 244, 0.3); --border-color: rgba(3, 169, 244, 0.2); --section-padding: 80px 24px; --card-radius: 16px; } * { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: 'Manrope', -apple-system, sans-serif; background: var(--bg-dark); color: var(--text-primary); line-height: 1.6; } h1, h2, h3 { font-family: 'Space Grotesk', sans-serif; font-weight: 600; line-height: 1.2; } a { color: var(--accent); text-decoration: none; transition: color 0.2s; } a:hover { color: var(--ha-blue-light); } /* Hero */ .hero { min-height: 100vh; padding: 24px; background: linear-gradient(135deg, #0d1117 0%, #1a2332 50%, #0d1117 100%); position: relative; overflow: hidden; } .hero::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle at 30% 20%, rgba(3, 169, 244, 0.08) 0%, transparent 50%), radial-gradient(circle at 70% 80%, rgba(0, 188, 212, 0.06) 0%, transparent 50%); pointer-events: none; } .topline { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto 60px; position: relative; z-index: 1; } .brand { display: flex; align-items: center; gap: 12px; font-family: 'Space Grotesk', sans-serif; font-weight: 600; font-size: 1.25rem; } .logo { font-size: 2rem; } .pill { background: var(--bg-card); border: 1px solid var(--border-color); padding: 8px 20px; border-radius: 100px; font-size: 0.85rem; color: var(--text-secondary); } .hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; max-width: 1200px; margin: 0 auto; align-items: center; position: relative; z-index: 1; } .eyebrow { color: var(--accent); font-size: 0.9rem; font-weight: 600; text-transform: uppercase; letter-spacing: 1.5px; margin-bottom: 16px; } .hero-copy h1 { font-size: clamp(2.5rem, 5vw, 3.5rem); margin-bottom: 24px; background: linear-gradient(135deg, var(--text-primary) 0%, var(--ha-blue-light) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .lede { font-size: 1.15rem; color: var(--text-secondary); margin-bottom: 32px; max-width: 500px; } .hero-actions { display: flex; gap: 16px; margin-bottom: 40px; } .btn { padding: 14px 28px; border-radius: 10px; font-weight: 600; font-size: 0.95rem; transition: all 0.3s; cursor: pointer; } .btn.primary { background: linear-gradient(135deg, var(--ha-blue) 0%, var(--ha-cyan) 100%); color: white; border: none; box-shadow: 0 4px 20px var(--accent-glow); } .btn.primary:hover { transform: translateY(-2px); box-shadow: 0 8px 30px var(--accent-glow); } .btn.ghost { background: transparent; border: 1px solid var(--border-color); color: var(--text-primary); } .btn.ghost:hover { background: var(--bg-card); border-color: var(--accent); } .hero-badges { display: flex; flex-wrap: wrap; gap: 10px; } .hero-badges span { background: linear-gradient(135deg, rgba(3, 169, 244, 0.2) 0%, rgba(0, 188, 212, 0.15) 100%); border: 1px solid rgba(3, 169, 244, 0.4); padding: 8px 16px; border-radius: 8px; font-size: 0.85rem; color: var(--ha-blue-light); font-weight: 500; transition: all 0.3s; } .hero-badges span:hover { background: linear-gradient(135deg, rgba(3, 169, 244, 0.3) 0%, rgba(0, 188, 212, 0.25) 100%); border-color: var(--accent); transform: translateY(-2px); } .hero-visual { display: flex; justify-content: center; align-items: center; } .glass-card { background: rgba(22, 27, 34, 0.8); backdrop-filter: blur(20px); border: 1px solid var(--border-color); border-radius: var(--card-radius); padding: 48px; text-align: center; position: relative; overflow: hidden; } .glass-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--accent), transparent); } .hero-emoji { font-size: 4rem; margin-bottom: 20px; filter: drop-shadow(0 0 30px var(--accent-glow)); } .caption { color: var(--text-secondary); font-size: 0.95rem; } /* Sections */ .section { padding: var(--section-padding); max-width: 1200px; margin: 0 auto; } .section-header { text-align: center; margin-bottom: 60px; } .section-header h2 { font-size: 2.25rem; margin-bottom: 16px; } .intro { color: var(--text-secondary); font-size: 1.1rem; max-width: 600px; margin: 0 auto; } /* Features */ .feature-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; } .feature-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--card-radius); padding: 32px; transition: all 0.3s; position: relative; overflow: hidden; } .feature-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, var(--ha-blue), var(--ha-cyan)); opacity: 0; transition: opacity 0.3s; } .feature-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 12px 40px rgba(3, 169, 244, 0.15); } .feature-card:hover::before { opacity: 1; } .feature-card .icon { font-size: 2.5rem; display: block; margin-bottom: 16px; } .feature-card h3 { font-size: 1.2rem; margin-bottom: 12px; } .feature-card p { color: var(--text-secondary); font-size: 0.95rem; } /* Story / Install */ .story-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; } .story-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--card-radius); padding: 40px; } .story-card.secondary { background: linear-gradient(135deg, rgba(3, 169, 244, 0.1) 0%, rgba(0, 188, 212, 0.05) 100%); } .story-card h3 { font-size: 1.5rem; margin-bottom: 24px; } .story-list { list-style: none; } .story-list li { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 16px; color: var(--text-secondary); } .story-list li span { font-size: 1.2rem; } .story-text { color: var(--text-secondary); margin-bottom: 24px; } .chips { display: flex; flex-wrap: wrap; gap: 10px; } .chip { background: rgba(3, 169, 244, 0.15); border: 1px solid var(--border-color); padding: 6px 14px; border-radius: 6px; font-size: 0.8rem; color: var(--ha-blue-light); } /* Changelog */ .changelog-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; } .changelog-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--card-radius); padding: 24px; } .version-badge { display: inline-block; background: linear-gradient(135deg, var(--ha-blue), var(--ha-cyan)); color: white; padding: 4px 12px; border-radius: 6px; font-size: 0.85rem; font-weight: 600; margin-bottom: 8px; } .changelog-card .date { color: var(--text-muted); font-size: 0.85rem; display: block; margin-bottom: 12px; } .changelog-card ul { list-style: none; padding-left: 0; } .changelog-card li { color: var(--text-secondary); font-size: 0.9rem; padding: 4px 0; padding-left: 16px; position: relative; } .changelog-card li::before { content: '→'; position: absolute; left: 0; color: var(--accent); } .changelog-more { margin-top: 32px; text-align: center; } .changelog-more summary { cursor: pointer; color: var(--accent); font-weight: 500; } .changelog-more .older { margin-top: 24px; } /* Links */ .links-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 24px; } .link-card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: var(--card-radius); padding: 32px; text-align: center; transition: all 0.3s; } .link-card:hover { transform: translateY(-4px); border-color: var(--accent); box-shadow: 0 12px 40px rgba(3, 169, 244, 0.15); } .link-card .icon { font-size: 2.5rem; display: block; margin-bottom: 16px; } .link-card h3 { font-size: 1.1rem; margin-bottom: 8px; color: var(--text-primary); } .link-card p { color: var(--text-secondary); font-size: 0.9rem; } /* Footer */ .footer { text-align: center; padding: 40px 24px; border-top: 1px solid var(--border-color); color: var(--text-secondary); font-size: 0.9rem; } /* Responsive */ @media (max-width: 900px) { .hero-grid, .story-grid { grid-template-columns: 1fr; gap: 40px; } .topline { flex-direction: column; gap: 16px; } .hero-visual { order: -1; } } @media (max-width: 600px) { .hero-actions { flex-direction: column; } .btn { width: 100%; text-align: center; } }