Files
tscb-site/css/enhance.css
keshavananddev c0d1d517ae Adjust image sizing to maintain aspect ratio and fit content
Modify CSS for the cricket image to ensure it displays with its natural aspect ratio, constraining its height to align with adjacent text while allowing its width to adjust proportionally.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 1cf11e65-6deb-45c8-b84b-15ffb586a42f
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1693786b-1a78-40ff-bda7-bbae9e47519e
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/ef74882e-373e-40b4-93c7-cf128544a855/1cf11e65-6deb-45c8-b84b-15ffb586a42f/ZDkY1x7
Replit-Helium-Checkpoint-Created: true
2026-03-17 22:01:32 +00:00

942 lines
24 KiB
CSS

/* =====================================================
TSCB — Enhanced Animations & Visual Excellence
===================================================== */
/* ---- Scroll Progress Bar ---- */
#tscb-progress {
position: fixed;
top: 0;
left: 0;
height: 3px;
width: 0%;
background: linear-gradient(90deg, #d92800 0%, #ce9c5b 50%, #d92800 100%);
background-size: 200% 100%;
animation: progressShift 3s ease infinite;
z-index: 999999;
transition: width 0.08s linear;
pointer-events: none;
}
@keyframes progressShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
/* ---- Hero Section Decorative Orbs ---- */
.hero {
overflow: hidden;
position: relative;
}
.hero-orb-1,
.hero-orb-2,
.hero-orb-3 {
position: absolute;
border-radius: 50%;
pointer-events: none;
z-index: 0;
}
.hero-orb-1 {
width: 700px;
height: 700px;
background: radial-gradient(circle, rgba(217, 40, 0, 0.16) 0%, transparent 65%);
top: -300px;
right: -200px;
animation: orbDrift 12s ease-in-out infinite;
}
.hero-orb-2 {
width: 450px;
height: 450px;
background: radial-gradient(circle, rgba(206, 156, 91, 0.11) 0%, transparent 65%);
bottom: -100px;
left: -150px;
animation: orbDrift 16s ease-in-out infinite reverse;
}
.hero-orb-3 {
width: 250px;
height: 250px;
background: radial-gradient(circle, rgba(217, 40, 0, 0.07) 0%, transparent 65%);
top: 40%;
left: 30%;
animation: orbDrift 9s ease-in-out infinite 2s;
}
@keyframes orbDrift {
0%, 100% { transform: translate(0px, 0px) scale(1); }
33% { transform: translate(30px, -30px) scale(1.06); }
66% { transform: translate(-20px, 20px) scale(0.96); }
}
/* ---- Hero subtle grid overlay ---- */
.hero::before {
content: '';
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
background-size: 60px 60px;
z-index: 0;
pointer-events: none;
}
.hero .container {
position: relative;
z-index: 1;
}
.hero .down-arrow {
position: relative;
z-index: 1;
}
/* ---- Down arrow bounce ---- */
.hero .down-arrow a {
animation: arrowBounce 2.2s ease-in-out infinite;
display: inline-block;
}
@keyframes arrowBounce {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(12px); }
}
/* ---- Nav hover underline animation ---- */
.main-menu .navbar-nav > .nav-item > a {
position: relative;
}
.main-menu .navbar-nav > .nav-item > a::after {
content: '';
position: absolute;
bottom: 6px;
left: 15px;
right: 15px;
height: 2px;
background: var(--accent-color);
transform: scaleX(0);
transform-origin: right;
transition: transform 0.35s cubic-bezier(0.76, 0, 0.24, 1);
}
.main-menu .navbar-nav > .nav-item > a:hover::after,
.main-menu .navbar-nav > .nav-item.active > a::after {
transform: scaleX(1);
transform-origin: left;
}
/* ---- Enhanced sticky header glass effect ---- */
header.main-header .header-sticky.active {
background: rgba(0, 0, 0, 0.90) !important;
backdrop-filter: blur(24px) saturate(180%) !important;
-webkit-backdrop-filter: blur(24px) saturate(180%) !important;
border-bottom: 1px solid rgba(206, 156, 91, 0.25) !important;
box-shadow: 0 4px 30px rgba(0, 0, 0, 0.5) !important;
}
/* ---- Enhanced Button Animations ---- */
.btn-default {
letter-spacing: 0.03em;
transition: all 0.45s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
will-change: transform;
}
.btn-default:active {
transform: scale(0.95) !important;
}
.btn-default::before {
transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
/* ---- About image list item hover ---- */
.about-list-item {
transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
will-change: transform;
}
.about-list-item:hover {
transform: translateX(8px);
}
.about-list-item .icon-box {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.4s ease;
}
.about-list-item:hover .icon-box {
transform: scale(1.15) rotate(-5deg);
box-shadow: 0 10px 30px rgba(217, 40, 0, 0.35);
}
/* About image layout overrides are handled below in the FOUNDERS SECTION block. */
/* ---- Counter section enhanced ---- */
.our-counter {
position: relative;
overflow: hidden;
}
.counter-box {
position: relative;
overflow: hidden;
}
.counter-box::before {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: conic-gradient(
from 0deg at 50% 50%,
transparent 0deg,
rgba(255,255,255,0.03) 60deg,
transparent 120deg,
rgba(255,255,255,0.03) 180deg,
transparent 240deg,
rgba(255,255,255,0.03) 300deg,
transparent 360deg
);
animation: counterRotate 25s linear infinite;
pointer-events: none;
}
@keyframes counterRotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.counter-item {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
position: relative;
z-index: 1;
will-change: transform;
}
.counter-item:hover {
transform: translateY(-6px);
}
.counter-title h2 {
font-size: 62px !important;
letter-spacing: -0.02em;
}
/* ---- Service Item enhanced hover ---- */
.service-item {
transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.5s ease !important;
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
will-change: transform;
}
.service-item:hover {
transform: translateY(-10px) !important;
box-shadow: 0 30px 60px rgba(0,0,0,0.18) !important;
}
.service-item .icon-box img {
transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.service-item:hover .icon-box img {
transform: scale(1.1) rotate(-8deg) !important;
}
/* ---- Service icon shine sweep ---- */
.service-item .icon-box {
overflow: hidden;
position: relative;
}
.service-item .icon-box::after {
content: '';
position: absolute;
top: 0;
left: -120%;
width: 60%;
height: 100%;
background: linear-gradient(105deg, transparent 30%, rgba(255,255,255,0.4) 50%, transparent 70%);
transform: skewX(-15deg);
transition: none;
}
.service-item:hover .icon-box::after {
left: 150%;
transition: left 0.5s ease;
}
/* ---- Services dot background ---- */
.our-services {
position: relative;
overflow: hidden;
}
.our-services::before {
content: '';
position: absolute;
inset: 0;
background-image: radial-gradient(circle, rgba(0,0,0,0.06) 1px, transparent 1px);
background-size: 28px 28px;
pointer-events: none;
z-index: 0;
}
.our-services .container {
position: relative;
z-index: 1;
}
/* ---- Service footer slide on hover ---- */
.service-footer {
transition: transform 0.3s ease;
}
.service-item:hover .service-footer {
transform: translateX(5px);
}
/* ---- Ticker gradient fade edges ---- */
.service-ticker {
position: relative;
}
.service-ticker::before,
.service-ticker::after {
content: '';
position: absolute;
top: 0;
bottom: 0;
width: 120px;
z-index: 2;
pointer-events: none;
}
.service-ticker::before {
left: 0;
background: linear-gradient(90deg, var(--primary-color) 20%, transparent 100%);
}
.service-ticker::after {
right: 0;
background: linear-gradient(-90deg, var(--primary-color) 20%, transparent 100%);
}
/* ---- Sponsor logos — NO default opacity:0, GSAP handles initial state ---- */
.sponsor-logo-item {
position: relative;
overflow: hidden;
transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1),
box-shadow 0.45s ease,
border-color 0.3s ease !important;
will-change: transform;
}
/* Shimmer sweep on hover */
.sponsor-logo-item::after {
content: '';
position: absolute;
top: 0;
left: -120%;
width: 60%;
height: 100%;
background: linear-gradient(
105deg,
transparent 30%,
rgba(255, 255, 255, 0.55) 50%,
transparent 70%
);
transform: skewX(-15deg);
transition: none;
pointer-events: none;
}
.sponsor-logo-item:hover::after {
left: 160%;
transition: left 0.65s ease;
}
.sponsor-logo-item:hover {
border-color: var(--accent-color) !important;
transform: translateY(-8px) scale(1.03) !important;
box-shadow: 0 20px 50px rgba(217, 40, 0, 0.15) !important;
}
.sponsor-logo-item img {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.sponsor-logo-item:hover img {
transform: scale(1.06) !important;
}
/* ---- Sponsors section subtle dot background ---- */
.our-sponsors-section {
position: relative;
overflow: hidden;
}
.our-sponsors-section::before {
content: '';
position: absolute;
inset: 0;
background-image: radial-gradient(circle, rgba(206, 156, 91, 0.07) 1px, transparent 1px);
background-size: 32px 32px;
pointer-events: none;
z-index: 0;
}
.our-sponsors-section .container {
position: relative;
z-index: 1;
}
/* ---- Mission section ---- */
.our-mission {
position: relative;
overflow: hidden;
}
.our-mission::before {
content: '';
position: absolute;
width: 500px;
height: 500px;
border-radius: 50%;
background: radial-gradient(circle, rgba(206, 156, 91, 0.07) 0%, transparent 65%);
top: -100px;
right: -150px;
pointer-events: none;
animation: orbDrift 18s ease-in-out infinite;
}
.mission-content-body p {
border-left: 3px solid var(--accent-color) !important;
padding-left: 18px !important;
transition: border-color 0.3s ease, padding-left 0.3s ease;
}
.mission-content-body p:hover {
border-left-color: var(--secondary-color) !important;
padding-left: 24px !important;
}
/* ---- CTA Box orb ---- */
.cta-box {
position: relative;
overflow: hidden;
}
.cta-box::before {
content: '';
position: absolute;
width: 500px;
height: 500px;
border-radius: 50%;
background: radial-gradient(circle, rgba(217, 40, 0, 0.10) 0%, transparent 65%);
top: -200px;
right: 0;
pointer-events: none;
animation: orbDrift 14s ease-in-out infinite 1s;
z-index: 0;
}
.cta-box .container {
position: relative;
z-index: 1;
}
/* ---- Footer glow border ---- */
.main-footer {
position: relative;
}
.main-footer::before {
content: '';
position: absolute;
top: 0;
left: 10%;
right: 10%;
height: 1px;
background: linear-gradient(90deg, transparent, var(--secondary-color), transparent);
}
/* ---- Footer social links spring ---- */
.footer-social-links ul li a {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
box-shadow 0.3s ease !important;
will-change: transform;
}
.footer-social-links ul li a:hover {
transform: translateY(-6px) scale(1.15) !important;
box-shadow: 0 10px 25px rgba(217, 40, 0, 0.4) !important;
}
/* ---- Footer links underline ---- */
.footer-links ul li a {
position: relative;
transition: color 0.3s ease !important;
}
.footer-links ul li a::before {
content: '';
position: absolute;
left: 0;
bottom: -2px;
width: 0;
height: 1px;
background: var(--accent-color);
transition: width 0.35s cubic-bezier(0.76, 0, 0.24, 1);
}
.footer-links ul li a:hover::before {
width: 100%;
}
/* ---- Page header orb ---- */
.page-header {
position: relative;
overflow: hidden;
}
.page-header::after {
content: '';
position: absolute;
width: 500px;
height: 500px;
border-radius: 50%;
background: radial-gradient(circle, rgba(217, 40, 0, 0.10) 0%, transparent 60%);
bottom: -250px;
right: -100px;
pointer-events: none;
animation: orbDrift 15s ease-in-out infinite;
}
/* ---- Animated gradient on accent spans ---- */
.section-title h2 span,
.section-title h1 span {
background: linear-gradient(90deg, #d92800 0%, #ff5c38 40%, #d92800 100%);
background-size: 200% auto;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: textGradientShift 4s ease infinite;
}
@keyframes textGradientShift {
0% { background-position: 0% center; }
50% { background-position: 100% center; }
100% { background-position: 0% center; }
}
/* ---- Preloader gradient ---- */
.preloader {
background: linear-gradient(135deg, #d92800 0%, #b01d00 100%) !important;
}
/* ---- Team member hover ---- */
.team-member-item {
transition: transform 0.45s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.45s ease;
will-change: transform;
}
.team-member-item:hover {
transform: translateY(-8px);
box-shadow: 0 25px 55px rgba(0,0,0,0.15);
}
/* ---- Readmore btn spring ---- */
.readmore-btn {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1),
background-color 0.3s ease,
box-shadow 0.3s ease !important;
will-change: transform;
}
.readmore-btn:hover {
transform: scale(1.15) rotate(45deg) !important;
box-shadow: 0 10px 30px rgba(217, 40, 0, 0.45) !important;
}
/* ---- Logo footer hover ---- */
.footer-logo img {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.footer-logo img:hover {
transform: scale(1.08) rotate(-3deg);
}
/* ---- Body smooth scroll ---- */
html {
scroll-behavior: smooth;
}
/* ---- Smooth body fade in ---- */
body {
animation: bodyReveal 0.4s ease both;
}
@keyframes bodyReveal {
from { opacity: 0; }
to { opacity: 1; }
}
/* ============================================================
ABOUT.HTML — Single-image first section fix
.page-about-us now only has .about-img-1 (no overlay).
Remove the padding-top that was there for the second image
and make the image fill the column properly.
============================================================ */
.page-about-us .about-image {
padding-top: 0 !important;
max-width: 100% !important;
position: relative !important;
}
.page-about-us .about-img-1 {
width: 100% !important;
}
.page-about-us .about-img-1 figure {
display: block !important;
border-radius: 20px !important;
overflow: hidden !important;
}
.page-about-us .about-img-1 img {
width: 100% !important;
height: auto !important;
aspect-ratio: 4 / 3 !important;
object-fit: cover !important;
object-position: center center !important;
border-radius: 20px !important;
}
/* Pastors section: remove inline dimension override, let CSS size it */
.pastors-message .about-img-2 img {
width: 100% !important;
height: auto !important;
}
/* ============================================================
DESKTOP (≥ 1200px)
============================================================ */
@media (min-width: 1200px) {
.page-about-us .about-img-1 img {
aspect-ratio: 3 / 4 !important;
}
}
/* ============================================================
TABLET (≤ 1024px)
============================================================ */
@media (max-width: 1024px) {
/* Shrink orbs so they don't cause scrollbar */
.hero-orb-1 { width: 500px; height: 500px; }
.hero-orb-2 { width: 350px; height: 350px; }
/* Mission life circle is decorative — hide on tablet to simplify */
.mission-life-circle {
display: none !important;
}
}
/* ============================================================
TABLET PORTRAIT (≤ 991px)
============================================================ */
@media (max-width: 991px) {
/* About single-image: center and constrain */
.page-about-us .about-image {
max-width: 580px !important;
margin: 0 auto 35px !important;
}
/* Counter items: remove divider borders at tablet */
.counter-item {
border-right: none !important;
padding-right: 15px !important;
}
/* CTA button: center on smaller screens */
.cta-box-btn {
text-align: center !important;
margin-top: 20px !important;
}
.cta-box-btn::before {
display: none !important;
}
/* Service items: consistent margin when they wrap */
.service-item {
margin-bottom: 24px !important;
}
}
/* ============================================================
MOBILE (≤ 767px)
============================================================ */
@media (max-width: 767px) {
/* Orbs: shrink and simplify */
.hero-orb-1 { width: 300px; height: 300px; top: -150px; right: -100px; }
.hero-orb-2 { width: 220px; height: 220px; bottom: -80px; left: -80px; }
.hero-orb-3 { display: none; }
/* Hero: prevent overflow */
.hero { overflow: hidden; }
.hero .container { overflow: visible; }
/* Counter h2 */
.counter-title h2 { font-size: 42px !important; }
/* Ticker fade edges narrower */
.service-ticker::before,
.service-ticker::after { width: 50px; }
/* Sponsors grid: 2 col on mobile */
.sponsors-logo-grid {
gap: 16px !important;
}
.sponsor-logo-item {
min-width: 130px !important;
max-width: 48% !important;
padding: 14px 16px !important;
}
/* About single-image mobile */
.page-about-us .about-image {
max-width: 100% !important;
margin-bottom: 30px !important;
}
.page-about-us .about-img-1 img {
aspect-ratio: 16 / 10 !important;
}
/* Mission content first on mobile */
.our-mission .col-lg-6:last-child {
margin-top: 30px !important;
}
/* CTA text smaller */
.cta-box-content .section-title h2 {
font-size: 22px !important;
}
/* Footer: better spacing */
.footer-widget {
margin-bottom: 30px !important;
}
/* Nav "Our Partners" button in header: hide on very small */
.header-btn .btn-default {
display: none !important;
}
}
/* ============================================================
SMALL MOBILE (≤ 575px)
============================================================ */
@media (max-width: 575px) {
/* Hero title size */
.section-title h1,
.hero-content h1 {
font-size: 30px !important;
line-height: 1.18 !important;
}
/* Counter: stack to 1 column, show divider lines */
.counter-title h2 { font-size: 34px !important; }
.counter-item {
border-right: none !important;
border-bottom: 1px solid rgba(255,255,255,0.12) !important;
padding-bottom: 24px !important;
margin-bottom: 24px !important;
}
.counter-box .col-lg-3:last-child .counter-item {
border-bottom: none !important;
margin-bottom: 0 !important;
}
/* Sponsors: single column */
.sponsor-logo-item {
min-width: calc(50% - 12px) !important;
max-width: calc(50% - 12px) !important;
}
/* Hero buttons: stack */
.hero-content-body {
display: flex !important;
flex-direction: column !important;
gap: 12px !important;
align-items: flex-start !important;
}
.hero-content-body .btn-default {
margin-left: 0 !important;
width: auto !important;
}
/* About list items: single column */
.about-content-body {
grid-template-columns: 1fr !important;
}
/* Section title padding */
.section-title {
margin-bottom: 24px !important;
}
}
/* ============================================================
CRICKET IMAGE (first about section) — Natural aspect ratio,
width shrinks to fit; height constrained to match text column.
============================================================ */
.page-about-us .about-img-1 {
width: auto !important;
max-width: 100% !important;
}
.page-about-us .about-img-1 figure {
display: flex !important;
justify-content: center !important;
}
.page-about-us .about-img-1 img {
width: auto !important;
max-width: 100% !important;
height: auto !important;
max-height: 480px !important;
aspect-ratio: unset !important;
object-position: center center !important;
display: block !important;
margin: 0 auto !important;
}
/* ============================================================
FOUNDERS SECTION — Equal-sized side-by-side layout
Both founders shown at identical size with matching borders.
Stacks vertically on mobile.
============================================================ */
.pastors-message .about-image {
padding-top: 0 !important;
display: flex !important;
flex-direction: row !important;
align-items: stretch !important;
gap: 12px !important;
}
/* Both images exactly equal width */
.pastors-message .about-img-1,
.pastors-message .about-img-2 {
position: static !important;
top: auto !important;
right: auto !important;
width: 50% !important;
flex: 0 0 50% !important;
margin-top: 0 !important;
}
.pastors-message .about-img-1 figure,
.pastors-message .about-img-2 figure {
display: block !important;
height: 100% !important;
border-radius: 16px !important;
overflow: hidden !important;
}
/* Identical treatment on both images */
.pastors-message .about-img-1 img,
.pastors-message .about-img-2 img {
width: 100% !important;
height: 100% !important;
aspect-ratio: 3 / 4 !important;
object-fit: cover !important;
object-position: top center !important;
border-radius: 16px !important;
border: 4px solid rgba(255, 255, 255, 0.85) !important;
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.16) !important;
}
/* ---- Founders: tablet (≤ 991px) ---- */
@media (max-width: 991px) {
.pastors-message .about-image {
max-width: 520px !important;
margin: 0 auto 35px !important;
gap: 10px !important;
}
.pastors-message .about-img-1,
.pastors-message .about-img-2 {
width: 50% !important;
flex: 0 0 50% !important;
}
}
/* ---- Founders: mobile (≤ 767px) ---- */
@media (max-width: 767px) {
.pastors-message .about-image {
max-width: 420px !important;
gap: 8px !important;
}
.pastors-message .about-img-1 img,
.pastors-message .about-img-2 img {
border-width: 3px !important;
}
}
/* ---- Founders: small mobile (≤ 575px) — stack vertically ---- */
@media (max-width: 575px) {
.pastors-message .about-image {
flex-direction: column !important;
max-width: 100% !important;
gap: 10px !important;
margin: 0 0 30px !important;
}
.pastors-message .about-img-1,
.pastors-message .about-img-2 {
width: 100% !important;
flex: 0 0 100% !important;
}
.pastors-message .about-img-1 img,
.pastors-message .about-img-2 img {
aspect-ratio: 4 / 3 !important;
border-width: 3px !important;
border-radius: 12px !important;
}
}
/* ============================================================
COUNTER HOVER — Distinct color change (not orange/cream)
The default cream (#f3dbbb) blends into the accent color.
On hover: crisp white with a blue-tinted glow to contrast.
============================================================ */
.counter-item:hover .counter-title h2 {
color: #ffffff !important;
text-shadow: 0 0 24px rgba(130, 200, 255, 0.55),
0 0 8px rgba(130, 200, 255, 0.35) !important;
transition: color 0.35s ease, text-shadow 0.35s ease !important;
}
.counter-item:hover .counter-content h3 {
color: #ffffff !important;
transition: color 0.35s ease !important;
}
.counter-title h2,
.counter-content h3 {
transition: color 0.35s ease, text-shadow 0.35s ease;
}