* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #e0e0e0; background: #0d1117; line-height: 1.6; overflow-x: hidden; }
a { color: #58a6ff; text-decoration: none; }
a:hover { text-decoration: underline; }

@keyframes fadeUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }
@keyframes slideLeft { from { opacity: 0; transform: translateX(-40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes slideRight { from { opacity: 0; transform: translateX(40px); } to { opacity: 1; transform: translateX(0); } }
@keyframes blink { 0%,100% { opacity: 1; } 50% { opacity: 0; } }

.reveal { opacity: 0; transition: all 0.6s ease; }
.reveal.visible { opacity: 1; }
.reveal.visible.up { animation: fadeUp 0.6s ease forwards; }
.reveal.visible.left { animation: slideLeft 0.6s ease forwards; }
.reveal.visible.right { animation: slideRight 0.6s ease forwards; }

.topnav { position: sticky; top: 0; z-index: 100; background: #161b22ee; backdrop-filter: blur(10px); border-bottom: 1px solid #30363d; padding: 10px 20px; display: flex; align-items: center; gap: 20px; font-size: 0.9em; }
.topnav .brand { color: #58a6ff; font-weight: 700; font-size: 1.05em; }
.topnav .brand span { color: #f0883e; }
.topnav a { color: #8b949e; transition: color 0.2s; }
.topnav a:hover, .topnav a.active { color: #e0e0e0; text-decoration: none; }

.hero { text-align: center; padding: 70px 20px 50px; background: linear-gradient(135deg, #0d1117 0%, #161b22 100%); position: relative; }
.hero::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, #30363d, transparent); }
.hero h1 { font-size: 2.6em; color: #58a6ff; margin-bottom: 10px; animation: fadeUp 0.8s ease; }
.hero h1 span { color: #f0883e; }
.hero p { font-size: 1.2em; color: #8b949e; max-width: 620px; margin: 0 auto; animation: fadeUp 1s ease; }
.hero .badge { display: inline-block; margin-top: 16px; padding: 5px 14px; border-radius: 20px; background: #21262d; border: 1px solid #30363d; color: #8b949e; font-size: 0.85em; animation: fadeUp 1.2s ease; }

.section { max-width: 920px; margin: 0 auto; padding: 50px 20px; }
.section h2 { font-size: 1.7em; color: #58a6ff; margin-bottom: 24px; text-align: center; }
.section p.desc { color: #8b949e; text-align: center; max-width: 600px; margin: -12px auto 28px; font-size: 0.95em; }

.terminal { background: #161b22; border: 1px solid #30363d; border-radius: 10px; overflow: hidden; margin: 24px 0; font-family: 'SF Mono','Fira Code','Cascadia Code',monospace; font-size: 0.82em; }
.terminal-bar { background: #21262d; padding: 8px 16px; display: flex; gap: 6px; align-items: center; }
.terminal-bar .title { color: #484f58; font-size: 0.8em; margin-left: 12px; }
.dot { width: 12px; height: 12px; border-radius: 50%; }
.dot.r { background: #f85149; } .dot.y { background: #d29922; } .dot.g { background: #3fb950; }
.terminal-body { padding: 14px 18px; line-height: 1.7; overflow-x: auto; transition: opacity 0.6s ease; }
.terminal-body.fade-out { opacity: 0; }
.terminal-body .prompt { color: #3fb950; } .terminal-body .cmd { color: #e0e0e0; }
.terminal-body .dim { color: #484f58; } .terminal-body .blue { color: #58a6ff; }
.terminal-body .yellow { color: #d29922; } .terminal-body .green { color: #3fb950; }
.terminal-body .orange { color: #f0883e; } .terminal-body .red { color: #f85149; }
/* Typing engine */
.tl { opacity: 0; transform: translateX(-8px); transition: opacity 0.18s ease, transform 0.18s ease; }
.tl.show { opacity: 1; transform: translateX(0); }
.tcur { display: inline-block; width: 8px; height: 15px; background: #3fb950; animation: blink 1s step-end infinite; vertical-align: text-bottom; margin-left: 1px; }

.cards { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.card { background: #161b22; border: 1px solid #30363d; border-radius: 10px; padding: 22px; transition: transform 0.3s, border-color 0.3s; }
.card:hover { transform: translateY(-3px); border-color: #58a6ff; }
.card .icon { font-size: 1.5em; margin-bottom: 8px; }
.card h3 { color: #c9d1d9; font-size: 1em; margin-bottom: 6px; }
.card p { color: #8b949e; font-size: 0.88em; }

.compare { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 30px; }
.compare-card { border-radius: 12px; padding: 24px; transition: transform 0.3s, box-shadow 0.3s; }
.compare-card:hover { transform: translateY(-4px); box-shadow: 0 8px 30px rgba(0,0,0,0.3); }
.compare-card.before { background: #1c1c1c; border: 1px solid #da3633; }
.compare-card.after { background: #0d2230; border: 1px solid #238636; }
.compare-card h3 { font-size: 1.05em; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.compare-card.before h3 { color: #f85149; } .compare-card.after h3 { color: #3fb950; }
.compare-card ul { list-style: none; }
.compare-card ul li { padding: 6px 0; border-bottom: 1px solid #21262d; font-size: 0.9em; opacity: 0; transform: translateY(8px); transition: opacity 0.35s ease, transform 0.35s ease; }
.compare-card ul li.typed { opacity: 1; transform: translateY(0); }
.compare-card ul li:last-child { border-bottom: none; }
.compare-card.before li::before { content: "✘ "; color: #f85149; }
.compare-card.after li::before { content: "✔ "; color: #3fb950; }

.tbl { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 0.88em; }
.tbl th, .tbl td { padding: 10px 14px; text-align: left; border-bottom: 1px solid #21262d; }
.tbl th { color: #58a6ff; font-weight: 600; background: #161b22; }
.tbl td { color: #c9d1d9; }
.tbl tr:hover td { background: #161b2288; }

.flow { display: flex; justify-content: center; align-items: center; gap: 10px; flex-wrap: wrap; margin: 20px 0; }
.flow-step { background: #21262d; border: 1px solid #30363d; border-radius: 8px; padding: 10px 16px; font-size: 0.85em; color: #c9d1d9; transition: transform 0.3s, background 0.3s; }
.flow-step:hover { transform: scale(1.05); background: #30363d; }
.flow-step.active { border-color: #58a6ff; background: #0d2230; }
.flow-arrow { color: #484f58; font-size: 1.2em; }

.tabs { display: flex; gap: 0; margin-bottom: -1px; position: relative; z-index: 1; align-items: center; }
.tab-label { color: #484f58; font-size: 0.72em; text-transform: uppercase; letter-spacing: 0.08em; padding: 0 8px; user-select: none; }
.tab-sep { width: 1px; height: 20px; background: #30363d; margin: 0 6px; }
.tab { padding: 10px 20px; background: #0d1117; border: 1px solid #30363d; border-bottom: none; border-radius: 8px 8px 0 0; color: #8b949e; cursor: pointer; font-size: 0.88em; transition: background 0.2s, color 0.2s; }
.tab:hover { color: #c9d1d9; }
.tab.active { background: #161b22; color: #58a6ff; border-color: #58a6ff; border-bottom: 1px solid #161b22; }
.tab-content { display: none; }
.tab-content.active { display: block; }

.highlight { background: #0d2230; border: 1px solid #1f6feb44; border-radius: 10px; padding: 20px; margin: 16px 0; }
.highlight h4 { color: #58a6ff; margin-bottom: 8px; }
.highlight p, .highlight li { color: #c9d1d9; font-size: 0.9em; }
.highlight ul { list-style: none; padding-left: 0; }
.highlight li::before { content: "→ "; color: #58a6ff; }

.nav-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-top: 20px; }
.nav-card { background: #161b22; border: 1px solid #30363d; border-radius: 10px; padding: 24px; text-align: center; transition: transform 0.3s, border-color 0.3s; display: block; }
.nav-card:hover { transform: translateY(-4px); border-color: #58a6ff; text-decoration: none; }
.nav-card .icon { font-size: 2em; margin-bottom: 8px; }
.nav-card h3 { color: #c9d1d9; font-size: 1em; margin-bottom: 4px; }
.nav-card p { color: #8b949e; font-size: 0.82em; }

.footer { text-align: center; padding: 36px 20px; color: #484f58; font-size: 0.85em; border-top: 1px solid #21262d; margin-top: 40px; }

@media (max-width: 700px) {
  .compare, .cards, .nav-cards { grid-template-columns: 1fr; }
  .hero h1 { font-size: 2em; }
  .flow { flex-direction: column; }
  .flow-arrow { transform: rotate(90deg); }
  .tabs { flex-wrap: wrap; }
}
