/* ============================================================ Corrosion — Marketing site styles Consumes the design-system tokens already loaded globally via frontend/src/style.css (tokens/fonts → colors → etc.). Class names match the design kit exactly. ============================================================ */ .wrap { max-width: 1140px; margin: 0 auto; padding: 0 32px; } section { position: relative; } .eyebrow { font-family: var(--font-mono); font-size: var(--text-xs); font-weight: 500; letter-spacing: var(--tracking-caps); text-transform: uppercase; color: var(--accent-text); } h2.title { font-family: var(--font-brand); font-weight: 700; font-size: var(--text-4xl); letter-spacing: 0.01em; text-align: center; margin: 0; line-height: 1.08; } .lead { text-align: center; color: var(--text-secondary); font-size: var(--text-lg); margin: 16px auto 0; max-width: 660px; line-height: 1.5; } .accent { color: var(--accent-text); } .mark { display: inline-block; color: var(--accent); } .mark svg { width: 100%; height: 100%; display: block; } /* ---- Buttons ---- */ .btn { display: inline-flex; align-items: center; gap: 8px; height: 46px; padding: 0 22px; border-radius: var(--radius-md); font-family: var(--font-sans); font-weight: 600; font-size: var(--text-base); cursor: pointer; border: 1px solid transparent; transition: var(--transition-colors), transform var(--dur-fast) var(--ease-standard); text-decoration: none; white-space: nowrap; } .btn:active { transform: translateY(1px); } .btn--primary { background: var(--accent); color: var(--accent-contrast); } .btn--primary:hover { background: var(--accent-hover); } .btn--ghost { background: var(--surface-raised-2); color: var(--text-primary); box-shadow: var(--ring-default); } .btn--ghost:hover { background: var(--surface-active); } .btn--sm { height: 36px; padding: 0 14px; font-size: var(--text-sm); } .btn--lg { height: 52px; padding: 0 28px; font-size: var(--text-md); } /* ---- Nav ---- */ .mkt-nav { position: sticky; top: 0; z-index: 50; height: var(--topbar-h); display: flex; align-items: center; background: color-mix(in srgb, var(--surface-canvas) 84%, transparent); backdrop-filter: blur(12px); border-bottom: 1px solid var(--border-subtle); } .mkt-nav__in { display: flex; align-items: center; gap: 24px; width: 100%; } .brand { display: flex; align-items: center; gap: 10px; text-decoration: none; } .brand .mark { width: 26px; height: 26px; } .brand b { font-family: var(--font-brand); font-weight: 800; font-size: 18px; letter-spacing: 0.01em; color: var(--text-primary); } .mkt-nav__links { display: flex; gap: 24px; margin-left: 14px; } .mkt-nav__links a { color: var(--text-secondary); font-size: var(--text-sm); font-weight: 500; transition: color var(--dur-fast); text-decoration: none; } .mkt-nav__links a:hover { color: var(--text-primary); } .mkt-nav__cta { margin-left: auto; display: flex; align-items: center; gap: 12px; } .mkt-nav__signin { color: var(--text-secondary); font-size: var(--text-sm); font-weight: 500; text-decoration: none; transition: color var(--dur-fast); } .mkt-nav__signin:hover { color: var(--text-primary); } /* ---- Hero ---- */ .hero { overflow: hidden; border-bottom: 1px solid var(--border-subtle); } .hero__atmo { position: absolute; inset: 0; z-index: 0; transition: background var(--dur-slower) var(--ease-standard); background: radial-gradient(120% 80% at 50% -10%, var(--atmo-haze), transparent 55%), radial-gradient(70% 50% at 85% 110%, color-mix(in srgb, var(--accent) 9%, transparent), transparent 60%), linear-gradient(180deg, var(--atmo-1), var(--surface-canvas) 72%); } .hero__grain { position: absolute; inset: 0; z-index: 0; opacity: .5; mix-blend-mode: overlay; background-image: radial-gradient(rgba(255,255,255,.05) 1px, transparent 1px); background-size: 3px 3px; } .hero__grid { position: absolute; inset: 0; z-index: 0; opacity: .32; -webkit-mask-image: radial-gradient(75% 60% at 50% 24%, #000, transparent 78%); mask-image: radial-gradient(75% 60% at 50% 24%, #000, transparent 78%); background-image: linear-gradient(var(--border-subtle) 1px, transparent 1px), linear-gradient(90deg, var(--border-subtle) 1px, transparent 1px); background-size: 46px 46px; } .hero__in { position: relative; z-index: 1; text-align: center; padding: 74px 0 88px; } .hero__mark { width: 72px; height: 72px; margin: 0 auto 22px; color: var(--accent); filter: drop-shadow(0 0 26px var(--accent-glow)); transition: color var(--dur-slow); } .hero h1 { font-family: var(--font-brand); font-weight: 800; font-size: var(--text-6xl); line-height: 1.04; letter-spacing: 0.005em; margin: 0; } .hero h1 .accent { display: block; } .hero__sub { color: var(--text-secondary); font-size: var(--text-lg); margin: 22px auto 0; max-width: 640px; line-height: 1.55; } .hero__cta { display: flex; gap: 14px; justify-content: center; margin-top: 30px; } .hero__games { display: flex; gap: 10px; justify-content: center; margin-top: 34px; flex-wrap: wrap; } .gpill { display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 16px; border-radius: var(--radius-pill); background: var(--surface-raised); box-shadow: var(--ring-default); color: var(--text-secondary); font-size: var(--text-sm); font-weight: 600; cursor: pointer; border: none; transition: var(--transition-colors); } .gpill[data-on="true"] { color: var(--accent-text); background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent-border); } .hero__foot { margin-top: 16px; font-family: var(--font-mono); font-size: var(--text-xs); letter-spacing: .04em; color: var(--text-muted); } .notpill { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 18px; height: 28px; padding: 0 13px; border-radius: var(--radius-pill); background: var(--surface-raised); box-shadow: var(--ring-default); font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-secondary); } .notpill b { color: var(--accent-text); } /* ---- Panel mockup ---- */ .mock { position: relative; z-index: 1; max-width: 1000px; margin: 54px auto 0; border-radius: var(--radius-xl); overflow: hidden; background: var(--surface-base); box-shadow: 0 50px 130px -34px rgba(0,0,0,.85), var(--ring-default); } .mock__bar { height: 40px; display: flex; align-items: center; gap: 14px; padding: 0 14px; background: var(--surface-raised); border-bottom: 1px solid var(--border-subtle); } .mock__dots { display: flex; gap: 7px; } .mock__dots span { width: 9px; height: 9px; border-radius: 50%; background: var(--surface-active); display: inline-block; } .mock__url { font-family: var(--font-mono); font-size: 11px; color: var(--text-tertiary); background: var(--surface-inset); padding: 5px 12px; border-radius: var(--radius-pill); } .mock__body { display: grid; grid-template-columns: 188px 1fr; min-height: 316px; text-align: left; } .mock__side { border-right: 1px solid var(--border-subtle); padding: 14px 12px; display: flex; flex-direction: column; gap: 7px; } .mock__brand { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; padding: 0 4px; } .mock__brand .mark { width: 18px; height: 18px; } .mock__brand b { font-family: var(--font-brand); font-weight: 800; font-size: 13px; } .mock__gs { display: flex; gap: 4px; padding: 4px; background: var(--surface-inset); border-radius: var(--radius-md); box-shadow: var(--ring-default); margin-bottom: 8px; } .mock__gs span { flex: 1; height: 24px; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; color: var(--text-muted); } .mock__gs .on { background: var(--surface-raised-2); box-shadow: var(--ring-default); color: var(--accent); } .mock__nav { display: flex; align-items: center; gap: 9px; height: 28px; padding: 0 9px; border-radius: var(--radius-sm); color: var(--text-tertiary); font-size: 12px; } .mock__nav.on { background: var(--accent-soft); color: var(--accent-text); } .mock__main { padding: 16px; display: flex; flex-direction: column; gap: 12px; } .mock__kpis { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; } .mock__kpi { background: var(--surface-raised); border-radius: var(--radius-md); box-shadow: var(--ring-default); padding: 10px 12px; } .mock__kpi .l { font-size: 10px; color: var(--text-tertiary); } .mock__kpi .v { font-family: var(--font-mono); font-weight: 600; font-size: 19px; color: var(--text-primary); margin-top: 3px; } .mock__kpi .v small { color: var(--text-muted); font-size: 12px; } .mock__row { display: flex; align-items: center; gap: 10px; background: var(--surface-raised); border-radius: var(--radius-md); box-shadow: var(--ring-default); padding: 9px 12px; position: relative; overflow: hidden; } .mock__row::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--accent); } .mock__row .g { width: 22px; height: 22px; flex: none; border-radius: 5px; display: flex; align-items: center; justify-content: center; color: var(--accent); background: var(--accent-soft); } .mock__row .nm { flex: 1; font-size: 12px; font-weight: 600; } .mock__row .nm small { display: block; font-family: var(--font-mono); font-weight: 400; font-size: 10px; color: var(--text-muted); } .mock__row .st { font-family: var(--font-mono); font-size: 10px; color: var(--status-online); display: inline-flex; align-items: center; gap: 5px; } .mock__row .st b { width: 6px; height: 6px; border-radius: 50%; background: var(--status-online); display: inline-block; } /* ---- Section spacing ---- */ .sec { padding: 88px 0; border-bottom: 1px solid var(--border-subtle); } .sec__head { text-align: center; margin-bottom: 48px; } .sec__head .eyebrow { display: block; margin-bottom: 12px; } /* ---- Problem cards ---- */ .pain { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; max-width: 1000px; margin: 0 auto; } .pain__item { display: flex; align-items: center; gap: 11px; padding: 16px; background: var(--surface-base); border-radius: var(--radius-lg); box-shadow: var(--ring-default); font-size: var(--text-sm); color: var(--text-primary); } .pain__x { width: 24px; height: 24px; flex: none; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; background: var(--status-offline-soft); color: var(--status-offline); } .closing { text-align: center; margin: 40px auto 0; max-width: 720px; font-size: var(--text-xl); font-weight: 600; line-height: 1.4; } /* ---- Steps ---- */ .steps { display: grid; grid-template-columns: repeat(3,1fr); gap: 16px; max-width: 900px; margin: 0 auto; } .step { padding: 28px 24px; text-align: center; background: var(--surface-base); border-radius: var(--radius-xl); box-shadow: var(--ring-default); } .step__n { width: 38px; height: 38px; margin: 0 auto 16px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-family: var(--font-mono); font-weight: 700; font-size: var(--text-lg); color: var(--accent-text); background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent-border); } .step b { font-size: var(--text-md); font-weight: 600; } .step p { color: var(--text-tertiary); font-size: var(--text-sm); margin: 8px 0 0; } .nots { display: flex; gap: 26px; justify-content: center; margin-top: 34px; flex-wrap: wrap; } .nots span { display: inline-flex; align-items: center; gap: 8px; color: var(--text-tertiary); font-size: var(--text-sm); font-family: var(--font-mono); } /* ---- Blueprints (game cards) ---- */ .blueprints { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; max-width: 1000px; margin: 0 auto; } .bp { position: relative; overflow: hidden; padding: 24px; border-radius: var(--radius-xl); background: radial-gradient(120% 90% at 100% 0%, var(--atmo-haze), transparent 55%), linear-gradient(160deg, color-mix(in srgb, var(--atmo-1) 80%, transparent), var(--surface-base) 70%); box-shadow: inset 0 0 0 1px var(--accent-border); } .bp__head { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; } .bp__ic { width: 40px; height: 40px; flex: none; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: var(--accent); background: color-mix(in srgb, var(--accent) 16%, transparent); box-shadow: inset 0 0 0 1px var(--accent-border); } .bp__name { font-family: var(--font-brand); font-weight: 700; font-size: var(--text-xl); } .bp__accent { font-family: var(--font-mono); font-size: 11px; color: var(--accent-text); text-transform: uppercase; letter-spacing: .08em; } .bp__role { font-size: var(--text-sm); font-weight: 600; color: var(--text-secondary); margin: 10px 0 14px; } .bp__list { display: flex; flex-direction: column; gap: 8px; } .bp__list div { display: flex; align-items: center; gap: 9px; font-size: var(--text-sm); color: var(--text-secondary); } /* ---- Capabilities (3 col) ---- */ .caps { display: grid; grid-template-columns: repeat(3,1fr); gap: 30px; max-width: 1000px; margin: 0 auto; } .caps__col > .eyebrow { display: block; margin-bottom: 8px; } .feat { display: flex; gap: 12px; padding: 14px 0; border-top: 1px solid var(--border-subtle); } .feat:first-of-type { border-top: 0; } .feat__ic { width: 32px; height: 32px; flex: none; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: var(--accent-text); background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent-border); } .feat b { font-size: var(--text-sm); font-weight: 600; } /* ---- Pipeline ---- */ .pipe { display: flex; align-items: center; justify-content: center; gap: 7px; flex-wrap: wrap; max-width: 1000px; margin: 0 auto; } .pchip { height: 38px; padding: 0 15px; display: inline-flex; align-items: center; border-radius: var(--radius-md); background: var(--surface-raised-2); box-shadow: var(--ring-default); font-family: var(--font-mono); font-size: var(--text-sm); font-weight: 500; color: var(--text-secondary); } .pchip--last { background: var(--accent-soft); color: var(--accent-text); box-shadow: inset 0 0 0 1px var(--accent-border); } .stack-lines { display: flex; flex-direction: column; gap: 8px; align-items: center; margin-top: 32px; } .stack-lines span { color: var(--text-tertiary); font-size: var(--text-md); } .stack-lines .hi { color: var(--accent-text); font-weight: 600; } /* ---- Infra ---- */ .infra { display: grid; grid-template-columns: repeat(5,1fr); gap: 12px; max-width: 1040px; margin: 0 auto; } .icard { padding: 20px 16px; background: var(--surface-base); border-radius: var(--radius-lg); box-shadow: var(--ring-default); } .icard__ic { width: 32px; height: 32px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; color: var(--accent-text); background: var(--accent-soft); box-shadow: inset 0 0 0 1px var(--accent-border); margin-bottom: 12px; } .icard b { font-size: var(--text-sm); font-weight: 600; display: block; } .icard p { margin: 5px 0 0; color: var(--text-tertiary); font-size: var(--text-xs); line-height: 1.5; } .techrow { display: flex; gap: 10px; justify-content: center; margin-top: 30px; flex-wrap: wrap; } .techrow span { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--text-muted); padding: 6px 12px; border-radius: var(--radius-pill); box-shadow: var(--ring-default); } /* ---- Store ---- */ .chips { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; max-width: 880px; margin: 0 auto; } .chip-card { display: flex; align-items: center; gap: 9px; padding: 14px 18px; background: var(--surface-base); border-radius: var(--radius-lg); box-shadow: var(--ring-default); font-weight: 600; font-size: var(--text-sm); } .chip-card--accent { color: var(--accent-text); box-shadow: inset 0 0 0 1px var(--accent-border); background: var(--accent-soft); } /* ---- Pricing ---- */ .pricing { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; max-width: 1040px; margin: 0 auto; align-items: stretch; } .plan { display: flex; flex-direction: column; padding: 24px 22px; background: var(--surface-base); border-radius: var(--radius-xl); box-shadow: var(--ring-default); } .plan--feature { box-shadow: inset 0 0 0 1px var(--accent-border), var(--glow-accent-sm); background: linear-gradient(180deg, var(--accent-soft), var(--surface-base) 40%); } .plan__tag { font-family: var(--font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: var(--accent-text); margin-bottom: 10px; height: 14px; } .plan__name { font-family: var(--font-brand); font-weight: 700; font-size: var(--text-xl); } .plan__price { font-family: var(--font-mono); font-weight: 600; font-size: var(--text-3xl); margin: 12px 0 2px; letter-spacing: -0.02em; } .plan__price small { font-size: var(--text-sm); color: var(--text-muted); font-weight: 400; } .plan__scope { font-size: var(--text-sm); color: var(--text-tertiary); min-height: 40px; } .plan .btn { margin-top: 18px; width: 100%; justify-content: center; } .fleetblock { display: flex; align-items: center; justify-content: center; gap: 14px; max-width: 1040px; margin: 14px auto 0; padding: 16px 22px; background: var(--surface-base); border-radius: var(--radius-lg); box-shadow: var(--ring-default); flex-wrap: wrap; } .fleetblock b { font-family: var(--font-brand); font-weight: 700; } .fleetblock .p { font-family: var(--font-mono); color: var(--accent-text); font-weight: 600; } .fleetblock span { color: var(--text-tertiary); font-size: var(--text-sm); } .commercial { max-width: 760px; margin: 26px auto 0; text-align: center; color: var(--text-muted); font-size: var(--text-xs); line-height: 1.6; } .commercial b { color: var(--text-secondary); } /* ---- Support block (below pricing) ---- */ .support-note { max-width: 760px; margin: 20px auto 0; text-align: center; color: var(--text-muted); font-size: var(--text-xs); line-height: 1.6; } .support-note b { color: var(--text-secondary); } /* ---- Admins ---- */ .admins { display: flex; flex-direction: column; gap: 11px; align-items: center; max-width: 560px; margin: 0 auto; } .admins span { display: flex; align-items: center; gap: 11px; font-size: var(--text-lg); color: var(--text-secondary); } /* ---- Final CTA ---- */ .finalcta { position: relative; overflow: hidden; text-align: center; padding: 104px 0; border-bottom: 1px solid var(--border-subtle); } .finalcta__atmo { position: absolute; inset: 0; z-index: 0; background: radial-gradient(60% 100% at 50% 100%, var(--atmo-haze), transparent 60%); } .finalcta__in { position: relative; z-index: 1; } .finalcta h2 { font-family: var(--font-brand); font-weight: 800; font-size: var(--text-5xl); margin: 0 0 28px; line-height: 1.05; } .finalcta .cta-row { display: flex; gap: 14px; justify-content: center; } /* ---- Footer ---- */ .mkt-footer { padding: 56px 0 40px; } .footer__cols { display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr 1fr; gap: 24px; } .footer__brand .mark { width: 24px; height: 24px; } .footer__brand p { color: var(--text-tertiary); font-size: var(--text-sm); margin: 12px 0 0; max-width: 230px; } .footer__col h5 { font-size: var(--text-xs); text-transform: uppercase; letter-spacing: var(--tracking-wider); color: var(--text-muted); margin: 0 0 14px; font-family: var(--font-mono); } .footer__col a { display: block; color: var(--text-secondary); font-size: var(--text-sm); margin-bottom: 9px; text-decoration: none; transition: color var(--dur-fast); } .footer__col a:hover { color: var(--text-primary); } .footer__bar { display: flex; justify-content: space-between; margin-top: 44px; padding-top: 22px; border-top: 1px solid var(--border-subtle); color: var(--text-muted); font-size: var(--text-xs); } /* ---- Scroll reveal ---- */ @media (prefers-reduced-motion: no-preference) { .reveal { opacity: 0; transform: translateY(14px); transition: opacity .6s var(--ease-out), transform .6s var(--ease-out); } .reveal.in { opacity: 1; transform: none; } } /* ---- Responsive ---- */ @media (max-width: 980px) { .pain { grid-template-columns: 1fr 1fr; } .steps, .caps, .blueprints, .pricing { grid-template-columns: 1fr; } .infra { grid-template-columns: 1fr 1fr; } .footer__cols { grid-template-columns: 1fr 1fr; } .mock__body { grid-template-columns: 1fr; } .mock__side { display: none; } .hero h1 { font-size: var(--text-5xl); } .mkt-nav__links { display: none; } }