Files
tscb-site/css/enhance.css
ka-official d1ab497ad7 Improve image display and responsiveness across all devices
Remove inline image styles and apply comprehensive CSS for responsive adjustments across multiple breakpoints, including specific fixes for the about page's single-image layout and general improvements for mobile, tablet, and desktop views.

Replit-Commit-Author: Agent
Replit-Commit-Session-Id: f13f685e-aa76-4721-bd29-73edf2f9795d
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 25530331-7c60-4bc9-8ff3-d322ef9fb8e7
Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/705de26f-a3c1-41e6-845d-88f96627134c/f13f685e-aa76-4721-bd29-73edf2f9795d/iA1wIFJ
Replit-Helium-Checkpoint-Created: true
2026-03-17 21:08:35 +00:00

799 lines
19 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 is intentionally handled by custom.css only.
The overlay (position:absolute) must be preserved at all screen sizes. */
/* ---- 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;
}
}