/* Public landing page — scoped under .ema-landing so nothing leaks into the rest of either app. Neither app's global CSS (portal's .ema-page-enter / .ema-hover-lift, portal's --ema-surface-*) is available here, so this file is self-contained. */ /* `scroll-behavior` only affects the element that actually scrolls — for a full page that's `html`, not this div, so it has to live here. Scoped with :has() so it only applies while the landing page is mounted. */ html:has(.ema-landing) { scroll-behavior: smooth; } .ema-landing section[id] { /* Offsets anchor jumps by the sticky header height so the heading isn't hidden underneath it. Keep in sync with the header's fixed height. */ scroll-margin-top: 72px; } .ema-landing .ema-landing-fade { animation: ema-landing-fade-up 360ms cubic-bezier(0.22, 1, 0.36, 1) both; } @keyframes ema-landing-fade-up { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .ema-landing .ema-landing-hover { transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease; } .ema-landing .ema-landing-hover:hover { transform: translateY(-3px); } /* Amharic runs 20-40% longer than English and falls back to a different font (Inter has no Ethiopic glyphs), so it needs more vertical room. */ .ema-landing:lang(am) { line-height: 1.7; } @media (prefers-reduced-motion: reduce) { html:has(.ema-landing) { scroll-behavior: auto; } .ema-landing .ema-landing-fade, .ema-landing .ema-landing-hover { animation: none; transition: none; } }