Files
2026-07-30 18:38:39 +08:00

466 lines
11 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* AIFO main navigation (V2 design).
* HTML: components/nav.html — loaded by js/layout.js
* Replace placeholder icons: swap img[src] in .aifo-nav__icon, or add data-nav-icon assets later.
*/
#nav.aifo-nav {
--aifo-nav-text: #f9f9f9;
--aifo-nav-muted: rgba(255, 255, 255, 0.6);
--aifo-nav-divider: rgba(255, 255, 255, 0.2);
/* Figma Partnership dropdown panel */
--aifo-nav-dropdown-bg: #231f20;
--aifo-nav-dropdown-border: rgba(255, 255, 255, 0.08);
--aifo-nav-drop-hover: linear-gradient(
90deg,
rgba(255, 255, 255, 0.04) 0%,
rgba(255, 255, 255, 0.02) 52%,
rgba(255, 255, 255, 0) 100%
);
--aifo-nav-icon-box-border: rgba(255, 255, 255, 0.16);
--aifo-nav-icon-box-border-hover: #353132;
/* Desktop: gap from logo to first menu item; tune per locale via body.lang-* */
--aifo-nav-menu-offset: 1.5rem;
--aifo-nav-menu-item-gap: 0.25rem;
--aifo-nav-menu-link-padding-x: 1rem;
}
/* Desktop: lock nav bar to layout offset used by .main / hero (6.100625rem) */
@media (min-width: 768px) {
#nav.aifo-nav {
height: 6.100625rem;
min-height: 6.100625rem;
box-sizing: border-box;
padding-top: 0 !important;
padding-bottom: 0 !important;
align-items: center;
}
#nav.aifo-nav > .container {
height: 100%;
align-items: center;
}
}
/* Desktop: logo | centered menu | right actions */
@media (min-width: 992px) {
#nav.aifo-nav .aifo-nav__collapse {
display: flex !important;
flex: 1;
align-items: center;
justify-content: space-between;
flex-basis: auto;
}
#nav.aifo-nav .aifo-nav__menu {
flex: 0 1 auto;
justify-content: flex-start;
margin-left: var(--aifo-nav-menu-offset);
gap: var(--aifo-nav-menu-item-gap);
}
#nav.aifo-nav .aifo-nav__actions {
flex-shrink: 0;
gap: 1rem;
margin-left: 1rem;
}
}
#nav.aifo-nav .aifo-nav__menu .nav-link {
color: var(--aifo-nav-text);
font-size: 1rem;
font-weight: 600;
padding: 0.5rem var(--aifo-nav-menu-link-padding-x);
gap: 0.35rem;
}
@media (min-width: 992px) {
/* Example: tighter menu when labels are longer */
/* body.lang-fr #nav.aifo-nav,
body.lang-pt #nav.aifo-nav,
body.lang-es #nav.aifo-nav {
--aifo-nav-menu-offset: 1.25rem;
--aifo-nav-menu-link-padding-x: 0.75rem;
--aifo-nav-menu-item-gap: 0.125rem;
} */
}
#nav.aifo-nav .aifo-nav__menu .nav-link .icon-a-arrow-down {
font-size: 0.75rem;
opacity: 0.85;
transition: transform 0.2s ease;
}
#nav.aifo-nav .aifo-nav__menu .nav-item.show .nav-link .icon-a-arrow-down,
#nav.aifo-nav .aifo-nav__menu .nav-item:hover .nav-link .icon-a-arrow-down {
transform: rotate(180deg);
}
/* Dropdown panel — Figma: FundingPrograms / Academy / Platform / Company */
#nav.aifo-nav .aifo-nav__dropdown {
background: var(--aifo-nav-dropdown-bg);
border: 1px solid var(--aifo-nav-dropdown-border);
border-radius: 10px;
padding: 16px;
min-width: 230px;
margin-top: 12px;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
flex-direction: column;
gap: 16px;
}
#nav.aifo-nav .aifo-nav__dropdown.aifo-nav__dropdown--lang {
min-width: 8rem;
width: max-content;
gap: 0;
padding: 8px;
}
/* Desktop: bridge gap so submenu stays open when moving cursor down */
@media (min-width: 992px) {
#nav.aifo-nav .nav-item.dropdown {
position: relative;
}
#nav.aifo-nav .aifo-nav__dropdown {
margin-top: 12px;
transform: translateY(0) !important;
pointer-events: none;
}
#nav.aifo-nav .dropdown:hover > .aifo-nav__dropdown,
#nav.aifo-nav .dropdown:focus-within > .aifo-nav__dropdown {
pointer-events: auto;
display: flex;
}
#nav.aifo-nav .aifo-nav__dropdown::before {
content: "";
position: absolute;
top: -12px;
left: 0;
right: 0;
height: 12px;
background: transparent;
}
}
#nav.aifo-nav .aifo-nav__dropdown .dropdown-item {
padding: 0;
margin: 0 !important;
border-radius: 8px;
overflow: hidden;
font-size: 1rem;
}
#nav.aifo-nav .aifo-nav__dropdown .dropdown-item + .dropdown-item {
margin-top: 0 !important;
}
/* Figma hover: white row tint + blurred orange ellipse (84×13) behind icon */
#nav.aifo-nav .aifo-nav__drop-item {
position: relative;
display: flex;
align-items: center;
gap: 10px;
padding: 8px;
color: #fff;
font-family: Inter, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
font-size: 1rem;
font-weight: 500;
line-height: 20px;
letter-spacing: -0.16px;
border-radius: 8px;
overflow: hidden;
isolation: isolate;
background: transparent;
transition: background 0.22s ease;
}
/* Ellipse 13 — left 23px, top -6px inside row; orange #F9A215 @ 40% + heavy blur */
#nav.aifo-nav .aifo-nav__drop-item::before {
content: "";
position: absolute;
left: 31px;
top: 2px;
z-index: 0;
width: 84px;
height: 13px;
border-radius: 999px;
background: #f9a215;
opacity: 0;
pointer-events: none;
transform: translateX(-12px) scale(2.8, 5.5);
filter: blur(20px);
transition: opacity 0.22s ease;
}
#nav.aifo-nav .aifo-nav__drop-item::after {
content: "";
position: absolute;
inset: 0;
z-index: 0;
border-radius: inherit;
opacity: 0;
pointer-events: none;
background:
radial-gradient(
ellipse 95% 120% at 8% 50%,
rgba(249, 135, 21, 0.1) 0%,
rgba(249, 135, 21, 0.03) 42%,
transparent 68%
),
var(--aifo-nav-drop-hover);
transition: opacity 0.22s ease;
}
#nav.aifo-nav .aifo-nav__drop-item > * {
position: relative;
z-index: 1;
}
#nav.aifo-nav .aifo-nav__drop-item:hover,
#nav.aifo-nav .aifo-nav__drop-item:focus-visible,
#nav.aifo-nav .dropdown-item:hover .aifo-nav__drop-item,
#nav.aifo-nav .dropdown-item.active .aifo-nav__drop-item,
#nav.aifo-nav .dropdown-item:focus .aifo-nav__drop-item {
color: #fff;
}
#nav.aifo-nav .aifo-nav__drop-item:hover::before,
#nav.aifo-nav .aifo-nav__drop-item:focus-visible::before,
#nav.aifo-nav .dropdown-item:hover .aifo-nav__drop-item::before,
#nav.aifo-nav .dropdown-item.active .aifo-nav__drop-item::before,
#nav.aifo-nav .dropdown-item:focus .aifo-nav__drop-item::before {
opacity: 0.4;
}
#nav.aifo-nav .aifo-nav__drop-item:hover::after,
#nav.aifo-nav .aifo-nav__drop-item:focus-visible::after,
#nav.aifo-nav .dropdown-item:hover .aifo-nav__drop-item::after,
#nav.aifo-nav .dropdown-item.active .aifo-nav__drop-item::after,
#nav.aifo-nav .dropdown-item:focus .aifo-nav__drop-item::after {
opacity: 1;
}
#nav.aifo-nav .aifo-nav__drop-item:hover .aifo-nav__icon-box,
#nav.aifo-nav .aifo-nav__drop-item:focus-visible .aifo-nav__icon-box,
#nav.aifo-nav .dropdown-item:hover .aifo-nav__drop-item .aifo-nav__icon-box,
#nav.aifo-nav .dropdown-item.active .aifo-nav__drop-item .aifo-nav__icon-box,
#nav.aifo-nav .dropdown-item:focus .aifo-nav__drop-item .aifo-nav__icon-box {
border-color: var(--aifo-nav-icon-box-border-hover);
}
/* Figma icon container: 38×38, radius 9.5, border 1.188px */
#nav.aifo-nav .aifo-nav__icon-box {
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
width: 38px;
height: 38px;
border-radius: 9.5px;
background: #231f20;
border: 1.188px solid var(--aifo-nav-icon-box-border);
transition: border-color 0.2s ease;
}
#nav.aifo-nav .aifo-nav__icon-box .iconfont {
font-size: 24px;
line-height: 1;
color: #f98715;
}
#nav.aifo-nav .aifo-nav__icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 24px;
height: 24px;
}
#nav.aifo-nav .aifo-nav__icon img {
display: block;
width: 24px;
height: 24px;
object-fit: contain;
}
/* Lang submenu — match online switch-lang (compact, flag + code) */
#nav.aifo-nav .aifo-nav__dropdown--lang .dropdown-item {
padding: 1px 0;
margin: 0 !important;
}
#nav.aifo-nav .aifo-nav__lang-item {
display: flex;
align-items: center;
gap: 6px;
padding: 5px 9px;
border-radius: 6px;
font-size: 1rem;
font-weight: 300;
color: #fff;
transition: background 0.2s ease;
}
#nav.aifo-nav .aifo-nav__dropdown--lang .dropdown-item:hover .aifo-nav__lang-item {
background: rgba(255, 255, 255, 0.08);
}
@media (min-width: 992px) {
#nav.aifo-nav .aifo-nav__dropdown--lang .aifo-nav__lang-item {
padding-top: 10px;
padding-bottom: 10px;
}
}
/* Right actions */
#nav.aifo-nav .aifo-nav__actions {
display: flex;
align-items: center;
}
#nav.aifo-nav .aifo-nav__lang .nav-link {
display: inline-flex;
align-items: center;
gap: 0.375rem;
color: var(--aifo-nav-text);
font-size: 1rem;
font-weight: 300;
padding: 0.5rem 0.25rem;
}
#nav.aifo-nav .aifo-nav__actions .fi {
display: inline-block;
width: 18px;
height: 18px;
line-height: 18px;
margin-right: 0;
border-radius: 50%;
overflow: hidden;
flex-shrink: 0;
vertical-align: middle;
background-size: cover;
background-position: center;
}
#nav.aifo-nav .dropdown-menu .dropdown-item:hover {
background-color: transparent !important;
}
@media (min-width: 992px) {
#nav.aifo-nav .aifo-nav__lang > .aifo-nav__dropdown {
left: 0;
right: auto;
transform: translateY(0) !important;
}
}
#nav.aifo-nav .aifo-nav__divider {
display: none;
width: 1px;
height: 1rem;
background: var(--aifo-nav-divider);
flex-shrink: 0;
}
@media (min-width: 992px) {
#nav.aifo-nav .aifo-nav__divider {
display: block;
}
}
#nav.aifo-nav .aifo-nav__login {
color: var(--aifo-nav-text);
font-size: 1rem;
text-decoration: none;
white-space: nowrap;
padding: 0.5rem 0;
transition: background-color 0.2s ease, color 0.2s ease;
}
@media (min-width: 992px) {
#nav.aifo-nav .aifo-nav__login {
padding: 0.5rem 1rem;
border-radius: 6px;
}
#nav.aifo-nav .aifo-nav__login:hover,
#nav.aifo-nav .aifo-nav__login:focus {
color: var(--aifo-nav-text);
background-color: #353132;
text-decoration: none;
}
}
/* Nav CTA — 42px height to match bar proportions */
#nav.aifo-nav .aifo-nav__cta {
padding: 0 1.25rem;
min-height: 42px;
height: 42px;
font-size: 1rem;
font-weight: 500;
border-radius: 8px;
white-space: nowrap;
}
/* Mobile offcanvas */
@media (max-width: 991.98px) {
#nav.aifo-nav .aifo-nav__menu .nav-link {
padding: 0.75rem 0;
}
#nav.aifo-nav .aifo-nav__actions {
flex-direction: column;
align-items: stretch;
width: 100%;
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid var(--aifo-nav-divider);
gap: 0.75rem;
}
#nav.aifo-nav .aifo-nav__divider {
display: none !important;
}
#nav.aifo-nav .aifo-nav__cta {
width: 100%;
justify-content: center;
}
#nav.aifo-nav .aifo-nav__login.d-lg-none {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
min-height: 42px;
height: 42px;
padding: 0 1.25rem;
box-sizing: border-box;
border: 1px solid #666;
border-radius: 8px;
}
#nav.aifo-nav .aifo-nav__login:hover,
#nav.aifo-nav .aifo-nav__login:focus {
color: #f98715;
text-decoration: none;
}
#nav.aifo-nav .aifo-nav__dropdown {
position: static !important;
float: none;
width: 100%;
margin-top: 0.25rem;
box-shadow: none;
border: none;
background: rgba(35, 31, 32, 0.95);
gap: 8px;
padding: 12px;
min-width: 0;
}
}