/* ============================================================ ALWISP – Mesh Network Solutions Brand palette extracted from logo: --navy: #0d1b3e (darkest bg) --blue: #1565c0 (primary mid) --teal: #00bcd4 (accent highlight) --orange: #f57c00 (mesh node accent) --white: #ffffff ============================================================ */ /* ── RESET & BASE ──────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { /* Brand */ --navy: #0d1b3e; --navy-mid: #132145; --blue: #1565c0; --blue-light:#1e88e5; --teal: #00bcd4; --teal-dark: #00acc1; --orange: #f57c00; --orange-lt: #ffb74d; /* Neutrals */ --white: #ffffff; --off-white: #f0f4f8; --gray-100: #e8edf3; --gray-300: #b0bec5; --gray-500: #607d8b; --gray-700: #37474f; --gray-900: #1a2332; /* Gradients */ --grad-hero: linear-gradient(135deg, #0d1b3e 0%, #1565c0 60%, #00bcd4 100%); --grad-text: linear-gradient(90deg, #f57c00, #00bcd4); --grad-cta: linear-gradient(135deg, #1565c0, #00bcd4); /* Typography */ --font-body: 'Inter', system-ui, sans-serif; --font-heading: 'Space Grotesk', system-ui, sans-serif; /* Layout */ --max-width: 1200px; --section-py: 5rem; --nav-h: 70px; /* Radius */ --r-sm: 6px; --r-md: 12px; --r-lg: 20px; --r-full: 9999px; /* Shadow */ --shadow-sm: 0 1px 3px rgba(0,0,0,.12), 0 1px 2px rgba(0,0,0,.08); --shadow-md: 0 4px 16px rgba(0,0,0,.18); --shadow-lg: 0 10px 40px rgba(0,0,0,.28); /* Transition */ --t-fast: 0.18s ease; --t-base: 0.28s ease; } html { scroll-behavior: smooth; font-size: 16px; } body { font-family: var(--font-body); background: var(--navy); color: var(--white); line-height: 1.65; -webkit-font-smoothing: antialiased; } a { color: var(--teal); text-decoration: none; transition: color var(--t-fast); } a:hover { color: var(--orange-lt); } img { max-width: 100%; display: block; } ul { list-style: none; } /* ── UTILITIES ──────────────────────────────────────────────── */ .container { width: 100%; max-width: var(--max-width); margin-inline: auto; padding-inline: 1.5rem; } .gradient-text { background: var(--grad-text); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .accent { color: var(--teal); } .section { padding-block: var(--section-py); } .section--alt { background: var(--navy-mid); } .section__header { text-align: center; margin-bottom: 3rem; } .section__eyebrow { font-size: .8rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--teal); display: block; margin-bottom: .5rem; } .section__heading { font-family: var(--font-heading); font-size: clamp(1.75rem, 3.5vw, 2.75rem); font-weight: 700; line-height: 1.2; color: var(--white); } .section__sub { margin-top: .75rem; color: var(--gray-300); font-size: 1.05rem; max-width: 600px; margin-inline: auto; } .placeholder-block { background: rgba(255,255,255,.05); border: 1px dashed rgba(255,255,255,.15); border-radius: var(--r-md); padding: 3rem 2rem; text-align: center; color: var(--gray-300); font-size: .95rem; } /* ── BUTTONS ────────────────────────────────────────────────── */ .btn { display: inline-flex; align-items: center; gap: .5rem; padding: .75rem 1.75rem; border-radius: var(--r-full); font-family: var(--font-heading); font-size: .95rem; font-weight: 600; cursor: pointer; border: 2px solid transparent; transition: all var(--t-base); white-space: nowrap; } .btn--primary { background: var(--grad-cta); color: var(--white); box-shadow: 0 4px 20px rgba(0,188,212,.3); } .btn--primary:hover { color: var(--white); transform: translateY(-2px); box-shadow: 0 8px 28px rgba(0,188,212,.45); } .btn--ghost { background: transparent; border-color: rgba(255,255,255,.35); color: var(--white); } .btn--ghost:hover { border-color: var(--teal); color: var(--teal); background: rgba(0,188,212,.08); } /* ── NAV ────────────────────────────────────────────────────── */ .site-header { position: fixed; top: 0; left: 0; right: 0; z-index: 100; height: var(--nav-h); background: rgba(13,27,62,.85); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid rgba(255,255,255,.07); transition: background var(--t-base), box-shadow var(--t-base); } .site-header.scrolled { background: rgba(13,27,62,.97); box-shadow: var(--shadow-md); } .nav { display: flex; align-items: center; justify-content: space-between; height: 100%; } .nav__logo { display: flex; align-items: center; gap: .6rem; text-decoration: none; } .nav__logo-img { height: 38px; width: auto; } .nav__logo-text { font-family: var(--font-heading); font-size: 1.35rem; font-weight: 700; color: var(--white); letter-spacing: .04em; } .nav__menu { display: flex; align-items: center; gap: .25rem; } .nav__link { display: block; padding: .5rem .9rem; border-radius: var(--r-full); font-size: .9rem; font-weight: 500; color: rgba(255,255,255,.8); transition: color var(--t-fast), background var(--t-fast); } .nav__link:hover { color: var(--white); background: rgba(255,255,255,.08); } .nav__link--cta { background: var(--grad-cta); color: var(--white) !important; padding: .5rem 1.2rem; font-weight: 600; } .nav__link--cta:hover { transform: translateY(-1px); box-shadow: 0 4px 16px rgba(0,188,212,.4); background: var(--grad-cta); } /* Hamburger */ .nav__toggle { display: none; flex-direction: column; gap: 5px; background: none; border: none; cursor: pointer; padding: .5rem; } .nav__toggle-bar { display: block; width: 24px; height: 2px; background: var(--white); border-radius: 2px; transition: transform var(--t-base), opacity var(--t-base); } /* ── HERO ───────────────────────────────────────────────────── */ .hero { position: relative; min-height: 100vh; display: flex; align-items: center; overflow: hidden; padding-top: var(--nav-h); background: var(--grad-hero); } .hero__mesh-bg { position: absolute; inset: 0; background-image: radial-gradient(circle at 20% 50%, rgba(0,188,212,.12) 0%, transparent 50%), radial-gradient(circle at 80% 20%, rgba(21,101,192,.18) 0%, transparent 45%), radial-gradient(circle at 60% 80%, rgba(245,124,0,.07) 0%, transparent 40%); /* Mesh dot pattern */ background-image: radial-gradient(circle at 20% 50%, rgba(0,188,212,.12) 0%, transparent 50%), radial-gradient(circle at 80% 20%, rgba(21,101,192,.18) 0%, transparent 45%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Ccircle cx='30' cy='30' r='1' fill='rgba(255,255,255,0.06)'/%3E%3C/svg%3E"); background-repeat: no-repeat, no-repeat, repeat; animation: meshPulse 8s ease-in-out infinite alternate; } @keyframes meshPulse { from { opacity: .7; } to { opacity: 1; } } .hero__content { position: relative; z-index: 1; max-width: 680px; padding: 3rem 3.5rem; background: rgba(8, 14, 38, 0.72); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,.1); border-radius: var(--r-lg); margin-block: 4rem; } .hero__eyebrow { font-size: .8rem; font-weight: 600; letter-spacing: .15em; text-transform: uppercase; color: var(--teal); margin-bottom: 1rem; } .hero__heading { font-family: var(--font-heading); font-size: clamp(2.4rem, 6vw, 4rem); font-weight: 700; line-height: 1.1; margin-bottom: 1.25rem; } .hero__sub { font-size: clamp(1rem, 2vw, 1.2rem); color: rgba(255,255,255,.78); max-width: 560px; margin-bottom: 2rem; } .hero__actions { display: flex; flex-wrap: wrap; gap: 1rem; } .hero__scroll-hint { position: absolute; bottom: 2rem; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: .4rem; } .hero__scroll-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--teal); animation: scrollBounce 1.8s ease-in-out infinite; opacity: .6; } @keyframes scrollBounce { 0%, 100% { transform: translateY(0); opacity: .6; } 50% { transform: translateY(8px); opacity: 1; } } /* ── STATS BAR ──────────────────────────────────────────────── */ .stats-bar { background: rgba(255,255,255,.04); border-top: 1px solid rgba(255,255,255,.07); border-bottom: 1px solid rgba(255,255,255,.07); padding-block: 2.5rem; } .stats-bar__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; text-align: center; } .stat__value { font-family: var(--font-heading); font-size: 2.5rem; font-weight: 700; color: var(--teal); } .stat__unit { font-family: var(--font-heading); font-size: 1.2rem; font-weight: 600; color: var(--teal); } .stat__label { display: block; font-size: .82rem; color: var(--gray-300); text-transform: uppercase; letter-spacing: .08em; margin-top: .25rem; } /* ── CARDS ──────────────────────────────────────────────────── */ .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; } .card { background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08); border-radius: var(--r-lg); padding: 2rem 1.75rem; transition: transform var(--t-base), box-shadow var(--t-base), border-color var(--t-base); } .card--hover:hover { transform: translateY(-5px); box-shadow: 0 16px 40px rgba(0,0,0,.35); border-color: rgba(0,188,212,.3); } .card__icon { width: 48px; height: 48px; margin-bottom: 1.25rem; color: var(--teal); } .card__icon svg { width: 100%; height: 100%; } .card__title { font-family: var(--font-heading); font-size: 1.1rem; font-weight: 600; margin-bottom: .6rem; } .card__body { color: var(--gray-300); font-size: .93rem; line-height: 1.6; margin-bottom: 1.25rem; } .card__link { font-weight: 600; font-size: .88rem; color: var(--teal); letter-spacing: .03em; } .card__link:hover { color: var(--orange-lt); } /* ── WHY ALWISP ─────────────────────────────────────────────── */ .why__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; } .why__text .section__heading { text-align: left; } .why__text p { color: var(--gray-300); margin-block: 1rem 1.5rem; max-width: 480px; } .why__list { display: flex; flex-direction: column; gap: .6rem; } .why__list li { display: flex; align-items: center; gap: .75rem; font-size: .95rem; color: rgba(255,255,255,.85); } .why__check { color: var(--teal); font-weight: 700; font-size: 1rem; flex-shrink: 0; } /* Mesh SVG diagram */ .why__visual { display: flex; justify-content: center; } .mesh-diagram { width: 100%; max-width: 380px; } .mesh-svg { width: 100%; height: auto; } .mesh-node { filter: drop-shadow(0 0 6px currentColor); } .mesh-node--tower { filter: drop-shadow(0 0 10px rgba(245,124,0,.8)); animation: nodePulse 2.5s ease-in-out infinite; } @keyframes nodePulse { 0%, 100% { r: 12; opacity: .9; } 50% { r: 14; opacity: 1; } } /* ── CTA BAND ───────────────────────────────────────────────── */ .cta-band { background: linear-gradient(135deg, rgba(21,101,192,.25), rgba(0,188,212,.15)); border-top: 1px solid rgba(0,188,212,.2); border-bottom: 1px solid rgba(0,188,212,.2); } .cta-band__content { text-align: center; } .cta-band__heading { font-family: var(--font-heading); font-size: clamp(1.5rem, 3vw, 2.2rem); font-weight: 700; margin-bottom: .6rem; } .cta-band__sub { color: var(--gray-300); margin-bottom: 1.75rem; } .cta-band__form { display: flex; gap: .75rem; justify-content: center; flex-wrap: wrap; max-width: 560px; margin-inline: auto; } .cta-band__input { flex: 1; min-width: 240px; padding: .75rem 1.25rem; border-radius: var(--r-full); border: 1px solid rgba(255,255,255,.2); background: rgba(255,255,255,.07); color: var(--white); font-size: .95rem; outline: none; transition: border-color var(--t-fast), background var(--t-fast); } .cta-band__input::placeholder { color: var(--gray-300); } .cta-band__input:focus { border-color: var(--teal); background: rgba(255,255,255,.12); } /* ── PAGE HERO ──────────────────────────────────────────────── */ .page-hero { padding-top: calc(var(--nav-h) + 3rem); padding-bottom: 3rem; background: linear-gradient(135deg, #0d1b3e 0%, #132145 100%); border-bottom: 1px solid rgba(255,255,255,.06); text-align: center; } /* ── CONTACT ────────────────────────────────────────────────── */ .contact__grid { display: grid; grid-template-columns: 280px 1fr; gap: 4rem; align-items: start; } .contact__heading { font-family: var(--font-heading); font-size: 1.4rem; font-weight: 700; margin-bottom: 1.25rem; } .contact__details { display: flex; flex-direction: column; gap: 1rem; color: var(--gray-300); font-size: .95rem; line-height: 1.7; } .contact__details a { color: var(--teal); } /* ── FORM ───────────────────────────────────────────────────── */ .form { display: flex; flex-direction: column; gap: 1.25rem; } .form__row { display: flex; gap: 1rem; } .form__row--2 > * { flex: 1; } .form__group { display: flex; flex-direction: column; gap: .4rem; } .form__label { font-size: .85rem; font-weight: 500; color: var(--gray-300); } .form__label span { color: var(--teal); } .form__input { padding: .7rem 1rem; border-radius: var(--r-sm); border: 1px solid rgba(255,255,255,.15); background: rgba(255,255,255,.06); color: var(--white); font-size: .95rem; font-family: var(--font-body); outline: none; transition: border-color var(--t-fast); } .form__input:focus { border-color: var(--teal); background: rgba(255,255,255,.1); } .form__textarea { resize: vertical; min-height: 130px; } select.form__input option { background: var(--navy); } /* ── ALERTS ─────────────────────────────────────────────────── */ .alert { padding: 1rem 1.25rem; border-radius: var(--r-sm); font-size: .93rem; margin-bottom: 1.25rem; } .alert--success { background: rgba(0,188,212,.15); border: 1px solid rgba(0,188,212,.4); color: #b2ebf2; } .alert--error { background: rgba(229,57,53,.15); border: 1px solid rgba(229,57,53,.4); color: #ffcdd2; } .alert ul { list-style: disc; padding-left: 1.25rem; } /* ── FOOTER ─────────────────────────────────────────────────── */ .site-footer { background: #080f1f; border-top: 1px solid rgba(255,255,255,.07); padding-top: 3.5rem; } .footer__grid { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1.2fr; gap: 2.5rem; padding-bottom: 3rem; } .footer__tagline { color: var(--gray-300); font-size: .9rem; line-height: 1.7; margin-top: .75rem; } .footer__heading { font-family: var(--font-heading); font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--teal); margin-bottom: 1rem; } .footer__links ul { display: flex; flex-direction: column; gap: .5rem; } .footer__links a { color: var(--gray-300); font-size: .9rem; } .footer__links a:hover { color: var(--white); } .footer__contact p { color: var(--gray-300); font-size: .9rem; margin-bottom: .5rem; } .footer__contact a { color: var(--gray-300); } .footer__contact a:hover { color: var(--teal); } .footer__social { display: flex; gap: .5rem; margin-top: 1rem; } .footer__social-link { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: var(--r-sm); background: rgba(255,255,255,.07); font-size: .72rem; font-weight: 700; color: var(--gray-300); transition: background var(--t-fast), color var(--t-fast); } .footer__social-link:hover { background: var(--teal); color: var(--white); } .footer__bottom { padding-block: 1.25rem; border-top: 1px solid rgba(255,255,255,.06); text-align: center; color: var(--gray-500); font-size: .82rem; } /* ── RESPONSIVE ─────────────────────────────────────────────── */ @media (max-width: 1024px) { .why__grid { grid-template-columns: 1fr; gap: 2.5rem; } .why__visual { display: none; } .footer__grid { grid-template-columns: 1fr 1fr; } } @media (max-width: 768px) { :root { --section-py: 3.5rem; } /* Mobile nav */ .nav__toggle { display: flex; } .nav__menu { position: fixed; top: var(--nav-h); left: 0; right: 0; background: rgba(13,27,62,.98); flex-direction: column; align-items: stretch; padding: 1rem 1.5rem 2rem; gap: .25rem; border-bottom: 1px solid rgba(255,255,255,.1); transform: translateY(-110%); opacity: 0; transition: transform var(--t-base), opacity var(--t-base); pointer-events: none; } .nav__menu.is-open { transform: translateY(0); opacity: 1; pointer-events: auto; } .nav__link { padding: .75rem 1rem; border-radius: var(--r-sm); } .nav__link--cta { text-align: center; margin-top: .5rem; } .stats-bar__grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem; } .contact__grid { grid-template-columns: 1fr; gap: 2rem; } .form__row--2 { flex-direction: column; } .footer__grid { grid-template-columns: 1fr; gap: 2rem; } } @media (max-width: 480px) { .hero__actions { flex-direction: column; } .hero__actions .btn { text-align: center; justify-content: center; } .stats-bar__grid { grid-template-columns: 1fr 1fr; } .cta-band__form { flex-direction: column; } .cta-band__input { min-width: 100%; } }