| /** |
| * 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); |
| } |