CARPOOL - Free Safe Rides Home | Bryan College Station TX | Texas A&M | Call (979) 693-9905 { "@context": "https://schema.org", "@type": "NGO", "@id": "https://carpool.tamu.edu/#organization", "name": "CARPOOL", "alternateName": ["Texas A&M CARPOOL", "TAMU CARPOOL", "Aggie CARPOOL", "CARPOOL Safe Rides"], "url": "https://carpool.tamu.edu", "logo": { "@type": "ImageObject", "url": "https://carpool.tamu.edu/wp-content/uploads/2016/11/Logo_SGA.png", "width": 200, "height": 200 }, "image": "https://carpool.tamu.edu/wp-content/uploads/2023/01/CarpoolCookies2016.jpg", "description": "CARPOOL is a Texas A&M student-run 501(c)(3) non-profit organization providing free, safe, and nonjudgmental rides home in Bryan/College Station every Friday and Saturday night from 10pm to 3am. Over 297,000 rides given since 1999.", "slogan": "Keeping Aggieland safe — one free ride at a time", "foundingDate": "1999", "foundingLocation": { "@type": "Place", "name": "Texas A&M University", "address": { "@type": "PostalAddress", "addressLocality": "College Station", "addressRegion": "TX", "addressCountry": "US" } }, "nonprofitStatus": "Nonprofit501c3", "telephone": "+1-979-693-9905", "email": "[email protected]", "address": { "@type": "PostalAddress", "addressLocality": "College Station", "addressRegion": "TX", "postalCode": "77840", "addressCountry": "US" }, "areaServed": [ { "@type": "City", "name": "College Station", "containedInPlace": { "@type": "State", "name": "Texas" } }, { "@type": "City", "name": "Bryan", "containedInPlace": { "@type": "State", "name": "Texas" } } ], "serviceArea": { "@type": "GeoCircle", "geoMidpoint": { "@type": "GeoCoordinates", "latitude": 30.627977, "longitude": -96.334407 }, "geoRadius": "15 mi" }, "sameAs": [ "https://www.facebook.com/tamucarpool/", "https://www.instagram.com/tamucarpool/", "https://twitter.com/tamucarpool", "https://sga.tamu.edu" ], "memberOf": { "@type": "Organization", "name": "Texas A&M Student Government Association", "url": "https://sga.tamu.edu" }, "parentOrganization": { "@type": "EducationalOrganization", "name": "Texas A&M University", "url": "https://www.tamu.edu" }, "knowsAbout": ["Safe transportation", "Designated driver services", "Drunk driving prevention", "Student safety"], "award": "Over 297,000 safe rides provided since 1999" } { "@context": "https://schema.org", "@type": "LocalBusiness", "@id": "https://carpool.tamu.edu/#localbusiness", "name": "CARPOOL - Free Safe Rides", "image": "https://carpool.tamu.edu/wp-content/uploads/2023/01/CarpoolCookies2016.jpg", "url": "https://carpool.tamu.edu", "telephone": "+1-979-693-9905", "email": "[email protected]", "priceRange": "Free", "address": { "@type": "PostalAddress", "streetAddress": "Texas A&M University", "addressLocality": "College Station", "addressRegion": "TX", "postalCode": "77840", "addressCountry": "US" }, "geo": { "@type": "GeoCoordinates", "latitude": 30.627977, "longitude": -96.334407 }, "openingHoursSpecification": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": "Friday", "opens": "22:00", "closes": "03:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": "Saturday", "opens": "22:00", "closes": "03:00" } ], "aggregateRating": { "@type": "AggregateRating", "ratingValue": "5", "ratingCount": "297588", "bestRating": "5", "worstRating": "1" } } { "@context": "https://schema.org", "@type": "Service", "@id": "https://carpool.tamu.edu/#service", "name": "CARPOOL Free Ride Service", "alternateName": ["Free Safe Ride Home", "Designated Driver Service", "Safe Ride Program"], "serviceType": "Free Transportation Service", "description": "Free, safe, nonjudgmental rides home for anyone in Bryan/College Station every Friday and Saturday night from 10pm to 3am during Fall and Spring semesters.", "provider": { "@id": "https://carpool.tamu.edu/#organization" }, "areaServed": [ {"@type": "City", "name": "College Station", "containedInPlace": {"@type": "State", "name": "Texas"}}, {"@type": "City", "name": "Bryan", "containedInPlace": {"@type": "State", "name": "Texas"}} ], "audience": { "@type": "Audience", "audienceType": "Anyone needing a safe ride home", "geographicArea": { "@type": "City", "name": "Bryan/College Station" } }, "availableChannel": { "@type": "ServiceChannel", "serviceUrl": "https://carpool.tamu.edu", "servicePhone": { "@type": "ContactPoint", "telephone": "+1-979-693-9905", "contactType": "Ride Request", "areaServed": "Bryan/College Station", "availableLanguage": "English", "hoursAvailable": { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Friday", "Saturday"], "opens": "22:00", "closes": "03:00" } } }, "hoursAvailable": [ { "@type": "OpeningHoursSpecification", "dayOfWeek": "Friday", "opens": "22:00", "closes": "03:00" }, { "@type": "OpeningHoursSpecification", "dayOfWeek": "Saturday", "opens": "22:00", "closes": "03:00" } ], "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD", "description": "Completely free - no cost, no tips accepted", "availability": "https://schema.org/InStock" }, "termsOfService": "Service available during Texas A&M Fall and Spring semesters only. Rides within Bryan/College Station city limits.", "category": ["Transportation", "Community Service", "Safety Program"] } { "@context": "https://schema.org", "@type": "FAQPage", "@id": "https://carpool.tamu.edu/#faq", "mainEntity": [ { "@type": "Question", "name": "Do I have to be a current Texas A&M student to use CARPOOL?", "acceptedAnswer": { "@type": "Answer", "text": "No. CARPOOL will take anyone home within Bryan/College Station city limits - students, parents, visitors - anyone who needs a ride." } }, { "@type": "Question", "name": "Do I have to be intoxicated to use CARPOOL?", "acceptedAnswer": { "@type": "Answer", "text": "No. You can use CARPOOL for any reason. We just want you home safely." } }, { "@type": "Question", "name": "Does CARPOOL take riders to Northgate or parties?", "acceptedAnswer": { "@type": "Answer", "text": "No. CARPOOL takes you home from the party - not to it. We only provide rides to your home address." } }, { "@type": "Question", "name": "What are CARPOOL's hours of operation?", "acceptedAnswer": { "@type": "Answer", "text": "CARPOOL operates every Friday and Saturday night from 10pm to 3am while Texas A&M classes are in session during Fall and Spring semesters. No service during summer months." } }, { "@type": "Question", "name": "How much does CARPOOL cost?", "acceptedAnswer": { "@type": "Answer", "text": "CARPOOL is completely FREE. We are a 501(c)(3) nonprofit and do not accept payment or tips." } }, { "@type": "Question", "name": "What is CARPOOL's phone number?", "acceptedAnswer": { "@type": "Answer", "text": "Call (979) 693-9905 for a free ride. This number is also on the back of every Texas A&M student ID." } }, { "@type": "Question", "name": "What areas does CARPOOL serve?", "acceptedAnswer": { "@type": "Answer", "text": "CARPOOL provides free rides anywhere within Bryan and College Station city limits in Texas." } } ] } { "@context": "https://schema.org", "@type": "HowTo", "@id": "https://carpool.tamu.edu/#howto", "name": "How to Get a Free Ride Home with CARPOOL", "description": "3 easy steps to get a free, safe ride home in Bryan/College Station on Friday and Saturday nights.", "totalTime": "PT30M", "estimatedCost": { "@type": "MonetaryAmount", "currency": "USD", "value": "0" }, "step": [ { "@type": "HowToStep", "position": 1, "name": "Call CARPOOL", "text": "Dial (979) 693-9905 when you're ready to head home. Available Friday and Saturday nights 10pm-3am.", "url": "tel:+19796939905" }, { "@type": "HowToStep", "position": 2, "name": "Volunteer picks you up", "text": "A student driver and navigator team will meet you at your location in a clearly marked CARPOOL vehicle." }, { "@type": "HowToStep", "position": 3, "name": "Get home safe", "text": "We'll take you home anywhere within Bryan/College Station city limits, completely free of charge." } ] } { "@context": "https://schema.org", "@type": "VideoObject", "@id": "https://carpool.tamu.edu/#video", "name": "What is CARPOOL? - 3 Minute Overview", "description": "Learn how CARPOOL keeps Aggieland safe with free rides home every Friday and Saturday night in Bryan/College Station.", "thumbnailUrl": "https://carpool.tamu.edu/wp-content/uploads/2023/01/CarpoolCookies2016.jpg", "uploadDate": "2023-02-01", "duration": "PT3M", "contentUrl": "https://carpool.tamu.edu/wp-content/uploads/2023/02/What-is-CARPOOL.mp4", "embedUrl": "https://carpool.tamu.edu/wp-content/uploads/2023/02/What-is-CARPOOL.mp4", "publisher": { "@id": "https://carpool.tamu.edu/#organization" } } { "@context": "https://schema.org", "@type": "WebPage", "@id": "https://carpool.tamu.edu/#webpage", "url": "https://carpool.tamu.edu/", "name": "CARPOOL - Free Safe Rides Home in Bryan/College Station", "description": "Get a free, safe ride home in Bryan/College Station every Friday and Saturday night. Texas A&M student-run nonprofit. Call (979) 693-9905.", "isPartOf": { "@type": "WebSite", "@id": "https://carpool.tamu.edu/#website", "url": "https://carpool.tamu.edu", "name": "CARPOOL", "publisher": { "@id": "https://carpool.tamu.edu/#organization" } }, "about": { "@id": "https://carpool.tamu.edu/#service" }, "mainEntity": { "@id": "https://carpool.tamu.edu/#service" }, "primaryImageOfPage": { "@type": "ImageObject", "url": "https://carpool.tamu.edu/wp-content/uploads/2023/01/CarpoolCookies2016.jpg" }, "breadcrumb": { "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://carpool.tamu.edu/" } ] }, "speakable": { "@type": "SpeakableSpecification", "cssSelector": [".hero-title", ".hero-promise", ".section-subtitle"] }, "lastReviewed": "2025-01-01", "reviewedBy": { "@id": "https://carpool.tamu.edu/#organization" } } { "@context": "https://schema.org", "@type": "ContactPoint", "telephone": "+1-979-693-9905", "contactType": "customer service", "areaServed": ["Bryan", "College Station", "Texas"], "availableLanguage": "English", "hoursAvailable": { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Friday", "Saturday"], "opens": "22:00", "closes": "03:00" } } /* ============================================================ CARPOOL HOME PAGE - Complete Redesign Mobile-First, WOW Factor Edition ============================================================ */ /* CSS Reset & Base */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { /* Brand Colors */ --maroon: #500000; --maroon-light: #6a0000; --maroon-dark: #3a0000; --maroon-glow: rgba(80, 0, 0, 0.4); /* Neutrals */ --white: #ffffff; --gray-50: #fafafa; --gray-100: #f4f4f5; --gray-200: #e4e4e7; --gray-300: #d4d4d8; --gray-400: #a1a1aa; --gray-500: #71717a; --gray-600: #52525b; --gray-700: #3f3f46; --gray-800: #27272a; --gray-900: #18181b; --black: #09090b; /* Semantic */ --success: #10b981; --success-bg: rgba(16, 185, 129, 0.1); --warning: #f59e0b; --warning-bg: rgba(245, 158, 11, 0.1); --error: #ef4444; --error-bg: rgba(239, 68, 68, 0.1); /* Typography */ --font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; /* Spacing */ --space-xs: 4px; --space-sm: 8px; --space-md: 16px; --space-lg: 24px; --space-xl: 32px; --space-2xl: 48px; --space-3xl: 64px; --space-4xl: 96px; /* Layout */ --shell-max: 1280px; --shell-pad: clamp(20px, 4vw, 40px); /* Border Radius */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 24px; --radius-2xl: 32px; --radius-full: 9999px; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1); --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1); --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1); --shadow-2xl: 0 25px 50px -12px rgba(0,0,0,0.25); --shadow-glow: 0 0 40px var(--maroon-glow); /* Transitions */ --ease: cubic-bezier(0.4, 0, 0.2, 1); --ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1); --duration: 0.3s; --duration-slow: 0.5s; } html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; } body { font-family: var(--font); font-size: 16px; line-height: 1.6; color: var(--gray-900); background: var(--gray-50); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; overflow-x: hidden; max-width: 100vw; } html { overflow-x: hidden; } /* Global overflow prevention */ html, body { width: 100%; position: relative; } .page-wrapper { width: 100%; overflow-x: hidden; position: relative; } /* Override Avada theme margins */ .fusion-layout-column .fusion-column-wrapper { margin-left: 0 !important; margin-right: 0 !important; padding-left: 0 !important; padding-right: 0 !important; } /* ============================================================ HERO SECTION - Beautiful & Refined ============================================================ */ .hero { position: relative; padding: var(--space-lg) var(--shell-pad); padding-top: max(var(--space-md), env(safe-area-inset-top)); background: linear-gradient(180deg, #fafafa 0%, #f5f5f7 100%); text-align: center; overflow: hidden; } .hero-content { max-width: var(--shell-max); margin: 0 auto; position: relative; z-index: 1; } /* Service Banner - Matching index.html */ .carpool-banner { display: grid; grid-template-columns: auto 1fr; gap: 12px; background: var(--white); border: none; border-radius: var(--radius-xl); padding: 14px 18px; box-shadow: var(--shadow-md); margin-bottom: var(--space-xl); position: relative; overflow: hidden; transition: all 0.3s var(--ease); border-top: 3px solid var(--maroon); text-align: left; } .carpool-banner:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); } .carpool-banner .icon { width: 40px; height: 40px; border-radius: var(--radius-md); background: #f3f4f6; color: var(--maroon); display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 20px; line-height: 1; border: 2px solid rgba(0,0,0,0.1); flex-shrink: 0; align-self: center; } .carpool-banner .banner-text { margin: 0; line-height: 1.5; font-size: 1rem; align-self: center; } .carpool-banner strong { white-space: normal; } /* Error / downtime style */ .carpool-banner.error { border-top-color: #dc2626; } .carpool-banner.error .icon { background: linear-gradient(135deg, rgba(220,38,38,0.1) 0%, rgba(239,68,68,0.15) 100%); color: #dc2626; border-color: rgba(220,38,38,0.2); } .carpool-banner.error .banner-text strong { color: #dc2626; } /* Success / running style */ .carpool-banner.success { border-top-color: #10b981; } .carpool-banner.success .icon { background: linear-gradient(135deg, rgba(16,185,129,0.1) 0%, rgba(16,185,129,0.15) 100%); color: #10b981; font-size: 24px; border-color: rgba(16,185,129,0.2); } .carpool-banner.success .banner-text strong { color: #10b981; } @media (max-width: 767px) { .carpool-banner { padding: 10px 12px; gap: 10px; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); } .carpool-banner .icon { width: 32px; height: 32px; font-size: 14px; border-radius: 8px; } .carpool-banner .banner-text { font-size: 0.85rem; line-height: 1.4; } } /* Hero Title - Elegant */ .hero-title { font-size: clamp(1.4rem, 4vw, 1.85rem) !important; font-weight: 600 !important; color: var(--gray-900) !important; line-height: 1.4 !important; letter-spacing: 0 !important; margin-bottom: var(--space-lg) !important; text-wrap: balance; } /* Stats Card - Premium Feel */ .hero-stats-card { background: var(--white); border-radius: var(--radius-2xl); padding: var(--space-xl) var(--space-lg); margin-bottom: var(--space-xl); box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 4px 12px rgba(0,0,0,0.04), 0 16px 40px rgba(0,0,0,0.06); position: relative; overflow: hidden; border: 1px solid rgba(255,255,255,0.8); transition: all 0.4s var(--ease); } .hero-stats-card:hover { transform: translateY(-4px); box-shadow: 0 2px 4px rgba(0,0,0,0.04), 0 8px 20px rgba(0,0,0,0.06), 0 24px 60px rgba(0,0,0,0.08); } .hero-stats-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, var(--maroon) 0%, var(--maroon-light) 50%, var(--maroon) 100%); background-size: 200% 100%; animation: shimmer 3s ease-in-out infinite; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .stat-number { font-size: clamp(3rem, 12vw, 4.5rem); font-weight: 900; background: linear-gradient(135deg, var(--maroon) 0%, #8b0000 50%, var(--maroon-light) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; line-height: 1; margin-bottom: var(--space-sm); letter-spacing: -0.03em; } .stat-label { font-size: 0.85rem; color: var(--gray-500); font-weight: 600; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: var(--space-lg); } /* Hero promise - matching index.html */ .hero-promise { margin-top: var(--space-lg); font-size: clamp(1rem, 2.5vw, 1.35rem); font-weight: 700; color: var(--gray-900); line-height: 1.4; text-wrap: balance; } .promise-pop { position: relative; font-weight: 800; color: var(--maroon); background: linear-gradient(180deg, rgba(80,0,0,0.06) 0%, rgba(80,0,0,0.03) 100%); padding: 0.1em 0.5em; border-radius: var(--radius-sm); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; box-decoration-break: clone; -webkit-box-decoration-break: clone; border-bottom: 3px solid var(--maroon); } /* Hero CTA - Polished */ .hero-cta { display: flex; flex-direction: column; gap: var(--space-sm); max-width: 340px; margin: 0 auto; } .btn-call { display: flex; align-items: center; justify-content: center; gap: var(--space-sm); padding: 18px var(--space-xl); background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: var(--white); font-size: 1.05rem; font-weight: 700; text-decoration: none; border-radius: var(--radius-xl); border: none; box-shadow: 0 4px 14px rgba(80,0,0,0.25), 0 8px 30px rgba(80,0,0,0.15), inset 0 1px 0 rgba(255,255,255,0.1); transition: all var(--duration) var(--ease); cursor: pointer; position: relative; overflow: hidden; } .btn-call::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); transition: left 0.5s ease; } .btn-call:hover::before { left: 100%; } .btn-call:hover { transform: translateY(-3px); box-shadow: 0 6px 20px rgba(80,0,0,0.3), 0 12px 40px rgba(80,0,0,0.2), inset 0 1px 0 rgba(255,255,255,0.15); } .btn-call:active { transform: translateY(-1px); } .btn-call svg { width: 20px; height: 20px; } .btn-secondary { display: flex; align-items: center; justify-content: center; gap: var(--space-sm); padding: 14px var(--space-lg); background: transparent; color: var(--gray-600); font-size: 0.95rem; font-weight: 600; text-decoration: none; border-radius: var(--radius-lg); border: none; transition: all var(--duration) var(--ease); } .btn-secondary:hover { color: var(--maroon); } .scroll-indicator { display: none; } /* Animations */ @keyframes fadeInDown { from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* ============================================================ MAIN CONTENT WRAPPER ============================================================ */ .main-content { position: relative; background: var(--gray-50); overflow-x: hidden; } .section { padding: var(--space-2xl) var(--shell-pad); position: relative; z-index: 1; } /* Alternating section backgrounds */ .section:nth-of-type(odd) { background: var(--white); } .section:nth-of-type(even) { background: var(--gray-50); } /* Subtle divider between sections */ .section::after { content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 80%; max-width: 600px; height: 1px; background: linear-gradient(90deg, transparent, rgba(0,0,0,0.06), transparent); } .section:last-of-type::after { display: none; } .section-inner { max-width: var(--shell-max); margin: 0 auto; position: relative; } .section-header { text-align: center; margin-bottom: var(--space-2xl); } .section-badge { display: inline-flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-lg); background: linear-gradient(135deg, rgba(80,0,0,0.08) 0%, rgba(80,0,0,0.04) 100%); border: 1px solid rgba(80,0,0,0.12); border-radius: var(--radius-full); font-size: 0.75rem; font-weight: 800; color: var(--maroon); letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: var(--space-lg); box-shadow: 0 2px 8px rgba(80,0,0,0.06); } .section-title { font-size: clamp(1.5rem, 4vw, 2.1rem) !important; font-weight: 900; color: var(--gray-900); line-height: 1.15; letter-spacing: -0.025em; margin-bottom: var(--space-md); text-wrap: balance; } .section-subtitle { font-size: 1.1rem !important; color: var(--gray-500) !important; max-width: 560px !important; margin: 0 auto !important; line-height: 1.7 !important; font-weight: 450 !important; text-align: center !important; } /* ============================================================ ABOUT SECTION - Premium & Polished ============================================================ */ .about-section { background: var(--white); position: relative; overflow: hidden; } .about-section::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: linear-gradient(90deg, transparent, var(--gray-200), transparent); } .about-grid { display: grid; gap: var(--space-xl); } .about-card { background: var(--gray-50); border-radius: var(--radius-2xl); padding: var(--space-xl); border: 1px solid var(--gray-200); position: relative; transition: all 0.4s var(--ease); } .about-card:hover { transform: translateY(-4px); box-shadow: 0 4px 12px rgba(0,0,0,0.04), 0 16px 40px rgba(0,0,0,0.08); border-color: rgba(80,0,0,0.15); } .about-card h3 { font-size: 1.35rem; font-weight: 800; color: var(--gray-900); margin-bottom: var(--space-lg); display: flex; align-items: center; gap: var(--space-sm); } .about-card h3::before { content: ''; width: 4px; height: 24px; background: linear-gradient(180deg, var(--maroon) 0%, var(--maroon-light) 100%); border-radius: 2px; } .about-card p { color: var(--gray-600); line-height: 1.8; margin-bottom: var(--space-md); font-size: 1.02rem; } .about-card p strong { color: var(--gray-800); font-weight: 600; } .about-card p:last-child { margin-bottom: 0; } /* FAQ Accordion - Enhanced */ .faq-list { display: flex; flex-direction: column; gap: var(--space-sm); margin-top: var(--space-lg); } .faq-item { background: var(--white); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); overflow: hidden; transition: all 0.3s var(--ease); } .faq-item:hover { border-color: rgba(80,0,0,0.2); box-shadow: 0 2px 8px rgba(0,0,0,0.04); } .faq-item[open] { border-color: var(--maroon); box-shadow: 0 0 0 3px rgba(80,0,0,0.08), 0 4px 12px rgba(80,0,0,0.08); background: linear-gradient(135deg, rgba(80,0,0,0.02) 0%, transparent 100%); } .faq-item summary { display: flex; align-items: center; justify-content: space-between; padding: var(--space-md) var(--space-lg); font-weight: 600; font-size: 0.95rem; color: var(--gray-800); cursor: pointer; list-style: none; transition: all 0.25s var(--ease); gap: var(--space-md); } .faq-item summary::-webkit-details-marker { display: none; } .faq-item summary:hover { background: rgba(80,0,0,0.02); color: var(--maroon); } .faq-item[open] summary { color: var(--maroon); font-weight: 700; } .faq-item summary::after { content: ''; width: 20px; height: 20px; flex-shrink: 0; background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); border-radius: var(--radius-full); position: relative; transition: transform 0.3s var(--ease); } .faq-item summary::after { content: '+'; display: flex; align-items: center; justify-content: center; font-size: 1rem; font-weight: 600; color: var(--white); } .faq-item[open] summary::after { transform: rotate(135deg); } .faq-answer { padding: 0 var(--space-lg) var(--space-lg); color: var(--gray-600); line-height: 1.8; border-top: 1px solid rgba(80,0,0,0.08); margin-top: 0; padding-top: var(--space-md); font-size: 0.95rem; animation: fadeIn 0.3s var(--ease); } /* Video Section - Cinematic */ .video-card { position: relative; border-radius: var(--radius-2xl); overflow: hidden; background: var(--gray-900); aspect-ratio: 16/9; box-shadow: 0 8px 30px rgba(0,0,0,0.12), 0 20px 60px rgba(0,0,0,0.1); transition: all 0.4s var(--ease); } .video-card::before { content: ''; position: absolute; inset: 0; border-radius: var(--radius-2xl); padding: 2px; background: linear-gradient(135deg, rgba(80,0,0,0.3) 0%, transparent 50%, rgba(80,0,0,0.2) 100%); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; } .video-card:hover { transform: scale(1.02); box-shadow: 0 12px 40px rgba(0,0,0,0.15), 0 30px 80px rgba(0,0,0,0.12); } .video-card video { width: 100%; height: 100%; object-fit: cover; } .video-caption { text-align: center; padding: var(--space-md) var(--space-sm); color: var(--gray-500); font-size: 0.85rem; font-weight: 500; letter-spacing: 0.01em; } /* ============================================================ HOW IT WORKS - Elevated Design ============================================================ */ .how-section { background: var(--gray-50); position: relative; overflow: hidden; } .how-section::before { content: ''; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; max-width: 600px; height: 600px; background: radial-gradient(circle, rgba(80,0,0,0.03) 0%, transparent 70%); pointer-events: none; } .steps-grid { display: grid; gap: var(--space-lg); position: relative; } .step-card { position: relative; background: var(--white); border-radius: var(--radius-2xl); padding: var(--space-lg); padding-top: var(--space-xl); border: 1px solid var(--gray-200); text-align: center; transition: all 0.4s var(--ease); z-index: 1; } .step-card::after { content: ''; position: absolute; inset: 0; border-radius: var(--radius-2xl); background: linear-gradient(135deg, rgba(80,0,0,0.02) 0%, transparent 100%); opacity: 0; transition: opacity 0.4s var(--ease); pointer-events: none; } .step-card:hover { transform: translateY(-8px); box-shadow: 0 8px 30px rgba(80,0,0,0.08), 0 20px 50px rgba(0,0,0,0.08); border-color: var(--maroon); } .step-card:hover::after { opacity: 1; } .step-number { position: absolute; top: -20px; left: 50%; transform: translateX(-50%); width: 44px; height: 44px; background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: var(--white); font-size: 1.2rem; font-weight: 900; border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px var(--maroon-glow), 0 6px 20px rgba(80,0,0,0.2); border: 3px solid var(--white); transition: all 0.3s var(--ease); } .step-card:hover .step-number { transform: translateX(-50%) scale(1.1); box-shadow: 0 6px 20px var(--maroon-glow), 0 12px 40px rgba(80,0,0,0.25); } .step-title { font-size: 0.95rem !important; font-weight: 700 !important; color: var(--gray-900) !important; margin-bottom: var(--space-xs) !important; margin-top: 0 !important; } .step-text { color: var(--gray-600); font-size: 0.95rem; line-height: 1.7; } /* ============================================================ HOURS SECTION - Bold & Beautiful ============================================================ */ .hours-section { background: var(--white); position: relative; overflow: hidden; } .hours-card { background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-dark) 100%); border-radius: var(--radius-2xl); padding: var(--space-2xl) var(--space-xl); text-align: center; color: var(--white); position: relative; overflow: hidden; box-shadow: 0 4px 16px rgba(80,0,0,0.15); max-width: 600px; margin: 0 auto; } /* Decorative corner elements */ .hours-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 200px; background: radial-gradient(ellipse at 50% -50%, rgba(255,255,255,0.15) 0%, transparent 60%); pointer-events: none; } .hours-card::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 100px; background: linear-gradient(0deg, rgba(0,0,0,0.15) 0%, transparent 100%); pointer-events: none; } .hours-icon { width: 72px; height: 72px; background: rgba(255,255,255,0.2); border-radius: var(--radius-full); display: flex; align-items: center; justify-content: center; margin: 0 auto var(--space-lg); position: relative; z-index: 1; box-shadow: 0 8px 32px rgba(0,0,0,0.2); animation: float 3s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } } .hours-icon svg { width: 34px; height: 34px; } .hours-title { font-size: 1.3rem !important; font-weight: 700 !important; margin-bottom: var(--space-sm) !important; text-transform: uppercase !important; letter-spacing: 0.08em !important; position: relative; z-index: 1; color: #fff !important; } .hours-time { font-size: clamp(2.5rem, 8vw, 4rem); font-weight: 900; letter-spacing: -0.03em; margin-bottom: var(--space-md); text-shadow: 0 4px 30px rgba(0,0,0,0.3); position: relative; z-index: 1; line-height: 1.1; } .hours-days { display: inline-flex; align-items: center; gap: var(--space-sm); padding: var(--space-sm) var(--space-xl); background: rgba(255,255,255,0.2); border-radius: var(--radius-full); font-weight: 700; font-size: 1.05rem; margin-bottom: var(--space-lg); position: relative; z-index: 1; box-shadow: 0 4px 20px rgba(0,0,0,0.15); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .hours-note { font-size: 0.9rem !important; opacity: 0.85; line-height: 1.7 !important; max-width: 420px !important; margin: 0 auto !important; position: relative; z-index: 1; text-align: center !important; } /* ============================================================ TEAM SPOTLIGHT - Elegant Carousel ============================================================ */ .team-section { background: var(--gray-50); } .team-spotlight { background: var(--white); border-radius: var(--radius-2xl); border: 1px solid var(--gray-200); overflow: hidden; box-shadow: 0 4px 16px rgba(0,0,0,0.04), 0 16px 48px rgba(0,0,0,0.08); max-width: 900px; margin: 0 auto; transition: all 0.4s var(--ease); } .team-spotlight:hover { box-shadow: 0 8px 24px rgba(0,0,0,0.06), 0 24px 64px rgba(0,0,0,0.1); } .ts-stage { position: relative; min-height: 320px; } .ts-slide { position: absolute; inset: 0; display: grid; grid-template-columns: 1fr; opacity: 0; pointer-events: none; transition: opacity 0.5s var(--ease); } .ts-slide.is-active { position: relative; opacity: 1; pointer-events: auto; } .ts-photo-wrap { aspect-ratio: 4/3; overflow: hidden; position: relative; } .ts-photo-wrap::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.1) 100%); pointer-events: none; } .ts-photo { width: 100%; height: 100%; object-fit: cover; object-position: center 20%; transition: transform 0.6s var(--ease); } .ts-slide:hover .ts-photo { transform: scale(1.03); } .ts-info { padding: var(--space-md); display: flex; flex-direction: column; gap: 2px; } .ts-name { font-size: 1.2rem; font-weight: 800; color: var(--gray-900); letter-spacing: -0.01em; margin: 0; } .ts-role { font-size: 0.9rem; color: var(--maroon); font-weight: 700; display: inline-flex; align-items: center; gap: var(--space-xs); margin: 0; } .ts-role::before { content: ''; width: 6px; height: 6px; background: var(--maroon); border-radius: 50%; } .ts-facts { display: flex; flex-direction: column; gap: 0; margin-top: var(--space-sm); padding: var(--space-xs) var(--space-sm); background: #fffef8; border-radius: var(--radius-md); max-height: 110px; overflow-y: auto; border: 1px solid #e8e4d9; box-shadow: inset 0 1px 3px rgba(0,0,0,0.04); } .ts-fact { font-size: 0.8rem; line-height: 1.4; padding: 4px 0; border-bottom: 1px solid #e8e4d9; display: flex; gap: 4px; } .ts-fact:last-child { border-bottom: none; } .ts-fact .k { font-weight: 700; color: var(--maroon); } .ts-fact .k::after { content: ':'; } .ts-fact .v { color: var(--gray-600); } .ts-actions { display: flex; gap: var(--space-sm); margin-top: var(--space-sm); flex-wrap: wrap; } .ts-btn { display: inline-flex; align-items: center; justify-content: center; padding: var(--space-sm) var(--space-lg); background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: var(--white); font-size: 0.9rem; font-weight: 700; text-decoration: none; border-radius: var(--radius-lg); border: none; transition: all 0.3s var(--ease); flex: 1; min-width: 100px; box-shadow: 0 2px 8px rgba(80,0,0,0.2); } .ts-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(80,0,0,0.3); } .ts-controls { display: flex; justify-content: center; gap: var(--space-sm); padding: var(--space-md); border-top: 1px solid var(--gray-100); background: var(--gray-50); } .ts-prev, .ts-next { width: 48px; height: 48px; border-radius: var(--radius-full); border: 2px solid var(--gray-200); background: var(--white); font-size: 1.35rem; color: var(--gray-600); cursor: pointer; transition: all 0.3s var(--ease); display: flex; align-items: center; justify-content: center; } .ts-prev:hover, .ts-next:hover { border-color: var(--maroon); color: var(--white); background: var(--maroon); transform: scale(1.1); box-shadow: 0 4px 16px rgba(80,0,0,0.3); } /* ============================================================ CTA SECTION - Action-Focused ============================================================ */ .cta-section { background: var(--white); padding-bottom: var(--space-xl); position: relative; overflow: hidden; } .cta-section .section-inner { position: relative; z-index: 1; } .cta-grid { display: grid; gap: var(--space-md); } .cta-tile { display: flex; align-items: center; gap: var(--space-lg); padding: var(--space-xl); background: var(--white); border: 1px solid var(--gray-200); border-radius: var(--radius-2xl); text-decoration: none; transition: all 0.4s var(--ease); box-shadow: 0 2px 8px rgba(0,0,0,0.02); position: relative; overflow: hidden; } .cta-tile::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: linear-gradient(180deg, var(--maroon) 0%, var(--maroon-light) 100%); transform: scaleY(0); transition: transform 0.3s var(--ease); } .cta-tile:hover { transform: translateY(-6px); box-shadow: 0 8px 24px rgba(0,0,0,0.06), 0 24px 48px rgba(0,0,0,0.08); border-color: rgba(80,0,0,0.15); } .cta-tile:hover::before { transform: scaleY(1); } .cta-icon { width: 60px; height: 60px; flex-shrink: 0; background: linear-gradient(135deg, rgba(80,0,0,0.08) 0%, rgba(80,0,0,0.04) 100%); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; color: var(--maroon); transition: all 0.3s var(--ease); } .cta-tile:hover .cta-icon { background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: var(--white); transform: scale(1.05); box-shadow: 0 4px 16px rgba(80,0,0,0.25); } .cta-icon svg { width: 26px; height: 26px; } .cta-copy { flex: 1; min-width: 0; } .cta-copy strong { display: block; font-size: 1.1rem; font-weight: 800; color: var(--gray-900); margin-bottom: 4px; transition: color 0.3s var(--ease); } .cta-tile:hover .cta-copy strong { color: var(--maroon); } .cta-copy .meta { font-size: 0.9rem; color: var(--gray-500); font-weight: 500; } /* Support Row - Matching index.html */ .cta-support { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 32px; background: #fff; border: none; border-radius: var(--radius-xl); padding: 20px 24px; box-shadow: var(--shadow-md); } .cta-support .chip { display: inline-flex; align-items: center; gap: 10px; padding: 10px 18px; border-radius: var(--radius-full); background: linear-gradient(135deg, rgba(80,0,0,0.08) 0%, rgba(80,0,0,0.04) 100%); border: 2px solid rgba(0,0,0,0.08); font-weight: 700; color: var(--maroon); text-decoration: none; transition: all 0.25s var(--ease); } .cta-support .chip:hover { background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: #fff; transform: scale(1.05); } .cta-support .spacer { flex: 1 1 auto; } .cta-social { display: flex; gap: 10px; } .cta-social .social { display: grid; place-items: center; width: 44px; height: 44px; border-radius: var(--radius-md); text-decoration: none; background: linear-gradient(135deg, rgba(80,0,0,0.08) 0%, rgba(80,0,0,0.04) 100%); border: 2px solid rgba(0,0,0,0.08); box-shadow: var(--shadow-sm); font-weight: 900; color: var(--maroon); transition: all 0.25s var(--ease); } .cta-social .social:hover { background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: #fff; transform: scale(1.1) rotate(5deg); } @media (max-width: 767px) { .cta-support { padding: 14px 16px; border-radius: 14px; margin-top: 16px; gap: 10px; } .cta-support .chip { padding: 10px 16px; min-height: 44px; font-size: 0.9rem; flex: 1; justify-content: center; } .cta-support .spacer { display: none; } .cta-social { width: 100%; justify-content: center; margin-top: 8px; } .cta-social .social { width: 48px; height: 48px; border-radius: 12px; font-size: 1.1rem; } } /* ============================================================ FOOTER - Matching index.html ============================================================ */ .carpool-footer { background: #500000; color: #fff; padding: 40px var(--shell-pad); text-align: center; margin: 0; width: 100%; box-shadow: 0 -4px 20px rgba(0,0,0,.1); position: relative; } .carpool-footer .footer-inner { max-width: 800px; margin: 0 auto; } .carpool-footer .footer-title { margin: 0 0 10px; font-size: 1.05rem; font-weight: 600; letter-spacing: 0.02em; } .carpool-footer .footer-title strong { font-weight: 800; } .carpool-footer .footer-stats { margin: 0 0 18px; font-size: 0.92rem; opacity: 0.9; } .carpool-footer .footer-actions { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin-bottom: 22px; } .carpool-footer .footer-btn { color: #fff; text-decoration: none; padding: 11px 22px; background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.18); border-radius: 10px; font-weight: 600; font-size: 0.9rem; transition: all 0.3s var(--ease); display: inline-flex; align-items: center; gap: 8px; } .carpool-footer .footer-btn:hover { background: rgba(255,255,255,0.2); transform: translateY(-2px); } .carpool-footer .footer-sga { border-top: 1px solid rgba(255,255,255,0.15); padding-top: 22px; display: flex; align-items: center; justify-content: center; gap: 18px; flex-wrap: wrap; } .carpool-footer .footer-sga img { height: 48px; width: auto; filter: brightness(0) invert(1); opacity: 0.9; } .carpool-footer .footer-sga p { margin: 0; font-size: 0.85rem; opacity: 0.9; max-width: 480px; line-height: 1.5; } .carpool-footer .footer-sga a { color: #fff; text-decoration: underline; text-underline-offset: 2px; padding: 0; background: none; } .carpool-footer .mobile-break { display: none; } @media (max-width: 767px) { .carpool-footer { padding: 28px 16px; padding-bottom: max(28px, calc(16px + env(safe-area-inset-bottom))); } .carpool-footer .footer-inner { display: flex; flex-direction: column; gap: 16px; } .carpool-footer .footer-title { font-size: 1rem; margin: 0; } .carpool-footer .footer-stats { font-size: 0.9rem; margin: 0; } .carpool-footer .footer-actions { flex-direction: column; gap: 10px; margin-bottom: 0; } .carpool-footer .footer-btn { width: 100%; justify-content: center; padding: 14px 20px; min-height: 48px; font-size: 1rem; border-radius: 12px; } .carpool-footer .footer-sga { flex-direction: column; gap: 12px; padding-top: 20px; text-align: center; } .carpool-footer .footer-sga img { height: 40px; } .carpool-footer .footer-sga p { font-size: 0.85rem; max-width: 100%; } .carpool-footer .mobile-break { display: block; } } /* ============================================================ MODAL STYLES ============================================================ */ .ride-modal-root { position: relative; z-index: 9999999; isolation: isolate; } #ride-modal-toggle { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; clip-path: inset(50%); border: 0; padding: 0; margin: -1px; } .ride-modal-overlay, .ride-modal { position: fixed; inset: 0; display: none; } .ride-modal-root #ride-modal-toggle:checked ~ .ride-modal-overlay, .ride-modal-root #ride-modal-toggle:checked ~ .ride-modal { display: block; } .ride-modal-overlay { cursor: pointer; background: rgba(0,0,0,0.8); pointer-events: auto; z-index: 9999998; -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); } .ride-modal { position: fixed; z-index: 9999999; } .ride-modal__panel { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; padding: 20px; overflow: auto; pointer-events: none; z-index: 130; } .ride-modal__card { pointer-events: auto; width: min(92vw, 400px); max-height: 90vh; background: #fff; border-radius: var(--radius-2xl); box-shadow: var(--shadow-2xl); display: flex; flex-direction: column; overflow: hidden; text-align: center; animation: modalPop 0.4s var(--ease-bounce); } .ride-modal__card[hidden] { display: none; } @keyframes modalPop { from { opacity: 0; transform: scale(0.9) translateY(20px); } to { opacity: 1; transform: scale(1) translateY(0); } } .ride-modal__icon { width: 72px; height: 72px; margin: var(--space-xl) auto 0; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 32px; background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: #fff; box-shadow: 0 8px 24px var(--maroon-glow); } .ride-modal__icon--warning { background: linear-gradient(135deg, var(--warning) 0%, #d97706 100%); box-shadow: 0 8px 24px rgba(245,158,11,0.4); } .ride-modal__head { padding: var(--space-lg) var(--space-xl) 0; } .ride-modal__title { font-size: 1.15rem !important; font-weight: 800 !important; color: var(--gray-900) !important; white-space: nowrap; } .ride-modal__subtitle { margin-top: var(--space-sm); font-size: 0.95rem; color: var(--gray-600); } .ride-modal__close { position: absolute; top: var(--space-md); right: var(--space-md); width: 40px; height: 40px; border-radius: 50%; background: var(--gray-100); border: none; font-size: 1.2rem; color: var(--gray-500); cursor: pointer; display: flex; align-items: center; justify-content: center; text-decoration: none; transition: all var(--duration) var(--ease); } .ride-modal__close:hover { background: var(--gray-200); color: var(--gray-700); } .ride-modal__body { padding: var(--space-md) var(--space-xl); color: var(--gray-600); line-height: 1.6; } .ride-modal__actions { display: flex; flex-direction: column; gap: var(--space-sm); padding: var(--space-xl); padding-bottom: max(var(--space-xl), env(safe-area-inset-bottom)); } .ride-btn { display: flex; align-items: center; justify-content: center; gap: var(--space-sm); padding: var(--space-md) var(--space-lg); border-radius: var(--radius-lg); font-size: 1rem; font-weight: 700; text-decoration: none; border: none; cursor: pointer; transition: all var(--duration) var(--ease); } .ride-btn--call { background: linear-gradient(135deg, var(--maroon) 0%, var(--maroon-light) 100%); color: var(--white); box-shadow: 0 4px 16px var(--maroon-glow); } .ride-btn--call:hover { transform: translateY(-2px); box-shadow: 0 6px 24px var(--maroon-glow); } .ride-btn--secondary { background: var(--gray-100); color: var(--gray-700); } .ride-btn--secondary:hover { background: var(--gray-200); } .ride-btn svg { width: 20px; height: 20px; } /* Hide modal when no card visible */ .ride-modal-root:not(:has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden]))) .ride-modal, .ride-modal-root:not(:has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden]))) .ride-modal-overlay { display: none; } .ride-modal-root #ride-modal-toggle:not(:checked) ~ .ride-modal, .ride-modal-root #ride-modal-toggle:not(:checked) ~ .ride-modal-overlay { display: none; } /* Lock body scroll when modal open */ body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) { overflow: hidden; position: fixed; width: 100%; height: 100%; } /* Hide WordPress header when modal open */ body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) .fusion-header-wrapper, body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) .fusion-header, body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) .fusion-header-shadow, body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) .fusion-mobile-menu-design-modern, body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) .fusion-sticky-header-wrapper, body:has(.ride-modal-root #ride-modal-toggle:checked):has(#ride-card-open:not([hidden]), #ride-card-winddown:not([hidden])) #wrapper > header { visibility: hidden !important; opacity: 0 !important; pointer-events: none !important; z-index: 0 !important; } /* ============================================================ DESKTOP STYLES (768px+) ============================================================ */ @media (min-width: 768px) { .section { padding: var(--space-3xl) var(--shell-pad); } .hero { padding: var(--space-xl) var(--shell-pad); } .hero-stats-card { padding: var(--space-2xl) var(--space-3xl); } .hero-cta { flex-direction: row; justify-content: center; max-width: 480px; } .btn-call { flex: 1; } .btn-secondary { flex: 0 0 auto; } .about-grid { grid-template-columns: 1fr 1fr; gap: var(--space-xl); align-items: stretch; } .about-card { padding: var(--space-2xl); } .about-card:last-child { display: flex; flex-direction: column; justify-content: center; } .steps-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-xl); } .step-card { padding: var(--space-lg); padding-top: var(--space-xl); } .ts-slide { grid-template-columns: 1fr 1.5fr; } .ts-photo-wrap { aspect-ratio: auto; min-height: 320px; } .ts-info { padding: var(--space-lg); justify-content: center; } .ts-name { font-size: 1.3rem; } .ts-controls { position: relative; border-top: 1px solid var(--gray-100); padding: var(--space-md); gap: var(--space-sm); background: var(--gray-50); } .cta-grid { grid-template-columns: repeat(3, 1fr); gap: var(--space-lg); } .hours-card { padding: var(--space-3xl) var(--space-2xl); } } /* ============================================================ LARGE DESKTOP (1024px+) ============================================================ */ @media (min-width: 1024px) { .hero-content { max-width: 1000px; } .hero-stats-card { max-width: 800px; margin-left: auto; margin-right: auto; } .ts-slide { grid-template-columns: 1fr 1.5fr; } .ts-info { padding: var(--space-2xl); } .ts-facts { max-height: 120px; } } /* ============================================================ SCROLL REVEAL ANIMATIONS ============================================================ */ .reveal { opacity: 0; transform: translateY(30px); transition: opacity 0.7s var(--ease), transform 0.7s var(--ease); } .reveal.is-visible { opacity: 1; transform: translateY(0); } .reveal-delay-1 { transition-delay: 0.1s; } .reveal-delay-2 { transition-delay: 0.2s; } .reveal-delay-3 { transition-delay: 0.3s; } /* Staggered animation for grid items */ .step-card, .cta-tile, .about-card { opacity: 0; transform: translateY(20px); transition: opacity 0.6s var(--ease), transform 0.6s var(--ease), box-shadow 0.4s var(--ease), border-color 0.4s var(--ease); } .step-card.is-visible, .cta-tile.is-visible, .about-card.is-visible { opacity: 1; transform: translateY(0); } /* Additional elements reveal */ .section-header, .hours-card, .team-spotlight { opacity: 0; transform: translateY(24px); transition: opacity 0.6s var(--ease), transform 0.6s var(--ease); } .section-header.is-visible, .hours-card.is-visible, .team-spotlight.is-visible { opacity: 1; transform: translateY(0); } /* ============================================================ REDUCED MOTION ============================================================ */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } html { scroll-behavior: auto; } .reveal, .step-card, .cta-tile, .about-card, .section-header, .hours-card, .team-spotlight { opacity: 1; transform: none; transition: none; } } /* ============================================================ TOUCH DEVICE OPTIMIZATIONS ============================================================ */ @media (hover: none) and (pointer: coarse) { .step-card:hover, .cta-tile:hover { transform: none; box-shadow: var(--shadow-md); } .step-card:active, .cta-tile:active, .ts-btn:active, .btn-call:active, .btn-secondary:active { transform: scale(0.98); opacity: 0.9; } /* Larger touch targets */ .ts-prev, .ts-next { width: 48px; height: 48px; } } /* Safe area insets for notched devices */ @supports (padding: max(0px)) { .hero { padding-left: max(var(--shell-pad), env(safe-area-inset-left)); padding-right: max(var(--shell-pad), env(safe-area-inset-right)); } .section { padding-left: max(var(--shell-pad), env(safe-area-inset-left)); padding-right: max(var(--shell-pad), env(safe-area-inset-right)); } .carpool-footer { padding-left: max(var(--shell-pad), env(safe-area-inset-left)); padding-right: max(var(--shell-pad), env(safe-area-inset-right)); } }

Keeping Aggieland safe — one free ride at a time.

297,964

Rides given since 1999

Free, safe, nonjudgmental rides home across Bryan/College Station

About Us

What is CARPOOL?

A student-run 501(c)(3) non-profit serving the Bryan/College Station community since 1999

Our Mission

CARPOOL provides free rides home every Friday and Saturday from 10:00 pm - 3:00 am during Fall and Spring semesters.

If you're in the area and need a safe, judgment-free ride home, call us - our number is on the back of your TAMU ID.

Do I have to be a current TAMU student?
No. We'll take anyone home within Bryan/College Station city limits - students, parents, visitors - anyone who needs a ride.
Do I have to be intoxicated?
No. You can take CARPOOL for any reason. We just want you home safely.
Do you take riders to Northgate or parties?
We take you home from the party - not to it.

Learn More

3-minute overview: how CARPOOL keeps Aggieland safe

Simple Process

How It Works

3 easy steps to get home Friday and Saturday nights

1

Call CARPOOL

Dial (979) 693-9905 when you're ready to head home.

2

Volunteer picks you up

A student driver & navigator meet you at your location.

3

Get home safe

We'll take you home within Bryan/College Station for free.

Hours of Operation

-

Fridays & Saturdays

While Texas A&M classes are in session. No service during summer months. Changes posted on Facebook & Instagram.

Our People

Meet the Team

The student volunteers making safe rides happen

Get Involved

Ready to Take Action?

Whether you need a ride or want to help, we're here for you

/* ============================================================ CARPOOL - Homepage JavaScript ============================================================ */ (function () { function onReady(fn){ if(document.readyState!=="loading") fn(); else document.addEventListener("DOMContentLoaded", fn); } (function HomePage() { var TZ = 'America/Chicago'; var SCHEDULED_DATES = [ { date: "01/23/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "01/24/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "01/30/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "01/31/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/06/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/07/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/13/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/14/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/20/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/21/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/27/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "02/28/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "03/20/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "03/21/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "03/27/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "03/28/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "04/10/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "04/11/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "04/17/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, { date: "04/18/2026", runStart: "22:00", runEnd: "03:00", wdStart: "03:00", wdEnd: "06:00" }, ]; var PREOPEN_FROM = "00:01"; var STAFF_PAGE_URL = "/staff/"; var ROTATE_MS = 7000; var MAX_PEOPLE = 13; var parseScheduledDate = function(dateStr) { var p = dateStr.split('/'); return new Date(parseInt(p[2]), parseInt(p[0]) - 1, parseInt(p[1])); }; var parseTime = function(timeStr) { var p = timeStr.split(':'); return { h: parseInt(p[0]), m: parseInt(p[1]) }; }; var isSameDay = function(d1, d2) { return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate(); }; var isInTimeRange = function(now, baseDate, startTime, endTime, isWinddown) { var start = parseTime(startTime); var end = parseTime(endTime); var currentMins = now.getHours() * 60 + now.getMinutes(); var startMins = start.h * 60 + start.m; var endMins = end.h * 60 + end.m; // Winddown (3am-6am) happens on the NEXT day after the scheduled date var checkDate = baseDate; if (isWinddown) { checkDate = new Date(baseDate); checkDate.setDate(checkDate.getDate() + 1); } if (endMins = startMins; } else { var nextDay = new Date(checkDate); nextDay.setDate(nextDay.getDate() + 1); if (isSameDay(now, nextDay)) { return currentMins = startMins && currentMins < endMins; } } return false; }; function animateRideCount(){ var el = document.getElementById("rideCount"); if (!el) return; // Prioritize CARPOOL_CONFIG (set by Avada), fallback to data-target var target = (window.CARPOOL_CONFIG && window.CARPOOL_CONFIG.TOTAL_RIDES) || parseInt(el.getAttribute("data-target")) || 297964; var duration = 2500; var formatter = new Intl.NumberFormat("en-US"); var hasRun = false; var animate = function(){ if (hasRun) return; hasRun = true; var t0 = performance.now(); var frame = function(now){ var t = Math.min(1, (now - t0)/duration); var eased = 1 - Math.pow(1 - t, 4); el.textContent = formatter.format(Math.floor(target * eased)); if (t < 1) requestAnimationFrame(frame); else el.textContent = formatter.format(target); }; requestAnimationFrame(frame); }; setTimeout(animate, 500); } function statusNow(){ var now = new Date(); for (var i = 0; i = 12 ? "pm" : "am"; h = h % 12 || 12; return h + (m ? ":"+String(m).padStart(2,"0") : "") + ampm; }; var months = ["January","February","March","April","May","June","July","August","September","October","November","December"]; var daysFull = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; var box = document.getElementById('banner-text'); if (!box) return; var wrap = document.getElementById('carpool-banner'); var icon = wrap ? wrap.querySelector('.icon') : null; var findCurrentSchedule = function(now) { for (var i = 0; i < SCHEDULED_DATES.length; i++) { var sched = SCHEDULED_DATES[i]; var baseDate = parseScheduledDate(sched.date); if (isInTimeRange(now, baseDate, sched.runStart, sched.runEnd, false)) { return { sched: sched, baseDate: baseDate, type: 'open' }; } if (isInTimeRange(now, baseDate, sched.wdStart, sched.wdEnd, true)) { return { sched: sched, baseDate: baseDate, type: 'winddown' }; } } return null; }; var isPreOpenToday = function(now) { for (var i = 0; i = preFrom && minsToday = 12 ? "pm" : "am"; h = h % 12 || 12; var mins = m ? ":" + String(m).padStart(2,"0") : ""; return dow + ", " + mon + " " + dom + " at " + h + mins + ampm; }; var now = new Date(); var current = findCurrentSchedule(now); var preSched = isPreOpenToday(now); wrap.classList.remove('success', 'error'); if (current && current.type === 'open') { wrap.classList.add("success"); if (icon) icon.textContent = '✓'; box.innerHTML = "Service Status: We're running now (" + fmtTime12(current.sched.runStart) + "–" + fmtTime12(current.sched.runEnd) + ")."; } else if (preSched) { var startTime = parseTime(preSched.runStart); var start = new Date(); start.setHours(startTime.h, startTime.m, 0, 0); wrap.classList.add("success"); if (icon) icon.textContent = '✓'; box.innerHTML = "Service Status: We will be running today, " + formatDayMonthTime(start) + "."; } else { var next = findNextScheduledDate(now); wrap.classList.add("error"); if (icon) icon.textContent = '!'; if (next) { box.innerHTML = "Service Status: Not currently running! We next offer rides on " + formatDayMonthTime(next.dateTime) + " (" + fmtTime12(next.sched.runStart) + "–" + fmtTime12(next.sched.runEnd) + ")."; } else { box.innerHTML = "Service Status: Not currently running! No upcoming dates scheduled."; } } } function findNextScheduledDate(now) { var upcoming = []; for (var i = 0; i now) { upcoming.push({ dateTime: startDateTime, sched: sched }); } } if (upcoming.length === 0) return null; upcoming.sort(function(a, b) { return a.dateTime - b.dateTime; }); return upcoming[0]; } function modalLogic(){ var $cb = function(){ return document.getElementById('ride-modal-toggle'); }; var $o = function(){ return document.getElementById('ride-card-open'); }; var $wd = function(){ return document.getElementById('ride-card-winddown'); }; var show = function(which){ var o = $o(), w = $wd(); if (!o || !w) return; if (which === 'open') { o.hidden=false; w.hidden=true; } else if (which==='winddown'){ o.hidden=true; w.hidden=false; } else { o.hidden=true; w.hidden=true; } }; var dismissedState = null; var getDismissed = function(){ return dismissedState; }; var setDismissed = function(state){ dismissedState = state; }; var clearDismissed = function(){ dismissedState = null; }; var wireDismiss = function(){ var cb = $cb(); if (!cb) return; cb.addEventListener('change', function(){ if (!cb.checked) { var st = statusNow(); if (st === 'open' || st === 'winddown') setDismissed(st); } }); }; var prevState = null, timer = null; var tick = function(){ var st = statusNow(); var cb = $cb(); if (!cb) return; if (st !== prevState) { clearDismissed(); prevState = st; } var dismissed = getDismissed(); if (st === 'open' || st === 'winddown') { if (dismissed === st) { show('none'); cb.checked = false; } else { show(st); cb.checked = true; } } else { show('none'); cb.checked = false; clearDismissed(); } clearTimeout(timer); var now = new Date(); var ms = (60 - now.getSeconds())*1000 - now.getMilliseconds(); timer = setTimeout(tick, Math.max(250, ms)); }; var cb = $cb(); if (cb) cb.checked = false; wireDismiss(); prevState = statusNow(); tick(); document.addEventListener('visibilitychange', function(){ if (!document.hidden) tick(); }); } function teamSpotlight(){ var host = document.getElementById("team-spotlight"); if (!host) return; var stage = host.querySelector(".ts-stage"); var ctrls = host.querySelector(".ts-controls"); var el = function(t, c, a){ var n=document.createElement(t); if(c) n.className=c; a=a||{}; for (var k in a) if (Object.prototype.hasOwnProperty.call(a,k)) n.setAttribute(k,a[k]); return n; }; var extractFromCardAndSheet = function(card, root){ var img = card.querySelector(".staff-card-photo") || card.querySelector("img, .avatar"); var name = card.querySelector(".staff-card-name") || card.querySelector(".name, h3, .title"); var role = card.querySelector(".staff-card-role") || card.querySelector(".role"); var modalLink = card.querySelector('a.toggle-bio[href^="#modal-"]'); var sheetLink = card.querySelector('.name a[href^="#sheet-"]') || card.querySelector('a[href^="#sheet-"]'); var facts = []; if (modalLink) { var id = modalLink.getAttribute("href").slice(1); var modal = root.getElementById(id); if (modal) { var infoItems = modal.querySelectorAll(".modal-info-item"); facts = Array.prototype.slice.call(infoItems).map(function(item){ var label = item.querySelector(".modal-info-label"); var value = item.querySelector(".modal-info-value"); var key = label ? label.textContent.trim() : ""; var val = value ? value.textContent.trim() : ""; return (key && val) ? { k:key, v:val } : null; }).filter(Boolean); } } else if (sheetLink) { var id = sheetLink.getAttribute("href").slice(1); var sheet = root.getElementById(id); if (sheet) { var infoPs = sheet.querySelectorAll(".sheet-info p"); facts = Array.prototype.slice.call(infoPs).map(function(p){ var strong = p.querySelector("strong"); var key = strong ? strong.textContent.replace(/:\s*$/, "").trim() : ""; var val = p.textContent.replace(strong && strong.textContent || "", "").trim(); if (val.indexOf(":") === 0) val = val.slice(1).trim(); return (key && val) ? { k:key, v:val } : null; }).filter(Boolean); } } return { name: (name && name.textContent && name.textContent.trim()) || "Staff member", role: (role && role.textContent && role.textContent.trim()) || "", photo: (img && img.getAttribute("src")) || "", email: (card.querySelector('a[href^="mailto:"]') && card.querySelector('a[href^="mailto:"]').getAttribute("href")) || "", facts: facts }; }; var buildSlide = function(p){ var slide = el("article", "ts-slide", { role:"group" }); var photoWrap = el("div", "ts-photo-wrap"); var img = el("img", "ts-photo", { alt: p.name || "Staff photo", loading: "lazy" }); img.src = p.photo || ""; photoWrap.appendChild(img); slide.appendChild(photoWrap); var info = el("div", "ts-info"); var h3 = el("h3", "ts-name"); h3.textContent = p.name; var r = el("p", "ts-role"); r.textContent = p.role; info.appendChild(h3); info.appendChild(r); if (p.facts && p.facts.length){ var factsWrap = el("div", "ts-facts"); p.facts.forEach(function(f){ var row = el("div","ts-fact"); var kk = el("span","k"); kk.textContent=f.k; var vv = el("span","v"); vv.textContent=f.v; row.appendChild(kk); row.appendChild(vv); factsWrap.appendChild(row); }); info.appendChild(factsWrap); } var actions = el("div", "ts-actions"); if (p.email) { var a = el("a","ts-btn",{href:p.email}); a.textContent="Email"; actions.appendChild(a); } var all = el("a","ts-btn",{href:"/staff/"}); all.textContent="View All"; actions.appendChild(all); info.appendChild(actions); slide.appendChild(info); return slide; }; var rotator = function(slides, opts){ opts = opts || {}; var interval = opts.interval || ROTATE_MS; if (!slides.length) return; var i=0, timer=null, paused=false; var show = function(idx){ slides.forEach(function(s, n){ s.classList.toggle("is-active", n===idx); }); }; var next = function(){ i=(i+1)%slides.length; show(i); }; var prev = function(){ i=(i-1+slides.length)%slides.length; show(i); }; var start = function(){ stop(); if (slides.length<2) return; timer=setInterval(function(){ if(!paused) next(); }, interval); }; var stop = function(){ if (timer){ clearInterval(timer); timer=null; } }; if (ctrls) { var prevBtn = ctrls.querySelector(".ts-prev"); var nextBtn = ctrls.querySelector(".ts-next"); if (prevBtn) prevBtn.addEventListener("click", function(e){ e.preventDefault(); prev(); }); if (nextBtn) nextBtn.addEventListener("click", function(e){ e.preventDefault(); next(); }); } var stageEl = slides[0].parentElement; stageEl.addEventListener("mouseenter", function(){ paused=true; }); stageEl.addEventListener("mouseleave", function(){ paused=false; }); show(0); start(); return { show:show, next:next, prev:prev, start:start, stop:stop }; }; var harvestRemote = function(){ return fetch(STAFF_PAGE_URL, { credentials:"same-origin" }) .then(function(res){ if (!res.ok) throw new Error("Fetch failed"); return res.text(); }) .then(function(html){ var doc = new DOMParser().parseFromString(html, "text/html"); var cards = Array.prototype.slice.call(doc.querySelectorAll(".carpool-staff .staff-grid .staff-card")); if (!cards.length) cards = Array.prototype.slice.call(doc.querySelectorAll("#carpool-staff .grid .card")); return cards.map(function(c){ return extractFromCardAndSheet(c, doc); }); }) .catch(function(){ return []; }); }; var init = function(){ if (!stage) return; stage.innerHTML = '
Loading team...
'; harvestRemote().then(function(list){ stage.innerHTML = ''; if (!list.length) { stage.innerHTML = '

Our Student Leaders

Meet the volunteers behind CARPOOL.

'; return; } if (MAX_PEOPLE) list = list.slice(0, MAX_PEOPLE); var slides = list.map(buildSlide); slides.forEach(function(s){ stage.appendChild(s); }); rotator(slides, { interval: ROTATE_MS }); }); }; init(); } function scrollReveal(){ var elements = document.querySelectorAll('.step-card, .cta-tile, .about-card, .section-header, .hours-card, .team-spotlight'); if (!elements.length) return; // Add stagger delays for grid items var stepCards = document.querySelectorAll('.step-card'); stepCards.forEach(function(card, i){ card.style.transitionDelay = (i * 0.1) + 's'; }); var ctaTiles = document.querySelectorAll('.cta-tile'); ctaTiles.forEach(function(tile, i){ tile.style.transitionDelay = (i * 0.1) + 's'; }); var aboutCards = document.querySelectorAll('.about-card'); aboutCards.forEach(function(card, i){ card.style.transitionDelay = (i * 0.15) + 's'; }); // Intersection Observer var observer = new IntersectionObserver(function(entries){ entries.forEach(function(entry){ if (entry.isIntersecting) { entry.target.classList.add('is-visible'); } }); }, { threshold: 0.05, rootMargin: '0px 0px 5px 0px' }); elements.forEach(function(el){ observer.observe(el); }); } onReady(function(){ setTimeout(function(){ animateRideCount(); updateStatusBanner(); modalLogic(); teamSpotlight(); scrollReveal(); }, 200); }); })(); })();
Go to Top