/* Theme Name: Bongoto WooCommerce Theme URI: https://bongoto.com/product/bongoto-woocommerce-theme/ Author: Bongoto Development Author URI: https://bongoto.com/ Description: A clean, modern WooCommerce theme for single-store shops. Includes flexible headers, Elementor integration, and widgetized footers. Built for speed, accessibility, and customization via the WordPress Customizer. Version: 1.0.4 Requires at least: 6.3 Tested up to: 6.6 Requires PHP: 7.4 License: GNU General Public License v2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Text Domain: bongoto-woocommerce Domain Path: /languages Tags: e-commerce, custom-header, custom-background, translation-ready, blog, rtl-language-support Copyright: © 2025 Bongoto Development. Licensed under GPLv2 or later. */ @charset "UTF-8"; /* -------------------------------------------------------------- 0. CSS Variables (can be overridden by theme.json where supported) -------------------------------------------------------------- */ :root { --bt-font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; --bt-font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --bt-color-bg: #ffffff; --bt-color-fg: #0f172a; /* slate-900 */ --bt-color-fg-muted: #475569; /* slate-600 */ --bt-color-border: #e2e8f0; /* slate-200 */ --bt-color-primary: #2563eb; /* blue-600 */ --bt-color-primary-contrast: #ffffff; --bt-color-accent: #10b981; /* emerald-500 */ --bt-color-danger: #ef4444; /* red-500 */ --bt-color-warning: #f59e0b; /* amber-500 */ --bt-color-success: #16a34a; /* green-600 */ --bt-radius-sm: .375rem; /* 6px */ --bt-radius-md: .5rem; /* 8px */ --bt-radius-lg: .75rem; /* 12px */ --bt-radius-xl: 1rem; /* 16px */ --bt-space-1: .25rem; --bt-space-2: .5rem; --bt-space-3: .75rem; --bt-space-4: 1rem; --bt-space-5: 1.25rem; --bt-space-6: 1.5rem; --bt-space-8: 2rem; --bt-space-10: 2.5rem; --bt-space-12: 3rem; --bt-container-max: 1220px; --bt-transition: 220ms cubic-bezier(.2,.6,.2,1); } /* -------------------------------------------------------------- 1. Base / Reset -------------------------------------------------------------- */ *, *::before, *::after { box-sizing: border-box; } html { line-height: 1.4; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; } body { margin: 0; font-family: var(--bt-font-sans); color: var(--bt-color-fg); background: var(--bt-color-bg); font-size: 16px; } img, svg, video, canvas, audio, iframe, embed, object { display: block; max-width: 100%; } img { height: auto; } button, input, select, textarea { font: inherit; color: inherit; } a { color: var(--bt-color-primary); text-decoration: none; } a:hover, a:focus { text-decoration: underline; } hr { height: 0; border: 0; border-top: 1px solid var(--bt-color-border); margin: var(--bt-space-8) 0; } /* -------------------------------------------------------------- 2. Typography -------------------------------------------------------------- */ h1, h2, h3, h4, h5, h6 { margin: 0 0 var(--bt-space-3); font-weight: 700; line-height: 1.2; } p { margin: 0 0 var(--bt-space-4); color: var(--bt-color-fg-muted); } ul, ol { margin: 0 0 var(--bt-space-4) 1.25rem; } /* -------------------------------------------------------------- 3. Layout helpers -------------------------------------------------------------- */ .container { width: 100%; max-width: var(--bt-container-max); margin-inline: auto; padding-inline: var(--bt-space-4); } .section { padding-block: var(--bt-space-10); } .card { border: 1px solid var(--bt-color-border); border-radius: var(--bt-radius-lg); background: #fff; box-shadow: 0 1px 2px rgba(15,23,42,.04); } /* -------------------------------------------------------------- 4. Buttons / Inputs -------------------------------------------------------------- */ .button, .wp-block-button__link, button, input[type="submit"], .btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; padding: .6rem 1rem; border: 1px solid transparent; border-radius: var(--bt-radius-md); background: var(--bt-color-primary); color: var(--bt-color-primary-contrast); cursor: pointer; transition: background var(--bt-transition), box-shadow var(--bt-transition), transform var(--bt-transition); } .button:hover, .wp-block-button__link:hover, button:hover, input[type="submit"]:hover, .btn:hover { filter: brightness(0.95); } .button:focus-visible, .wp-block-button__link:focus-visible, button:focus-visible, input[type="submit"]:focus-visible, .btn:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; } .button--secondary, .btn--secondary { background: #fff; color: var(--bt-color-fg); border-color: var(--bt-color-border); } .button--danger { background: var(--bt-color-danger); } .button--success { background: var(--bt-color-success); } /* Inputs */ input[type="text"], input[type="search"], input[type="email"], input[type="url"], input[type="password"], input[type="number"], textarea, select { width: 100%; padding: .625rem .75rem; border: 1px solid var(--bt-color-border); border-radius: var(--bt-radius-md); background: #fff; transition: border-color var(--bt-transition), box-shadow var(--bt-transition); } input:focus, textarea:focus, select:focus { border-color: var(--bt-color-primary); box-shadow: 0 0 0 3px rgba(37,99,235,.15); outline: none; } /* Search form minimal */ .search-form { display: flex; gap: .5rem; } .search-form .search-field { flex: 1; } /* -------------------------------------------------------------- 5. Header scaffolding (variants will add specifics in header.css) -------------------------------------------------------------- */ .site-header { position: relative; z-index: 50; border-bottom: 1px solid var(--bt-color-border); background: #ffffffc7; /* subtle translucency for sticky case */ backdrop-filter: saturate(180%) blur(8px); } .site-header__inner { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: var(--bt-space-4); min-height: 64px; } .site-branding { display: flex; align-items: center; gap: .75rem; } .site-logo { max-height: 40px; width: auto; } .site-title { font-size: 1.125rem; font-weight: 700; color: var(--bt-color-fg); } .primary-nav { display: flex; align-items: center; gap: 1rem; justify-content: center; } .header-actions { display: flex; align-items: center; justify-content: flex-end; gap: .5rem; } .header-upload { margin-left: auto; } /* Sticky toggled by JS (header.js) */ .is-sticky .site-header { position: sticky; top: 0; } /* -------------------------------------------------------------- 6. Footer scaffold -------------------------------------------------------------- */ .site-footer { border-top: 1px solid var(--bt-color-border); background: #fff; margin-top: var(--bt-space-10); } .footer-subscribe { padding: var(--bt-space-8) 0; border-bottom: 1px solid var(--bt-color-border); } .footer-widgets { padding: var(--bt-space-8) 0; } .footer-credits { border-top: 1px solid var(--bt-color-border); padding: var(--bt-space-4) 0; font-size: .925rem; color: var(--bt-color-fg-muted); } /* -------------------------------------------------------------- 7. Accessibility helpers -------------------------------------------------------------- */ .screen-reader-text { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } .screen-reader-text:focus { position: static !important; width: auto; height: auto; margin: 0; clip: auto; padding: .5rem 1rem; background: #000; color: #fff; border-radius: var(--bt-radius-sm); } /* Skip link */ .skip-link { position: absolute; left: -9999px; top: 0; } .skip-link:focus { left: 1rem; top: 1rem; z-index: 9999; background: #000; color: #fff; padding: .5rem .75rem; border-radius: var(--bt-radius-sm); } /* Focus ring for interactive elements (fallback) */ a:focus-visible, button:focus-visible, [role="button"]:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--bt-color-primary); outline-offset: 2px; } /* -------------------------------------------------------------- 8. WordPress align helpers -------------------------------------------------------------- */ .alignnone { margin: .5rem 0; } .aligncenter { display: block; margin-left: auto; margin-right: auto; } .alignleft { float: left; margin-right: 1rem; } .alignright { float: right; margin-left: 1rem; } .wp-caption { max-width: 100%; } .wp-caption-text { font-size: .875rem; color: var(--bt-color-fg-muted); } .wp-block-image figcaption { font-size: .875rem; color: var(--bt-color-fg-muted); text-align: center; } .wp-block { max-width: var(--bt-container-max); } .wp-block[data-align="wide"] { max-width: calc(var(--bt-container-max) + 200px); } .wp-block[data-align="full"] { max-width: none; } /* -------------------------------------------------------------- 9. Utilities -------------------------------------------------------------- */ .hide { display: none !important; } .m-0 { margin: 0 !important; } .mt-0 { margin-top: 0 !important; } .mb-0 { margin-bottom: 0 !important; } .p-0 { padding: 0 !important; } .text-muted { color: var(--bt-color-fg-muted) !important; } .text-center { text-align: center !important; } /* -------------------------------------------------------------- 10. WooCommerce quick primitives (detailed styles live in assets/css/main.css) -------------------------------------------------------------- */ .woocommerce a.button, .woocommerce button.button, .woocommerce input.button { border-radius: var(--bt-radius-md); } .woocommerce .price { font-weight: 700; color: var(--bt-color-fg); } .woocommerce .woocommerce-message, .woocommerce .woocommerce-info, .woocommerce .woocommerce-error { border-radius: var(--bt-radius-md); } /* ===== Shop Page quick fixes ===== */ /* Mobile shop search */ @media (max-width: 768px) { .woocommerce .woocommerce-product-search, .bt-shop-main .woocommerce-product-search, .bt-shop-main .search-form { display: flex; align-items: center; gap: 8px; } .woocommerce .woocommerce-product-search input[type="search"], .bt-shop-main .search-form input[type="search"] { height: 38px; font-size: 14px; border-radius: 8px; padding: 0 .75rem; } .woocommerce .woocommerce-product-search button, .woocommerce .woocommerce-product-search input[type="submit"], .bt-shop-main .search-form button, .bt-shop-main .search-form .search-submit { height: 38px; min-width: 38px; border-radius: 8px; padding: 0 10px; } } /* Product card – sale/coupon badge */ .woocommerce ul.products li.product .onsale { position: absolute; top: 12px; left: 12px; background: #10b981; color: #fff; width: 28px; height: 28px; border-radius: 999px; display: grid; place-items: center; font-size: 12px; line-height: 1; padding: 0; min-width: 0; } /* Quick view */ .woocommerce ul.products li.product .quick-view, .woocommerce ul.products li.product .yith-wcqv-button { width: 28px; height: 28px; border-radius: 999px; display: grid; place-items: center; } /* Product title (desktop) */ .woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: 20px; line-height: 1.3; margin: .4rem 0 .5rem; } /* Product title (mobile clamp) */ @media (max-width: 768px) { .woocommerce ul.products li.product .woocommerce-loop-product__title { font-size: 18px; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden; } } .woocommerce ul.products li.product { overflow: hidden; } .woocommerce ul.products li.product .button { font-size: 13px; padding: 8px 12px; border-radius: 8px; } .woocommerce ul.products li.product .add_to_cart_button, .woocommerce ul.products li.product .button.buy-now { display: inline-flex; align-items: center; gap: 6px; max-width: 100%; } .woocommerce ul.products li.product .bt-card-actions, .woocommerce ul.products li.product .product-actions { display: flex; gap: 8px; flex-wrap: wrap; } /* End of style.css */ /* WordPress core recommended classes */ .sticky {} .bypostauthor {} .gallery-caption {}