/* * Breakpoints. Must stay after every layer it overrides */ /* Responsive */ @media (max-width: 1439px) { .container { width: min(calc(100% - 48px), 1200px); } .product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .category-card { grid-template-columns: minmax(0, 1fr) 40%; } .archive-shell { grid-template-columns: 250px minmax(0, 1fr); gap: 32px; } .archive-results .product-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } .product-layout { grid-template-columns: minmax(0, 1.43fr) minmax(440px, 1fr); } } @media (max-width: 1023px) { .home .site-header { height: 120px; } .hero-copy, .hero h1 { width: 100%; max-width: 100%; } .hero h1 { white-space: normal; } .header-inner { gap: 16px; } .menu-toggle { display: grid; margin-left: auto; } .main-nav { position: fixed; z-index: 50; inset: 88px 0 0; display: none; margin: 0; padding: 30px 24px; background: var(--bg-main); } .menu-open .main-nav { display: block; } .main-nav ul { align-items: stretch; flex-direction: column; gap: 0; } .main-nav a { padding: 15px 0; border-bottom: 1px solid var(--border-main); font: var(--lead); } .product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .category-grid, .news-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .archive-shell, .product-layout, .cart-layout, .checkout-layout { grid-template-columns: 1fr; } .cart-order-card { width: 100%; } .filters { padding: 20px; border-radius: 12px; background: var(--bg-secondary); } .archive-results .product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .product-gallery { height: min(70vw, 580px); } .product-summary { min-height: 0; } .footer-bottom { grid-template-columns: 1fr auto; } .footer-bottom > span:nth-child(2) { order: 3; grid-column: 1 / -1; } } @media (max-width: 639px) { .home .site-header { height: 72px; } .container { width: calc(100% - 32px); } .header-inner { height: 72px; } .main-nav { inset: 72px 0 0; } .cart-link { width: 48px; height: 48px; } .shop-toast-stack, .home .shop-toast-stack { top: 88px; right: 16px; width: calc(100vw - 32px); } .section { padding: 48px 0; } .hero { height: auto; min-height: 0; padding: 44px 0 48px; } .hero-title-group > p, .hero-features { width: 100%; max-width: 100%; } .hero-features { grid-template-columns: 1fr; gap: 14px; } .products-section { height: auto; overflow: visible; } .product-grid, .category-grid, .news-grid, .archive-results .product-grid { grid-template-columns: 1fr; } .category-card { height: 230px; grid-template-columns: minmax(0, 1fr) 38%; } .news-card { height: 360px; } .pagination .nav-links, .woocommerce nav.woocommerce-pagination ul { flex-wrap: wrap; } .pagination .page-numbers, .woocommerce nav.woocommerce-pagination ul li a, .woocommerce nav.woocommerce-pagination ul li span { width: 40px; height: 40px; } .slider-controls { display: none; } /* The design keeps the filter button and the sort control on one row; the sort label stacks above its value so the pair fits at 360px. */ .archive-toolbar { align-items: center; flex-direction: row; flex-wrap: nowrap; gap: 12px; } .archive-toolbar .sort-control { display: flex; min-width: 0; margin-left: auto; align-items: flex-end; flex-direction: column; gap: 0; text-align: right; } .archive-toolbar .sort-control > span { font: var(--caption); } /* The mobile layout does not expose the per-page control. */ .archive-toolbar .per-page-control { display: none; } .product-gallery { height: 400px; } .product-summary { padding: 22px; } .product-summary form.cart { grid-template-columns: 120px minmax(0, 1fr); } .tab-list { overflow-x: auto; } .tab-list a { white-space: nowrap; } .article-media, .article-media-wide { height: 62vw; } .article-lead { margin-bottom: 32px; } .cart-table thead { display: none; } .cart-table tr, .cart-table td { display: block; } .cart-table tr { padding: 16px 0; border-bottom: 1px solid var(--border-main); } .cart-table td { padding: 7px 0; border: 0; } .cart-page { width: 100%; height: 622px; padding: 8px 16px 32px; } .checkout-fields { width: 100%; } .checkout-page { width: 100%; min-height: 1278px; padding: 8px 16px 32px; } .checkout-page .page-heading { margin-bottom: 14px; } .checkout-layout { gap: 32px; } .checkout-input, .checkout-map { width: 100%; } .checkout-input, .checkout-input input { height: 64px; } .checkout-delivery, .checkout-payment-options { margin-top: 24px; } .checkout-delivery legend, .checkout-payment-options legend { margin-bottom: 8px; } .delivery-switch { height: 48px; margin-bottom: 16px; } .delivery-switch span { height: 40px; } .checkout-radio { min-height: 24px; } .checkout-map { height: auto; margin-top: 16px; aspect-ratio: 1.44; } .checkout-payment-options { margin-top: 24px; } .checkout-order-card { width: 100%; min-height: 408px; height: 408px; padding: 16px; } .site-footer { height: auto; min-height: 210px; } .footer-bottom { grid-template-columns: 1fr; } .footer-bottom > span:nth-child(2) { grid-column: auto; flex-direction: column; gap: 10px; } } @media (max-width: 767px) { /* The mobile frame shows the same row, edge to edge and without the desktop next button — a touch drag does that job. */ .subcategories { margin-inline: calc(var(--container-gutter) * -1); padding-inline: var(--container-gutter); } .subcategory-next { display: none; } .subcategory-card { width: 200px; } .quick-filters { flex-wrap: nowrap; margin-inline: calc(var(--container-gutter) * -1); padding-inline: var(--container-gutter); overflow-x: auto; scrollbar-width: none; } .quick-filters::-webkit-scrollbar { height: 0; } .quick-filter { flex: 0 0 auto; } } /* * The cart row needs about 550px before its columns start colliding, and the * summary beside it is a fixed 432px. Below the width where both fit, they * stack — otherwise the summary ends up sitting on top of the items. */ @media (max-width: 1199px) { .cart-layout, .checkout-layout { grid-template-columns: minmax(0, 1fr); } .cart-order-card { width: 100%; } /* Once the summary drops below the fields the checkout is one column, so centre it rather than leaving both blocks pinned to the left edge. */ .checkout-layout .checkout-fields, .checkout-layout .checkout-order-card { width: 432px; max-width: 100%; margin-inline: auto; } } /* * The cart row needs about 550px before its columns collide. Below that it * takes the stacked shape from the mobile frame — thumbnail top left, copy * beside it, price and controls on the bottom row. */ @media (max-width: 767px) { .cart-page .page-heading { margin-bottom: 8px; } .cart-layout { display: flex; flex-direction: column; gap: 16px; } .cart-items { width: 100%; gap: 8px; } .cart-item { position: relative; display: block; width: 100%; min-height: 150px; height: 150px; padding: 12px; } .cart-thumb { position: absolute; top: 12px; left: 12px; width: 88px; height: 70px; } .cart-thumb .product-badge { display: none; } .cart-item-copy { position: absolute; top: 16px; right: 12px; left: 112px; } .cart-item-price { position: absolute; bottom: 16px; left: 12px; text-align: left; } .cart-item-quantity { position: absolute; right: 64px; bottom: 16px; width: 104px; height: 44px; } .cart-item-remove { position: absolute; right: 12px; bottom: 16px; width: 44px; height: 44px; } .cart-order-card { width: 100%; min-height: 212px; height: 212px; padding: 16px; } .cart-order-card .order-row { min-height: 28px; padding: 2px 0; } .cart-order-card .order-row.total { min-height: 36px; margin: 0; padding-top: 4px; } .cart-order-card .button { height: 56px; margin-top: 12px; } } @media (max-width: 767px) { .checkout-input input { padding: 25px 20px 15px; } .checkout-input input:focus + .field-label, .checkout-input input:not(:placeholder-shown) + .field-label { top: 10px; } }