blob: 30a596ea69fb1bafbf3a49ced6dfe528682e51cd [file]
/**
* Apache Ignite Component Styles
* Reusable component patterns extracted from legacy CSS
*
* Includes buttons, cards, video elements, and other
* common UI components used throughout the site.
*/
/* === Button Styles === */
.button {
font-family: inherit;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
text-align: center;
padding: 0 1rem;
color: var(--ai-text-inverse);
outline: none;
box-sizing: border-box;
cursor: pointer;
border: none;
position: relative;
text-decoration: none;
height: 5rem;
font-size: var(--ai-text-base);
background-color: var(--ai-blue);
border-radius: var(--ai-radius-md);
transition: background var(--ai-transition-fast), color var(--ai-transition-fast);
}
.button:hover {
background: var(--ai-blue-dark);
color: var(--ai-text-inverse);
text-decoration: none;
}
.button:active {
transform: translateY(1px);
}
/* Button variant with shadow/outline */
.button--shadow {
background: var(--ai-bg-primary);
color: var(--ai-blue);
border: 1px solid var(--ai-blue);
}
/* Disabled button state */
.button:disabled,
.button:disabled:hover {
background: var(--ai-blue-light);
border: none;
box-shadow: none;
color: var(--ai-text-inverse);
cursor: auto;
}
/* === Card Components === */
/* Simple card with border and hover effect */
.cardsimple {
border: 1px solid var(--ai-border-medium);
background: var(--ai-bg-primary);
box-sizing: border-box;
border-radius: var(--ai-radius-md);
transition: box-shadow var(--ai-transition-slower);
position: relative;
}
.cardsimple:hover {
box-shadow: var(--ai-shadow-lg);
}
/* Use case card variant */
.usecasecard {
min-height: 29rem;
padding: var(--ai-spacing-xl) var(--ai-spacing-xl) var(--section-spacing-lg);
}
.cardsimple__icon {
width: 48px;
height: 48px;
margin-bottom: var(--ai-spacing-md);
}
.cardsimple__icon img {
width: 100%;
height: 100%;
display: block;
}
.cardsimple__title {
font-size: var(--ai-text-xl);
line-height: 2.6rem;
font-weight: bold;
padding-bottom: var(--ai-spacing-sm);
}
.cardsimple__text:not(.cardsimple__text--long) {
max-width: 280px;
}
.cardsimple__bottom {
position: absolute;
bottom: var(--ai-spacing-xl);
left: var(--ai-spacing-xl);
z-index: 10;
}
.cardsimple__button,
.blockheader__button {
height: 45px;
}
/* ============================================
PHASE 4: UNIFIED COMPONENT SYSTEM
Consolidated patterns from analysis of 60+ files
============================================ */
/* === Unified Card Component System === */
/* Replaces 6 duplicate card patterns across 15+ files */
/* Base card - core styling shared by all cards */
.card {
background: var(--ai-bg-primary);
border-radius: var(--ai-radius-md);
box-shadow: var(--ai-shadow-sm);
transition: box-shadow var(--ai-transition-normal), transform var(--ai-transition-normal);
position: relative;
box-sizing: border-box;
}
.card:hover {
box-shadow: var(--ai-shadow-md);
}
/* Card with border */
.card--bordered {
border: 1px solid var(--ai-border-medium);
}
/* Card size variants - padding and border-radius */
.card--xs {
padding: var(--ai-spacing-xs);
border-radius: var(--ai-radius-sm);
}
.card--sm {
padding: var(--ai-spacing-sm);
border-radius: var(--ai-radius-sm);
}
.card--md {
padding: var(--ai-spacing-md);
border-radius: 0.5rem;
}
.card--lg {
padding: var(--ai-spacing-lg);
}
.card--xl {
padding: var(--ai-spacing-xl);
}
.card--2xl {
padding: var(--ai-spacing-2xl);
}
/* Card height variants */
.card--tall {
min-height: 29rem;
}
.card--taller {
min-height: 36rem;
}
.card--auto-height {
min-height: auto;
}
/* Card hover effects - lift on hover */
.card--lift:hover {
transform: translateY(-2px);
}
.card--lift-more:hover {
transform: translateY(-4px);
}
/* Card with stronger shadow */
.card--shadow-strong {
box-shadow: var(--ai-shadow-md);
}
.card--shadow-strong:hover {
box-shadow: var(--ai-shadow-lg);
}
/* Card flex layout helpers */
.card--flex-col {
display: flex;
flex-direction: column;
align-items: stretch;
}
.card--flex-start {
justify-content: flex-start;
}
.card--flex-center {
justify-content: center;
}
/* === Button Size Modifiers === */
/* Standardizes 12+ files with custom button sizes */
.button--xs {
height: 3.5rem;
font-size: 1.3rem;
padding: 0 var(--ai-spacing-sm);
}
.button--sm {
height: 4rem;
font-size: 1.4rem;
padding: 0 var(--ai-spacing-md);
}
.button--md {
/* Default size - 5rem height already defined */
height: 5rem;
font-size: var(--ai-text-base);
}
.button--lg {
height: 6rem;
font-size: var(--ai-text-lg);
padding: 0 var(--ai-spacing-xl);
}
.button--xl {
height: 6rem;
font-size: var(--ai-text-xl);
padding: 0 var(--ai-spacing-2xl);
}
/* Button width variants */
.button--fixed-sm {
width: 125px;
}
.button--fixed-md {
width: 16rem;
}
.button--fixed-lg {
width: 19rem;
}
.button--fixed-xl {
width: 20rem;
}
.button--full {
width: 100%;
}
.button--auto {
width: auto;
padding: 0 var(--ai-spacing-lg);
}
/* === Grid Utility Classes === */
/* Replaces 30+ duplicate grid declarations */
.grid {
display: grid;
}
/* Column count utilities */
.grid-cols-1 {
grid-template-columns: 1fr;
}
.grid-cols-2 {
grid-template-columns: repeat(2, 1fr);
}
.grid-cols-3 {
grid-template-columns: repeat(3, 1fr);
}
.grid-cols-4 {
grid-template-columns: repeat(4, 1fr);
}
/* Auto-fill responsive grids */
.grid-auto-fill {
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
}
.grid-auto-fill-sm {
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
}
.grid-auto-fill-lg {
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
}
/* Gap utilities */
.gap-xs {
gap: var(--ai-spacing-xs);
}
.gap-sm {
gap: var(--ai-spacing-sm);
}
.gap-md {
gap: var(--ai-spacing-md);
}
.gap-lg {
gap: var(--ai-spacing-lg);
}
.gap-xl {
gap: var(--ai-spacing-xl);
}
.gap-2xl {
gap: var(--ai-spacing-2xl);
}
.gap-3xl {
gap: var(--ai-spacing-3xl);
}
/* Column and row gaps */
.col-gap-sm {
column-gap: var(--ai-spacing-sm);
}
.col-gap-md {
column-gap: var(--ai-spacing-md);
}
.col-gap-lg {
column-gap: var(--ai-spacing-lg);
}
.col-gap-xl {
column-gap: var(--ai-spacing-xl);
}
.row-gap-sm {
row-gap: var(--ai-spacing-sm);
}
.row-gap-md {
row-gap: var(--ai-spacing-md);
}
.row-gap-lg {
row-gap: var(--ai-spacing-lg);
}
.row-gap-xl {
row-gap: var(--ai-spacing-xl);
}
/* === Hover Effect Utilities === */
/* Standardizes 96+ hover declarations */
.hover-shadow {
transition: box-shadow var(--ai-transition-normal);
}
.hover-shadow:hover {
box-shadow: var(--ai-shadow-md);
}
.hover-shadow-strong {
transition: box-shadow var(--ai-transition-normal);
}
.hover-shadow-strong:hover {
box-shadow: var(--ai-shadow-lg);
}
.hover-lift {
transition: transform var(--ai-transition-normal);
}
.hover-lift:hover {
transform: translateY(-2px);
}
.hover-lift-more {
transition: transform var(--ai-transition-normal);
}
.hover-lift-more:hover {
transform: translateY(-4px);
}
.hover-shadow-lift {
transition: transform var(--ai-transition-normal), box-shadow var(--ai-transition-normal);
}
.hover-shadow-lift:hover {
transform: translateY(-2px);
box-shadow: var(--ai-shadow-md);
}
.hover-opacity {
transition: opacity var(--ai-transition-normal);
}
.hover-opacity:hover {
opacity: 0.8;
}
.hover-opacity-less {
transition: opacity var(--ai-transition-normal);
}
.hover-opacity-less:hover {
opacity: 0.9;
}
/* === Flexbox Utilities === */
/* Common flex patterns used 70+ times */
.flex {
display: flex;
}
.flex-col {
flex-direction: column;
}
.flex-row {
flex-direction: row;
}
.flex-wrap {
flex-wrap: wrap;
}
.flex-nowrap {
flex-wrap: nowrap;
}
.items-start {
align-items: flex-start;
}
.items-center {
align-items: center;
}
.items-end {
align-items: flex-end;
}
.items-stretch {
align-items: stretch;
}
.justify-start {
justify-content: flex-start;
}
.justify-center {
justify-content: center;
}
.justify-end {
justify-content: flex-end;
}
.justify-between {
justify-content: space-between;
}
.justify-around {
justify-content: space-around;
}
.flex-grow {
flex-grow: 1;
}
.flex-shrink-0 {
flex-shrink: 0;
}
/* === Spacing Utilities === */
/* Quick margin/padding utilities */
.mt-auto {
margin-top: auto;
}
.mb-auto {
margin-bottom: auto;
}
.m-0 {
margin: 0;
}
.p-0 {
padding: 0;
}
/* === Position Utilities === */
.relative {
position: relative;
}
.absolute {
position: absolute;
}
/* === Common Layout Patterns === */
.w-full {
width: 100%;
}
.h-full {
height: 100%;
}
.block {
display: block;
}
.inline-block {
display: inline-block;
}
/* ============================================
END PHASE 4 UNIFIED COMPONENT SYSTEM
============================================ */
/* === Block Header Component === */
.blockcapslead {
letter-spacing: var(--ai-tracking-wide);
text-transform: uppercase;
white-space: nowrap;
padding-bottom: var(--section-spacing-xxs);
}
.blockheader {
flex-direction: column;
flex-wrap: nowrap;
align-items: stretch;
position: relative;
padding-top: var(--ai-spacing-xl);
}
.blockheader:not(.blockheader--spl)::before {
content: "";
display: block;
width: 4rem;
height: 3px;
background: var(--ai-text-primary);
position: absolute;
top: 0;
left: 0;
}
.blockheader--spl {
padding-top: 0;
}
.blockheader__left {
width: 45%;
padding-right: var(--ai-spacing-2xl);
flex-shrink: 0;
}
.blockheader__left--full {
width: 100%;
}
.blockheader__right {
display: block;
padding-top: var(--ai-spacing-md);
max-width: 850px;
}
.blockheader__right p:not(:last-child) {
margin-bottom: var(--ai-spacing-sm);
}
.blockheader__button {
margin-top: var(--ai-spacing-xl);
}
.blockheader--hor {
flex-direction: column;
flex-wrap: nowrap;
}
.blockheader--hor .blockheader__right {
margin-left: 0;
padding-top: var(--ai-spacing-md);
}
/* === Video Components === */
/* Simple video screen */
.videoscr {
position: relative;
display: block;
overflow: hidden;
transform: translate3d(0, 0, 0);
transition: box-shadow var(--ai-transition-slow);
}
.videoscr img,
.videoscr a,
.videoscr iframe {
display: block;
border: none;
width: 100%;
max-width: 350px;
height: auto;
transform: translate3d(0, 0, 0);
transition: transform var(--ai-transition-slow);
}
.videoscr:hover img {
transform: scale(1.01);
}
.videoscr:hover {
box-shadow: var(--ai-shadow-sm);
}
.videoscr::after {
content: "";
display: block;
position: absolute;
left: 0;
top: 0;
bottom: 0;
right: 0;
opacity: 1;
/* Video icon will be added when images are migrated in later work packages */
/* background-image: url(../img/icon-video.svg); */
background-repeat: no-repeat;
background-size: 4rem;
background-position: 50% 50%;
transition: background var(--ai-transition-slow);
}
.videoscr__descr {
padding-top: var(--ai-spacing-md);
color: var(--ai-gray-300);
max-width: 350px;
}
/* Video with title overlay */
.comvideo {
max-width: 524px;
width: 100%;
overflow: hidden;
display: block;
position: relative;
}
.comvideo__box {
display: block;
position: relative;
width: 100%;
height: 0;
box-sizing: border-box;
padding-bottom: 62%;
overflow: hidden;
background: var(--ai-dark-lighter);
}
.comvideo__screen,
.comvideo__box iframe {
border: none;
display: block;
width: 100%;
height: 100%;
position: absolute;
}
.comvideo__screen[data-youtube]::after {
pointer-events: none;
content: "";
display: block;
position: absolute;
z-index: 20;
left: 0;
top: 0;
bottom: 0;
right: 0;
/* Video icon will be added when images are migrated in later work packages */
/* background: url(../img/icon-video.svg) center center no-repeat; */
background-size: 40px;
transition: background var(--ai-transition-normal);
}
.comvideo__screen:hover[data-youtube]::after {
background-color: rgba(0, 0, 0, 0.1);
}
.comvideo__screen img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
position: relative;
}
.comvideo__txt {
position: absolute;
z-index: 5;
font-size: var(--ai-text-2xl);
line-height: var(--ai-leading-relaxed);
top: var(--ai-spacing-xl);
left: var(--ai-spacing-xl);
max-width: 75%;
color: var(--ai-text-inverse);
}
.comvideo__txt--black {
color: var(--ai-text-primary);
}
.comvideo__txt--small {
font-size: 1.9rem;
line-height: var(--ai-leading-normal);
max-width: 80%;
top: var(--ai-spacing-md);
left: var(--ai-spacing-md);
}
.comvideo__txt--medium {
font-size: 2.2rem;
line-height: var(--ai-leading-normal);
max-width: 80%;
top: var(--ai-spacing-md);
left: var(--ai-spacing-md);
}
.comvideo__sub {
position: absolute;
left: var(--ai-spacing-xl);
bottom: var(--ai-spacing-xl);
text-transform: uppercase;
font-size: 12px;
line-height: 20px;
letter-spacing: var(--ai-tracking-wide);
color: var(--ai-text-inverse);
z-index: 10;
}
.comvideo__txt--black + .comvideo__sub {
color: var(--ai-text-primary);
}
.comvideo__descr p {
margin-bottom: var(--ai-spacing-xs);
}
.comvideo__gray {
font-style: italic;
color: var(--ai-gray-400);
}
/* === Inner Hero Component === */
.innerhero {
background: var(--ai-bg-blue);
color: var(--ai-text-inverse);
position: relative;
padding: var(--section-spacing-md) 0 var(--section-spacing-lg);
overflow: hidden;
}
.innerhero__main {
min-height: 300px;
max-width: 830px;
width: 65%;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
align-items: flex-start;
justify-content: center;
}
/* Ensure hero H1 text wraps within container bounds */
.innerhero__main .h1,
.innerhero__h1 {
max-width: 80%;
word-wrap: break-word;
overflow-wrap: break-word;
}
.innerhero__mega {
font-size: var(--ai-text-7xl);
line-height: 1.18;
padding-top: var(--ai-spacing-md);
}
.innerhero__main--long {
max-width: none;
width: 100%;
}
.innerhero__pre {
text-transform: uppercase;
letter-spacing: var(--ai-tracking-wide);
}
.with-apache {
font-weight: normal;
}
.innerhero__descr {
font-weight: var(--ai-font-normal);
opacity: 0.8;
}
.innerhero__button {
color: var(--ai-text-inverse);
border: 2px solid var(--ai-text-inverse);
background: var(--ai-text-inverse);
color: var(--ai-blue);
font-size: var(--ai-text-xl);
line-height: 1;
padding: 0 var(--ai-spacing-2xl);
margin-top: var(--section-spacing-sm);
height: 6rem;
}
.innerhero__button:hover {
background: var(--ai-bg-secondary);
color: var(--ai-blue);
}
.innerhero__pic {
position: absolute;
display: block;
}
.innerhero__pic--faq {
width: 57rem;
height: auto;
top: auto;
bottom: -15rem;
left: 65%;
transform: none;
}
.innerhero__pic--resources {
width: 45rem;
height: auto;
top: 50%;
right: 5%;
transform: translateY(-50%);
}
.innerhero__pic--docs {
width: 60rem;
height: auto;
top: -50px;
transform: none;
left: 70%;
}
.innerhero__pic--community {
width: 40rem;
height: auto;
top: 50%;
right: 0;
transform: translateY(-50%);
}
.innerhero__pic--events {
width: auto;
height: 135%;
top: 50%;
right: 5%;
transform: translateY(-50%);
}
.innerhero__pic--download {
width: 35rem;
height: auto;
top: 50%;
right: 5%;
transform: translateY(-50%);
}
/* === Promotion Bar === */
#promotion-bar {
background-color: var(--ai-promotion-bg);
}
#promotion-bar a {
color: var(--ai-text-inverse);
font-size: 15px;
font-weight: var(--ai-font-bold);
display: flex;
width: 100%;
height: 40px;
justify-content: center;
align-items: center;
line-height: 22px;
}
#promotion-bar a:hover {
text-decoration: none;
}
#promotion-bar span {
display: inline-flex;
margin-right: 5px;
}
#promotion-bar span.more {
display: inline-block;
}
#promotion-bar img.ignite-summit-logo {
width: 30px;
margin-right: 4px;
}
/* === Internal Page Navigation === */
/* Sticky navigation bar for page sections */
.cmtynavblock {
background: var(--ai-bg-primary);
position: sticky;
transition: top 0.2s ease, transform 0.2s ease;
left: 0;
z-index: 100;
border-top: 1px solid var(--ai-border-light);
border-bottom: 1px solid var(--ai-border-light);
height: 8rem;
top: 0;
}
/* Adjust positioning when header is scrolled */
.hdr-active .cmtynavblock {
top: 75px;
}
.cmtynavblock .container {
height: 100%;
}
.cmtynavblock__list {
height: 100%;
align-items: stretch;
justify-content: center;
}
.cmtynavblock__list li {
padding: 0 55px;
height: 100%;
}
.cmtynavblock__list a {
height: 100%;
display: flex;
white-space: nowrap;
flex-direction: row;
flex-wrap: nowrap;
align-items: center;
justify-content: center;
text-align: center;
padding: 0 10px;
text-decoration: none;
color: var(--ai-text-primary);
position: relative;
}
.cmtynavblock__list a:not(.cmtynavblock__active):hover {
color: var(--ai-blue);
}
.cmtynavblock__active::after {
position: absolute;
content: "";
display: block;
bottom: 0;
left: 0;
right: 0;
height: 3px;
background: var(--ai-text-primary);
border-radius: var(--ai-radius-xs);
}