:root { --primary: #0f172a; --primary-light: #1e293b; --accent: #0ea5e9; --accent-hover: #0284c7; --text: #334155; --text-light: #64748b; --bg: #ffffff; --bg-alt: #f8fafc; --border: #e2e8f0; --radius: 8px; --shadow: 0 1px 3px rgba(0,0,0,.08); --shadow-md: 0 4px 12px rgba(0,0,0,.1); --transition: .25s ease; } *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; color: var(--text); line-height: 1.6; background: var(--bg); } a { text-decoration: none; color: inherit; transition: var(--transition); } ul { list-style: none; } img { max-width: 100%; display: block; } .container { max-width: 1280px; margin: 0 auto; padding: 0 24px; } .btn { display: inline-flex; align-items: center; justify-content: center; padding: 10px 22px; border-radius: var(--radius); font-weight: 600; font-size: .95rem; border: 1px solid transparent; cursor: pointer; transition: var(--transition); gap: 8px; } .btn-primary { background: var(--accent); color: #fff; } .btn-primary:hover { background: var(--accent-hover); transform: translateY(-1px); box-shadow: var(--shadow-md); } .btn-outline { border-color: var(--border); color: var(--primary); background: transparent; } .btn-outline:hover { border-color: var(--accent); color: var(--accent); } .section { padding: 80px 0; } .section-header { text-align: center; margin-bottom: 48px; } .section-header h2 { font-size: 2rem; font-weight: 700; color: var(--primary); margin-bottom: 12px; } .section-header p { color: var(--text-light); max-width: 640px; margin: 0 auto; } .tag { display: inline-block; padding: 4px 12px; border-radius: 99px; font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .5px; } .tag-blue { background: #e0f2fe; color: #0369a1; } .tag-green { background: #dcfce7; color: #15803d; } .tag-amber { background: #fef3c7; color: #b45309; } /* HEADER */ .site-header { position: sticky; top: 0; z-index: 100; background: rgba(255,255,255,.95); backdrop-filter: blur(8px); border-bottom: 1px solid var(--border); } .header-top { background: var(--primary); color: #fff; font-size: .82rem; padding: 8px 0; } .header-top .container { display: flex; justify-content: space-between; align-items: center; } .header-top a { color: #cbd5e1; } .header-top a:hover { color: #fff; } .main-header { padding: 16px 0; } .main-header .container { display: flex; justify-content: space-between; align-items: center; gap: 24px; } .logo { font-size: 1.5rem; font-weight: 800; color: var(--primary); display: flex; align-items: center; gap: 10px; } .logo span { color: var(--accent); } .nav-desktop { display: flex; gap: 28px; } .nav-desktop a { font-weight: 500; color: var(--text); position: relative; } .nav-desktop a:hover, .nav-desktop a.active { color: var(--accent); } .nav-desktop a::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 0; height: 2px; background: var(--accent); transition: var(--transition); } .nav-desktop a:hover::after { width: 100%; } .header-actions { display: flex; align-items: center; gap: 16px; } .icon-btn { width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; cursor: pointer; background: transparent; transition: var(--transition); } .icon-btn:hover { border-color: var(--accent); color: var(--accent); } .mobile-toggle { display: none; background: none; border: none; cursor: pointer; } .mobile-toggle span { display: block; width: 24px; height: 2px; background: var(--primary); margin: 5px 0; transition: var(--transition); } .nav-mobile { display: none; flex-direction: column; padding: 20px 0; border-top: 1px solid var(--border); } .nav-mobile a { padding: 12px 0; font-weight: 500; border-bottom: 1px solid var(--border); } .nav-mobile.active { display: flex; } /* HERO */ .hero { background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%); padding: 80px 0 60px; } .hero .container { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; } .hero h1 { font-size: clamp(2rem, 4vw, 2.8rem); font-weight: 800; color: var(--primary); line-height: 1.15; margin-bottom: 16px; } .hero p { font-size: 1.1rem; color: var(--text-light); margin-bottom: 28px; max-width: 520px; } .hero-actions { display: flex; gap: 12px; flex-wrap: wrap; } .hero-visual { background: #fff; border-radius: 16px; padding: 32px; box-shadow: var(--shadow-md); display: flex; align-items: center; justify-content: center; min-height: 320px; position: relative; overflow: hidden; } .hero-visual::before { content: 'β'; position: absolute; font-size: 12rem; opacity: .06; right: -20px; bottom: -20px; transform: rotate(-12deg); } .hero-visual-inner { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; width: 100%; } .hero-card { background: var(--bg-alt); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; text-align: center; } .hero-card h4 { font-size: .95rem; font-weight: 600; margin-bottom: 4px; } .hero-card p { font-size: .82rem; color: var(--text-light); margin: 0; } /* OVERVIEW */ .overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 24px; } .overview-card { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; transition: var(--transition); } .overview-card:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: var(--shadow-md); } .overview-icon { width: 48px; height: 48px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1.4rem; margin-bottom: 16px; } .overview-card h3 { font-size: 1.1rem; font-weight: 700; margin-bottom: 8px; color: var(--primary); } .overview-card p { font-size: .92rem; color: var(--text-light); } /* PRODUCTS */ .products { background: var(--bg-alt); } .product-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; } .product-card { background: #fff; border-radius: var(--radius); overflow: hidden; border: 1px solid var(--border); transition: var(--transition); } .product-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); } .product-img { height: 180px; background: #f8fafc; display: flex; align-items: center; justify-content: center; font-size: 3.5rem; border-bottom: 1px solid var(--border); } .product-body { padding: 20px; } .product-body h3 { font-size: 1.1rem; font-weight: 700; margin-bottom: 8px; color: var(--primary); } .product-body p { font-size: .9rem; color: var(--text-light); margin-bottom: 16px; } .product-meta { display: flex; justify-content: space-between; align-items: center; } .product-link { color: var(--accent); font-weight: 600; font-size: .9rem; } .product-link:hover { text-decoration: underline; } .product-cat { font-size: .78rem; color: var(--text-light); background: var(--bg-alt); padding: 4px 10px; border-radius: 99px; } /* SOLUTIONS */ .solutions-tabs { display: flex; justify-content: center; gap: 8px; margin-bottom: 32px; flex-wrap: wrap; } .tab-btn { padding: 10px 20px; border-radius: 99px; border: 1px solid var(--border); background: transparent; cursor: pointer; font-weight: 500; transition: var(--transition); } .tab-btn.active, .tab-btn:hover { background: var(--accent); color: #fff; border-color: var(--accent); } .tab-content { display: none; } .tab-content.active { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; align-items: center; } .tab-visual { background: var(--bg-alt); border-radius: 12px; height: 320px; display: flex; align-items: center; justify-content: center; font-size: 4rem; border: 1px solid var(--border); } .tab-text h3 { font-size: 1.5rem; font-weight: 700; margin-bottom: 12px; color: var(--primary); } .tab-text p { margin-bottom: 16px; color: var(--text-light); } .tab-text ul { margin: 16px 0; } .tab-text li { position: relative; padding-left: 24px; margin-bottom: 10px; } .tab-text li::before { content: 'β'; position: absolute; left: 0; color: var(--accent); font-weight: 700; } /* ABOUT */ .about-content { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: center; } .about-text h2 { font-size: 2rem; font-weight: 700; margin-bottom: 16px; color: var(--primary); } .about-text p { margin-bottom: 16px; color: var(--text-light); } .cert-badges { display: flex; gap: 16px; margin-top: 24px; flex-wrap: wrap; } .cert-badge { display: flex; align-items: center; gap: 8px; padding: 8px 14px; border: 1px solid var(--border); border-radius: var(--radius); font-size: .85rem; font-weight: 600; } .about-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; } .stat-card { background: var(--bg-alt); border: 1px solid var(--border); border-radius: var(--radius); padding: 24px; text-align: center; } .stat-card h3 { font-size: 1.8rem; font-weight: 800; color: var(--accent); } .stat-card p { font-size: .9rem; color: var(--text-light); } /* CONTACT */ .contact { background: var(--bg-alt); } .contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; } .contact-info h3 { font-size: 1.4rem; font-weight: 700; margin-bottom: 16px; color: var(--primary); } .contact-info p { margin-bottom: 20px; color: var(--text-light); } .contact-list li { display: flex; gap: 12px; margin-bottom: 14px; } .contact-list span { color: var(--accent); } .contact-form { background: #fff; padding: 32px; border-radius: var(--radius); border: 1px solid var(--border); } .form-group { margin-bottom: 16px; } .form-group label { display: block; font-weight: 500; margin-bottom: 6px; font-size: .92rem; } .form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px 14px; border: 1px solid var(--border); border-radius: var(--radius); font-family: inherit; font-size: .95rem; transition: var(--transition); } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(14,165,233,.15); } .form-group textarea { min-height: 100px; resize: vertical; } .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } /* FOOTER */ .site-footer { background: var(--primary); color: #cbd5e1; padding: 64px 0 0; } .footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 40px; margin-bottom: 48px; } .footer-brand .logo { color: #fff; margin-bottom: 16px; } .footer-brand p { font-size: .92rem; line-height: 1.7; max-width: 320px; } .footer h4 { color: #fff; font-size: .95rem; font-weight: 700; margin-bottom: 16px; text-transform: uppercase; letter-spacing: .5px; } .footer ul li { margin-bottom: 10px; } .footer ul li a { font-size: .92rem; } .footer ul li a:hover { color: #fff; padding-left: 4px; } .footer-bottom { border-top: 1px solid #334155; padding: 24px 0; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; font-size: .85rem; } .footer-social { display: flex; gap: 12px; } .footer-social a { width: 36px; height: 36px; border-radius: 50%; border: 1px solid #475569; display: flex; align-items: center; justify-content: center; } .footer-social a:hover { background: var(--accent); border-color: var(--accent); color: #fff; } /* RESPONSIVE */ @media (max-width: 992px) { .hero .container { grid-template-columns: 1fr; text-align: center; } .hero p { margin-left: auto; margin-right: auto; } .hero-actions { justify-content: center; } .tab-content.active { grid-template-columns: 1fr; } .about-content { grid-template-columns: 1fr; } .contact-grid { grid-template-columns: 1fr; } .footer-grid { grid-template-columns: 1fr 1fr; } } @media (max-width: 768px) { .nav-desktop { display: none; } .mobile-toggle { display: block; } .header-top { display: none; } .form-row { grid-template-columns: 1fr; } .footer-grid { grid-template-columns: 1fr; } .footer-bottom { justify-content: center; text-align: center; } }
Cup Source provides wholesale cupware, bowls, lids, and custom packaging solutions designed for food service operators, retailers, and distributors.
8oz β 20oz Insulated
Clarity & Dome Lids
Soup, Salad & Noodle
Full-Color Branding
We streamline your supply chain with consistent quality, transparent pricing, and dedicated account support.
Strategic distribution centers ensure faster lead times and reduced freight costs for your location.
Compostable, recyclable, and BPA-free options to help you meet environmental compliance and customer expectations.
From die creation to bulk printing, we handle the entire custom packaging process with low minimums.
Dedicated reps, net-30 terms for qualified buyers, and real-time inventory tracking through our portal.
Explore our complete range of single-serve containers, lids, and accessories built for commercial use.
PE-lined with peelable lids. Available in 8, 12, 16, and 20 oz with tamper-resistant options.
High clarity, impact-resistant cups with flat or dome lids. Ideal for smoothies and iced coffee.
Eco-friendly, grease-resistant bowls with vented lids. Microwave and dishwasher safe.
Compatible fit guarantees for all major cup brands. Custom sleeve printing available.
Tailored packaging programs designed for your operational scale and compliance requirements.
From espresso shots to large-format cold brews, our thermal-rated cups maintain temperature while reducing condensation and slip hazards.
Grease-resistant bowls and secure lid systems designed for hot and cold dishes, soups, and grain bowls.
Shelf-ready packaging with UPC labeling, pallet configurations, and white-label programs for regional distributors.
Durable, stackable cups with rapid fulfillment for large-scale gatherings, concerts, and corporate functions.
Since 2015, Cup Source has partnered with food service operators, distributors, and retailers to deliver packaging that performs under pressure. We prioritize material integrity, consistent manufacturing, and transparent supply chain practices.
Our production partners maintain ISO 9001 certification, and all food-contact materials are FDA-compliant. We continuously invest in sustainable alternatives without compromising durability or cost-efficiency.
Active Accounts
Units Shipped/Month
On-Time Delivery
Avg. Quote Response
Whether you need a one-time bulk order or a long-term supply agreement, our team is ready to assist.
Reach out for pricing, samples, or account setup. We typically respond within 4 business hours.