diff --git a/assets/base.css b/assets/base.css index 3af96454f12..84a09a174cc 100644 --- a/assets/base.css +++ b/assets/base.css @@ -1449,7 +1449,30 @@ details[open] > .share-button__fallback { z-index: 3; width: 100%; min-width: max-content; - box-shadow: 0 0 0 0.1rem rgba(var(--color-foreground), 0.55); + border-radius: var(--inputs-radius); + border: 0; +} + +.share-button__fallback:after { + pointer-events: none; + content: ''; + position: absolute; + inset: var(--inputs-border-width); + border: 0.1rem solid transparent; + border-radius: var(--inputs-radius); + box-shadow: 0 0 0 var(--inputs-border-width) rgba(var(--color-foreground), var(--inputs-border-opacity)); + transition: box-shadow var(--duration-short) ease; + z-index: 1; +} + +.share-button__fallback:before { + pointer-events: none; + content: ''; + position: absolute; + inset: 0; + border-radius: var(--inputs-radius-outset); + box-shadow: var(--inputs-shadow-horizontal-offset) var(--inputs-shadow-vertical-offset) var(--inputs-shadow-blur-radius) rgba(var(--color-base-text), var(--inputs-shadow-opacity)); + z-index: -1; } .share-button__fallback button { @@ -1460,6 +1483,8 @@ details[open] > .share-button__fallback { display: flex; justify-content: center; align-items: center; + position: relative; + right: var(--inputs-border-width); } .share-button__fallback button:hover { @@ -1480,11 +1505,54 @@ details[open] > .share-button__fallback { color: rgb(var(--color-foreground)); } +.share-button__copy:focus-visible, +.share-button__close:focus-visible { + background-color: rgb(var(--color-background)); + z-index: 2; +} + +.share-button__copy:focus, +.share-button__close:focus { + background-color: rgb(var(--color-background)); + z-index: 2; +} + +.field:not(:focus-visible):not(.focused) + .share-button__copy:not(:focus-visible):not(.focused), +.field:not(:focus-visible):not(.focused) + .share-button__close:not(:focus-visible):not(.focused) { + background-color: inherit; +} + +.share-button__fallback .field:after, +.share-button__fallback .field:before { + content: none; +} + +.share-button__fallback .field { + border-radius: 0; + min-width: auto; + min-height: auto; + transition: none; +} + +.share-button__fallback .field__input:focus, +.share-button__fallback .field__input:-webkit-autofill { + outline: 0.2rem solid rgba(var(--color-foreground),.5); + outline-offset: 0.1rem; + box-shadow: 0 0 0 0.1rem rgb(var(--color-background)),0 0 0.5rem 0.4rem rgba(var(--color-foreground),.3); +} + .share-button__fallback .field__input { box-shadow: none; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; + filter: none; + min-width: auto; + min-height: auto; +} + +.share-button__fallback .field__input:hover { + box-shadow: none; } .share-button__fallback .icon { @@ -1499,6 +1567,7 @@ details[open] > .share-button__fallback { height: 100%; margin-top: 0; padding: 0.8rem 0 0.8rem 1.5rem; + margin: var(--inputs-border-width); } .share-button__message:not(:empty):not(.hidden) ~ * { @@ -1513,23 +1582,47 @@ details[open] > .share-button__fallback { -webkit-appearance: none; appearance: none; background-color: rgb(var(--color-background)); - border: 0.1rem solid transparent; - border-radius: var(--inputs-radius); color: rgb(var(--color-foreground)); font-size: 1.6rem; width: 100%; - box-shadow: 0 0 0 var(--inputs-border-width) rgba(var(--color-foreground), var(--inputs-border-opacity)); - height: 4.5rem; box-sizing: border-box; transition: box-shadow var(--duration-short) ease; - filter: drop-shadow( - var(--inputs-shadow-horizontal-offset) - var(--inputs-shadow-vertical-offset) - var(--inputs-shadow-blur-radius) - rgba(var(--color-shadow), var(--inputs-shadow-opacity)) - ); - /* fix drop-shadow issue in Safari */ - transform: translateZ(0); + border-radius: var(--inputs-radius); + height: 4.5rem; + min-height: calc(var(--inputs-border-width) * 2); + min-width: calc(7rem + (var(--inputs-border-width) * 2)); + position: relative; + border: 0; +} + +.field:before, +.select:before, +.customer .field:before, +.customer select:before, +.localization-form__select:before { + pointer-events: none; + content: ''; + position: absolute; + inset: 0; + border-radius: var(--inputs-radius-outset); + box-shadow: var(--inputs-shadow-horizontal-offset) var(--inputs-shadow-vertical-offset) var(--inputs-shadow-blur-radius) rgba(var(--color-base-text), var(--inputs-shadow-opacity)); + z-index: -1; +} + +.field:after, +.select:after, +.customer .field:after, +.customer select:after, +.localization-form__select:after { + pointer-events: none; + content: ''; + position: absolute; + inset: var(--inputs-border-width); + border: 0.1rem solid transparent; + border-radius: var(--inputs-radius); + box-shadow: 0 0 0 var(--inputs-border-width) rgba(var(--color-foreground), var(--inputs-border-opacity)); + transition: box-shadow var(--duration-short) ease; + z-index: 1; } .select__select { @@ -1540,26 +1633,45 @@ details[open] > .share-button__fallback { color: rgba(var(--color-foreground), 0.75); } -.field__input:hover, -.select__select:hover, -.customer .field input:hover, -.customer select:hover, -.localization-form__select:hover { - box-shadow: 0 0 0 calc(var(--inputs-border-width) + 1px) rgba(var(--color-foreground), var(--inputs-border-opacity)); +.field:hover.field:after, +.select:hover.select:after, +.select__select:hover.select__select:after, +.customer .field:hover.field:after, +.customer select:hover.select:after, +.localization-form__select:hover.localization-form__select:after { + box-shadow: 0 0 0 calc(0.1rem + var(--inputs-border-width)) rgba(var(--color-foreground),var(--inputs-border-opacity)); + outline: 0; + border-radius: var(--inputs-radius); +} + +.field__input:focus-visible, +.select__select:focus-visible, +.customer .field input:focus-visible, +.customer select:focus-visible, +.localization-form__select:focus-visible.localization-form__select:after { + box-shadow: 0 0 0 calc(0.1rem + var(--inputs-border-width)) rgba(var(--color-foreground)); + outline: 0; + border-radius: var(--inputs-radius); } .field__input:focus, .select__select:focus, .customer .field input:focus, .customer select:focus, +.localization-form__select:focus.localization-form__select:after { + box-shadow: 0 0 0 calc(0.1rem + var(--inputs-border-width)) rgba(var(--color-foreground)); + outline: 0; + border-radius: var(--inputs-radius); +} + .localization-form__select:focus { - box-shadow: 0 0 0 calc(var(--inputs-border-width) + 2px) rgba(var(--color-foreground), var(--inputs-border-opacity)); - outline: transparent; + outline: 0; + box-shadow: none; } .text-area, .select { - display: inline-block; + display: flex; position: relative; width: 100%; } @@ -1572,14 +1684,16 @@ details[open] > .share-button__fallback { pointer-events: none; position: absolute; top: calc(50% - 0.2rem); - right: 1.5rem; + right: calc(var(--inputs-border-width) + 1.5rem); } .select__select, .customer select { cursor: pointer; line-height: calc(1 + 0.6 / var(--font-body-scale)); - padding: 0 4rem 0 1.5rem; + padding: 0 1.5rem; + margin: var(--inputs-border-width); + min-height: calc(var(--inputs-border-width) * 2); } /* Field */ @@ -1588,10 +1702,11 @@ details[open] > .share-button__fallback { position: relative; width: 100%; display: flex; + transition: box-shadow var(--duration-short) ease; } .customer .field { - display: block; + display: flex; } .field--with-error { @@ -1603,13 +1718,15 @@ details[open] > .share-button__fallback { flex-grow: 1; text-align: left; padding: 1.5rem; + margin: var(--inputs-border-width); + transition: box-shadow var(--duration-short) ease; } .field__label, .customer .field label { font-size: 1.6rem; - left: 1.5rem; - top: 1rem; + left: calc(var(--inputs-border-width) + 1.5rem); + top: calc(1rem + var(--inputs-border-width)); margin-bottom: 0; pointer-events: none; position: absolute; @@ -1627,7 +1744,7 @@ details[open] > .share-button__fallback { .customer .field input:not(:placeholder-shown) ~ label, .customer .field input:-webkit-autofill ~ label { font-size: 1rem; - top: 0.3em; + top: calc(var(--inputs-border-width) + 0.5rem); letter-spacing: 0.04rem; } @@ -1638,6 +1755,7 @@ details[open] > .share-button__fallback { .customer .field input:not(:placeholder-shown), .customer .field input:-webkit-autofill { padding: 2.2rem 1.5rem 0.8rem; + margin: var(--inputs-border-width); } .field__input::-webkit-search-cancel-button, @@ -1684,15 +1802,10 @@ details[open] > .share-button__fallback { font-family: var(--font-body-family); font-style: var(--font-body-style); font-weight: var(--font-body-weight); - padding: 1.2rem; min-height: 10rem; resize: none; } -.text-area--resize-vertical { - resize: vertical; -} - input[type='checkbox'] { display: inline-block; width: auto; @@ -1762,20 +1875,34 @@ input[type='checkbox'] { /* component-quantity */ .quantity { - border: var(--inputs-border-width) solid rgba(var(--color-foreground), var(--inputs-border-opacity)); - background: rgb(var(--color-background)); color: rgba(var(--color-foreground)); - border-radius: var(--inputs-radius); position: relative; - height: 4.5rem; - width: calc(14rem / var(--font-body-scale)); + width: calc(14rem / var(--font-body-scale) + var(--inputs-border-width) * 2); display: flex; - filter: drop-shadow( - var(--inputs-shadow-horizontal-offset) - var(--inputs-shadow-vertical-offset) - var(--inputs-shadow-blur-radius) - rgba(var(--color-shadow), var(--inputs-shadow-opacity)) - ); + border-radius: var(--inputs-radius); + min-height: calc((var(--inputs-border-width) * 2) + 4.5rem); +} + +.quantity:after { + pointer-events: none; + content: ''; + position: absolute; + inset: var(--inputs-border-width); + border: 0.1rem solid transparent; + border-radius: var(--inputs-radius); + box-shadow: 0 0 0 var(--inputs-border-width) rgba(var(--color-foreground), var(--inputs-border-opacity)); + transition: box-shadow var(--duration-short) ease; + z-index: 1; +} + +.quantity:before { + pointer-events: none; + content: ''; + position: absolute; + inset: 0; + border-radius: var(--inputs-radius-outset); + box-shadow: var(--inputs-shadow-horizontal-offset) var(--inputs-shadow-vertical-offset) var(--inputs-shadow-blur-radius) rgba(var(--color-base-text), var(--inputs-shadow-opacity)); + z-index: -1; } .quantity__input { @@ -1807,11 +1934,37 @@ input[type='checkbox'] { padding: 0; } +.quantity__button:first-child { + margin-left: calc(var(--inputs-border-width)); +} + +.quantity__button:last-child { + margin-right: calc(var(--inputs-border-width)); +} + .quantity__button svg { width: 1rem; pointer-events: none; } +.quantity__button:focus-visible, +.quantity__input:focus-visible { + background-color: rgb(var(--color-background)); + z-index: 2; +} + +.quantity__button:focus, +.quantity__input:focus { + background-color: rgb(var(--color-background)); + z-index: 2; +} + +.quantity__button:not(:focus-visible):not(.focused), +.quantity__input:not(:focus-visible):not(.focused) { + box-shadow: inherit; + background-color: inherit; +} + .quantity__input:-webkit-autofill, .quantity__input:-webkit-autofill:hover, .quantity__input:-webkit-autofill:active { @@ -2226,6 +2379,7 @@ details[open] .modal-overlay::after { .search-modal { opacity: 0; border-bottom: 0.1rem solid rgba(var(--color-foreground), 0.08); + min-height: calc(100% + var(--inputs-margin-offset) + (2 * var(--inputs-border-width))); height: 100%; } @@ -2237,6 +2391,15 @@ details[open] .modal-overlay::after { height: 100%; padding: 0 5rem 0 1rem; line-height: calc(1 + 0.8 / var(--font-body-scale)); + position: relative; +} + +.search-modal__content-bottom { + bottom: calc((var(--inputs-margin-offset) / 2) ); +} + +.search-modal__content-top { + top: calc((var(--inputs-margin-offset) / 2) ); } .search-modal__form { diff --git a/assets/component-cart-items.css b/assets/component-cart-items.css index c8ccf4afe40..30de5a4899c 100644 --- a/assets/component-cart-items.css +++ b/assets/component-cart-items.css @@ -112,7 +112,7 @@ } .cart-item cart-remove-button { - display: inline-block; + display: flex; margin-left: 1rem; } diff --git a/assets/component-cart.css b/assets/component-cart.css index 532e57a7be2..6744d077101 100644 --- a/assets/component-cart.css +++ b/assets/component-cart.css @@ -86,22 +86,37 @@ cart-items { } .cart__note { - display: block; + height: fit-content; } .cart__note label { display: flex; align-items: flex-end; + position: absolute; line-height: 1; height: 1.8rem; - margin-bottom: 2rem; + top: -3rem; color: rgba(var(--color-foreground), 0.75); } .cart__note .field__input { + height: 100%; + position: relative; + border-radius: var(--inputs-radius); padding: 1rem; } +.cart__note .text-area { + resize: vertical; +} + +.cart__note:after, .cart__note:hover.cart__note:after, +.cart__note:before, .cart__note:hover.cart__note:before, +.cart__note .field__input:focus, +.cart__note .field__input { + border-bottom-right-radius: 0; +} + @media screen and (min-width: 750px) { .cart__items { grid-column-start: 1; diff --git a/assets/component-facets.css b/assets/component-facets.css index 6033515643b..deb99fb14ee 100644 --- a/assets/component-facets.css +++ b/assets/component-facets.css @@ -76,6 +76,21 @@ width: auto; } +.facet-filters__field .select:after, +.facet-filters__field .select:before, +.mobile-facets__sort .select:after, +.mobile-facets__sort .select:before { + content: none; +} + +.facet-filters__field .select__select, +.mobile-facets__sort .select__select { + border-radius: 0; + min-width: auto; + min-height: auto; + transition: none; +} + .facet-filters button { margin-left: 2.5rem; } diff --git a/assets/component-newsletter.css b/assets/component-newsletter.css index 06c3904706f..157670057c7 100644 --- a/assets/component-newsletter.css +++ b/assets/component-newsletter.css @@ -23,6 +23,10 @@ padding-right: 5rem; } +.newsletter-form__field-wrapper .field { + z-index: 0; +} + .newsletter-form__message { justify-content: center; margin-bottom: 0; @@ -41,6 +45,25 @@ .newsletter-form__button { width: 4.4rem; margin: 0; + right: var(--inputs-border-width); + top: 0; + height: 100%; + z-index: 2; +} + +.newsletter-form__button:focus-visible { + box-shadow: 0 0 0 .3rem rgb(var(--color-background)),0 0 0 .4rem rgba(var(--color-foreground)); + background-color: rgb(var(--color-background)); +} + +.newsletter-form__button:focus { + box-shadow: 0 0 0 .3rem rgb(var(--color-background)),0 0 0 .4rem rgba(var(--color-foreground)); + background-color: rgb(var(--color-background)); +} + +.newsletter-form__button:not(:focus-visible):not(.focused) { + box-shadow: inherit; + background-color: inherit; } .newsletter-form__button .icon { diff --git a/assets/component-search.css b/assets/component-search.css index 96e699b2bfe..35a3c0764f9 100644 --- a/assets/component-search.css +++ b/assets/component-search.css @@ -2,6 +2,26 @@ padding-right: 5rem; } +.search__button { + right: var(--inputs-border-width); + top: var(--inputs-border-width); +} + +.search__button:focus-visible { + background-color: rgb(var(--color-background)); + z-index: 2; +} + +.search__button:focus { + background-color: rgb(var(--color-background)); + z-index: 2; +} + +.search__button:not(:focus-visible):not(.focused){ + box-shadow: inherit; + background-color: inherit; +} + .search__button .icon { height: 1.8rem; width: 1.8rem; diff --git a/assets/customer.css b/assets/customer.css index a8056c068f3..bf139756574 100644 --- a/assets/customer.css +++ b/assets/customer.css @@ -727,7 +727,7 @@ li[data-address] > h2 { @media only screen and (min-width: 750px) { .addresses form > div:nth-of-type(1) { - padding-right: 2rem; + margin-right: 2rem; } .addresses form > div:nth-of-type(2) { @@ -736,8 +736,8 @@ li[data-address] > h2 { .addresses form > div:nth-of-type(1), .addresses form > div:nth-of-type(2) { - flex-basis: 50%; box-sizing: border-box; + flex-basis: calc(50% - 1rem); } } diff --git a/assets/section-footer.css b/assets/section-footer.css index 5890903aae5..fc4eef95de4 100644 --- a/assets/section-footer.css +++ b/assets/section-footer.css @@ -244,7 +244,6 @@ .localization-form:only-child .localization-form__select { margin: 1rem 1rem 0.5rem; flex-grow: 1; - width: auto; } .footer__localization h2 { @@ -252,6 +251,10 @@ color: rgba(var(--color-foreground), 0.75); } +.footer__localization { + z-index: 0; +} + @media screen and (min-width: 750px) { .footer__localization { padding: 0.4rem 0; @@ -269,7 +272,7 @@ .localization-form:only-child { justify-content: start; width: auto; - margin: 0 0 0 -1rem; + margin: 0 1rem 0 0; } .localization-form:only-child .button, @@ -300,12 +303,18 @@ } .localization-form__select { - box-shadow: 0 0 0 0.1rem rgba(var(--color-foreground), 0.55); + border-radius: var(--inputs-radius-outset); position: relative; margin-bottom: 1.5rem; - border: 0.1rem solid transparent; padding-left: 1rem; text-align: left; + min-height: calc(4rem + var(--inputs-border-width) * 2); + min-width: calc(7rem + var(--inputs-border-width) * 2); +} + +.disclosure__button.localization-form__select { + padding: calc(1.5rem + var(--inputs-border-width)); + background: rgb(var(--color-background)); } noscript .localization-form__select { @@ -322,7 +331,7 @@ noscript .localization-form__select { position: absolute; content: ''; height: 0.6rem; - right: 1.5rem; + right: calc(var(--inputs-border-width) + 1.5rem); top: calc(50% - 0.2rem); } diff --git a/assets/section-main-product.css b/assets/section-main-product.css index 00dc72d443c..c86d7e343aa 100644 --- a/assets/section-main-product.css +++ b/assets/section-main-product.css @@ -400,6 +400,15 @@ a.product__text { max-width: 100%; } +.product-form__quantity .form__label { + margin-bottom: 0.6rem; +} + +.product-form__quantity-top .form__label { + margin-bottom: 1.2rem; +} + + .product--no-media fieldset.product-form__input { flex-wrap: wrap; margin: 0 auto 1.2rem auto; diff --git a/layout/theme.liquid b/layout/theme.liquid index 673771b4343..d57516fe858 100644 --- a/layout/theme.liquid +++ b/layout/theme.liquid @@ -142,8 +142,10 @@ --inputs-border-opacity: {{ settings.inputs_border_opacity | divided_by: 100.0 }}; --inputs-shadow-opacity: {{ settings.inputs_shadow_opacity | divided_by: 100.0 }}; --inputs-shadow-horizontal-offset: {{ settings.inputs_shadow_horizontal_offset }}px; + --inputs-margin-offset: {% if settings.inputs_shadow_vertical_offset != 0 and settings.inputs_shadow_opacity > 0 %}{{ settings.inputs_shadow_vertical_offset | abs }}{% else %}0{% endif %}px; --inputs-shadow-vertical-offset: {{ settings.inputs_shadow_vertical_offset }}px; --inputs-shadow-blur-radius: {{ settings.inputs_shadow_blur }}px; + --inputs-radius-outset: {% if settings.inputs_radius > 0 %}{{ settings.inputs_radius | plus: settings.inputs_border_thickness }}{% else %}0{% endif %}px; --variant-pills-radius: {{ settings.variant_pills_radius }}px; --variant-pills-border-width: {{ settings.variant_pills_border_thickness }}px; diff --git a/sections/featured-product.liquid b/sections/featured-product.liquid index a1aec691cd7..2413e0ab111 100644 --- a/sections/featured-product.liquid +++ b/sections/featured-product.liquid @@ -116,7 +116,7 @@ {%- endif -%} {%- when 'quantity_selector' -%} -
+
diff --git a/sections/header.liquid b/sections/header.liquid index f9caf2d4628..10b166c7737 100644 --- a/sections/header.liquid +++ b/sections/header.liquid @@ -278,7 +278,7 @@