@import url("https://fonts.googleapis.com/css2?family=Recursive:wght@300;400;600;700&family=Unbounded:wght@400;600;800&display=swap"); :root { color-scheme: light dark; --ink: #0b1a2b; --ink-soft: #6b7280; --surface: #f7f7f9; --surface-strong: #ffffff; --surface-alt: #f6f8fa; --accent: #1b8b75; --accent-bright: #14b8a6; --accent-weak: rgba(27, 139, 117, 0.12); --accent-shadow: rgba(27, 139, 117, 0.3); --neutral-weak: rgba(11, 26, 43, 0.08); --warning-weak: rgba(245, 158, 11, 0.25); --border: #d8dee5; --shadow: rgba(11, 26, 43, 0.12); --surface-glass: rgba(255, 255, 255, 0.8); --brand-surface: #0b1a2b; --brand-text: #f8fafc; --brand-muted: #9fb3c8; --tangerine: #1b8b75; --teal: #14b8a6; --berry: #1f334d; --sun: #f59e0b; --sky: #ecfdf9; --map-glow-a: rgba(27, 139, 117, 0.35); --map-glow-b: rgba(245, 158, 11, 0.35); --pattern-opacity: 0.22; } @media (prefers-color-scheme: dark) { :root { color-scheme: dark; --ink: #f8fafc; --ink-soft: #a7b4c5; --surface: #0b0f14; --surface-strong: #111922; --surface-alt: #0f1620; --accent: #1fbf98; --accent-bright: #2dd4bf; --accent-weak: rgba(45, 212, 191, 0.18); --accent-shadow: rgba(45, 212, 191, 0.2); --neutral-weak: rgba(226, 232, 240, 0.08); --warning-weak: rgba(245, 158, 11, 0.3); --border: #1f2a37; --shadow: rgba(0, 0, 0, 0.35); --surface-glass: rgba(17, 25, 34, 0.8); --brand-surface: #101a27; --brand-text: #f8fafc; --brand-muted: #9fb3c8; --tangerine: #1fbf98; --teal: #2dd4bf; --berry: #1b2b3f; --sun: #f59e0b; --sky: #0f2a24; --map-glow-a: rgba(45, 212, 191, 0.35); --map-glow-b: rgba(245, 158, 11, 0.35); --pattern-opacity: 0.08; } } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; background: radial-gradient( circle at top left, var(--surface-strong) 0%, var(--surface) 45%, var(--surface-alt) 100% ); color: var(--ink); font-family: "Recursive", "Segoe UI", sans-serif; position: relative; overflow-x: hidden; } body::before { content: ""; position: fixed; inset: 0; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140' viewBox='0 0 140 140'%3E%3Crect width='140' height='140' fill='none'/%3E%3Ccircle cx='4' cy='4' r='1.2' fill='%23000000' opacity='0.08'/%3E%3Ccircle cx='74' cy='60' r='1.3' fill='%23000000' opacity='0.08'/%3E%3Ccircle cx='120' cy='96' r='1' fill='%23000000' opacity='0.06'/%3E%3C/svg%3E"); opacity: var(--pattern-opacity); mix-blend-mode: multiply; pointer-events: none; z-index: 0; } .page-home #root { position: relative; z-index: 1; } .home { display: flex; flex-direction: column; gap: 3rem; padding: 3.5rem 1.5rem 4rem; max-width: 1100px; margin: 0 auto; } .hero { display: grid; gap: 1.8rem; padding: 2.5rem; border-radius: 28px; background: linear-gradient( 130deg, var(--surface-strong) 10%, var(--surface) 45%, var(--surface-alt) 100% ); box-shadow: 0 20px 50px var(--shadow); position: relative; overflow: hidden; } .hero::after { content: ""; position: absolute; right: -30px; top: -40px; width: 240px; height: 240px; background: conic-gradient(from 120deg, var(--tangerine), var(--berry), var(--sun)); border-radius: 50%; opacity: 0.2; } .hero__badge { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.4rem 0.9rem; border-radius: 999px; font-weight: 600; font-size: 0.85rem; letter-spacing: 0.08em; text-transform: uppercase; background: var(--surface-strong); box-shadow: 0 10px 20px var(--shadow); width: fit-content; } .hero h1 { font-family: "Unbounded", "Trebuchet MS", sans-serif; font-size: clamp(2.4rem, 3vw + 1rem, 4rem); margin: 0; letter-spacing: -0.02em; } .hero p { margin: 0; font-size: 1.1rem; max-width: 36rem; line-height: 1.6; } .hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; } .btn { border: none; border-radius: 999px; padding: 0.9rem 1.7rem; font-weight: 600; font-size: 0.95rem; text-decoration: none; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; } .btn.primary { background: var(--accent); color: #fff; box-shadow: 0 16px 30px var(--accent-shadow); } .btn.ghost { background: var(--neutral-weak); color: var(--ink); } .btn:hover { transform: translateY(-2px); } .grid { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); } .card { background: var(--surface-strong); border-radius: 20px; padding: 1.6rem; box-shadow: 0 16px 40px var(--shadow); display: grid; gap: 0.6rem; } .card h3 { font-family: "Unbounded", sans-serif; margin: 0; font-size: 1.1rem; } .card p { margin: 0; color: var(--ink-soft); line-height: 1.5; } .section-title { font-family: "Unbounded", sans-serif; font-size: 1.5rem; margin: 0; } .map { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); align-items: center; } .map__panel { background: var(--brand-surface); color: var(--brand-text); border-radius: 24px; padding: 2rem; position: relative; overflow: hidden; min-height: 220px; } .map__panel::before { content: ""; position: absolute; inset: 0; background: linear-gradient(120deg, var(--map-glow-a), var(--map-glow-b)); opacity: 0.7; } .map__panel-content { position: relative; display: grid; gap: 0.8rem; } .map__panel h2 { margin: 0; font-family: "Unbounded", sans-serif; } .map__panel span { font-size: 0.95rem; color: var(--brand-muted); } .map__legend { display: grid; gap: 0.8rem; } .legend-item { display: flex; align-items: center; gap: 0.7rem; font-weight: 600; } .legend-dot { width: 12px; height: 12px; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 4px var(--accent-weak); } .legend-dot.orange { background: var(--tangerine); box-shadow: 0 0 0 4px var(--accent-weak); } .legend-dot.sun { background: var(--sun); box-shadow: 0 0 0 4px var(--warning-weak); } .footer { display: flex; flex-wrap: wrap; gap: 1.5rem; align-items: center; justify-content: space-between; padding: 2rem; border-radius: 24px; background: var(--surface-glass); box-shadow: 0 10px 25px var(--shadow); } .footer strong { font-family: "Unbounded", sans-serif; } @media (min-width: 960px) { .home { padding: 5rem 2.5rem 6rem; } .hero { grid-template-columns: 1.2fr 0.8fr; align-items: center; } } .reveal { opacity: 0; transform: translateY(24px); animation: rise 0.8s ease forwards; animation-delay: var(--delay, 0s); } @keyframes rise { to { opacity: 1; transform: translateY(0); } }