<!doctype html>
<html class="no-js" lang="id-ID">
<head>
<!-- Welcome Abangku, Sukses Selalu... -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="0b0318">
<link rel="canonical" href="https://infinite-style.com/">
<link rel="preconnect" href="https://fonts.shopifycdn.com/" crossorigin>
<title>KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang</title>
<meta name="description" content="Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.">
<meta name="google-site-verification" content="WlcHPAWcZCqRSLdxSaF5nESf-ss_YkyRlqBOza_UR-8" />
<meta name="keywords" content="koitoto, koi toto, togel, slot, toto, situs toto, toto slot, toto 4d, link toto, togel 4d, akses toto, link situs toto, toto slot 4d, situs toto slot, situs toto togel, togel online 4d, toto gacor 4d" />
<link rel="amphtml" href="https://amp.rendikt.info/infinite.html" />
<link rel="preload" as="script" href="../../../../cdn.ampproject.org/v1.js">
<meta name="robots" content="index, follow" />
<meta content="true" name="HandheldFriendly">
<meta content="width" name="MobileOptimized">
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="language" content="ID">
<meta name="copyright" content="KOITOTO">
<meta name="author" content="KOITOTO">
<meta name="distribution" content="global">
<meta name="publisher" content="KOITOTO">
<meta name="geo.placename" content="DKI Jakarta">
<meta name="geo.country" content="ID">
<meta name="geo.region" content="ID" />
<meta name="tgn.nation" content="Indonesia">
<link rel="icon" href="https://imgstore.io/images/2025/03/07/favicon-koi-2025.png">
<meta property="og:locale" content="id_ID" />
<meta property="og:site_name" content="KOITOTO">
<meta property="og:url" content="https://infinite-style.com/">
<meta property="og:title" content="KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang">
<meta property="og:type" content="product">
<meta property="og:description"
content="Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.">
<meta property="og:image" content="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg">
<meta property="og:image:secure_url"content="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg">
<meta property="og:image:width" content="600">
<meta property="og:image:height" content="600">
<meta property="og:price:amount" content="10.000,00">
<meta property="og:price:currency" content="IDR">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang">
<meta name="twitter:description"
content="Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.">
<script>
/** Shopify CDN: Minification failed
Line 7:0 Transforming const to the configured target environment ("es5") is not supported yet
Line 9:0 Transforming const to the configured target environment ("es5") is not supported yet
**/
const ON_CHANGE_DEBOUNCE_TIMER = 300;
const PUB_SUB_EVENTS = {
cartUpdate: 'cart-update',
quantityUpdate: 'quantity-update',
variantChange: 'variant-change',
cartError: 'cart-error',
};</script>
<script>
/** Shopify CDN: Minification failed
Line 7:0 Transforming let to the configured target environment ("es5") is not supported yet
Line 14:28 Transforming array spread to the configured target environment ("es5") is not supported yet
**/
let subscribers = {};
function subscribe(eventName, callback) {
if (subscribers[eventName] === undefined) {
subscribers[eventName] = [];
}
subscribers[eventName] = [...subscribers[eventName], callback];
return function unsubscribe() {
subscribers[eventName] = subscribers[eventName].filter((cb) => {
return cb !== callback;
});
};
}
function publish(eventName, data) {
if (subscribers[eventName]) {
subscribers[eventName].forEach((callback) => {
callback(data);
});
}
}
</script>
<script>
/** Shopify CDN: Minification failed
Line 40:0 Transforming const to the configured target environment ("es5") is not supported yet
Line 42:45 Transforming default arguments to the configured target environment ("es5") is not supported yet
Line 96:2 Transforming const to the configured target environment ("es5") is not supported yet
Line 110:2 Transforming let to the configured target environment ("es5") is not supported yet
Line 111:2 Transforming let to the configured target environment ("es5") is not supported yet
Line 150:40 Transforming default arguments to the configured target environment ("es5") is not supported yet
Line 161:2 Transforming const to the configured target environment ("es5") is not supported yet
Line 164:2 Transforming const to the configured target environment ("es5") is not supported yet
Line 170:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 171:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
... and 187 more hidden warnings
**/
function getFocusableElements(container) {
return Array.from(
container.querySelectorAll(
"summary, a[href], button:enabled, [tabindex]:not([tabindex^='-']), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe"
)
);
}
document.querySelectorAll('[id^="Details-"] summary').forEach((summary) => {
summary.setAttribute('role', 'button');
summary.setAttribute('aria-expanded', summary.parentNode.hasAttribute('open'));
if (summary.nextElementSibling.getAttribute('id')) {
summary.setAttribute('aria-controls', summary.nextElementSibling.id);
}
summary.addEventListener('click', (event) => {
event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));
});
if (summary.closest('header-drawer, menu-drawer')) return;
summary.parentElement.addEventListener('keyup', onKeyUpEscape);
});
const trapFocusHandlers = {};
function trapFocus(container, elementToFocus = container) {
var elements = getFocusableElements(container);
var first = elements[0];
var last = elements[elements.length - 1];
removeTrapFocus();
trapFocusHandlers.focusin = (event) => {
if (event.target !== container && event.target !== last && event.target !== first) return;
document.addEventListener('keydown', trapFocusHandlers.keydown);
};
trapFocusHandlers.focusout = function () {
document.removeEventListener('keydown', trapFocusHandlers.keydown);
};
trapFocusHandlers.keydown = function (event) {
if (event.code.toUpperCase() !== 'TAB') return; // If not TAB key
// On the last focusable element and tab forward, focus the first element.
if (event.target === last && !event.shiftKey) {
event.preventDefault();
first.focus();
}
// On the first focusable element and tab backward, focus the last element.
if ((event.target === container || event.target === first) && event.shiftKey) {
event.preventDefault();
last.focus();
}
};
document.addEventListener('focusout', trapFocusHandlers.focusout);
document.addEventListener('focusin', trapFocusHandlers.focusin);
elementToFocus.focus();
if (
elementToFocus.tagName === 'INPUT' &&
['search', 'text', 'email', 'url'].includes(elementToFocus.type) &&
elementToFocus.value
) {
elementToFocus.setSelectionRange(0, elementToFocus.value.length);
}
}
// Here run the querySelector to figure out if the browser supports :focus-visible or not and run code based on it.
try {
document.querySelector(':focus-visible');
} catch (e) {
focusVisiblePolyfill();
}
function focusVisiblePolyfill() {
const navKeys = [
'ARROWUP',
'ARROWDOWN',
'ARROWLEFT',
'ARROWRIGHT',
'TAB',
'ENTER',
'SPACE',
'ESCAPE',
'HOME',
'END',
'PAGEUP',
'PAGEDOWN',
];
let currentFocusedElement = null;
let mouseClick = null;
window.addEventListener('keydown', (event) => {
if (navKeys.includes(event.code.toUpperCase())) {
mouseClick = false;
}
});
window.addEventListener('mousedown', (event) => {
mouseClick = true;
});
window.addEventListener(
'focus',
() => {
if (currentFocusedElement) currentFocusedElement.classList.remove('focused');
if (mouseClick) return;
currentFocusedElement = document.activeElement;
currentFocusedElement.classList.add('focused');
},
true
);
}
function pauseAllMedia() {
document.querySelectorAll('.js-youtube').forEach((video) => {
video.contentWindow.postMessage('{"event":"command","func":"' + 'pauseVideo' + '","args":""}', '*');
});
document.querySelectorAll('.js-vimeo').forEach((video) => {
video.contentWindow.postMessage('{"method":"pause"}', '*');
});
document.querySelectorAll('video').forEach((video) => video.pause());
document.querySelectorAll('product-model').forEach((model) => {
if (model.modelViewerUI) model.modelViewerUI.pause();
});
}
function removeTrapFocus(elementToFocus = null) {
document.removeEventListener('focusin', trapFocusHandlers.focusin);
document.removeEventListener('focusout', trapFocusHandlers.focusout);
document.removeEventListener('keydown', trapFocusHandlers.keydown);
if (elementToFocus) elementToFocus.focus();
}
function onKeyUpEscape(event) {
if (event.code.toUpperCase() !== 'ESCAPE') return;
const openDetailsElement = event.target.closest('details[open]');
if (!openDetailsElement) return;
const summaryElement = openDetailsElement.querySelector('summary');
openDetailsElement.removeAttribute('open');
summaryElement.setAttribute('aria-expanded', false);
summaryElement.focus();
}
class QuantityInput extends HTMLElement {
constructor() {
super();
this.input = this.querySelector('input');
this.changeEvent = new Event('change', { bubbles: true });
this.input.addEventListener('change', this.onInputChange.bind(this));
this.querySelectorAll('button').forEach((button) =>
button.addEventListener('click', this.onButtonClick.bind(this))
);
}
quantityUpdateUnsubscriber = undefined;
connectedCallback() {
this.validateQtyRules();
this.quantityUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.quantityUpdate, this.validateQtyRules.bind(this));
}
disconnectedCallback() {
if (this.quantityUpdateUnsubscriber) {
this.quantityUpdateUnsubscriber();
}
}
onInputChange(event) {
this.validateQtyRules();
}
onButtonClick(event) {
event.preventDefault();
const previousValue = this.input.value;
event.target.name === 'plus' ? this.input.stepUp() : this.input.stepDown();
if (previousValue !== this.input.value) this.input.dispatchEvent(this.changeEvent);
}
validateQtyRules() {
const value = parseInt(this.input.value);
if (this.input.min) {
const min = parseInt(this.input.min);
const buttonMinus = this.querySelector(".quantity__button[name='minus']");
buttonMinus.classList.toggle('disabled', value <= min);
}
if (this.input.max) {
const max = parseInt(this.input.max);
const buttonPlus = this.querySelector(".quantity__button[name='plus']");
buttonPlus.classList.toggle('disabled', value >= max);
}
}
}
customElements.define('quantity-input', QuantityInput);
function debounce(fn, wait) {
let t;
return (...args) => {
clearTimeout(t);
t = setTimeout(() => fn.apply(this, args), wait);
};
}
function throttle(fn, delay) {
let lastCall = 0;
return function (...args) {
const now = new Date().getTime();
if (now - lastCall < delay) {
return;
}
lastCall = now;
return fn(...args);
};
}
function fetchConfig(type = 'json') {
return {
method: 'POST',
headers: { 'Content-Type': 'application/json', Accept: `application/${type}` },
};
}
/*
* Shopify Common JS
*
*/
if (typeof window.Shopify == 'undefined') {
window.Shopify = {};
}
Shopify.bind = function (fn, scope) {
return function () {
return fn.apply(scope, arguments);
};
};
Shopify.setSelectorByValue = function (selector, value) {
for (var i = 0, count = selector.options.length; i < count; i++) {
var option = selector.options[i];
if (value == option.value || value == option.innerHTML) {
selector.selectedIndex = i;
return i;
}
}
};
Shopify.addListener = function (target, eventName, callback) {
target.addEventListener
? target.addEventListener(eventName, callback, false)
: target.attachEvent('on' + eventName, callback);
};
Shopify.postLink = function (path, options) {
options = options || {};
var method = options['method'] || 'post';
var params = options['parameters'] || {};
var form = document.createElement('form');
form.setAttribute('method', method);
form.setAttribute('action', path);
for (var key in params) {
var hiddenField = document.createElement('input');
hiddenField.setAttribute('type', 'hidden');
hiddenField.setAttribute('name', key);
hiddenField.setAttribute('value', params[key]);
form.appendChild(hiddenField);
}
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);
};
Shopify.CountryProvinceSelector = function (country_domid, province_domid, options) {
this.countryEl = document.getElementById(country_domid);
this.provinceEl = document.getElementById(province_domid);
this.provinceContainer = document.getElementById(options['hideElement'] || province_domid);
Shopify.addListener(this.countryEl, 'change', Shopify.bind(this.countryHandler, this));
this.initCountry();
this.initProvince();
};
Shopify.CountryProvinceSelector.prototype = {
initCountry: function () {
var value = this.countryEl.getAttribute('data-default');
Shopify.setSelectorByValue(this.countryEl, value);
this.countryHandler();
},
initProvince: function () {
var value = this.provinceEl.getAttribute('data-default');
if (value && this.provinceEl.options.length > 0) {
Shopify.setSelectorByValue(this.provinceEl, value);
}
},
countryHandler: function (e) {
var opt = this.countryEl.options[this.countryEl.selectedIndex];
var raw = opt.getAttribute('data-provinces');
var provinces = JSON.parse(raw);
this.clearOptions(this.provinceEl);
if (provinces && provinces.length == 0) {
this.provinceContainer.style.display = 'none';
} else {
for (var i = 0; i < provinces.length; i++) {
var opt = document.createElement('option');
opt.value = provinces[i][0];
opt.innerHTML = provinces[i][1];
this.provinceEl.appendChild(opt);
}
this.provinceContainer.style.display = '';
}
},
clearOptions: function (selector) {
while (selector.firstChild) {
selector.removeChild(selector.firstChild);
}
},
setOptions: function (selector, values) {
for (var i = 0, count = values.length; i < values.length; i++) {
var opt = document.createElement('option');
opt.value = values[i];
opt.innerHTML = values[i];
selector.appendChild(opt);
}
},
};
class MenuDrawer extends HTMLElement {
constructor() {
super();
this.mainDetailsToggle = this.querySelector('details');
this.addEventListener('keyup', this.onKeyUp.bind(this));
this.addEventListener('focusout', this.onFocusOut.bind(this));
this.bindEvents();
}
bindEvents() {
this.querySelectorAll('summary').forEach((summary) =>
summary.addEventListener('click', this.onSummaryClick.bind(this))
);
this.querySelectorAll('button:not(.localization-selector)').forEach((button) =>
button.addEventListener('click', this.onCloseButtonClick.bind(this))
);
}
onKeyUp(event) {
if (event.code.toUpperCase() !== 'ESCAPE') return;
const openDetailsElement = event.target.closest('details[open]');
if (!openDetailsElement) return;
openDetailsElement === this.mainDetailsToggle
? this.closeMenuDrawer(event, this.mainDetailsToggle.querySelector('summary'))
: this.closeSubmenu(openDetailsElement);
}
onSummaryClick(event) {
const summaryElement = event.currentTarget;
const detailsElement = summaryElement.parentNode;
const parentMenuElement = detailsElement.closest('.has-submenu');
const isOpen = detailsElement.hasAttribute('open');
const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
function addTrapFocus() {
trapFocus(summaryElement.nextElementSibling, detailsElement.querySelector('button'));
summaryElement.nextElementSibling.removeEventListener('transitionend', addTrapFocus);
}
if (detailsElement === this.mainDetailsToggle) {
if (isOpen) event.preventDefault();
isOpen ? this.closeMenuDrawer(event, summaryElement) : this.openMenuDrawer(summaryElement);
if (window.matchMedia('(max-width: 990px)')) {
document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);
}
} else {
setTimeout(() => {
detailsElement.classList.add('menu-opening');
summaryElement.setAttribute('aria-expanded', true);
parentMenuElement && parentMenuElement.classList.add('submenu-open');
!reducedMotion || reducedMotion.matches
? addTrapFocus()
: summaryElement.nextElementSibling.addEventListener('transitionend', addTrapFocus);
}, 100);
}
}
openMenuDrawer(summaryElement) {
setTimeout(() => {
this.mainDetailsToggle.classList.add('menu-opening');
});
summaryElement.setAttribute('aria-expanded', true);
trapFocus(this.mainDetailsToggle, summaryElement);
document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);
}
closeMenuDrawer(event, elementToFocus = false) {
if (event === undefined) return;
this.mainDetailsToggle.classList.remove('menu-opening');
this.mainDetailsToggle.querySelectorAll('details').forEach((details) => {
details.removeAttribute('open');
details.classList.remove('menu-opening');
});
this.mainDetailsToggle.querySelectorAll('.submenu-open').forEach((submenu) => {
submenu.classList.remove('submenu-open');
});
document.body.classList.remove(`overflow-hidden-${this.dataset.breakpoint}`);
removeTrapFocus(elementToFocus);
this.closeAnimation(this.mainDetailsToggle);
if (event instanceof KeyboardEvent) elementToFocus?.setAttribute('aria-expanded', false);
}
onFocusOut() {
setTimeout(() => {
if (this.mainDetailsToggle.hasAttribute('open') && !this.mainDetailsToggle.contains(document.activeElement))
this.closeMenuDrawer();
});
}
onCloseButtonClick(event) {
const detailsElement = event.currentTarget.closest('details');
this.closeSubmenu(detailsElement);
}
closeSubmenu(detailsElement) {
const parentMenuElement = detailsElement.closest('.submenu-open');
parentMenuElement && parentMenuElement.classList.remove('submenu-open');
detailsElement.classList.remove('menu-opening');
detailsElement.querySelector('summary').setAttribute('aria-expanded', false);
removeTrapFocus(detailsElement.querySelector('summary'));
this.closeAnimation(detailsElement);
}
closeAnimation(detailsElement) {
let animationStart;
const handleAnimation = (time) => {
if (animationStart === undefined) {
animationStart = time;
}
const elapsedTime = time - animationStart;
if (elapsedTime < 400) {
window.requestAnimationFrame(handleAnimation);
} else {
detailsElement.removeAttribute('open');
if (detailsElement.closest('details[open]')) {
trapFocus(detailsElement.closest('details[open]'), detailsElement.querySelector('summary'));
}
}
};
window.requestAnimationFrame(handleAnimation);
}
}
customElements.define('menu-drawer', MenuDrawer);
class HeaderDrawer extends MenuDrawer {
constructor() {
super();
}
openMenuDrawer(summaryElement) {
this.header = this.header || document.querySelector('.section-header');
this.borderOffset =
this.borderOffset || this.closest('.header-wrapper').classList.contains('header-wrapper--border-bottom') ? 1 : 0;
document.documentElement.style.setProperty(
'--header-bottom-position',
`${parseInt(this.header.getBoundingClientRect().bottom - this.borderOffset)}px`
);
this.header.classList.add('menu-open');
setTimeout(() => {
this.mainDetailsToggle.classList.add('menu-opening');
});
summaryElement.setAttribute('aria-expanded', true);
window.addEventListener('resize', this.onResize);
trapFocus(this.mainDetailsToggle, summaryElement);
document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);
}
closeMenuDrawer(event, elementToFocus) {
if (!elementToFocus) return;
super.closeMenuDrawer(event, elementToFocus);
this.header.classList.remove('menu-open');
window.removeEventListener('resize', this.onResize);
}
onResize = () => {
this.header &&
document.documentElement.style.setProperty(
'--header-bottom-position',
`${parseInt(this.header.getBoundingClientRect().bottom - this.borderOffset)}px`
);
document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);
};
}
customElements.define('header-drawer', HeaderDrawer);
class ModalDialog extends HTMLElement {
constructor() {
super();
this.querySelector('[id^="ModalClose-"]').addEventListener('click', this.hide.bind(this, false));
this.addEventListener('keyup', (event) => {
if (event.code.toUpperCase() === 'ESCAPE') this.hide();
});
if (this.classList.contains('media-modal')) {
this.addEventListener('pointerup', (event) => {
if (event.pointerType === 'mouse' && !event.target.closest('deferred-media, product-model')) this.hide();
});
} else {
this.addEventListener('click', (event) => {
if (event.target === this) this.hide();
});
}
}
connectedCallback() {
if (this.moved) return;
this.moved = true;
document.body.appendChild(this);
}
show(opener) {
this.openedBy = opener;
const popup = this.querySelector('.template-popup');
document.body.classList.add('overflow-hidden');
this.setAttribute('open', '');
if (popup) popup.loadContent();
trapFocus(this, this.querySelector('[role="dialog"]'));
window.pauseAllMedia();
}
hide() {
document.body.classList.remove('overflow-hidden');
document.body.dispatchEvent(new CustomEvent('modalClosed'));
this.removeAttribute('open');
removeTrapFocus(this.openedBy);
window.pauseAllMedia();
}
}
customElements.define('modal-dialog', ModalDialog);
class ModalOpener extends HTMLElement {
constructor() {
super();
const button = this.querySelector('button');
if (!button) return;
button.addEventListener('click', () => {
const modal = document.querySelector(this.getAttribute('data-modal'));
if (modal) modal.show(button);
});
}
}
customElements.define('modal-opener', ModalOpener);
class DeferredMedia extends HTMLElement {
constructor() {
super();
const poster = this.querySelector('[id^="Deferred-Poster-"]');
if (!poster) return;
poster.addEventListener('click', this.loadContent.bind(this));
}
loadContent(focus = true) {
window.pauseAllMedia();
if (!this.getAttribute('loaded')) {
const content = document.createElement('div');
content.appendChild(this.querySelector('template').content.firstElementChild.cloneNode(true));
this.setAttribute('loaded', true);
const deferredElement = this.appendChild(content.querySelector('video, model-viewer, iframe'));
if (focus) deferredElement.focus();
if (deferredElement.nodeName == 'VIDEO' && deferredElement.getAttribute('autoplay')) {
// force autoplay for safari
deferredElement.play();
}
}
}
}
customElements.define('deferred-media', DeferredMedia);
class SliderComponent extends HTMLElement {
constructor() {
super();
this.slider = this.querySelector('[id^="Slider-"]');
this.sliderItems = this.querySelectorAll('[id^="Slide-"]');
this.enableSliderLooping = false;
this.currentPageElement = this.querySelector('.slider-counter--current');
this.pageTotalElement = this.querySelector('.slider-counter--total');
this.prevButton = this.querySelector('button[name="previous"]');
this.nextButton = this.querySelector('button[name="next"]');
if (!this.slider || !this.nextButton) return;
this.initPages();
const resizeObserver = new ResizeObserver((entries) => this.initPages());
resizeObserver.observe(this.slider);
this.slider.addEventListener('scroll', this.update.bind(this));
this.prevButton.addEventListener('click', this.onButtonClick.bind(this));
this.nextButton.addEventListener('click', this.onButtonClick.bind(this));
}
initPages() {
this.sliderItemsToShow = Array.from(this.sliderItems).filter((element) => element.clientWidth > 0);
if (this.sliderItemsToShow.length < 2) return;
this.sliderItemOffset = this.sliderItemsToShow[1].offsetLeft - this.sliderItemsToShow[0].offsetLeft;
this.slidesPerPage = Math.floor(
(this.slider.clientWidth - this.sliderItemsToShow[0].offsetLeft) / this.sliderItemOffset
);
this.totalPages = this.sliderItemsToShow.length - this.slidesPerPage + 1;
this.update();
}
resetPages() {
this.sliderItems = this.querySelectorAll('[id^="Slide-"]');
this.initPages();
}
update() {
// Temporarily prevents unneeded updates resulting from variant changes
// This should be refactored as part of https://github.com/Shopify/dawn/issues/2057
if (!this.slider || !this.nextButton) return;
const previousPage = this.currentPage;
this.currentPage = Math.round(this.slider.scrollLeft / this.sliderItemOffset) + 1;
if (this.currentPageElement && this.pageTotalElement) {
this.currentPageElement.textContent = this.currentPage;
this.pageTotalElement.textContent = this.totalPages;
}
if (this.currentPage != previousPage) {
this.dispatchEvent(
new CustomEvent('slideChanged', {
detail: {
currentPage: this.currentPage,
currentElement: this.sliderItemsToShow[this.currentPage - 1],
},
})
);
}
if (this.enableSliderLooping) return;
if (this.isSlideVisible(this.sliderItemsToShow[0]) && this.slider.scrollLeft === 0) {
this.prevButton.setAttribute('disabled', 'disabled');
} else {
this.prevButton.removeAttribute('disabled');
}
if (this.isSlideVisible(this.sliderItemsToShow[this.sliderItemsToShow.length - 1])) {
this.nextButton.setAttribute('disabled', 'disabled');
} else {
this.nextButton.removeAttribute('disabled');
}
}
isSlideVisible(element, offset = 0) {
const lastVisibleSlide = this.slider.clientWidth + this.slider.scrollLeft - offset;
return element.offsetLeft + element.clientWidth <= lastVisibleSlide && element.offsetLeft >= this.slider.scrollLeft;
}
onButtonClick(event) {
event.preventDefault();
const step = event.currentTarget.dataset.step || 1;
this.slideScrollPosition =
event.currentTarget.name === 'next'
? this.slider.scrollLeft + step * this.sliderItemOffset
: this.slider.scrollLeft - step * this.sliderItemOffset;
this.setSlidePosition(this.slideScrollPosition);
}
setSlidePosition(position) {
this.slider.scrollTo({
left: position,
});
}
}
customElements.define('slider-component', SliderComponent);
class SlideshowComponent extends SliderComponent {
constructor() {
super();
this.sliderControlWrapper = this.querySelector('.slider-buttons');
this.enableSliderLooping = true;
if (!this.sliderControlWrapper) return;
this.sliderFirstItemNode = this.slider.querySelector('.slideshow__slide');
if (this.sliderItemsToShow.length > 0) this.currentPage = 1;
this.announcementBarSlider = this.querySelector('.announcement-bar-slider');
// Value below should match --duration-announcement-bar CSS value
this.announcerBarAnimationDelay = this.announcementBarSlider ? 250 : 0;
this.sliderControlLinksArray = Array.from(this.sliderControlWrapper.querySelectorAll('.slider-counter__link'));
this.sliderControlLinksArray.forEach((link) => link.addEventListener('click', this.linkToSlide.bind(this)));
this.slider.addEventListener('scroll', this.setSlideVisibility.bind(this));
this.setSlideVisibility();
if (this.announcementBarSlider) {
this.announcementBarArrowButtonWasClicked = false;
this.reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
this.reducedMotion.addEventListener('change', () => {
if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();
});
[this.prevButton, this.nextButton].forEach((button) => {
button.addEventListener(
'click',
() => {
this.announcementBarArrowButtonWasClicked = true;
},
{ once: true }
);
});
}
if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();
}
setAutoPlay() {
this.autoplaySpeed = this.slider.dataset.speed * 1000;
this.addEventListener('mouseover', this.focusInHandling.bind(this));
this.addEventListener('mouseleave', this.focusOutHandling.bind(this));
this.addEventListener('focusin', this.focusInHandling.bind(this));
this.addEventListener('focusout', this.focusOutHandling.bind(this));
if (this.querySelector('.slideshow__autoplay')) {
this.sliderAutoplayButton = this.querySelector('.slideshow__autoplay');
this.sliderAutoplayButton.addEventListener('click', this.autoPlayToggle.bind(this));
this.autoplayButtonIsSetToPlay = true;
this.play();
} else {
this.reducedMotion.matches || this.announcementBarArrowButtonWasClicked
? this.pause()
: this.play();
}
}
onButtonClick(event) {
super.onButtonClick(event);
this.wasClicked = true;
const isFirstSlide = this.currentPage === 1;
const isLastSlide = this.currentPage === this.sliderItemsToShow.length;
if (!isFirstSlide && !isLastSlide) {
this.applyAnimationToAnnouncementBar(event.currentTarget.name);
return;
}
if (isFirstSlide && event.currentTarget.name === 'previous') {
this.slideScrollPosition =
this.slider.scrollLeft + this.sliderFirstItemNode.clientWidth * this.sliderItemsToShow.length;
} else if (isLastSlide && event.currentTarget.name === 'next') {
this.slideScrollPosition = 0;
}
this.setSlidePosition(this.slideScrollPosition);
this.applyAnimationToAnnouncementBar(event.currentTarget.name);
}
setSlidePosition(position) {
if (this.setPositionTimeout) clearTimeout(this.setPositionTimeout);
this.setPositionTimeout = setTimeout(() => {
this.slider.scrollTo({
left: position,
});
}, this.announcerBarAnimationDelay);
}
update() {
super.update();
this.sliderControlButtons = this.querySelectorAll('.slider-counter__link');
this.prevButton.removeAttribute('disabled');
if (!this.sliderControlButtons.length) return;
this.sliderControlButtons.forEach((link) => {
link.classList.remove('slider-counter__link--active');
link.removeAttribute('aria-current');
});
this.sliderControlButtons[this.currentPage - 1].classList.add('slider-counter__link--active');
this.sliderControlButtons[this.currentPage - 1].setAttribute('aria-current', true);
}
autoPlayToggle() {
this.togglePlayButtonState(this.autoplayButtonIsSetToPlay);
this.autoplayButtonIsSetToPlay ? this.pause() : this.play();
this.autoplayButtonIsSetToPlay = !this.autoplayButtonIsSetToPlay;
}
focusOutHandling(event) {
if (this.sliderAutoplayButton) {
const focusedOnAutoplayButton =
event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);
if (!this.autoplayButtonIsSetToPlay || focusedOnAutoplayButton) return;
this.play();
} else if (
!this.reducedMotion.matches &&
!this.announcementBarArrowButtonWasClicked
) {
this.play();
}
}
focusInHandling(event) {
if (this.sliderAutoplayButton) {
const focusedOnAutoplayButton =
event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);
if (focusedOnAutoplayButton && this.autoplayButtonIsSetToPlay) {
this.play();
} else if (this.autoplayButtonIsSetToPlay) {
this.pause();
}
} else if (this.announcementBarSlider.contains(event.target)) {
this.pause();
}
}
play() {
this.slider.setAttribute('aria-live', 'off');
clearInterval(this.autoplay);
this.autoplay = setInterval(this.autoRotateSlides.bind(this), this.autoplaySpeed);
}
pause() {
this.slider.setAttribute('aria-live', 'polite');
clearInterval(this.autoplay);
}
togglePlayButtonState(pauseAutoplay) {
if (pauseAutoplay) {
this.sliderAutoplayButton.classList.add('slideshow__autoplay--paused');
this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.playSlideshow);
} else {
this.sliderAutoplayButton.classList.remove('slideshow__autoplay--paused');
this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.pauseSlideshow);
}
}
autoRotateSlides() {
const slideScrollPosition =
this.currentPage === this.sliderItems.length
? 0
: this.slider.scrollLeft + this.sliderItemOffset;
this.setSlidePosition(slideScrollPosition);
this.applyAnimationToAnnouncementBar();
}
setSlideVisibility(event) {
this.sliderItemsToShow.forEach((item, index) => {
const linkElements = item.querySelectorAll('a');
if (index === this.currentPage - 1) {
if (linkElements.length)
linkElements.forEach((button) => {
button.removeAttribute('tabindex');
});
item.setAttribute('aria-hidden', 'false');
item.removeAttribute('tabindex');
} else {
if (linkElements.length)
linkElements.forEach((button) => {
button.setAttribute('tabindex', '-1');
});
item.setAttribute('aria-hidden', 'true');
item.setAttribute('tabindex', '-1');
}
});
this.wasClicked = false;
}
applyAnimationToAnnouncementBar(button = 'next') {
if (!this.announcementBarSlider) return;
const itemsCount = this.sliderItems.length;
const increment = button === 'next' ? 1 : -1;
const currentIndex = this.currentPage - 1;
let nextIndex = (currentIndex + increment) % itemsCount;
nextIndex = nextIndex === -1 ? itemsCount - 1 : nextIndex;
const nextSlide = this.sliderItems[nextIndex];
const currentSlide = this.sliderItems[currentIndex];
const animationClassIn = 'announcement-bar-slider--fade-in';
const animationClassOut = 'announcement-bar-slider--fade-out';
const isFirstSlide = currentIndex === 0;
const isLastSlide = currentIndex === itemsCount - 1;
const shouldMoveNext = (button === 'next' && !isLastSlide) || (button === 'previous' && isFirstSlide);
const direction = shouldMoveNext ? 'next' : 'previous';
currentSlide.classList.add(`${animationClassOut}-${direction}`);
nextSlide.classList.add(`${animationClassIn}-${direction}`);
setTimeout(() => {
currentSlide.classList.remove(`${animationClassOut}-${direction}`);
nextSlide.classList.remove(`${animationClassIn}-${direction}`);
}, this.announcerBarAnimationDelay * 2);
}
linkToSlide(event) {
event.preventDefault();
const slideScrollPosition =
this.slider.scrollLeft +
this.sliderFirstItemNode.clientWidth *
(this.sliderControlLinksArray.indexOf(event.currentTarget) + 1 - this.currentPage);
this.slider.scrollTo({
left: slideScrollPosition,
});
}
}
customElements.define('slideshow-component', SlideshowComponent);
class VariantSelects extends HTMLElement {
constructor() {
super();
this.addEventListener('change', this.onVariantChange);
}
onVariantChange() {
this.updateOptions();
this.updateMasterId();
this.toggleAddButton(true, '', false);
this.updatePickupAvailability();
this.removeErrorMessage();
this.updateVariantStatuses();
if (!this.currentVariant) {
this.toggleAddButton(true, '', true);
this.setUnavailable();
} else {
this.updateMedia();
this.updateURL();
this.updateVariantInput();
this.renderProductInfo();
this.updateShareUrl();
}
}
updateOptions() {
this.options = Array.from(this.querySelectorAll('select'), (select) => select.value);
}
updateMasterId() {
this.currentVariant = this.getVariantData().find((variant) => {
return !variant.options
.map((option, index) => {
return this.options[index] === option;
})
.includes(false);
});
}
updateMedia() {
if (!this.currentVariant) return;
if (!this.currentVariant.featured_media) return;
const mediaGalleries = document.querySelectorAll(`[id^="MediaGallery-${this.dataset.section}"]`);
mediaGalleries.forEach((mediaGallery) =>
mediaGallery.setActiveMedia(`${this.dataset.section}-${this.currentVariant.featured_media.id}`, true)
);
const modalContent = document.querySelector(`#ProductModal-${this.dataset.section} .product-media-modal__content`);
if (!modalContent) return;
const newMediaModal = modalContent.querySelector(`[data-media-id="${this.currentVariant.featured_media.id}"]`);
modalContent.prepend(newMediaModal);
}
updateURL() {
if (!this.currentVariant || this.dataset.updateUrl === 'false') return;
window.history.replaceState({}, '', `${this.dataset.url}?variant=${this.currentVariant.id}`);
}
updateShareUrl() {
const shareButton = document.getElementById(`Share-${this.dataset.section}`);
if (!shareButton || !shareButton.updateUrl) return;
shareButton.updateUrl(`${window.shopUrl}${this.dataset.url}?variant=${this.currentVariant.id}`);
}
updateVariantInput() {
const productForms = document.querySelectorAll(
`#product-form-${this.dataset.section}, #product-form-installment-${this.dataset.section}`
);
productForms.forEach((productForm) => {
const input = productForm.querySelector('input[name="id"]');
input.value = this.currentVariant.id;
input.dispatchEvent(new Event('change', { bubbles: true }));
});
}
updateVariantStatuses() {
const selectedOptionOneVariants = this.variantData.filter(
(variant) => this.querySelector(':checked').value === variant.option1
);
const inputWrappers = [...this.querySelectorAll('.product-form__input')];
inputWrappers.forEach((option, index) => {
if (index === 0) return;
const optionInputs = [...option.querySelectorAll('input[type="radio"], option')];
const previousOptionSelected = inputWrappers[index - 1].querySelector(':checked').value;
const availableOptionInputsValue = selectedOptionOneVariants
.filter((variant) => variant.available && variant[`option${index}`] === previousOptionSelected)
.map((variantOption) => variantOption[`option${index + 1}`]);
this.setInputAvailability(optionInputs, availableOptionInputsValue);
});
}
setInputAvailability(listOfOptions, listOfAvailableOptions) {
listOfOptions.forEach((input) => {
if (listOfAvailableOptions.includes(input.getAttribute('value'))) {
input.innerText = input.getAttribute('value');
} else {
input.innerText = window.variantStrings.unavailable_with_option.replace('[value]', input.getAttribute('value'));
}
});
}
updatePickupAvailability() {
const pickUpAvailability = document.querySelector('pickup-availability');
if (!pickUpAvailability) return;
if (this.currentVariant && this.currentVariant.available) {
pickUpAvailability.fetchAvailability(this.currentVariant.id);
} else {
pickUpAvailability.removeAttribute('available');
pickUpAvailability.innerHTML = '';
}
}
removeErrorMessage() {
const section = this.closest('section');
if (!section) return;
const productForm = section.querySelector('product-form');
if (productForm) productForm.handleErrorMessage();
}
renderProductInfo() {
const requestedVariantId = this.currentVariant.id;
const sectionId = this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section;
fetch(
`${this.dataset.url}?variant=${requestedVariantId}§ion_id=${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section
}`
)
.then((response) => response.text())
.then((responseText) => {
// prevent unnecessary ui changes from abandoned selections
if (this.currentVariant.id !== requestedVariantId) return;
const html = new DOMParser().parseFromString(responseText, 'text/html');
const destination = document.getElementById(`price-${this.dataset.section}`);
const source = html.getElementById(
`price-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`
);
const skuSource = html.getElementById(
`Sku-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`
);
const skuDestination = document.getElementById(`Sku-${this.dataset.section}`);
const inventorySource = html.getElementById(
`Inventory-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`
);
const inventoryDestination = document.getElementById(`Inventory-${this.dataset.section}`);
const volumePricingSource = html.getElementById(
`Volume-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`
);
const pricePerItemDestination = document.getElementById(`Price-Per-Item-${this.dataset.section}`);
const pricePerItemSource = html.getElementById(`Price-Per-Item-${this.dataset.originalSection ? this.dataset.originalSection : this.dataset.section}`);
const volumePricingDestination = document.getElementById(`Volume-${this.dataset.section}`);
const qtyRules = document.getElementById(`Quantity-Rules-${this.dataset.section}`);
const volumeNote = document.getElementById(`Volume-Note-${this.dataset.section}`);
if (volumeNote) volumeNote.classList.remove('hidden');
if (volumePricingDestination) volumePricingDestination.classList.remove('hidden');
if (qtyRules) qtyRules.classList.remove('hidden');
if (source && destination) destination.innerHTML = source.innerHTML;
if (inventorySource && inventoryDestination) inventoryDestination.innerHTML = inventorySource.innerHTML;
if (skuSource && skuDestination) {
skuDestination.innerHTML = skuSource.innerHTML;
skuDestination.classList.toggle('hidden', skuSource.classList.contains('hidden'));
}
if (volumePricingSource && volumePricingDestination) {
volumePricingDestination.innerHTML = volumePricingSource.innerHTML;
}
if (pricePerItemSource && pricePerItemDestination) {
pricePerItemDestination.innerHTML = pricePerItemSource.innerHTML;
pricePerItemDestination.classList.toggle('hidden', pricePerItemSource.classList.contains('hidden'));
}
const price = document.getElementById(`price-${this.dataset.section}`);
if (price) price.classList.remove('hidden');
if (inventoryDestination)
inventoryDestination.classList.toggle('hidden', inventorySource.innerText === '');
const addButtonUpdated = html.getElementById(`ProductSubmitButton-${sectionId}`);
this.toggleAddButton(
addButtonUpdated ? addButtonUpdated.hasAttribute('disabled') : true,
window.variantStrings.soldOut
);
publish(PUB_SUB_EVENTS.variantChange, {
data: {
sectionId,
html,
variant: this.currentVariant,
},
});
});
}
toggleAddButton(disable = true, text, modifyClass = true) {
const productForm = document.getElementById(`product-form-${this.dataset.section}`);
if (!productForm) return;
const addButton = productForm.querySelector('[name="add"]');
const addButtonText = productForm.querySelector('[name="add"] > span');
if (!addButton) return;
if (disable) {
addButton.setAttribute('disabled', 'disabled');
if (text) addButtonText.textContent = text;
} else {
addButton.removeAttribute('disabled');
addButtonText.textContent = window.variantStrings.addToCart;
}
if (!modifyClass) return;
}
setUnavailable() {
const button = document.getElementById(`product-form-${this.dataset.section}`);
const addButton = button.querySelector('[name="add"]');
const addButtonText = button.querySelector('[name="add"] > span');
const price = document.getElementById(`price-${this.dataset.section}`);
const inventory = document.getElementById(`Inventory-${this.dataset.section}`);
const sku = document.getElementById(`Sku-${this.dataset.section}`);
const pricePerItem = document.getElementById(`Price-Per-Item-${this.dataset.section}`);
const volumeNote = document.getElementById(`Volume-Note-${this.dataset.section}`);
const volumeTable = document.getElementById(`Volume-${this.dataset.section}`);
const qtyRules = document.getElementById(`Quantity-Rules-${this.dataset.section}`);
if (!addButton) return;
addButtonText.textContent = window.variantStrings.unavailable;
if (price) price.classList.add('hidden');
if (inventory) inventory.classList.add('hidden');
if (sku) sku.classList.add('hidden');
if (pricePerItem) pricePerItem.classList.add('hidden');
if (volumeNote) volumeNote.classList.add('hidden');
if (volumeTable) volumeTable.classList.add('hidden');
if (qtyRules) qtyRules.classList.add('hidden');
}
getVariantData() {
this.variantData = this.variantData || JSON.parse(this.querySelector('[type="application/json"]').textContent);
return this.variantData;
}
}
customElements.define('variant-selects', VariantSelects);
class VariantRadios extends VariantSelects {
constructor() {
super();
}
setInputAvailability(listOfOptions, listOfAvailableOptions) {
listOfOptions.forEach((input) => {
if (listOfAvailableOptions.includes(input.getAttribute('value'))) {
input.classList.remove('disabled');
} else {
input.classList.add('disabled');
}
});
}
updateOptions() {
const fieldsets = Array.from(this.querySelectorAll('fieldset'));
this.options = fieldsets.map((fieldset) => {
return Array.from(fieldset.querySelectorAll('input')).find((radio) => radio.checked).value;
});
}
}
customElements.define('variant-radios', VariantRadios);
class ProductRecommendations extends HTMLElement {
constructor() {
super();
}
connectedCallback() {
const handleIntersection = (entries, observer) => {
if (!entries[0].isIntersecting) return;
observer.unobserve(this);
fetch(this.dataset.url)
.then((response) => response.text())
.then((text) => {
const html = document.createElement('div');
html.innerHTML = text;
const recommendations = html.querySelector('product-recommendations');
if (recommendations && recommendations.innerHTML.trim().length) {
this.innerHTML = recommendations.innerHTML;
}
if (!this.querySelector('slideshow-component') && this.classList.contains('complementary-products')) {
this.remove();
}
if (html.querySelector('.grid__item')) {
this.classList.add('product-recommendations--loaded');
}
})
.catch((e) => {
console.error(e);
});
};
new IntersectionObserver(handleIntersection.bind(this), { rootMargin: '0px 0px 400px 0px' }).observe(this);
}
}
customElements.define('product-recommendations', ProductRecommendations);
</script>
<script>
/** Shopify CDN: Minification failed
Line 16:0 Transforming const to the configured target environment ("es5") is not supported yet
Line 17:0 Transforming const to the configured target environment ("es5") is not supported yet
Line 18:0 Transforming const to the configured target environment ("es5") is not supported yet
Line 19:0 Transforming const to the configured target environment ("es5") is not supported yet
Line 25:6 Transforming const to the configured target environment ("es5") is not supported yet
Line 39:49 Transforming default arguments to the configured target environment ("es5") is not supported yet
Line 39:79 Transforming default arguments to the configured target environment ("es5") is not supported yet
Line 40:2 Transforming const to the configured target environment ("es5") is not supported yet
Line 50:2 Transforming const to the configured target environment ("es5") is not supported yet
Line 60:2 Transforming const to the configured target environment ("es5") is not supported yet
... and 9 more hidden warnings
**/
const SCROLL_ANIMATION_TRIGGER_CLASSNAME = 'scroll-trigger';
const SCROLL_ANIMATION_OFFSCREEN_CLASSNAME = 'scroll-trigger--offscreen';
const SCROLL_ZOOM_IN_TRIGGER_CLASSNAME = 'animate--zoom-in';
const SCROLL_ANIMATION_CANCEL_CLASSNAME = 'scroll-trigger--cancel';
// Scroll in animation logic
function onIntersection(elements, observer) {
elements.forEach((element, index) => {
if (element.isIntersecting) {
const elementTarget = element.target;
if (elementTarget.classList.contains(SCROLL_ANIMATION_OFFSCREEN_CLASSNAME)) {
elementTarget.classList.remove(SCROLL_ANIMATION_OFFSCREEN_CLASSNAME);
if (elementTarget.hasAttribute('data-cascade'))
elementTarget.setAttribute('style', `--animation-order: ${index};`);
}
observer.unobserve(elementTarget);
} else {
element.target.classList.add(SCROLL_ANIMATION_OFFSCREEN_CLASSNAME);
element.target.classList.remove(SCROLL_ANIMATION_CANCEL_CLASSNAME);
}
});
}
function initializeScrollAnimationTrigger(rootEl = document, isDesignModeEvent = false) {
const animationTriggerElements = Array.from(rootEl.getElementsByClassName(SCROLL_ANIMATION_TRIGGER_CLASSNAME));
if (animationTriggerElements.length === 0) return;
if (isDesignModeEvent) {
animationTriggerElements.forEach((element) => {
element.classList.add('scroll-trigger--design-mode');
});
return;
}
const observer = new IntersectionObserver(onIntersection, {
rootMargin: '0px 0px -50px 0px',
});
animationTriggerElements.forEach((element) => observer.observe(element));
}
// Zoom in animation logic
function initializeScrollZoomAnimationTrigger() {
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
const animationTriggerElements = Array.from(document.getElementsByClassName(SCROLL_ZOOM_IN_TRIGGER_CLASSNAME));
if (animationTriggerElements.length === 0) return;
const scaleAmount = 0.2 / 100;
animationTriggerElements.forEach((element) => {
let elementIsVisible = false;
const observer = new IntersectionObserver((elements) => {
elements.forEach((entry) => {
elementIsVisible = entry.isIntersecting;
});
});
observer.observe(element);
element.style.setProperty('--zoom-in-ratio', 1 + scaleAmount * percentageSeen(element));
window.addEventListener(
'scroll',
throttle(() => {
if (!elementIsVisible) return;
element.style.setProperty('--zoom-in-ratio', 1 + scaleAmount * percentageSeen(element));
}),
{ passive: true }
);
});
}
function percentageSeen(element) {
const viewportHeight = window.innerHeight;
const scrollY = window.scrollY;
const elementPositionY = element.getBoundingClientRect().top + scrollY;
const elementHeight = element.offsetHeight;
if (elementPositionY > scrollY + viewportHeight) {
// If we haven't reached the image yet
return 0;
} else if (elementPositionY + elementHeight < scrollY) {
// If we've completely scrolled past the image
return 100;
}
// When the image is in the viewport
const distance = scrollY + viewportHeight - elementPositionY;
let percentage = distance / ((viewportHeight + elementHeight) / 100);
return Math.round(percentage);
}
window.addEventListener('DOMContentLoaded', () => {
initializeScrollAnimationTrigger();
initializeScrollZoomAnimationTrigger();
});
if (Shopify.designMode) {
document.addEventListener('shopify:section:load', (event) => initializeScrollAnimationTrigger(event.target, true));
document.addEventListener('shopify:section:reorder', () => initializeScrollAnimationTrigger(document, true));
}
</script>
<script>
window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');
</script>
<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/67119169539/digital_wallets/dialog">
<link rel="alternate" type="application/json+oembed" href=".html">
<script async="async" src="https://infinite-style.com/"></script>
<script id="shopify-features" type="application/json">
{
"accessToken": "bd35w3423f0855sf383c4483c3cc50a6",
"betas": ["rich-media-storefront-analytics"],
"domain": "https://infinite-style.com/",
"predictiveSearch": true,
"shopId": 37356114305,
"smart_payment_buttons_url": "https:\/\/allamericanwindowtinting.com\/cdn\/shopifycloud\/payment-sheet\/assets\/latest\/spb.en.js",
"dynamic_checkout_cart_url": "https:\/\/allamericanwindowtinting.com\/cdn\/shopifycloud\/payment-sheet\/assets\/latest\/dynamic-checkout-cart.en.js",
"locale": "en",
"optimusEnabled": true,
"optimusHidden": false,
"betterDynamicCheckoutRecommendationVariant": "control",
"shopPromisePDPV3Enabled": false
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "KOITOTO",
"operatingSystem": "ANDROID",
"applicationCategory": "GameApplication",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"ratingCount": "2907771"
},
"offers": {
"@type": "Offer",
"price": "5000.00",
"priceCurrency": "IDR"
}
}
</script>
<script>
var Shopify = Shopify || {};
Shopify.shop = "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang";
Shopify.locale = "en";
Shopify.currency = {
active: "IDR",
rate: "1.0"
};
Shopify.country = "ID";
Shopify.theme = {
name: "Refresh",
id: 138081403093,
theme_store_id: 1567,
role: "main"
};
Shopify.theme.handle = "null";
Shopify.theme.style = {
id: null,
handle: null
};
Shopify.cdnHost = "https://infinite-style.com//cdn";
Shopify.routes = Shopify.routes || {};
Shopify.routes.root = "https://infinite-style.com/";
</script>
<script type="module">
! function (o) {
(o.Shopify = o.Shopify || {}).modules = !0
}(window);
</script>
<script>
! function (o) {
function n() {
var o = [];
function n() {
o.push(Array.prototype.slice.apply(arguments))
}
return n.q = o, n
}
var t = o.Shopify = o.Shopify || {};
t.loadFeatures = n(), t.autoloadFeatures = n()
}(window);
</script>
<script id="__st">
var __st = {
a: 67119169539,
offset: 0,
reqid: "816b44e4-400f-420d-8784-4bd8093b92b1",
pageurl: "https://infinite-style.com/",
u: "64d86d143528",
p: "product",
rtyp: "product",
rid: 8226828321669
};
</script>
<script>
window.ShopifyPaypalV4VisibilityTracking = true;
</script>
<script>
! function (o) {
o.addEventListener("DOMContentLoaded", function () {
window.Shopify = window.Shopify || {}, window.Shopify.recaptchaV3 = window.Shopify.recaptchaV3 || {
siteKey: "6LcCR2cUAAAAANS1Gpq_mDIJ2pQuJphsSQaUEuc9"
};
var t = ['form[action*="/contact"] input[name="form_type"][value="contact"]', 'form[action*="/comments"] input[name="form_type"][value="new_comment"]', 'form[action*="/account"] input[name="form_type"][value="customer_login"]', 'form[action*="/account"] input[name="form_type"][value="recover_customer_password"]', 'form[action*="/account"] input[name="form_type"][value="create_customer"]', 'form[action*="/contact"] input[name="form_type"][value="customer"]'].join(",");
function n(e) {
e = e.target;
null == e || null != (e = function e(t, n) {
if (null == t.parentElement) return null;
if ("FORM" != t.parentElement.tagName) return e(t.parentElement, n);
for (var o = t.parentElement.action, r = 0; r < n.length; r++)
if (-1 !== o.indexOf(n[r])) return t.parentElement;
return null
}(e, ["/contact", "/comments", "/account"])) && null != e.querySelector(t) && ((e = o.createElement("script")).setAttribute("src", "../../../../cdn.shopify.com/shopifycloud/storefront-recaptcha-v3/v0.6/index.js"), o.body.appendChild(e), o.removeEventListener("focus", n, !0), o.removeEventListener("change", n, !0), o.removeEventListener("click", n, !0))
}
o.addEventListener("click", n, !0), o.addEventListener("change", n, !0), o.addEventListener("focus", n, !0)
})
}(document);
</script>
<script>
!function () { var e = function (e) { var t = { exports: {} }; return e.call(t.exports, t, t.exports), t.exports }, t = function () { function e(e, t) { var r = [], o = !0, n = !1, a = void 0; try { for (var i, s = e[Symbol.iterator](); !(o = (i = s.next()).done) && (r.push(i.value), !t || r.length !== t); o = !0); } catch (e) { n = !0, a = e } finally { try { !o && s.return && s.return() } finally { if (n) throw a } } return r } return function (t, r) { if (Array.isArray(t)) return t; if (Symbol.iterator in Object(t)) return e(t, r); throw new TypeError("Invalid attempt to destructure non-iterable instance") } }(), r = function (e) { return e && e.__esModule ? e : { default: e } }, o = function (e) { if (Array.isArray(e)) { for (var t = 0, r = Array(e.length); t < e.length; t++)r[t] = e[t]; return r } return Array.from(e) }, n = e((function (e, t) { "use strict"; function r(e) { "loading" !== document.readyState ? e() : document.addEventListener ? document.addEventListener("DOMContentLoaded", e) : document.attachEvent("onreadystatechange", (function () { "loading" !== document.readyState && e() })) } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = r })), a = e((function (e, t) { "use strict"; function r(e) { return new Error('The feature { name: "' + e.name + '", version: "' + e.version + '"} does not exist') } function o(e) { return new Error("Could not create registry entry " + e) } function n() { return new Error("Cannot register a feature with the same selector twice") } function a(e) { return new Error("Features should be an Array. Received: " + JSON.stringify(e)) } function i(e) { return new Error('Features should be defined as `{ name: "name", version: "version" }`. Received: ' + JSON.stringify(e)) } function s(e, t) { return new Error(e + " has already been loaded at version " + t) } Object.defineProperty(t, "__esModule", { value: !0 }), t.featureNotFound = r, t.couldNotCreateEntry = o, t.couldNotAddToQuerySelectors = n, t.invalidFeaturesArray = a, t.invalidFeature = i, t.alreadyLoaded = s })), i = e((function (e, t) { "use strict"; function r() { if (a) return a; var e = document.getElementById("shopify-features"); if (e) try { a = JSON.parse(e.textContent) } catch (e) { } else a = {}; return a } function o() { var e = r(); if (e) try { return e.betas.reduce((function (e, t) { return e[t] = !0, e }), {}) } catch (e) { } return {} } function n() { return r().locale || "en" } Object.defineProperty(t, "__esModule", { value: !0 }), t.getBetas = o, t.getLocale = n; var a = void 0 })), s = e((function (e, t) { "use strict"; function r() { } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = r })), u = e((function (e, t) { "use strict"; function r() { function e(e, t) { r[e] = r[e] || []; for (var o = r[e], n = 0; n < o.length; n++) { var i = o[n], s = i.name, u = i.version; if (t.name === s) { if (t.version !== u) throw (0, a.couldNotAddToQuerySelectors)(e); return } } o.push(t) } function t() { return Object.keys(r).reduce((function (e, t) { if (!document.querySelector(t)) return e; var o = r[t]; return delete r[t], e.concat(o) }), []) } var r = {}; return { add: e, getFeatures: t } } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = r })), l = e((function (e, t) { "use strict"; function r(e) { var t = e.name, r = e.baseName, o = e.version, n = e.betaFlag, s = e.fileName, l = e.fileNames, d = e.legacy, c = e.localized, f = e.localesSupported, h = e.autoLoadSelector, v = e.props, y = void 0 === v ? {} : v, m = t + "@" + (o || "latest"); if (u[m]) throw (0, a.couldNotCreateEntry)(m); h && (Array.isArray(h) ? h : [h]).forEach((function (e) { p.lookup.add(e, { name: t, version: o }) })); u[m] = { props: y, betaFlag: n, scriptId: m, name: t, baseName: r, version: o, locale: (0, i.getLocale)(), localized: c, localesSupported: f, legacy: d, fileName: s, fileNames: l } } function o() { l = {} } function n(e) { window.Shopify.modules ? (e.legacy = !1, e.props = { type: "module" }, r(e)) : e.hasLegacy && (e.legacy = !0, e.props = { nomodule: "" }, r(e)) } function s(e) { var t = e.name + "@" + (e.version || "latest"), r = u[t]; if (!r) throw (0, a.featureNotFound)(e); var o = r.name, n = r.baseName, i = r.version, s = r.localized && r.locale, d = r.legacy, c = r.localesSupported; if (l[o] && l[o] !== i) throw (0, a.alreadyLoaded)(t, l[o]); l[o] = i; var f = []; return (r.fileNames || [r.fileName]).forEach((function (e) { f.push((0, h.urlForFeature)({ name: o, baseName: n, version: i, legacy: d, locale: s, localesSupported: c, fileName: e })) })), 1 === f.length ? r.src = f[0] : f.length > 1 && (r.srcs = f), r } Object.defineProperty(t, "__esModule", { value: !0 }), t.reset = o, t.register = n, t.getEntry = s; var u = {}, l = {} })), d = e((function (e, t) { "use strict"; function r() { n = null } function o(e) { return n ? n[e] : (n = (0, i.getBetas)(), o(e)) } Object.defineProperty(t, "__esModule", { value: !0 }), t.resetBetas = r, t.default = o; var n = null })), c = e((function (e, t) { "use strict"; function r(e) { return a.indexOf(e) > -1 } function o(e) { return i.indexOf(e) > -1 } function n(e, t, n) { function s() { a.push(c), d(), n(null, c) } function u() { i.push(c), d(), n(new Error("load error: " + e)) } function l() { c.addEventListener("load", s), c.addEventListener("error", u) } function d() { c.removeEventListener("load", s), c.removeEventListener("error", u) } var c = document.querySelector('script[src="' + e + '"]'); c && r(c) ? s() : c && o(c) ? u() : c ? l() : (c = document.createElement("script"), Object.keys(t).forEach((function (e) { c.setAttribute(e, t[e]) })), null === c.getAttribute("defer") && c.setAttribute("defer", ""), c.src = e, c.crossorigin = "anonymous", l(), document.head.appendChild(c)) } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = n; var a = [], i = [] })), f = e((function (e, o) { "use strict"; function n(e, t, r) { return e.reduce((function (e, o) { var n = o.onLoad || v.default; try { var i = (0, l.getEntry)(o), s = i.betaFlag, u = !s || (0, h.default)(s); if (r && !u) throw (0, a.featureNotFound)(o); u && e.push([i, o]) } catch (e) { n(e), t.push(e) } return e }), []) } function i(e, r, o) { var n = e.reduce((function (e, r) { var o = t(r, 1)[0]; return e + (o.srcs ? o.srcs.length : 1) }), 0); 0 !== n ? e.forEach((function (e) { var a = t(e, 2), i = a[0], s = a[1].onLoad || v.default, u = i.srcs || [i.src], l = u.length, d = []; u.forEach((function (e) { (0, y.default)(e, i.props, (function (e) { e && (r.push(e), d.push(e)), 0 === --l && (0 === d.length ? s(null) : 1 === d.length ? s(d[0]) : s(d)), 0 === --n && o(r) })) })) })) : o(r) } function u(e, t, r) { var o = []; i(n(e, o, t), o, (function (e) { var t = 0 === e.length ? null : e; r(t) })) } function f(e, t) { u(e, !0, t) } function p(e, t) { u(e, !1, t) } Object.defineProperty(o, "__esModule", { value: !0 }), o.loadMultiple = u, o.loadMultipleErrorIfNotInBeta = f, o.loadMultipleSilentIfNotInBeta = p; var h = r(d), v = r(s), y = r(c) })), p = e((function (e, t) { "use strict"; function o(e) { var t = e || n.default; (0, f.loadMultipleSilentIfNotInBeta)(a.getFeatures(), t) } Object.defineProperty(t, "__esModule", { value: !0 }), t.lookup = void 0, t.default = o; var n = r(s), a = (0, r(u).default)(); t.lookup = a })), h = e((function (e, t) { "use strict"; function r(e) { var t = e.name, r = e.version, o = e.legacy, n = e.baseName, a = void 0 === n ? null : n, i = e.locale, s = void 0 === i ? null : i, u = e.localesSupported, l = void 0 === u ? [] : u, d = e.fileName, c = a || t, f = (void 0 === d ? null : d) || c; if (f.endsWith(".js") && (f = f.slice(0, -3)), o && (f += "-legacy"), s && (f = f + "." + (s = 0 === l.length || l.includes(s) ? s : "en")), ("shop-js" === t || t.startsWith("shop-js/")) && window.Shopify.spinShopJsUrl) return "https://" + window.Shopify.spinShopJsUrl + "/" + f + ".js"; var p = [window.Shopify && window.Shopify.cdnHost || "cdn.shopify.com", "shopifycloud", c]; return void 0 !== r && p.push("v" + r), p.push(f + ".js"), "https://" + p.join("/") } Object.defineProperty(t, "__esModule", { value: !0 }), t.urlForFeature = r })), v = e((function (e, t) { "use strict"; function r(e) { if (!e || "string" != typeof e.name || "string" != typeof e.version) throw (0, a.invalidFeature)(e) } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = r })), y = e((function (e, t) { "use strict"; function o(e, t) { var r = t || i.default; if (Array.isArray(e)) return e.forEach(n.default), void (0, f.loadMultipleErrorIfNotInBeta)(e, r); throw (0, a.invalidFeaturesArray)(e) } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = o; var n = r(v), i = r(s) })), m = e((function (e, t) { "use strict"; function r(e) { var t = null; return { get isObserving() { return Boolean(t) }, enable: function () { this.isObserving || (t = new MutationObserver((function (t) { for (var r = !1, o = 0; o < t.length; o++)if (t[o].addedNodes.length) { r = !0; break } r && e() }))).observe(document.body, { childList: !0, subtree: !0 }) }, disable: function () { this.isObserving && (t.disconnect(), t = null) } } } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = r })), g = e((function (e, t) { "use strict"; function r(e, t) { var r = window.Shopify[e] && window.Shopify[e].q; r && Array.isArray(r) && r.forEach((function (e) { t.apply(void 0, o(e)) })), window.Shopify[e] = t } Object.defineProperty(t, "__esModule", { value: !0 }), t.default = r })); e((function (e, t) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), t.resetRegistry = t.resetBetas = t.register = void 0; var o = r(n), a = r(y), i = r(p), s = r(m), u = r(g); t.register = l.register, t.resetBetas = d.resetBetas, t.resetRegistry = l.reset, window.Shopify = window.Shopify || {}, window.Shopify.featureAssets = window.Shopify.featureAssets || {}, window.Shopify.featureAssets["shop-js"] = window.Shopify.featureAssets["shop-js"] || {}, (0, l.register)({ name: "model-viewer", version: "0.6", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="0.6"]' }), (0, l.register)({ name: "model-viewer", version: "0.7", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="0.7"]' }), (0, l.register)({ name: "model-viewer", version: "0.8", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="0.8"]' }), (0, l.register)({ name: "model-viewer", version: "1.2", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="1.2"]' }), (0, l.register)({ name: "model-viewer", version: "1.7", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="1.7"]' }), (0, l.register)({ name: "model-viewer", version: "1.9", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="1.9"]' }), (0, l.register)({ name: "model-viewer", version: "1.10", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="1.10"]' }), (0, l.register)({ name: "model-viewer", version: "1.11", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="1.11"]' }), (0, l.register)({ name: "model-viewer", version: "1.12", hasLegacy: !0, autoLoadSelector: 'model-viewer[data-shopify-feature="1.12"]' }), (0, l.register)({ name: "shop-js/shopify-payment-terms", baseName: "shop-js", hasLegacy: !1, localized: !1, fileNames: Shopify.featureAssets["shop-js"]["payment-terms"] || ["client"], autoLoadSelector: ["shopify-payment-terms"] }), (0, l.register)({ name: "shop-js/shop-login-button", baseName: "shop-js", hasLegacy: !1, localized: !1, fileNames: Shopify.featureAssets["shop-js"]["login-button"] || ["client"], autoLoadSelector: ["shop-login-button"] }), (0, l.register)({ name: "model-viewer-ui", version: "1.0", hasLegacy: !0, localized: !0, localesSupported: ["bg-BG", "cs", "da", "de", "el", "es", "fi", "fr", "hi", "hr-HR", "hu", "id", "it", "ja", "ko", "lt-LT", "ms", "nb", "nl", "pl", "pt-BR", "pt-PT", "ro-RO", "ru", "sk-SK", "sl-SI", "sv", "th", "tr", "vi", "zh-CN", "zh-TW"] }), (0, l.register)({ name: "shopify-xr", version: "1.0", baseName: "shopify-xr-js", fileName: "shopify-xr", localized: !0, localesSupported: ["bg-BG", "cs", "da", "de", "el", "es", "fi", "fr", "hi", "hr-HR", "hu", "id", "it", "ja", "ko", "lt-LT", "ms", "nb", "nl", "pl", "pt-BR", "pt-PT", "ro-RO", "ru", "sk-SK", "sl-SI", "sv", "th", "tr", "vi", "zh-CN", "zh-TW"] }), (0, l.register)({ name: "video-ui", baseName: "shopify-plyr", version: "1.0", hasLegacy: !0, localized: !0, localesSupported: ["cs", "da", "de", "es", "fi", "fr", "hi", "it", "ja", "ko", "ms", "nb", "nl", "pl", "pt-BR", "pt-PT", "sv", "th", "tr", "zh-CN", "zh-TW"] }), (0, l.register)({ name: "video-ui", baseName: "shopify-plyr", version: "1.1", hasLegacy: !0, localized: !0, localesSupported: ["cs", "da", "de", "es", "fi", "fr", "hi", "it", "ja", "ko", "ms", "nb", "nl", "pl", "pt-BR", "pt-PT", "sv", "th", "tr", "zh-CN", "zh-TW"] }), (0, l.register)({ name: "video-ui", baseName: "plyr", version: "2.0", hasLegacy: !0, localized: !0, localesSupported: ["bg-BG", "cs", "da", "de", "el", "es", "fi", "fr", "hi", "hr-HR", "hu", "id", "it", "ja", "ko", "lt-LT", "ms", "nb", "nl", "pl", "pt-BR", "pt-PT", "ro-RO", "ru", "sk-SK", "sl-SI", "sv", "th", "tr", "vi", "zh-CN", "zh-TW"], fileName: "shopify-plyr" }), (0, l.register)({ name: "media-analytics", version: "0.1", hasLegacy: !0, fileName: "analytics", betaFlag: "rich-media-storefront-analytics", autoLoadSelector: ["video", "model-viewer", 'a[rel="ar"]', 'a[href*="package=com.google.ar.core;action=android.intent.action.VIEW;"]', "[data-shopify-xr]", 'iframe[src^="https://www.youtube.com/embed/"]', 'iframe[src^="https://player.vimeo.com/video/"]'] }), (0, l.register)({ name: "consent-tracking-api", version: "0.1", hasLegacy: !0 }), (0, o.default)((function () { function e() { (0, i.default)((function (e) { if (e) throw e[0] })) } (0, u.default)("loadFeatures", a.default), (0, u.default)("autoloadFeatures", i.default), e(), (0, s.default)(e).enable() })) })) }("undefined" != typeof global ? global : "undefined" != typeof window && window);
</script>
<script>
!function () {
var t = function (t) { var n = { exports: {} }; return t.call(n.exports, n, n.exports), n.exports }, n = function (t) { return t && t.__esModule ? t : { default: t } }, e = t((function (t) { var n = {}.toString; t.exports = function (t) { return n.call(t).slice(8, -1) } })), r = t((function (t) { var n = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")(); "number" == typeof __g && (__g = n) })), o = t((function (t) { var n = "__core-js_shared__", e = r[n] || (r[n] = {}); t.exports = function (t) { return e[t] || (e[t] = {}) } })), i = t((function (t) { var n = 0, e = Math.random(); t.exports = function (t) { return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++n + e).toString(36)) } })), u = t((function (t) { var n = o("wks"), e = r.Symbol, u = "function" == typeof e; (t.exports = function (t) { return n[t] || (n[t] = u && e[t] || (u ? e : i)("Symbol." + t)) }).store = n })), c = t((function (t) { var n = u("toStringTag"), r = "Arguments" == e(function () { return arguments }()), o = function (t, n) { try { return t[n] } catch (t) { } }; t.exports = function (t) { var i, u, c; return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (u = o(i = Object(t), n)) ? u : r ? e(i) : "Object" == (c = e(i)) && "function" == typeof i.callee ? "Arguments" : c } })), s = t((function (t) { t.exports = function (t) { return "object" == typeof t ? null !== t : "function" == typeof t } })), a = t((function (t) { t.exports = function (t) { if (!s(t)) throw TypeError(t + " is not an object!"); return t } })), f = t((function (t) { t.exports = function (t) { try { return !!t() } catch (t) { return !0 } } })), l = t((function (t) { t.exports = !f((function () { return 7 != Object.defineProperty({}, "a", { get: function () { return 7 } }).a })) })), p = t((function (t) { var n = r.document, e = s(n) && s(n.createElement); t.exports = function (t) { return e ? n.createElement(t) : {} } })), h = t((function (t) { t.exports = !l && !f((function () { return 7 != Object.defineProperty(p("div"), "a", { get: function () { return 7 } }).a })) })), d = t((function (t) { t.exports = function (t, n) { if (!s(t)) return t; var e, r; if (n && "function" == typeof (e = t.toString) && !s(r = e.call(t))) return r; if ("function" == typeof (e = t.valueOf) && !s(r = e.call(t))) return r; if (!n && "function" == typeof (e = t.toString) && !s(r = e.call(t))) return r; throw TypeError("Can't convert object to primitive value") } })), y = t((function (t, n) { var e = Object.defineProperty; n.f = l ? Object.defineProperty : function (t, n, r) { if (a(t), n = d(n, !0), a(r), h) try { return e(t, n, r) } catch (t) { } if ("get" in r || "set" in r) throw TypeError("Accessors not supported!"); return "value" in r && (t[n] = r.value), t } })), v = t((function (t) { t.exports = function (t, n) { return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: n } } })), m = t((function (t) { t.exports = l ? function (t, n, e) { return y.f(t, n, v(1, e)) } : function (t, n, e) { return t[n] = e, t } })), b = t((function (t) { var n = {}.hasOwnProperty; t.exports = function (t, e) { return n.call(t, e) } })), _ = t((function (t) { var n = t.exports = { version: "2.5.1" }; "number" == typeof __e && (__e = n) })), w = t((function (t) { var n = i("src"), e = "toString", o = Function[e], u = ("" + o).split(e); _.inspectSource = function (t) { return o.call(t) }, (t.exports = function (t, e, o, i) { var c = "function" == typeof o; c && (b(o, "name") || m(o, "name", e)), t[e] !== o && (c && (b(o, n) || m(o, n, t[e] ? "" + t[e] : u.join(String(e)))), t === r ? t[e] = o : i ? t[e] ? t[e] = o : m(t, e, o) : (delete t[e], m(t, e, o))) })(Function.prototype, e, (function () { return "function" == typeof this && this[n] || o.call(this) })) })), x = (t((function () { "use strict"; var t = {}; t[u("toStringTag")] = "z", t + "" != "[object z]" && w(Object.prototype, "toString", (function () { return "[object " + c(this) + "]" }), !0) })), t((function (t) { var n = Math.ceil, e = Math.floor; t.exports = function (t) { return isNaN(t = +t) ? 0 : (t > 0 ? e : n)(t) } }))), g = t((function (t) { t.exports = function (t) { if (null == t) throw TypeError("Can't call method on " + t); return t } })), A = t((function (t) { t.exports = function (t) { return function (n, e) { var r, o, i = String(g(n)), u = x(e), c = i.length; return u < 0 || u >= c ? t ? "" : void 0 : (r = i.charCodeAt(u)) < 55296 || r > 56319 || u + 1 === c || (o = i.charCodeAt(u + 1)) < 56320 || o > 57343 ? t ? i.charAt(u) : r : t ? i.slice(u, u + 2) : o - 56320 + (r - 55296 << 10) + 65536 } } })), S = t((function (t) { t.exports = !1 })), P = t((function (t) { t.exports = function (t) { if ("function" != typeof t) throw TypeError(t + " is not a function!"); return t } })), E = t((function (t) { t.exports = function (t, n, e) { if (P(t), void 0 === n) return t; switch (e) { case 1: return function (e) { return t.call(n, e) }; case 2: return function (e, r) { return t.call(n, e, r) }; case 3: return function (e, r, o) { return t.call(n, e, r, o) } }return function () { return t.apply(n, arguments) } } })), O = t((function (t) { var n = "prototype", e = function (t, o, i) { var u, c, s, a, f = t & e.F, l = t & e.G, p = t & e.S, h = t & e.P, d = t & e.B, y = l ? r : p ? r[o] || (r[o] = {}) : (r[o] || {})[n], v = l ? _ : _[o] || (_[o] = {}), b = v[n] || (v[n] = {}); for (u in l && (i = o), i) s = ((c = !f && y && void 0 !== y[u]) ? y : i)[u], a = d && c ? E(s, r) : h && "function" == typeof s ? E(Function.call, s) : s, y && w(y, u, s, t & e.U), v[u] != s && m(v, u, a), h && b[u] != s && (b[u] = s) }; r.core = _, e.F = 1, e.G = 2, e.S = 4, e.P = 8, e.B = 16, e.W = 32, e.U = 64, e.R = 128, t.exports = e })), T = t((function (t) { t.exports = {} })), j = t((function (t) { t.exports = Object("z").propertyIsEnumerable(0) ? Object : function (t) { return "String" == e(t) ? t.split("") : Object(t) } })), F = t((function (t) { t.exports = function (t) { return j(g(t)) } })), k = t((function (t) { var n = Math.min; t.exports = function (t) { return t > 0 ? n(x(t), 9007199254740991) : 0 } })), B = t((function (t) { var n = Math.max, e = Math.min; t.exports = function (t, r) { return (t = x(t)) < 0 ? n(t + r, 0) : e(t, r) } })), L = t((function (t) { t.exports = function (t) { return function (n, e, r) { var o, i = F(n), u = k(i.length), c = B(r, u); if (t && e != e) { for (; u > c;)if ((o = i[c++]) != o) return !0 } else for (; u > c; c++)if ((t || c in i) && i[c] === e) return t || c || 0; return !t && -1 } } })), M = t((function (t) { var n = o("keys"); t.exports = function (t) { return n[t] || (n[t] = i(t)) } })), C = t((function (t) { var n = L(!1), e = M("IE_PROTO"); t.exports = function (t, r) { var o, i = F(t), u = 0, c = []; for (o in i) o != e && b(i, o) && c.push(o); for (; r.length > u;)b(i, o = r[u++]) && (~n(c, o) || c.push(o)); return c } })), I = t((function (t) { t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",") })), R = t((function (t) { t.exports = Object.keys || function (t) { return C(t, I) } })), D = t((function (t) { t.exports = l ? Object.defineProperties : function (t, n) { a(t); for (var e, r = R(n), o = r.length, i = 0; o > i;)y.f(t, e = r[i++], n[e]); return t } })), U = t((function (t) { var n = r.document; t.exports = n && n.documentElement })), N = t((function (t) { var n = M("IE_PROTO"), e = function () { }, r = "prototype", o = function () { var t, n = p("iframe"), e = I.length, i = "<", u = ">"; for (n.style.display = "none", U.appendChild(n), n.src = "javascript:", (t = n.contentWindow.document).open(), t.write(i + "script" + u + "document.F=Object" + i + "/script" + u), t.close(), o = t.F; e--;)delete o[r][I[e]]; return o() }; t.exports = Object.create || function (t, i) { var u; return null !== t ? (e[r] = a(t), u = new e, e[r] = null, u[n] = t) : u = o(), void 0 === i ? u : D(u, i) } })), G = t((function (t) { var n = y.f, e = u("toStringTag"); t.exports = function (t, r, o) { t && !b(t = o ? t : t.prototype, e) && n(t, e, { configurable: !0, value: r }) } })), H = t((function (t) { "use strict"; var n = {}; m(n, u("iterator"), (function () { return this })), t.exports = function (t, e, r) { t.prototype = N(n, { next: v(1, r) }), G(t, e + " Iterator") } })), q = t((function (t) { t.exports = function (t) { return Object(g(t)) } })), z = t((function (t) { var n = M("IE_PROTO"), e = Object.prototype; t.exports = Object.getPrototypeOf || function (t) { return t = q(t), b(t, n) ? t[n] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? e : null } })), V = t((function (t) { "use strict"; var n = u("iterator"), e = !([].keys && "next" in [].keys()), r = "@@iterator", o = "keys", i = "values", c = function () { return this }; t.exports = function (t, u, s, a, f, l, p) { H(s, u, a); var h, d, y, v = function (t) { if (!e && t in A) return A[t]; switch (t) { case o: case i: return function () { return new s(this, t) } }return function () { return new s(this, t) } }, _ = u + " Iterator", x = f == i, g = !1, A = t.prototype, P = A[n] || A[r] || f && A[f], E = P || v(f), j = f ? x ? v("entries") : E : void 0, F = "Array" == u && A.entries || P; if (F && (y = z(F.call(new t))) !== Object.prototype && y.next && (G(y, _, !0), S || b(y, n) || m(y, n, c)), x && P && P.name !== i && (g = !0, E = function () { return P.call(this) }), S && !p || !e && !g && A[n] || m(A, n, E), T[u] = E, T[_] = c, f) if (h = { values: x ? E : v(i), keys: l ? E : v(o), entries: j }, p) for (d in h) d in A || w(A, d, h[d]); else O(O.P + O.F * (e || g), u, h); return h } })), W = (t((function () { "use strict"; var t = A(!0); V(String, "String", (function (t) { this._t = String(t), this._i = 0 }), (function () { var n, e = this._t, r = this._i; return r >= e.length ? { value: void 0, done: !0 } : (n = t(e, r), this._i += n.length, { value: n, done: !1 }) })) })), t((function (t) { var n = u("unscopables"), e = Array.prototype; null == e[n] && m(e, n, {}), t.exports = function (t) { e[n][t] = !0 } }))), K = t((function (t) { t.exports = function (t, n) { return { value: n, done: !!t } } })), J = t((function (t) { "use strict"; t.exports = V(Array, "Array", (function (t, n) { this._t = F(t), this._i = 0, this._k = n }), (function () { var t = this._t, n = this._k, e = this._i++; return !t || e >= t.length ? (this._t = void 0, K(1)) : K(0, "keys" == n ? e : "values" == n ? t[e] : [e, t[e]]) }), "values"), T.Arguments = T.Array, W("keys"), W("values"), W("entries") })), X = (t((function () { for (var t = u("iterator"), n = u("toStringTag"), e = T.Array, o = { CSSRuleList: !0, CSSStyleDeclaration: !1, CSSValueList: !1, ClientRectList: !1, DOMRectList: !1, DOMStringList: !1, DOMTokenList: !0, DataTransferItemList: !1, FileList: !1, HTMLAllCollection: !1, HTMLCollection: !1, HTMLFormElement: !1, HTMLSelectElement: !1, MediaList: !0, MimeTypeArray: !1, NamedNodeMap: !1, NodeList: !0, PaintRequestList: !1, Plugin: !1, PluginArray: !1, SVGLengthList: !1, SVGNumberList: !1, SVGPathSegList: !1, SVGPointList: !1, SVGStringList: !1, SVGTransformList: !1, SourceBufferList: !1, StyleSheetList: !0, TextTrackCueList: !1, TextTrackList: !1, TouchList: !1 }, i = R(o), c = 0; c < i.length; c++) { var s, a = i[c], f = o[a], l = r[a], p = l && l.prototype; if (p && (p[t] || m(p, t, e), p[n] || m(p, n, a), T[a] = e, f)) for (s in J) p[s] || w(p, s, J[s], !0) } })), t((function (t) { t.exports = function (t, n, e, r) { if (!(t instanceof n) || void 0 !== r && r in t) throw TypeError(e + ": incorrect invocation!"); return t } }))), Y = t((function (t) { t.exports = function (t, n, e, r) { try { return r ? n(a(e)[0], e[1]) : n(e) } catch (n) { var o = t.return; throw void 0 !== o && a(o.call(t)), n } } })), $ = t((function (t) { var n = u("iterator"), e = Array.prototype; t.exports = function (t) { return void 0 !== t && (T.Array === t || e[n] === t) } })), Q = t((function (t) { var n = u("iterator"); t.exports = _.getIteratorMethod = function (t) { if (null != t) return t[n] || t["@@iterator"] || T[c(t)] } })), Z = t((function (t, n) { var e = {}, r = {}; (n = t.exports = function (t, n, o, i, u) { var c, s, f, l, p = u ? function () { return t } : Q(t), h = E(o, i, n ? 2 : 1), d = 0; if ("function" != typeof p) throw TypeError(t + " is not iterable!"); if ($(p)) { for (c = k(t.length); c > d; d++)if ((l = n ? h(a(s = t[d])[0], s[1]) : h(t[d])) === e || l === r) return l } else for (f = p.call(t); !(s = f.next()).done;)if ((l = Y(f, h, s.value, n)) === e || l === r) return l }).BREAK = e, n.RETURN = r })), tt = t((function (t) { var n = u("species"); t.exports = function (t, e) { var r, o = a(t).constructor; return void 0 === o || null == (r = a(o)[n]) ? e : P(r) } })), nt = t((function (t) { t.exports = function (t, n, e) { var r = void 0 === e; switch (n.length) { case 0: return r ? t() : t.call(e); case 1: return r ? t(n[0]) : t.call(e, n[0]); case 2: return r ? t(n[0], n[1]) : t.call(e, n[0], n[1]); case 3: return r ? t(n[0], n[1], n[2]) : t.call(e, n[0], n[1], n[2]); case 4: return r ? t(n[0], n[1], n[2], n[3]) : t.call(e, n[0], n[1], n[2], n[3]) }return t.apply(e, n) } })), et = t((function (t) { var n, o, i, u = r.process, c = r.setImmediate, s = r.clearImmediate, a = r.MessageChannel, f = r.Dispatch, l = 0, h = {}, d = "onreadystatechange", y = function () { var t = +this; if (h.hasOwnProperty(t)) { var n = h[t]; delete h[t], n() } }, v = function (t) { y.call(t.data) }; c && s || (c = function (t) { for (var e = [], r = 1; arguments.length > r;)e.push(arguments[r++]); return h[++l] = function () { nt("function" == typeof t ? t : Function(t), e) }, n(l), l }, s = function (t) { delete h[t] }, "process" == e(u) ? n = function (t) { u.nextTick(E(y, t, 1)) } : f && f.now ? n = function (t) { f.now(E(y, t, 1)) } : a ? (i = (o = new a).port2, o.port1.onmessage = v, n = E(i.postMessage, i, 1)) : r.addEventListener && "function" == typeof postMessage && !r.importScripts ? (n = function (t) { r.postMessage(t + "", "*") }, r.addEventListener("message", v, !1)) : n = d in p("script") ? function (t) { U.appendChild(p("script"))[d] = function () { U.removeChild(this), y.call(t) } } : function (t) { setTimeout(E(y, t, 1), 0) }), t.exports = { set: c, clear: s } })), rt = t((function (t) { var n = et.set, o = r.MutationObserver || r.WebKitMutationObserver, i = r.process, u = r.Promise, c = "process" == e(i); t.exports = function () { var t, e, s, a = function () { var n, r; for (c && (n = i.domain) && n.exit(); t;) { r = t.fn, t = t.next; try { r() } catch (n) { throw t ? s() : e = void 0, n } } e = void 0, n && n.enter() }; if (c) s = function () { i.nextTick(a) }; else if (o) { var f = !0, l = document.createTextNode(""); new o(a).observe(l, { characterData: !0 }), s = function () { l.data = f = !f } } else if (u && u.resolve) { var p = u.resolve(); s = function () { p.then(a) } } else s = function () { n.call(r, a) }; return function (n) { var r = { fn: n, next: void 0 }; e && (e.next = r), t || (t = r, s()), e = r } } })), ot = t((function (t) { "use strict"; function n(t) { var n, e; this.promise = new t((function (t, r) { if (void 0 !== n || void 0 !== e) throw TypeError("Bad Promise constructor"); n = t, e = r })), this.resolve = P(n), this.reject = P(e) } t.exports.f = function (t) { return new n(t) } })), it = t((function (t) { t.exports = function (t) { try { return { e: !1, v: t() } } catch (t) { return { e: !0, v: t } } } })), ut = t((function (t) { t.exports = function (t, n) { if (a(t), s(n) && n.constructor === t) return n; var e = ot.f(t); return (0, e.resolve)(n), e.promise } })), ct = t((function (t) { t.exports = function (t, n, e) { for (var r in n) w(t, r, n[r], e); return t } })), st = t((function (t) { "use strict"; var n = u("species"); t.exports = function (t) { var e = r[t]; l && e && !e[n] && y.f(e, n, { configurable: !0, get: function () { return this } }) } })), at = t((function (t) { var n = u("iterator"), e = !1; try { var r = [7][n](); r.return = function () { e = !0 }, Array.from(r, (function () { throw 2 })) } catch (t) { } t.exports = function (t, r) { if (!r && !e) return !1; var o = !1; try { var i = [7], u = i[n](); u.next = function () { return { done: o = !0 } }, i[n] = function () { return u }, t(i) } catch (t) { } return o } })), ft = (t((function () { "use strict"; var t, n, e, o, i = et.set, a = rt(), f = "Promise", l = r.TypeError, p = r.process, h = r[f], d = "process" == c(p), y = function () { }, v = n = ot.f, m = !!function () { try { var t = h.resolve(1), n = (t.constructor = {})[u("species")] = function (t) { t(y, y) }; return (d || "function" == typeof PromiseRejectionEvent) && t.then(y) instanceof n } catch (t) { } }(), b = function (t) { var n; return !(!s(t) || "function" != typeof (n = t.then)) && n }, w = function (t, n) { if (!t._n) { t._n = !0; var e = t._c; a((function () { for (var r = t._v, o = 1 == t._s, i = 0, u = function (n) { var e, i, u = o ? n.ok : n.fail, c = n.resolve, s = n.reject, a = n.domain; try { u ? (o || (2 == t._h && A(t), t._h = 1), !0 === u ? e = r : (a && a.enter(), e = u(r), a && a.exit()), e === n.promise ? s(l("Promise-chain cycle")) : (i = b(e)) ? i.call(e, c, s) : c(e)) : s(r) } catch (t) { s(t) } }; e.length > i;)u(e[i++]); t._c = [], t._n = !1, n && !t._h && x(t) })) } }, x = function (t) { i.call(r, (function () { var n, e, o, i = t._v, u = g(t); if (u && (n = it((function () { d ? p.emit("unhandledRejection", i, t) : (e = r.onunhandledrejection) ? e({ promise: t, reason: i }) : (o = r.console) && o.error && o.error("Unhandled promise rejection", i) })), t._h = d || g(t) ? 2 : 1), t._a = void 0, u && n.e) throw n.v })) }, g = function (t) { if (1 == t._h) return !1; for (var n, e = t._a || t._c, r = 0; e.length > r;)if ((n = e[r++]).fail || !g(n.promise)) return !1; return !0 }, A = function (t) { i.call(r, (function () { var n; d ? p.emit("rejectionHandled", t) : (n = r.onrejectionhandled) && n({ promise: t, reason: t._v }) })) }, T = function (t) { var n = this; n._d || (n._d = !0, (n = n._w || n)._v = t, n._s = 2, n._a || (n._a = n._c.slice()), w(n, !0)) }, j = function (t) { var n, e = this; if (!e._d) { e._d = !0, e = e._w || e; try { if (e === t) throw l("Promise can't be resolved itself"); (n = b(t)) ? a((function () { var r = { _w: e, _d: !1 }; try { n.call(t, E(j, r, 1), E(T, r, 1)) } catch (t) { T.call(r, t) } })) : (e._v = t, e._s = 1, w(e, !1)) } catch (t) { T.call({ _w: e, _d: !1 }, t) } } }; m || (h = function (n) { X(this, h, f, "_h"), P(n), t.call(this); try { n(E(j, this, 1), E(T, this, 1)) } catch (t) { T.call(this, t) } }, (t = function () { this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this._n = !1 }).prototype = ct(h.prototype, { then: function (t, n) { var e = v(tt(this, h)); return e.ok = "function" != typeof t || t, e.fail = "function" == typeof n && n, e.domain = d ? p.domain : void 0, this._c.push(e), this._a && this._a.push(e), this._s && w(this, !1), e.promise }, catch: function (t) { return this.then(void 0, t) } }), e = function () { var n = new t; this.promise = n, this.resolve = E(j, n, 1), this.reject = E(T, n, 1) }, ot.f = v = function (t) { return t === h || t === o ? new e(t) : n(t) }), O(O.G + O.W + O.F * !m, { Promise: h }), G(h, f), st(f), o = _[f], O(O.S + O.F * !m, f, { reject: function (t) { var n = v(this); return (0, n.reject)(t), n.promise } }), O(O.S + O.F * (S || !m), f, { resolve: function (t) { return ut(S && this === o ? h : this, t) } }), O(O.S + O.F * !(m && at((function (t) { h.all(t).catch(y) }))), f, { all: function (t) { var n = this, e = v(n), r = e.resolve, o = e.reject, i = it((function () { var e = [], i = 0, u = 1; Z(t, !1, (function (t) { var c = i++, s = !1; e.push(void 0), u++, n.resolve(t).then((function (t) { s || (s = !0, e[c] = t, --u || r(e)) }), o) })), --u || r(e) })); return i.e && o(i.v), e.promise }, race: function (t) { var n = this, e = v(n), r = e.reject, o = it((function () { Z(t, !1, (function (t) { n.resolve(t).then(e.resolve, r) })) })); return o.e && r(o.v), e.promise } }) })), t((function (t) { t.exports = _.Promise })), t((function (t) { t.exports = Array.isArray || function (t) { return "Array" == e(t) } }))), lt = (t((function () { O(O.S, "Array", { isArray: ft }) })), t((function (t) { "use strict"; t.exports = function (t, n, e) { n in t ? y.f(t, n, v(0, e)) : t[n] = e } }))), pt = (t((function () { "use strict"; O(O.S + O.F * !at((function (t) { Array.from(t) })), "Array", { from: function (t) { var n, e, r, o, i = q(t), u = "function" == typeof this ? this : Array, c = arguments.length, s = c > 1 ? arguments[1] : void 0, a = void 0 !== s, f = 0, l = Q(i); if (a && (s = E(s, c > 2 ? arguments[2] : void 0, 2)), null == l || u == Array && $(l)) for (e = new u(n = k(i.length)); n > f; f++)lt(e, f, a ? s(i[f], f) : i[f]); else for (o = l.call(i), e = new u; !(r = o.next()).done; f++)lt(e, f, a ? Y(o, s, [r.value, f], !0) : r.value); return e.length = f, e } }) })), t((function () { "use strict"; O(O.S + O.F * f((function () { function t() { } return !(Array.of.call(t) instanceof t) })), "Array", { of: function () { for (var t = 0, n = arguments.length, e = new ("function" == typeof this ? this : Array)(n); n > t;)lt(e, t, arguments[t++]); return e.length = n, e } }) })), t((function (t) { "use strict"; t.exports = function (t, n) { return !!t && f((function () { n ? t.call(null, (function () { }), 1) : t.call(null) })) } }))), ht = (t((function () { "use strict"; var t = [].join; O(O.P + O.F * (j != Object || !pt(t)), "Array", { join: function (n) { return t.call(F(this), void 0 === n ? "," : n) } }) })), t((function () { "use strict"; var t = [].slice; O(O.P + O.F * f((function () { U && t.call(U) })), "Array", { slice: function (n, r) { var o = k(this.length), i = e(this); if (r = void 0 === r ? o : r, "Array" == i) return t.call(this, n, r); for (var u = B(n, o), c = B(r, o), s = k(c - u), a = Array(s), f = 0; f < s; f++)a[f] = "String" == i ? this.charAt(u + f) : this[u + f]; return a } }) })), t((function () { "use strict"; var t = [].sort, n = [1, 2, 3]; O(O.P + O.F * (f((function () { n.sort(void 0) })) || !f((function () { n.sort(null) })) || !pt(t)), "Array", { sort: function (n) { return void 0 === n ? t.call(q(this)) : t.call(q(this), P(n)) } }) })), t((function (t) { var n = u("species"); t.exports = function (t) { var e; return ft(t) && ("function" != typeof (e = t.constructor) || e !== Array && !ft(e.prototype) || (e = void 0), s(e) && null === (e = e[n]) && (e = void 0)), void 0 === e ? Array : e } }))), dt = t((function (t) { t.exports = function (t, n) { return new (ht(t))(n) } })), yt = t((function (t) { t.exports = function (t, n) { var e = 1 == t, r = 2 == t, o = 3 == t, i = 4 == t, u = 6 == t, c = 5 == t || u, s = n || dt; return function (n, a, f) { for (var l, p, h = q(n), d = j(h), y = E(a, f, 3), v = k(d.length), m = 0, b = e ? s(n, v) : r ? s(n, 0) : void 0; v > m; m++)if ((c || m in d) && (p = y(l = d[m], m, h), t)) if (e) b[m] = p; else if (p) switch (t) { case 3: return !0; case 5: return l; case 6: return m; case 2: b.push(l) } else if (i) return !1; return u ? -1 : o || i ? i : b } } })), vt = (t((function () { "use strict"; var t = yt(0), n = pt([].forEach, !0); O(O.P + O.F * !n, "Array", { forEach: function (n) { return t(this, n, arguments[1]) } }) })), t((function () { "use strict"; var t = yt(1); O(O.P + O.F * !pt([].map, !0), "Array", { map: function (n) { return t(this, n, arguments[1]) } }) })), t((function () { "use strict"; var t = yt(2); O(O.P + O.F * !pt([].filter, !0), "Array", { filter: function (n) { return t(this, n, arguments[1]) } }) })), t((function () { "use strict"; var t = yt(3); O(O.P + O.F * !pt([].some, !0), "Array", { some: function (n) { return t(this, n, arguments[1]) } }) })), t((function () { "use strict"; var t = yt(4); O(O.P + O.F * !pt([].every, !0), "Array", { every: function (n) { return t(this, n, arguments[1]) } }) })), t((function (t) { t.exports = function (t, n, e, r, o) { P(n); var i = q(t), u = j(i), c = k(i.length), s = o ? c - 1 : 0, a = o ? -1 : 1; if (e < 2) for (; ;) { if (s in u) { r = u[s], s += a; break } if (s += a, o ? s < 0 : c <= s) throw TypeError("Reduce of empty array with no initial value") } for (; o ? s >= 0 : c > s; s += a)s in u && (r = n(r, u[s], s, i)); return r } }))), mt = (t((function () { "use strict"; O(O.P + O.F * !pt([].reduce, !0), "Array", { reduce: function (t) { return vt(this, t, arguments.length, arguments[1], !1) } }) })), t((function () { "use strict"; O(O.P + O.F * !pt([].reduceRight, !0), "Array", { reduceRight: function (t) { return vt(this, t, arguments.length, arguments[1], !0) } }) })), t((function () { "use strict"; var t = L(!1), n = [].indexOf, e = !!n && 1 / [1].indexOf(1, -0) < 0; O(O.P + O.F * (e || !pt(n)), "Array", { indexOf: function (r) { return e ? n.apply(this, arguments) || 0 : t(this, r, arguments[1]) } }) })), t((function () { "use strict"; var t = [].lastIndexOf, n = !!t && 1 / [1].lastIndexOf(1, -0) < 0; O(O.P + O.F * (n || !pt(t)), "Array", { lastIndexOf: function (e) { if (n) return t.apply(this, arguments) || 0; var r = F(this), o = k(r.length), i = o - 1; for (arguments.length > 1 && (i = Math.min(i, x(arguments[1]))), i < 0 && (i = o + i); i >= 0; i--)if (i in r && r[i] === e) return i || 0; return -1 } }) })), t((function (t) { "use strict"; t.exports = [].copyWithin || function (t, n) { var e = q(this), r = k(e.length), o = B(t, r), i = B(n, r), u = arguments.length > 2 ? arguments[2] : void 0, c = Math.min((void 0 === u ? r : B(u, r)) - i, r - o), s = 1; for (i < o && o < i + c && (s = -1, i += c - 1, o += c - 1); c-- > 0;)i in e ? e[o] = e[i] : delete e[o], o += s, i += s; return e } }))), bt = (t((function () { O(O.P, "Array", { copyWithin: mt }), W("copyWithin") })), t((function (t) { "use strict"; t.exports = function (t) { for (var n = q(this), e = k(n.length), r = arguments.length, o = B(r > 1 ? arguments[1] : void 0, e), i = r > 2 ? arguments[2] : void 0, u = void 0 === i ? e : B(i, e); u > o;)n[o++] = t; return n } }))), _t = (t((function () { O(O.P, "Array", { fill: bt }), W("fill") })), t((function () { "use strict"; var t = yt(5), n = "find", e = !0; n in [] && Array(1)[n]((function () { e = !1 })), O(O.P + O.F * e, "Array", { find: function (n) { return t(this, n, arguments.length > 1 ? arguments[1] : void 0) } }), W(n) })), t((function () { "use strict"; var t = yt(6), n = "findIndex", e = !0; n in [] && Array(1)[n]((function () { e = !1 })), O(O.P + O.F * e, "Array", { findIndex: function (n) { return t(this, n, arguments.length > 1 ? arguments[1] : void 0) } }), W(n) })), t((function () { st("Array") })), t((function (t) { t.exports = _.Array })), t((function (t) { var n = i("meta"), e = y.f, r = 0, o = Object.isExtensible || function () { return !0 }, u = !f((function () { return o(Object.preventExtensions({})) })), c = function (t) { e(t, n, { value: { i: "O" + ++r, w: {} } }) }, a = function (t, e) { if (!s(t)) return "symbol" == typeof t ? t : ("string" == typeof t ? "S" : "P") + t; if (!b(t, n)) { if (!o(t)) return "F"; if (!e) return "E"; c(t) } return t[n].i }, l = function (t, e) { if (!b(t, n)) { if (!o(t)) return !0; if (!e) return !1; c(t) } return t[n].w }, p = function (t) { return u && h.NEED && o(t) && !b(t, n) && c(t), t }, h = t.exports = { KEY: n, NEED: !1, fastKey: a, getWeak: l, onFreeze: p } }))), wt = t((function (t) { t.exports = function (t, n) { if (!s(t) || t._t !== n) throw TypeError("Incompatible receiver, " + n + " required!"); return t } })), xt = t((function (t) { "use strict"; var n = y.f, e = _t.fastKey, r = l ? "_s" : "size", o = function (t, n) { var r, o = e(n); if ("F" !== o) return t._i[o]; for (r = t._f; r; r = r.n)if (r.k == n) return r }; t.exports = { getConstructor: function (t, e, i, u) { var c = t((function (t, n) { X(t, c, e, "_i"), t._t = e, t._i = N(null), t._f = void 0, t._l = void 0, t[r] = 0, null != n && Z(n, i, t[u], t) })); return ct(c.prototype, { clear: function () { for (var t = wt(this, e), n = t._i, o = t._f; o; o = o.n)o.r = !0, o.p && (o.p = o.p.n = void 0), delete n[o.i]; t._f = t._l = void 0, t[r] = 0 }, delete: function (t) { var n = wt(this, e), i = o(n, t); if (i) { var u = i.n, c = i.p; delete n._i[i.i], i.r = !0, c && (c.n = u), u && (u.p = c), n._f == i && (n._f = u), n._l == i && (n._l = c), n[r]-- } return !!i }, forEach: function (t) { wt(this, e); for (var n, r = E(t, arguments.length > 1 ? arguments[1] : void 0, 3); n = n ? n.n : this._f;)for (r(n.v, n.k, this); n && n.r;)n = n.p }, has: function (t) { return !!o(wt(this, e), t) } }), l && n(c.prototype, "size", { get: function () { return wt(this, e)[r] } }), c }, def: function (t, n, i) { var u, c, s = o(t, n); return s ? s.v = i : (t._l = s = { i: c = e(n, !0), k: n, v: i, p: u = t._l, n: void 0, r: !1 }, t._f || (t._f = s), u && (u.n = s), t[r]++, "F" !== c && (t._i[c] = s)), t }, getEntry: o, setStrong: function (t, n, e) { V(t, n, (function (t, e) { this._t = wt(t, n), this._k = e, this._l = void 0 }), (function () { for (var t = this, n = t._k, e = t._l; e && e.r;)e = e.p; return t._t && (t._l = e = e ? e.n : t._t._f) ? K(0, "keys" == n ? e.k : "values" == n ? e.v : [e.k, e.v]) : (t._t = void 0, K(1)) }), e ? "entries" : "values", !e, !0), st(n) } } })), gt = t((function (t, n) { n.f = {}.propertyIsEnumerable })), At = t((function (t, n) { var e = Object.getOwnPropertyDescriptor; n.f = l ? e : function (t, n) { if (t = F(t), n = d(n, !0), h) try { return e(t, n) } catch (t) { } if (b(t, n)) return v(!gt.f.call(t, n), t[n]) } })), St = t((function (t) { var n = function (t, n) { if (a(t), !s(n) && null !== n) throw TypeError(n + ": can't set as prototype!") }; t.exports = { set: Object.setPrototypeOf || ("__proto__" in {} ? function (t, e, r) { try { (r = E(Function.call, At.f(Object.prototype, "__proto__").set, 2))(t, []), e = !(t instanceof Array) } catch (t) { e = !0 } return function (t, o) { return n(t, o), e ? t.__proto__ = o : r(t, o), t } }({}, !1) : void 0), check: n } })), Pt = t((function (t) { var n = St.set; t.exports = function (t, e, r) { var o, i = e.constructor; return i !== r && "function" == typeof i && (o = i.prototype) !== r.prototype && s(o) && n && n(t, o), t } })), Et = t((function (t) { "use strict"; t.exports = function (t, n, e, o, i, u) { var c = r[t], a = c, l = i ? "set" : "add", p = a && a.prototype, h = {}, d = function (t) { var n = p[t]; w(p, t, "delete" == t || "has" == t ? function (t) { return !(u && !s(t)) && n.call(this, 0 === t ? 0 : t) } : "get" == t ? function (t) { return u && !s(t) ? void 0 : n.call(this, 0 === t ? 0 : t) } : "add" == t ? function (t) { return n.call(this, 0 === t ? 0 : t), this } : function (t, e) { return n.call(this, 0 === t ? 0 : t, e), this }) }; if ("function" == typeof a && (u || p.forEach && !f((function () { (new a).entries().next() })))) { var y = new a, v = y[l](u ? {} : -0, 1) != y, m = f((function () { y.has(1) })), b = at((function (t) { new a(t) })), _ = !u && f((function () { for (var t = new a, n = 5; n--;)t[l](n, n); return !t.has(-0) })); b || ((a = n((function (n, e) { X(n, a, t); var r = Pt(new c, n, a); return null != e && Z(e, i, r[l], r), r }))).prototype = p, p.constructor = a), (m || _) && (d("delete"), d("has"), i && d("get")), (_ || v) && d(l), u && p.clear && delete p.clear } else a = o.getConstructor(n, t, i, l), ct(a.prototype, e), _t.NEED = !0; return G(a, t), h[t] = a, O(O.G + O.W + O.F * (a != c), h), u || o.setStrong(a, t, i), a } })); t((function (t) { "use strict"; var n = "Set"; t.exports = Et(n, (function (t) { return function () { return t(this, arguments.length > 0 ? arguments[0] : void 0) } }), { add: function (t) { return xt.def(wt(this, n), t = 0 === t ? 0 : t, t) } }, xt) })), t((function (t) { t.exports = _.Set })); !function (t) {
"use strict"; function n(t) { if ("string" != typeof t && (t = String(t)), /[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(t)) throw new TypeError("Invalid character in header field name"); return t.toLowerCase() } function e(t) { return "string" != typeof t && (t = String(t)), t } function r(t) { var n = { next: function () { var n = t.shift(); return { done: void 0 === n, value: n } } }; return m.iterable && (n[Symbol.iterator] = function () { return n }), n } function o(t) { this.map = {}, t instanceof o ? t.forEach((function (t, n) { this.append(n, t) }), this) : Array.isArray(t) ? t.forEach((function (t) { this.append(t[0], t[1]) }), this) : t && Object.getOwnPropertyNames(t).forEach((function (n) { this.append(n, t[n]) }), this) } function i(t) { if (t.bodyUsed) return Promise.reject(new TypeError("Already read")); t.bodyUsed = !0 } function u(t) { return new Promise((function (n, e) { t.onload = function () { n(t.result) }, t.onerror = function () { e(t.error) } })) } function c(t) { var n = new FileReader, e = u(n); return n.readAsArrayBuffer(t), e } function s(t) { var n = new FileReader, e = u(n); return n.readAsText(t), e } function a(t) { for (var n = new Uint8Array(t), e = new Array(n.length), r = 0; r < n.length; r++)e[r] = String.fromCharCode(n[r]); return e.join("") } function f(t) { if (t.slice) return t.slice(0); var n = new Uint8Array(t.byteLength); return n.set(new Uint8Array(t)), n.buffer } function l() { return this.bodyUsed = !1, this._initBody = function (t) { if (this._bodyInit = t, t) if ("string" == typeof t) this._bodyText = t; else if (m.blob && Blob.prototype.isPrototypeOf(t)) this._bodyBlob = t; else if (m.formData && FormData.prototype.isPrototypeOf(t)) this._bodyFormData = t; else if (m.searchParams && URLSearchParams.prototype.isPrototypeOf(t)) this._bodyText = t.toString(); else if (m.arrayBuffer && m.blob && _(t)) this._bodyArrayBuffer = f(t.buffer), this._bodyInit = new Blob([this._bodyArrayBuffer]); else { if (!m.arrayBuffer || !ArrayBuffer.prototype.isPrototypeOf(t) && !w(t)) throw new Error("unsupported BodyInit type"); this._bodyArrayBuffer = f(t) } else this._bodyText = ""; this.headers.get("content-type") || ("string" == typeof t ? this.headers.set("content-type", "text/plain;charset=UTF-8") : this._bodyBlob && this._bodyBlob.type ? this.headers.set("content-type", this._bodyBlob.type) : m.searchParams && URLSearchParams.prototype.isPrototypeOf(t) && this.headers.set("content-type", "application/x-www-form-urlencoded;charset=UTF-8")) }, m.blob && (this.blob = function () { var t = i(this); if (t) return t; if (this._bodyBlob) return Promise.resolve(this._bodyBlob); if (this._bodyArrayBuffer) return Promise.resolve(new Blob([this._bodyArrayBuffer])); if (this._bodyFormData) throw new Error("could not read FormData body as blob"); return Promise.resolve(new Blob([this._bodyText])) }, this.arrayBuffer = function () { return this._bodyArrayBuffer ? i(this) || Promise.resolve(this._bodyArrayBuffer) : this.blob().then(c) }), this.text = function () { var t = i(this); if (t) return t; if (this._bodyBlob) return s(this._bodyBlob); if (this._bodyArrayBuffer) return Promise.resolve(a(this._bodyArrayBuffer)); if (this._bodyFormData) throw new Error("could not read FormData body as text"); return Promise.resolve(this._bodyText) }, m.formData && (this.formData = function () { return this.text().then(d) }), this.json = function () { return this.text().then(JSON.parse) }, this } function p(t) { var n = t.toUpperCase(); return x.indexOf(n) > -1 ? n : t } function h(t, n) { var e = (n = n || {}).body; if (t instanceof h) { if (t.bodyUsed) throw new TypeError("Already read"); this.url = t.url, this.credentials = t.credentials, n.headers || (this.headers = new o(t.headers)), this.method = t.method, this.mode = t.mode, e || null == t._bodyInit || (e = t._bodyInit, t.bodyUsed = !0) } else this.url = String(t); if (this.credentials = n.credentials || this.credentials || "omit", !n.headers && this.headers || (this.headers = new o(n.headers)), this.method = p(n.method || this.method || "GET"), this.mode = n.mode || this.mode || null, this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && e) throw new TypeError("Body not allowed for GET or HEAD requests"); this._initBody(e) } function d(t) { var n = new FormData; return t.trim().split("&").forEach((function (t) { if (t) { var e = t.split("="), r = e.shift().replace(/\+/g, " "), o = e.join("=").replace(/\+/g, " "); n.append(decodeURIComponent(r), decodeURIComponent(o)) } })), n } function y(t) { var n = new o; return t.replace(/\r?\n[\t ]+/g, " ").split(/\r?\n/).forEach((function (t) { var e = t.split(":"), r = e.shift().trim(); if (r) { var o = e.join(":").trim(); n.append(r, o) } })), n } function v(t, n) { n || (n = {}), this.type = "default", this.status = void 0 === n.status ? 200 : n.status, this.ok = this.status >= 200 && this.status < 300, this.statusText = "statusText" in n ? n.statusText : "OK", this.headers = new o(n.headers), this.url = n.url || "", this._initBody(t) } if (!t.fetch) {
var m = { searchParams: "URLSearchParams" in t, iterable: "Symbol" in t && "iterator" in Symbol, blob: "FileReader" in t && "Blob" in t && function () { try { return new Blob, !0 } catch (t) { return !1 } }(), formData: "FormData" in t, arrayBuffer: "ArrayBuffer" in t }; if (m.arrayBuffer) var b = ["[object Int8Array]", "[object Uint8Array]", "[object Uint8ClampedArray]", "[object Int16Array]", "[object Uint16Array]", "[object Int32Array]", "[object Uint32Array]", "[object Float32Array]", "[object Float64Array]"], _ = function (t) { return t && DataView.prototype.isPrototypeOf(t) }, w = ArrayBuffer.isView || function (t) { return t && b.indexOf(Object.prototype.toString.call(t)) > -1 }; o.prototype.append = function (t, r) { t = n(t), r = e(r); var o = this.map[t]; this.map[t] = o ? o + "," + r : r }, o.prototype.delete = function (t) { delete this.map[n(t)] }, o.prototype.get = function (t) { return t = n(t), this.has(t) ? this.map[t] : null }, o.prototype.has = function (t) { return this.map.hasOwnProperty(n(t)) }, o.prototype.set = function (t, r) { this.map[n(t)] = e(r) }, o.prototype.forEach = function (t, n) { for (var e in this.map) this.map.hasOwnProperty(e) && t.call(n, this.map[e], e, this) }, o.prototype.keys = function () { var t = []; return this.forEach((function (n, e) { t.push(e) })), r(t) }, o.prototype.values = function () { var t = []; return this.forEach((function (n) { t.push(n) })), r(t) }, o.prototype.entries = function () { var t = []; return this.forEach((function (n, e) { t.push([e, n]) })), r(t) }, m.iterable && (o.prototype[Symbol.iterator] = o.prototype.entries); var x = ["DELETE", "GET", "HEAD", "OPTIONS", "POST", "PUT"]; h.prototype.clone = function () { return new h(this, { body: this._bodyInit }) }, l.call(h.prototype), l.call(v.prototype), v.prototype.clone = function () { return new v(this._bodyInit, { status: this.status, statusText: this.statusText, headers: new o(this.headers), url: this.url }) }, v.error = function () { var t = new v(null, { status: 0, statusText: "" }); return t.type = "error", t }; var g = [301, 302, 303, 307, 308]; v.redirect = function (t, n) { if (-1 === g.indexOf(n)) throw new RangeError("Invalid status code"); return new v(null, { status: n, headers: { location: t } }) }, t.Headers = o, t.Request = h, t.Response = v, t.fetch = function (t, n) {
return new Promise((function (e, r) {
var o = new h(t, n), i = new XMLHttpRequest; i.onload = function () { var t = { status: i.status, statusText: i.statusText, headers: y(i.getAllResponseHeaders() || "") }; t.url = "responseURL" in i ? i.responseURL : t.headers.get("X-Request-URL"); var n = "response" in i ? i.response : i.responseText; e(new v(n, t)) }, i.onerror = function () { r(new TypeError("Network request failed")) }, i.ontimeout = function () { r(new TypeError("Network request failed")) }, i.open(o.method, o.url, !0),
"include" === o.credentials ? i.withCredentials = !0 : "omit" === o.credentials && (i.withCredentials = !1), "responseType" in i && m.blob && (i.responseType = "blob"), o.headers.forEach((function (t, n) { i.setRequestHeader(n, t) })), i.send(void 0 === o._bodyInit ? null : o._bodyInit)
}))
}, t.fetch.polyfill = !0
}
}("undefined" != typeof self ? self : this); var Ot = t((function (t, n) { "use strict"; Object.defineProperty(n, "__esModule", { value: !0 }); var e = { track: function () { var t; "undefined" != typeof ShopifyAnalytics && ShopifyAnalytics.lib && (t = ShopifyAnalytics.lib).track.apply(t, arguments) } }; n.default = e })), Tt = t((function (t, n) { "use strict"; function e(t) { o(), r(t, "smart-payment-buttons") } function r(t, n) { var e = "shopify-features__" + n, r = e + "--disabled", o = e + "--enabled", i = t.className.split(/\s+/); t.className = i.filter((function (t) { return Boolean(t) })).filter((function (t) { return t !== r })).filter((function (t) { return t !== o })).concat([o]).join(" ") } function o() { var t = "shopify-dynamic-checkout"; if (null === document.getElementById(t)) { var n = document.createElement("style"); n.id = t, n.innerHTML = i, document.head.appendChild(n) } } Object.defineProperty(n, "__esModule", { value: !0 }), n.default = e, n.toggleFeatureCssClasses = r, n.appendDynamicCheckoutProductCss = o; var i = "\n.shopify-payment-button__button--hidden {\n visibility: hidden;\n}\n\n.shopify-payment-button__button {\n border-radius: 4px;\n border: none;\n box-shadow: 0 0 0 0 transparent;\n color: white;\n cursor: pointer;\n display: block;\n font-size: 1em;\n font-weight: 500;\n line-height: 1;\n text-align: center;\n width: 100%;\n transition: background 0.2s ease-in-out;\n}\n\n.shopify-payment-button__button[disabled] {\n opacity: 0.6;\n cursor: default;\n}\n\n.shopify-payment-button__button--unbranded {\n background-color: #000000;\n padding: 1em 2em;\n}\n\n.shopify-payment-button__button--unbranded:hover:not([disabled]) {\n background-color: #000000;\n}\n\n.shopify-payment-button__more-options {\n background: transparent;\n border: 0 none;\n cursor: pointer;\n display: block;\n font-size: 1em;\n margin-top: 1em;\n text-align: center;\n width: 100%;\n}\n\n.shopify-payment-button__more-options:hover:not([disabled]) {\n text-decoration: underline;\n}\n\n.shopify-payment-button__more-options[disabled] {\n opacity: 0.6;\n cursor: default;\n}\n\n.shopify-payment-button__button--branded {\n display: flex;\n flex-direction: column;\n min-height: 44px;\n position: relative;\n z-index: 1;\n}\n\n.shopify-payment-button__button--branded .shopify-cleanslate {\n flex: 1 !important;\n display: flex !important;\n flex-direction: column !important;\n}\n" })), jt = t((function (t, e) { "use strict"; function r(t, n) { return o().then((function (e) { e ? i(t, n) : c(t, n) })) } function o() { function t() { return document.querySelector("[data-shopify=payment-button]") } return new Promise((function (n) { t() ? n(!0) : window.Shopify.designMode ? new MutationObserver((function (e, r) { t() && (n(!0), r.disconnect()) })).observe(document.body, { childList: !0, subtree: !0 }) : n(!1) })) } function i(t, n) { (0, l.default)(t); var e = u(t, n); return s("[SPB] Script appended"), e } function u(t, n) { var e = t.parentNode, r = e.createElement("script"); return r.src = n.smart_payment_buttons_url, r.dataset.sourceAttribute = "shopify.dynamic_checkout.product.init", e.head.appendChild(r), r } function c(t, n) { void 0 === window.Shopify.PaymentButton && (window.Shopify.PaymentButton = { init: function () { var e = i(t, n); e.onload = function () { a() }, e.onerror = function () { console.error("Error loading Dynamic Checkout bundle") }, window.Shopify.PaymentButton.init = function () { } } }) } function s(t) { p && performance.mark(t) } function a() { var t = "polyfilled_dynamic_checkout", n = window.Shopify && window.Shopify.theme && window.Shopify.theme.name, e = window.location.href; f.default.track(t, { theme: n, url: e }) } Object.defineProperty(e, "__esModule", { value: !0 }), e.default = r; var f = n(Ot), l = n(Tt), p = "undefined" != typeof performance && "function" == typeof performance.mark })), Ft = t((function (t, n) { "use strict"; function e(t, n) { return r().then((function () { o(t, n) })) } function r() { function t() { return document.getElementById("dynamic-checkout-cart") } return new Promise((function (n) { t() ? (window.Shopify.CartType = "cart_page", n()) : new MutationObserver((function (e, r) { t() && (window.Shopify.CartType = "cart_ajax", n(), r.disconnect()) })).observe(document.body, { childList: !0, subtree: !0 }) })) } function o(t, n) { var e = t.parentNode, r = e.createElement("script"); return r.src = n.dynamic_checkout_cart_url, r.dataset.sourceAttribute = "shopify.dynamic_checkout.cart.init", e.head.appendChild(r), r } Object.defineProperty(n, "__esModule", { value: !0 }), n.default = e })), kt = t((function (t, e) { "use strict"; function r(t) { var n = o(t); n && ((0, i.default)(t, n), (0, u.default)(t, n)) } function o(t) { try { return JSON.parse(t.querySelector(c).textContent) } catch (t) { return null } } Object.defineProperty(e, "__esModule", { value: !0 }), e.default = r; var i = n(jt), u = n(Ft), c = "#shopify-features" })); t((function () { "use strict"; (0, n(kt).default)(document.documentElement) }))
}("undefined" != typeof global ? global : "undefined" != typeof window && window);
</script>
<style id="shopify-dynamic-checkout">
.shopify-payment-button__button--hidden {
visibility: hidden
}
.shopify-payment-button__button {
border-radius: 4px;
border: none;
box-shadow: 0 0 0 0 transparent;
color: #fff;
cursor: pointer;
display: block;
font-size: 1em;
font-weight: 500;
line-height: 1;
text-align: center;
width: 100%;
transition: background .2s ease-in-out
}
.shopify-payment-button__button[disabled] {
opacity: .6;
cursor: default
}
.shopify-payment-button__button--unbranded {
background-color: #8B0000;
padding: 1em 2em
}
.shopify-payment-button__button--unbranded:hover:not([disabled]) {
background-color: #136f99
}
.shopify-payment-button__more-options {
background: 0 0;
border: 0 none;
cursor: pointer;
display: block;
font-size: 1em;
margin-top: 1em;
text-align: center;
width: 100%
}
.shopify-payment-button__more-options:hover:not([disabled]) {
text-decoration: underline
}
.shopify-payment-button__more-options[disabled] {
opacity: .6;
cursor: not-allowed
}
.shopify-payment-button__button--branded {
display: flex;
flex-direction: column;
min-height: 44px;
position: relative;
z-index: 1
}
.shopify-payment-button__button--branded .shopify-cleanslate {
flex: 1 !important;
display: flex !important;
flex-direction: column !important
}
.shopify-payment-button__button.button.loading {
position: relative;
color: transparent
}
.shopify-payment-button__button.button.loading>.loading-overlay__spinner {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
position: absolute;
height: 100%;
display: flex;
align-items: center
}
.shopify-payment-button__button.button.loading>.loading-overlay__spinner .spinner {
width: -moz-fit-content;
width: fit-content
}
.button.loading>.loading-overlay__spinner .path {
stroke: #fff
}
.shopify-payment-button__button .loading-overlay__spinner {
width: 1.8rem;
display: inline-block
}
.shopify-payment-button__button .spinner {
animation: shopify-rotator 1.4s linear infinite
}
@keyframes shopify-rotator {
0% {
transform: rotate(0)
}
100% {
transform: rotate(270deg)
}
}
.shopify-payment-button__button .path {
stroke-dasharray: 280;
stroke-dashoffset: 0;
transform-origin: center;
stroke: #121212;
animation: shopify-dash 1.4s ease-in-out infinite
}
@media screen and (forced-colors:active) {
.shopify-payment-button__button .path {
stroke: CanvasText
}
}
@keyframes shopify-dash {
0% {
stroke-dashoffset: 280
}
50% {
stroke-dashoffset: 75;
transform: rotate(135deg)
}
100% {
stroke-dashoffset: 280;
transform: rotate(450deg)
}
}
</style>
<script>
window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');
</script>
<style data-shopify>
@font-face {
font-family: Questrial;
font-weight: 400;
font-style: normal;
font-display: swap;
src: url(http://https://infinite-style.com//cdn/fonts/questrial/questrial_n4.0ba6d2b6094954bab23732c75d3ecb4c47a5869c.woff2?h1=N2ViNWQ0LTMuYWNjb3VudC5teXNob3BpZnkuY29t&h2=eHh4LmRlcm1hYmxlbmQuY29t&hmac=2ddb1e040059f191fdb3e184199ec4bc383d5aa55a6213bf798372c9da87d664) format("woff2"), url(http://https://infinite-style.com//cdn/fonts/questrial/questrial_n4.5abce10d8846bb9326c9741eaffed9667c847692.woff?h1=N2ViNWQ0LTMuYWNjb3VudC5teXNob3BpZnkuY29t&h2=eHh4LmRlcm1hYmxlbmQuY29t&hmac=136e78abf621321b832ba0b2c80d5c764228ec9edb2550b890fb94f7dfbf4881) format("woff")
}
@font-face {
font-family: Archivo;
font-weight: 700;
font-style: normal;
font-display: swap;
src: url(http://https://infinite-style.com//cdn/fonts/archivo/archivo_n7.6f363ab30b12ea00d5e6243ed0e977a11393a3ad.woff2?h1=N2ViNWQ0LTMuYWNjb3VudC5teXNob3BpZnkuY29t&h2=eHh4LmRlcm1hYmxlbmQuY29t&hmac=6cc30ef697b84bb8f7f3bf9979eb1a3b3e1410751b95cc93dce027cd0262d372) format("woff2"), url(http://https://infinite-style.com//cdn/fonts/archivo/archivo_n7.846b40a5735bbd149ad44b083a19c3e5d88d8fab.woff?h1=N2ViNWQ0LTMuYWNjb3VudC5teXNob3BpZnkuY29t&h2=eHh4LmRlcm1hYmxlbmQuY29t&hmac=d0abb13a26bf76d6aa3da07b374c9d85e0b976d6591761ed7c4cdc2cd429b450) format("woff")
}
.color-background-1,
:root {
--color-background: 245, 245, 245;
--gradient-background: #ffffff;
--color-foreground: 14, 27, 77;
--color-background-contrast: 161, 166, 196;
--color-shadow: 14, 27, 77;
--color-button: 130, 0, 0;
--color-button-text: 245, 245, 245;
--color-secondary-button: 245, 245, 245;
--color-secondary-button-text: 14, 27, 77;
--color-link: 14, 27, 77;
--color-badge-foreground: 14, 27, 77;
--color-badge-background: 245, 245, 245;
--color-badge-border: 14, 27, 77;
--payment-terms-background-color: rgb(239 240 245)
}
.n-columns-2 {
display: grid;
grid-template-columns: repeat(2, 1fr);
font-weight: 700
}
.n-columns-2 a {
text-align: center;
text-decoration: none;
}
.login,
.register {
color: #fff;
padding: 13px 10px
}
.login,
.login-button {
border: 1px solid #d3d3d3;
background: linear-gradient(to bottom, #8B0000 0, #8B0000 100%)
}
.register,
.register-button {
background: linear-gradient(to bottom, #8B0000 0, #8B0000 100%);
border: 1px solid #d3d3d3
}
.color-background-2 {
--color-background: 255, 255, 255;
--gradient-background: #FFFFFF;
--color-foreground: 14, 27, 77;
--color-background-contrast: 191, 191, 191;
--color-shadow: 14, 27, 77;
--color-button: 14, 27, 77;
--color-button-text: 255, 255, 255;
--color-secondary-button: 255, 255, 255;
--color-secondary-button-text: 14, 27, 77;
--color-link: 14, 27, 77;
--color-badge-foreground: 14, 27, 77;
--color-badge-background: 255, 255, 255;
--color-badge-border: 14, 27, 77;
--payment-terms-background-color: rgb(255 255 255)
}
.color-inverse {
--color-background: 130, 0, 0;
--gradient-background: #000000;
--color-foreground: 255, 255, 255;
--color-background-contrast: 18, 35, 99;
--color-shadow: 14, 27, 77;
--color-button: 255, 255, 255;
--color-button-text: 14, 27, 77;
--color-secondary-button: 14, 27, 77;
--color-secondary-button-text: 255, 255, 255;
--color-link: 255, 255, 255;
--color-badge-foreground: 255, 255, 255;
--color-badge-background: 14, 27, 77;
--color-badge-border: 255, 255, 255;
--payment-terms-background-color: rgb(79, 0, 0)
}
.color-accent-1 {
--color-background: 128, 0, 0;
--gradient-background: #8B0000;
--color-foreground: 255, 255, 255;
--color-background-contrast: 27, 57, 136;
--color-shadow: 14, 27, 77;
--color-button: 255, 255, 255;
--color-button-text: 128, 0, 0;
--color-secondary-button: 128, 0, 0;
--color-secondary-button-text: 255, 255, 255;
--color-link: 255, 255, 255;
--color-badge-foreground: 255, 255, 255;
--color-badge-background: 130, 0, 0;
--color-badge-border: 255, 255, 255;
--payment-terms-background-color: rgb(0, 18, 65)
}
.color-accent-2 {
--color-background: 227, 36, 2;
--gradient-background: #E32402;
--color-foreground: 255, 255, 255;
--color-background-contrast: 101, 16, 1;
--color-shadow: 14, 27, 77;
--color-button: 255, 255, 255;
--color-button-text: 227, 36, 2;
--color-secondary-button: 227, 36, 2;
--color-secondary-button-text: 255, 255, 255;
--color-link: 255, 255, 255;
--color-badge-foreground: 255, 255, 255;
--color-badge-background: 227, 36, 2;
--color-badge-border: 255, 255, 255;
--payment-terms-background-color: rgb(227 36 2)
}
.color-accent-1,
.color-accent-2,
.color-background-1,
.color-background-2,
.color-inverse,
body {
color: rgba(var(--color-foreground), .75);
background-color: white;
}
:root {
--font-body-family: Questrial, sans-serif;
--font-body-style: normal;
--font-body-weight: 400;
--font-body-weight-bold: 700;
--font-heading-family: Archivo, serif;
--font-heading-style: normal;
--font-heading-weight: 700;
--font-body-scale: 1.05;
--font-heading-scale: 1.0476190476190477;
--media-padding: px;
--media-border-opacity: 0.1;
--media-border-width: 0px;
--media-radius: 20px;
--media-shadow-opacity: 0.0;
--media-shadow-horizontal-offset: 0px;
--media-shadow-vertical-offset: 4px;
--media-shadow-blur-radius: 5px;
--media-shadow-visible: 0;
--page-width: 120rem;
--page-width-margin: 0rem;
--product-card-image-padding: 1.6rem;
--product-card-corner-radius: 1.8rem;
--product-card-text-alignment: left;
--product-card-border-width: 0.1rem;
--product-card-border-opacity: 1.0;
--product-card-shadow-opacity: 0.0;
--product-card-shadow-visible: 0;
--product-card-shadow-horizontal-offset: 0.0rem;
--product-card-shadow-vertical-offset: 0.4rem;
--product-card-shadow-blur-radius: 0.5rem;
--collection-card-image-padding: 1.6rem;
--collection-card-corner-radius: 1.8rem;
--collection-card-text-alignment: left;
--collection-card-border-width: 0.1rem;
--collection-card-border-opacity: 1.0;
--collection-card-shadow-opacity: 0.0;
--collection-card-shadow-visible: 0;
--collection-card-shadow-horizontal-offset: 0.0rem;
--collection-card-shadow-vertical-offset: 0.4rem;
--collection-card-shadow-blur-radius: 0.5rem;
--blog-card-image-padding: 1.6rem;
--blog-card-corner-radius: 1.8rem;
--blog-card-text-alignment: left;
--blog-card-border-width: 0.1rem;
--blog-card-border-opacity: 1.0;
--blog-card-shadow-opacity: 0.0;
--blog-card-shadow-visible: 0;
--blog-card-shadow-horizontal-offset: 0.0rem;
--blog-card-shadow-vertical-offset: 0.4rem;
--blog-card-shadow-blur-radius: 0.5rem;
--badge-corner-radius: 0.0rem;
--popup-border-width: 1px;
--popup-border-opacity: 0.1;
--popup-corner-radius: 18px;
--popup-shadow-opacity: 0.0;
--popup-shadow-horizontal-offset: 0px;
--popup-shadow-vertical-offset: 4px;
--popup-shadow-blur-radius: 5px;
--drawer-border-width: 0px;
--drawer-border-opacity: 0.1;
--drawer-shadow-opacity: 0.0;
--drawer-shadow-horizontal-offset: 0px;
--drawer-shadow-vertical-offset: 4px;
--drawer-shadow-blur-radius: 5px;
--spacing-sections-desktop: 0px;
--spacing-sections-mobile: 0px;
--grid-desktop-vertical-spacing: 28px;
--grid-desktop-horizontal-spacing: 28px;
--grid-mobile-vertical-spacing: 14px;
--grid-mobile-horizontal-spacing: 14px;
--text-boxes-border-opacity: 0.1;
--text-boxes-border-width: 0px;
--text-boxes-radius: 20px;
--text-boxes-shadow-opacity: 0.0;
--text-boxes-shadow-visible: 0;
--text-boxes-shadow-horizontal-offset: 0px;
--text-boxes-shadow-vertical-offset: 4px;
--text-boxes-shadow-blur-radius: 5px;
--buttons-radius: 40px;
--buttons-radius-outset: 41px;
--buttons-border-width: 1px;
--buttons-border-opacity: 1.0;
--buttons-shadow-opacity: 0.0;
--buttons-shadow-visible: 0;
--buttons-shadow-horizontal-offset: 0px;
--buttons-shadow-vertical-offset: 4px;
--buttons-shadow-blur-radius: 5px;
--buttons-border-offset: 0.3px;
--inputs-radius: 26px;
--inputs-border-width: 1px;
--inputs-border-opacity: 0.55;
--inputs-shadow-opacity: 0.0;
--inputs-shadow-horizontal-offset: 0px;
--inputs-margin-offset: 0px;
--inputs-shadow-vertical-offset: 4px;
--inputs-shadow-blur-radius: 5px;
--inputs-radius-outset: 27px;
--variant-pills-radius: 40px;
--variant-pills-border-width: 1px;
--variant-pills-border-opacity: 0.55;
--variant-pills-shadow-opacity: 0.0;
--variant-pills-shadow-horizontal-offset: 0px;
--variant-pills-shadow-vertical-offset: 4px;
--variant-pills-shadow-blur-radius: 5px
}
*,
::after,
::before {
box-sizing: inherit
}
html {
box-sizing: border-box;
font-size: calc(var(--font-body-scale) * 62.5%);
height: 100%
}
body {
display: grid;
grid-template-rows: auto auto 1fr auto;
grid-template-columns: 100%;
min-height: 100%;
margin: 0;
font-size: 1.5rem;
letter-spacing: .06rem;
line-height: calc(1 + .8 / var(--font-body-scale));
font-family: var(--font-body-family);
font-style: var(--font-body-style);
font-weight: var(--font-body-weight)
}
@media screen and (min-width:750px) {
body {
font-size: 1.6rem
}
}
</style>
<style>
:root {
--alpha-button-background: 1;
--alpha-button-border: 1;
--alpha-link: .85;
--alpha-badge-border: .1
}
.product-card-wrapper .card,
.contains-card--product {
--border-radius: var(--product-card-corner-radius);
--border-width: var(--product-card-border-width);
--border-opacity: var(--product-card-border-opacity);
--shadow-horizontal-offset: var(--product-card-shadow-horizontal-offset);
--shadow-vertical-offset: var(--product-card-shadow-vertical-offset);
--shadow-blur-radius: var(--product-card-shadow-blur-radius);
--shadow-opacity: var(--product-card-shadow-opacity);
--shadow-visible: var(--product-card-shadow-visible);
--image-padding: var(--product-card-image-padding);
--text-alignment: var(--product-card-text-alignment)
}
.collection-card-wrapper .card,
.contains-card--collection {
--border-radius: var(--collection-card-corner-radius);
--border-width: var(--collection-card-border-width);
--border-opacity: var(--collection-card-border-opacity);
--shadow-horizontal-offset: var(--collection-card-shadow-horizontal-offset);
--shadow-vertical-offset: var(--collection-card-shadow-vertical-offset);
--shadow-blur-radius: var(--collection-card-shadow-blur-radius);
--shadow-opacity: var(--collection-card-shadow-opacity);
--shadow-visible: var(--collection-card-shadow-visible);
--image-padding: var(--collection-card-image-padding);
--text-alignment: var(--collection-card-text-alignment)
}
.article-card-wrapper .card,
.contains-card--article {
--border-radius: var(--blog-card-corner-radius);
--border-width: var(--blog-card-border-width);
--border-opacity: var(--blog-card-border-opacity);
--shadow-horizontal-offset: var(--blog-card-shadow-horizontal-offset);
--shadow-vertical-offset: var(--blog-card-shadow-vertical-offset);
--shadow-blur-radius: var(--blog-card-shadow-blur-radius);
--shadow-opacity: var(--blog-card-shadow-opacity);
--shadow-visible: var(--blog-card-shadow-visible);
--image-padding: var(--blog-card-image-padding);
--text-alignment: var(--blog-card-text-alignment)
}
.contains-content-container,
.content-container {
--border-radius: var(--text-boxes-radius);
--border-width: var(--text-boxes-border-width);
--border-opacity: var(--text-boxes-border-opacity);
--shadow-horizontal-offset: var(--text-boxes-shadow-horizontal-offset);
--shadow-vertical-offset: var(--text-boxes-shadow-vertical-offset);
--shadow-blur-radius: var(--text-boxes-shadow-blur-radius);
--shadow-opacity: var(--text-boxes-shadow-opacity);
--shadow-visible: var(--text-boxes-shadow-visible)
}
.contains-media,
.global-media-settings {
--border-radius: var(--media-radius);
--border-width: var(--media-border-width);
--border-opacity: var(--media-border-opacity);
--shadow-horizontal-offset: var(--media-shadow-horizontal-offset);
--shadow-vertical-offset: var(--media-shadow-vertical-offset);
--shadow-blur-radius: var(--media-shadow-blur-radius);
--shadow-opacity: var(--media-shadow-opacity);
--shadow-visible: var(--media-shadow-visible)
}
.no-js:not(html) {
display: none !important
}
html.no-js .no-js:not(html) {
display: block !important
}
.no-js-inline {
display: none !important
}
html.no-js .no-js-inline {
display: inline-block !important
}
html.no-js .no-js-hidden {
display: none !important
}
.page-width {
max-width: var(--page-width);
margin: 0 auto;
padding: 0 1.5rem
}
body:has(.section-header .drawer-menu) .announcement-bar-section .page-width {
max-width: 100%
}
.page-width.drawer-menu {
max-width: 100%
}
.page-width-desktop {
padding: 0;
margin: 0 auto
}
.utility-bar__grid.page-width {
padding-left: 3rem;
padding-right: 3rem
}
@media screen and (min-width: 750px) {
.page-width {
padding: 0 5rem
}
.header.page-width,
.utility-bar__grid.page-width {
padding-left: 3.2rem;
padding-right: 3.2rem
}
.page-width--narrow {
padding: 0 9rem
}
.page-width-desktop {
padding: 0
}
.page-width-tablet {
padding: 0 5rem
}
}
@media screen and (min-width: 990px) {
.header:not(.drawer-menu).page-width {
padding-left: 5rem;
padding-right: 5rem
}
.page-width--narrow {
max-width: 72.6rem;
padding: 0
}
.page-width-desktop {
max-width: var(--page-width);
padding: 0 5rem
}
}
.isolate {
position: relative;
z-index: 0
}
.section+.section {
margin-top: var(--spacing-sections-mobile)
}
@media screen and (min-width: 750px) {
.section+.section {
margin-top: var(--spacing-sections-desktop)
}
}
.element-margin-top {
margin-top: 5rem
}
@media screen and (min-width: 750px) {
.element-margin {
margin-top: calc(5rem + var(--page-width-margin))
}
}
.background-secondary {
background-color: rgba(var(--color-foreground), .04)
}
.grid-auto-flow {
display: grid;
grid-auto-flow: column
}
.page-margin,
.shopify-challenge__container {
margin: 7rem auto
}
.rte-width {
max-width: 82rem;
margin: 0 auto 2rem
}
.list-unstyled {
margin: 0;
padding: 0;
list-style: none
}
.hidden {
display: none !important
}
.visually-hidden {
position: absolute !important;
overflow: hidden;
width: 1px;
height: 1px;
margin: -1px;
padding: 0;
border: 0;
clip: rect(0 0 0 0);
word-wrap: normal !important
}
.visually-hidden--inline {
margin: 0;
height: 1em
}
.overflow-hidden {
overflow: hidden
}
.skip-to-content-link:focus {
z-index: 9999;
position: inherit;
overflow: auto;
width: auto;
height: auto;
clip: auto
}
.full-width-link {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 2
}
::selection {
background-color: rgba(var(--color-foreground), .2)
}
.text-body {
font-size: 1.5rem;
letter-spacing: .06rem;
line-height: calc(1 + .8 / var(--font-body-scale));
font-family: var(--font-body-family);
font-style: var(--font-body-style);
font-weight: var(--font-body-weight)
}
h1,
h2,
h3,
h4,
h5,
.h0,
.h1,
.h2,
.h3,
.h4,
.h5 {
font-family: var(--font-heading-family);
font-style: var(--font-heading-style);
font-weight: var(--font-heading-weight);
letter-spacing: calc(var(--font-heading-scale) * .06rem);
color: white;
line-height: calc(1 + .3/max(1, var(--font-heading-scale)));
word-break: break-word
}
.hxl {
font-size: calc(var(--font-heading-scale) * 5rem)
}
@media only screen and (min-width: 750px) {
.hxl {
font-size: calc(var(--font-heading-scale) * 6.2rem)
}
}
.h0 {
font-size: calc(var(--font-heading-scale) * 4rem)
}
@media only screen and (min-width: 750px) {
.h0 {
font-size: calc(var(--font-heading-scale) * 5.2rem)
}
}
h1,
.h1 {
font-size: calc(var(--font-heading-scale) * 3rem)
}
@media only screen and (min-width: 750px) {
h1,
.h1 {
font-size: calc(var(--font-heading-scale) * 4rem)
}
}
h2,
.h2 {
font-size: calc(var(--font-heading-scale) * 2rem)
}
@media only screen and (min-width: 750px) {
h2,
.h2 {
font-size: calc(var(--font-heading-scale) * 2.4rem)
}
}
h3,
.h3 {
font-size: calc(var(--font-heading-scale) * 1.7rem)
}
@media only screen and (min-width: 750px) {
h3,
.h3 {
font-size: calc(var(--font-heading-scale) * 1.8rem)
}
}
h4,
.h4 {
font-family: var(--font-heading-family);
font-style: var(--font-heading-style);
font-size: calc(var(--font-heading-scale) * 1.5rem)
}
h5,
.h5 {
font-size: calc(var(--font-heading-scale) * 1.2rem)
}
@media only screen and (min-width: 750px) {
h5,
.h5 {
font-size: calc(var(--font-heading-scale) * 1.3rem)
}
}
h6,
.h6 {
color: rgba(var(--color-foreground), .75);
margin-block-start: 1.67em;
margin-block-end: 1.67em
}
blockquote {
font-style: italic;
color: rgba(var(--color-foreground), .75);
border-left: .2rem solid rgba(var(--color-foreground), .2);
padding-left: 1rem
}
@media screen and (min-width: 750px) {
blockquote {
padding-left: 1.5rem
}
}
.caption {
font-size: 1rem;
letter-spacing: .07rem;
line-height: calc(1 + .7 / var(--font-body-scale))
}
@media screen and (min-width: 750px) {
.caption {
font-size: 1.2rem
}
}
.caption-with-letter-spacing {
font-size: 1rem;
letter-spacing: .13rem;
line-height: calc(1 + .2 / var(--font-body-scale));
text-transform: uppercase
}
.caption-with-letter-spacing--medium {
font-size: 1.2rem;
letter-spacing: .16rem
}
.caption-with-letter-spacing--large {
font-size: 1.4rem;
letter-spacing: .18rem
}
.caption-large,
.customer .field input,
.customer select,
.field__input,
.form__label,
.select__select {
font-size: 1.3rem;
line-height: calc(1 + .5 / var(--font-body-scale));
letter-spacing: .04rem
}
.color-foreground {
color: rgb(var(--color-foreground))
}
table:not([class]) {
table-layout: fixed;
border-collapse: collapse;
font-size: 1.4rem;
border-style: hidden;
box-shadow: 0 0 0 .1rem rgba(var(--color-foreground), .2)
}
table:not([class]) td,
table:not([class]) th {
padding: 1em;
border: .1rem solid rgba(var(--color-foreground), .2)
}
@media screen and (max-width: 749px) {
.small-hide {
display: none !important
}
}
@media screen and (min-width: 750px) and (max-width: 989px) {
.medium-hide {
display: none !important
}
}
@media screen and (min-width: 990px) {
.large-up-hide {
display: none !important
}
}
.left {
text-align: left
}
.center {
text-align: center
}
.right {
text-align: right
}
.uppercase {
text-transform: uppercase
}
.light {
opacity: .7
}
a:empty,
ul:empty,
dl:empty,
div:empty,
section:empty,
article:empty,
p:empty,
h1:empty,
h2:empty,
h3:empty,
h4:empty,
h5:empty,
h6:empty {
display: none
}
.link,
.customer a {
cursor: pointer;
display: inline-block;
border: none;
box-shadow: none;
text-decoration: underline;
text-underline-offset: .3rem;
color: rgb(var(--color-link));
background-color: transparent;
font-size: 1.4rem;
font-family: inherit
}
.link--text {
color: rgb(var(--color-foreground))
}
.link--text:hover {
color: rgba(var(--color-foreground), .75)
}
.link-with-icon {
display: inline-flex;
font-size: 1.4rem;
font-weight: 600;
letter-spacing: .1rem;
text-decoration: none;
margin-bottom: 4.5rem;
white-space: nowrap
}
.link-with-icon .icon {
width: 1.5rem;
margin-left: 1rem
}
a:not([href]) {
cursor: not-allowed
}
.circle-divider:after {
content: "\2022";
margin: 0 1.3rem 0 1.5rem
}
.circle-divider:last-of-type:after {
display: none
}
hr {
border: none;
height: .1rem;
background-color: rgba(var(--color-foreground), .2);
display: block;
margin: 5rem 0
}
@media screen and (min-width: 750px) {
hr {
margin: 7rem 0
}
}
.full-unstyled-link {
text-decoration: none;
color: currentColor;
display: block
}
.placeholder {
background-color: rgba(var(--color-foreground), .04);
color: rgba(var(--color-foreground), .55);
fill: rgba(var(--color-foreground), .55)
}
details>* {
box-sizing: border-box
}
.break {
word-break: break-word
}
.visibility-hidden {
visibility: hidden
}
@media (prefers-reduced-motion) {
.motion-reduce {
transition: none !important;
animation: none !important
}
}
:root {
--duration-short: .1s;
--duration-default: .2s;
--duration-announcement-bar: .25s;
--duration-medium: .3s;
--duration-long: .5s;
--duration-extra-long: .6s;
--duration-extended: 3s;
--ease-out-slow: cubic-bezier(0, 0, .3, 1);
--animation-slide-in: slideIn var(--duration-extra-long) var(--ease-out-slow) forwards;
--animation-fade-in: fadeIn var(--duration-extra-long) var(--ease-out-slow)
}
.underlined-link,
.customer a,
.inline-richtext a {
text-underline-offset: .3rem;
text-decoration-thickness: .1rem;
transition: text-decoration-thickness ease .1s
}
.underlined-link,
.customer a {
color: rgba(var(--color-link), var(--alpha-link))
}
.inline-richtext a,
.rte.inline-richtext a {
color: currentColor
}
.underlined-link:hover,
.customer a:hover,
.inline-richtext a:hover {
color: rgb(var(--color-link));
text-decoration-thickness: .2rem
}
.icon-arrow {
width: 1.5rem
}
h3 .icon-arrow,
.h3 .icon-arrow {
width: calc(var(--font-heading-scale) * 1.5rem)
}
.animate-arrow .icon-arrow path {
transform: translate(-.25rem);
transition: transform var(--duration-short) ease
}
.animate-arrow:hover .icon-arrow path {
transform: translate(-.05rem)
}
summary {
cursor: pointer;
list-style: none;
position: relative
}
summary .icon-caret {
position: absolute;
height: .6rem;
right: 1.5rem;
top: calc(50% - .2rem)
}
summary::-webkit-details-marker {
display: none
}
.disclosure-has-popup {
position: relative
}
.disclosure-has-popup[open]>summary:before {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 2;
display: block;
cursor: default;
content: " ";
background: transparent
}
.disclosure-has-popup>summary:before {
display: none
}
.disclosure-has-popup[open]>summary+* {
z-index: 100
}
@media screen and (min-width: 750px) {
.disclosure-has-popup[open]>summary+* {
z-index: 4
}
.facets .disclosure-has-popup[open]>summary+* {
z-index: 2
}
}
*:focus {
outline: 0;
box-shadow: none
}
*:focus-visible {
outline: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: .3rem;
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3)
}
.focused,
.no-js *:focus {
outline: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: .3rem;
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3)
}
.no-js *:focus:not(:focus-visible) {
outline: 0;
box-shadow: none
}
.focus-inset:focus-visible {
outline: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: -.2rem;
box-shadow: 0 0 .2rem 0 rgba(var(--color-foreground), .3)
}
.focused.focus-inset,
.no-js .focus-inset:focus {
outline: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: -.2rem;
box-shadow: 0 0 .2rem 0 rgba(var(--color-foreground), .3)
}
.no-js .focus-inset:focus:not(:focus-visible) {
outline: 0;
box-shadow: none
}
.focus-none {
box-shadow: none !important;
outline: 0 !important
}
.focus-offset:focus-visible {
outline: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: 1rem;
box-shadow: 0 0 0 1rem rgb(var(--color-background)), 0 0 .2rem 1.2rem rgba(var(--color-foreground), .3)
}
.focus-offset.focused,
.no-js .focus-offset:focus {
outline: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: 1rem;
box-shadow: 0 0 0 1rem rgb(var(--color-background)), 0 0 .2rem 1.2rem rgba(var(--color-foreground), .3)
}
.no-js .focus-offset:focus:not(:focus-visible) {
outline: 0;
box-shadow: none
}
.title,
.title-wrapper-with-link {
margin: 3rem 0 2rem
}
.title-wrapper-with-link .title {
margin: 0
}
.title .link {
font-size: inherit
}
.title-wrapper {
margin-bottom: 3rem
}
.title-wrapper-with-link {
display: flex;
justify-content: space-between;
align-items: flex-end;
gap: 1rem;
margin-bottom: 3rem;
flex-wrap: wrap
}
.title--primary {
margin: 4rem 0
}
.title-wrapper--self-padded-tablet-down,
.title-wrapper--self-padded-mobile {
padding-left: 1.5rem;
padding-right: 1.5rem
}
@media screen and (min-width: 750px) {
.title-wrapper--self-padded-mobile {
padding-left: 0;
padding-right: 0
}
}
@media screen and (min-width: 990px) {
.title,
.title-wrapper-with-link {
margin: 5rem 0 3rem
}
.title--primary {
margin: 2rem 0
}
.title-wrapper-with-link {
align-items: center
}
.title-wrapper-with-link .title {
margin-bottom: 0
}
.title-wrapper--self-padded-tablet-down {
padding-left: 0;
padding-right: 0
}
}
.title-wrapper-with-link .link-with-icon {
margin: 0;
flex-shrink: 0;
display: flex;
align-items: center
}
.title-wrapper-with-link .link-with-icon svg {
width: 1.5rem
}
.title-wrapper-with-link a {
margin-top: 0;
flex-shrink: 0
}
.title-wrapper--no-top-margin {
margin-top: 0
}
.title-wrapper--no-top-margin>.title {
margin-top: 0
}
.subtitle {
font-size: 1.8rem;
line-height: calc(1 + .8 / var(--font-body-scale));
letter-spacing: .06rem;
color: rgba(var(--color-foreground), .7)
}
.subtitle--small {
font-size: 1.4rem;
letter-spacing: .1rem
}
.subtitle--medium {
font-size: 1.6rem;
letter-spacing: .08rem
}
.grid {
display: flex;
flex-wrap: wrap;
margin-bottom: 2rem;
padding: 0;
list-style: none;
column-gap: var(--grid-mobile-horizontal-spacing);
row-gap: var(--grid-mobile-vertical-spacing)
}
@media screen and (min-width: 750px) {
.grid {
column-gap: var(--grid-desktop-horizontal-spacing);
row-gap: var(--grid-desktop-vertical-spacing)
}
}
.grid:last-child {
margin-bottom: 0
}
.grid__item {
width: calc(25% - var(--grid-mobile-horizontal-spacing) * 3 / 4);
max-width: calc(50% - var(--grid-mobile-horizontal-spacing) / 2);
flex-grow: 1;
flex-shrink: 0
}
@media screen and (min-width: 750px) {
.grid__item {
width: calc(25% - var(--grid-desktop-horizontal-spacing) * 3 / 4);
max-width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
}
.grid--gapless.grid {
column-gap: 0;
row-gap: 0
}
@media screen and (max-width: 749px) {
.grid__item.slider__slide--full-width {
width: 100%;
max-width: none
}
}
.grid--1-col .grid__item {
max-width: 100%;
width: 100%
}
.grid--3-col .grid__item {
width: calc(33.33% - var(--grid-mobile-horizontal-spacing) * 2 / 3)
}
@media screen and (min-width: 750px) {
.grid--3-col .grid__item {
width: calc(33.33% - var(--grid-desktop-horizontal-spacing) * 2 / 3)
}
}
.grid--2-col .grid__item {
width: calc(50% - var(--grid-mobile-horizontal-spacing) / 2)
}
@media screen and (min-width: 750px) {
.grid--2-col .grid__item {
width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
.grid--4-col-tablet .grid__item {
width: calc(25% - var(--grid-desktop-horizontal-spacing) * 3 / 4)
}
.grid--3-col-tablet .grid__item {
width: calc(33.33% - var(--grid-desktop-horizontal-spacing) * 2 / 3)
}
.grid--2-col-tablet .grid__item {
width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
}
@media screen and (max-width: 989px) {
.grid--1-col-tablet-down .grid__item {
width: 100%;
max-width: 100%
}
.slider--tablet.grid--peek {
margin: 0;
width: 100%
}
.slider--tablet.grid--peek .grid__item {
box-sizing: content-box;
margin: 0
}
.slider.slider--tablet .scroll-trigger.animate--slide-in,
.slider.slider--mobile .scroll-trigger.animate--slide-in {
animation: none;
opacity: 1;
transform: inherit
}
.scroll-trigger:not(.scroll-trigger--offscreen) .slider--tablet {
animation: var(--animation-slide-in)
}
}
@media screen and (min-width: 990px) {
.grid--6-col-desktop .grid__item {
width: calc(16.66% - var(--grid-desktop-horizontal-spacing) * 5 / 6);
max-width: calc(16.66% - var(--grid-desktop-horizontal-spacing) * 5 / 6)
}
.grid--5-col-desktop .grid__item {
width: calc(20% - var(--grid-desktop-horizontal-spacing) * 4 / 5);
max-width: calc(20% - var(--grid-desktop-horizontal-spacing) * 4 / 5)
}
.grid--4-col-desktop .grid__item {
width: calc(25% - var(--grid-desktop-horizontal-spacing) * 3 / 4);
max-width: calc(25% - var(--grid-desktop-horizontal-spacing) * 3 / 4)
}
.grid--3-col-desktop .grid__item {
width: calc(33.33% - var(--grid-desktop-horizontal-spacing) * 2 / 3);
max-width: calc(33.33% - var(--grid-desktop-horizontal-spacing) * 2 / 3)
}
.grid--2-col-desktop .grid__item {
width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2);
max-width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
.slider.slider--desktop .scroll-trigger.animate--slide-in {
animation: none;
opacity: 1;
transform: inherit
}
.scroll-trigger:not(.scroll-trigger--offscreen) .slider--desktop {
animation: var(--animation-slide-in)
}
}
@media screen and (min-width: 990px) {
.grid--1-col-desktop {
flex: 0 0 100%;
max-width: 100%
}
.grid--1-col-desktop .grid__item {
width: 100%;
max-width: 100%
}
}
@media screen and (max-width: 749px) {
.grid--peek.slider--mobile {
margin: 0;
width: 100%
}
.grid--peek.slider--mobile .grid__item {
box-sizing: content-box;
margin: 0
}
.grid--peek .grid__item {
min-width: 35%
}
.grid--peek.slider .grid__item:first-of-type {
margin-left: 1.5rem
}
.grid--peek.slider:after {
margin-left: calc(-1 * var(--grid-mobile-horizontal-spacing))
}
.grid--2-col-tablet-down .grid__item {
width: calc(50% - var(--grid-mobile-horizontal-spacing) / 2)
}
.slider--tablet.grid--peek.grid--2-col-tablet-down .grid__item,
.grid--peek .grid__item {
width: calc(50% - var(--grid-mobile-horizontal-spacing) - 3rem)
}
.slider--tablet.grid--peek.grid--1-col-tablet-down .grid__item,
.slider--mobile.grid--peek.grid--1-col-tablet-down .grid__item {
width: calc(100% - var(--grid-mobile-horizontal-spacing) - 3rem)
}
}
@media screen and (min-width: 750px) and (max-width: 989px) {
.slider--tablet.grid--peek .grid__item {
width: calc(25% - var(--grid-desktop-horizontal-spacing) - 3rem)
}
.slider--tablet.grid--peek.grid--3-col-tablet .grid__item {
width: calc(33.33% - var(--grid-desktop-horizontal-spacing) - 3rem)
}
.slider--tablet.grid--peek.grid--2-col-tablet .grid__item,
.slider--tablet.grid--peek.grid--2-col-tablet-down .grid__item {
width: calc(50% - var(--grid-desktop-horizontal-spacing) - 3rem)
}
.slider--tablet.grid--peek .grid__item:first-of-type {
margin-left: 1.5rem
}
.grid--2-col-tablet-down .grid__item {
width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
.grid--1-col-tablet-down.grid--peek .grid__item {
width: calc(100% - var(--grid-desktop-horizontal-spacing) - 3rem)
}
}
.media {
display: block;
background-color: rgba(var(--color-foreground), .1);
position: relative;
overflow: hidden
}
.media--transparent {
background-color: transparent
}
.media>*:not(.zoom):not(.deferred-media__poster-button),
.media model-viewer {
display: block;
max-width: 100%;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%
}
.media>img {
object-fit: cover;
object-position: center center;
transition: opacity .4s cubic-bezier(.25, .46, .45, .94)
}
.media--square {
padding-bottom: 100%
}
.media--portrait {
padding-bottom: 125%
}
.media--landscape {
padding-bottom: 66.6%
}
.media--cropped {
padding-bottom: 56%
}
.media--16-9 {
padding-bottom: 56.25%
}
.media--circle {
padding-bottom: 100%;
border-radius: 50%
}
.media.media--hover-effect>img+img {
opacity: 0
}
@media screen and (min-width: 990px) {
.media--cropped {
padding-bottom: 63%
}
}
deferred-media {
display: block
}
.button--secondary,
.button--tertiary {
--color-button: var(--color-secondary-button);
--color-button-text: var(--color-secondary-button-text)
}
.button--tertiary {
--alpha-button-background: 0;
--alpha-button-border: .2
}
.button,
.shopify-challenge__button,
.customer button,
button.shopify-payment-button__button--unbranded,
.shopify-payment-button [role=button],
.cart__dynamic-checkout-buttons [role=button],
.cart__dynamic-checkout-buttons iframe {
--shadow-horizontal-offset: var(--buttons-shadow-horizontal-offset);
--shadow-vertical-offset: var(--buttons-shadow-vertical-offset);
--shadow-blur-radius: var(--buttons-shadow-blur-radius);
--shadow-opacity: var(--buttons-shadow-opacity);
--shadow-visible: var(--buttons-shadow-visible);
--border-offset: var(--buttons-border-offset);
--border-opacity: calc(1 - var(--buttons-border-opacity));
border-radius: var(--buttons-radius-outset);
position: relative
}
.button,
.shopify-challenge__button,
.customer button,
button.shopify-payment-button__button--unbranded {
min-width: calc(12rem + var(--buttons-border-width) * 2);
min-height: calc(4.5rem + var(--buttons-border-width) * 2)
}
.shopify-payment-button__button--branded {
z-index: auto
}
.cart__dynamic-checkout-buttons iframe {
box-shadow: var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius) rgba(var(--color-shadow), var(--shadow-opacity))
}
.button,
.shopify-challenge__button,
.customer button {
display: inline-flex;
justify-content: center;
align-items: center;
border: 0;
padding: 0 3rem;
cursor: pointer;
font: inherit;
font-size: 1.5rem;
text-decoration: none;
color: rgb(var(--color-button-text));
transition: box-shadow var(--duration-short) ease;
-webkit-appearance: none;
appearance: none;
background-color: rgba(var(--color-button), var(--alpha-button-background))
}
.button:before,
.shopify-challenge__button:before,
.customer button:before,
.shopify-payment-button__button--unbranded:before,
.shopify-payment-button [role=button]:before,
.cart__dynamic-checkout-buttons [role=button]:before {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: -1;
border-radius: var(--buttons-radius-outset);
box-shadow: var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius) rgba(var(--color-shadow), var(--shadow-opacity))
}
.button:after,
.shopify-challenge__button:after,
.customer button:after,
.shopify-payment-button__button--unbranded:after {
content: "";
position: absolute;
top: var(--buttons-border-width);
right: var(--buttons-border-width);
bottom: var(--buttons-border-width);
left: var(--buttons-border-width);
z-index: 1;
border-radius: var(--buttons-radius);
box-shadow: 0 0 0 calc(var(--buttons-border-width) + var(--border-offset)) rgba(var(--color-button-text), var(--border-opacity)), 0 0 0 var(--buttons-border-width) rgba(var(--color-button), var(--alpha-button-background));
transition: box-shadow var(--duration-short) ease
}
.button:not([disabled]):hover:after,
.shopify-challenge__button:hover:after,
.customer button:hover:after,
.shopify-payment-button__button--unbranded:hover:after {
--border-offset: 1.3px;
box-shadow: 0 0 0 calc(var(--buttons-border-width) + var(--border-offset)) rgba(var(--color-button-text), var(--border-opacity)), 0 0 0 calc(var(--buttons-border-width) + 1px) rgba(var(--color-button), var(--alpha-button-background))
}
.button--secondary:after {
--border-opacity: var(--buttons-border-opacity)
}
.button:focus-visible,
.button:focus,
.button.focused,
.shopify-payment-button__button--unbranded:focus-visible,
.shopify-payment-button [role=button]:focus-visible,
.shopify-payment-button__button--unbranded:focus,
.shopify-payment-button [role=button]:focus {
outline: 0;
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .5), 0 0 .5rem .4rem rgba(var(--color-foreground), .3)
}
.button:focus:not(:focus-visible):not(.focused),
.shopify-payment-button__button--unbranded:focus:not(:focus-visible):not(.focused),
.shopify-payment-button [role=button]:focus:not(:focus-visible):not(.focused) {
box-shadow: inherit
}
.button::selection,
.shopify-challenge__button::selection,
.customer button::selection {
background-color: rgba(var(--color-button-text), .3)
}
.button,
.button-label,
.shopify-challenge__button,
.customer button {
font-size: 1.5rem;
letter-spacing: .1rem;
line-height: calc(1 + .2 / var(--font-body-scale))
}
.button--tertiary {
font-size: 1.2rem;
padding: 1rem 1.5rem;
min-width: calc(9rem + var(--buttons-border-width) * 2);
min-height: calc(3.5rem + var(--buttons-border-width) * 2)
}
.button--small {
padding: 1.2rem 2.6rem
}
.button:disabled,
.button[aria-disabled=true],
.button.disabled,
.customer button:disabled,
.customer button[aria-disabled=true],
.customer button.disabled,
.quantity__button.disabled {
cursor: not-allowed;
opacity: .5
}
.button--full-width {
display: flex;
width: 100%
}
.button.loading {
color: transparent;
position: relative
}
@media screen and (forced-colors: active) {
.button.loading {
color: rgb(var(--color-foreground))
}
}
.button.loading>.loading__spinner {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
position: absolute;
height: 100%;
display: flex;
align-items: center
}
.button.loading>.loading__spinner .spinner {
width: fit-content
}
.button.loading>.loading__spinner .path {
stroke: rgb(var(--color-button-text))
}
.share-button {
display: block;
position: relative
}
.share-button details {
width: fit-content
}
.share-button__button {
font-size: 1.4rem;
display: flex;
align-items: center;
color: rgb(var(--color-link));
margin-left: 0;
padding-left: 0;
min-height: 4.4rem
}
details[open]>.share-button__fallback {
animation: animateMenuOpen var(--duration-default) ease
}
.share-button__button:hover {
text-decoration: underline;
text-underline-offset: .3rem
}
.share-button__button,
.share-button__fallback button {
cursor: pointer;
background-color: transparent;
border: none
}
.share-button__button .icon-share {
height: 1.2rem;
margin-right: 1rem;
min-width: 1.3rem
}
.share-button__fallback {
display: flex;
align-items: center;
position: absolute;
top: 3rem;
left: .1rem;
z-index: 3;
width: 100%;
min-width: max-content;
border-radius: var(--inputs-radius);
border: 0
}
.share-button__fallback:after {
pointer-events: none;
content: "";
position: absolute;
top: var(--inputs-border-width);
right: var(--inputs-border-width);
bottom: var(--inputs-border-width);
left: var(--inputs-border-width);
border: .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 {
background: rgb(var(--color-background));
pointer-events: none;
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 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-shadow), var(--inputs-shadow-opacity));
z-index: -1
}
.share-button__fallback button {
width: 4.4rem;
height: 4.4rem;
padding: 0;
flex-shrink: 0;
display: flex;
justify-content: center;
align-items: center;
position: relative;
right: var(--inputs-border-width)
}
.share-button__fallback button:hover {
color: rgba(var(--color-foreground), .75)
}
.share-button__fallback button:hover svg {
transform: scale(1.07)
}
.share-button__close:not(.hidden)+.share-button__copy {
display: none
}
.share-button__close,
.share-button__copy {
background-color: transparent;
color: rgb(var(--color-foreground))
}
.share-button__copy:focus-visible,
.share-button__close:focus-visible {
background-color: black;
z-index: 2
}
.share-button__copy:focus,
.share-button__close:focus {
background-color: black;
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: .2rem solid rgba(var(--color-foreground), .5);
outline-offset: .1rem;
box-shadow: 0 0 0 .1rem rgb(var(--color-background)), 0 0 .5rem .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 {
width: 1.5rem;
height: 1.5rem
}
.share-button__message:not(:empty) {
display: flex;
align-items: center;
width: 100%;
height: 100%;
margin-top: 0;
padding: .8rem 0 .8rem 1.5rem;
margin: var(--inputs-border-width)
}
.share-button__message:not(:empty):not(.hidden)~* {
display: none
}
.field__input,
.select__select,
.customer .field input,
.customer select {
-webkit-appearance: none;
appearance: none;
background-color: black;
color: rgb(var(--color-foreground));
font-size: 1.6rem;
width: 100%;
box-sizing: border-box;
transition: box-shadow var(--duration-short) ease;
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;
top: 0;
right: 0;
bottom: 0;
left: 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-shadow), 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;
top: var(--inputs-border-width);
right: var(--inputs-border-width);
bottom: var(--inputs-border-width);
left: var(--inputs-border-width);
border: .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 {
font-family: var(--font-body-family);
font-style: var(--font-body-style);
font-weight: var(--font-body-weight);
font-size: 1.2rem;
color: rgba(var(--color-foreground), .75)
}
.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(.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(.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(.1rem + var(--inputs-border-width)) rgba(var(--color-foreground));
outline: 0;
border-radius: var(--inputs-radius)
}
.localization-form__select:focus {
outline: 0;
box-shadow: none
}
.text-area,
.select {
display: flex;
position: relative;
width: 100%
}
.select .icon-caret,
.customer select+svg {
height: .6rem;
pointer-events: none;
position: absolute;
top: calc(50% - .2rem);
right: calc(var(--inputs-border-width) + 1.5rem)
}
.select__select,
.customer select {
cursor: pointer;
line-height: calc(1 + .6 / var(--font-body-scale));
padding: 0 calc(var(--inputs-border-width) + 3rem) 0 2rem;
margin: var(--inputs-border-width);
min-height: calc(var(--inputs-border-width) * 2)
}
.field {
position: relative;
width: 100%;
display: flex;
transition: box-shadow var(--duration-short) ease
}
.customer .field {
display: flex
}
.field--with-error {
flex-wrap: wrap
}
.field__input,
.customer .field input {
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: calc(var(--inputs-border-width) + 2rem);
top: calc(1rem + var(--inputs-border-width));
margin-bottom: 0;
pointer-events: none;
position: absolute;
transition: top var(--duration-short) ease, font-size var(--duration-short) ease;
color: rgba(var(--color-foreground), .75);
letter-spacing: .1rem;
line-height: 1.5
}
.field__input:focus~.field__label,
.field__input:not(:placeholder-shown)~.field__label,
.field__input:-webkit-autofill~.field__label,
.customer .field input:focus~label,
.customer .field input:not(:placeholder-shown)~label,
.customer .field input:-webkit-autofill~label {
font-size: 1rem;
top: calc(var(--inputs-border-width) + .5rem);
left: calc(var(--inputs-border-width) + 2rem);
letter-spacing: .04rem
}
.field__input:focus,
.field__input:not(:placeholder-shown),
.field__input:-webkit-autofill,
.customer .field input:focus,
.customer .field input:not(:placeholder-shown),
.customer .field input:-webkit-autofill {
padding: 2.2rem 1.5rem .8rem 2rem;
margin: var(--inputs-border-width)
}
.field__input::-webkit-search-cancel-button,
.customer .field input::-webkit-search-cancel-button {
display: none
}
.field__input::placeholder,
.customer .field input::placeholder {
opacity: 0
}
.field__button {
align-items: center;
background-color: transparent;
border: 0;
color: currentColor;
cursor: pointer;
display: flex;
height: 4.4rem;
justify-content: center;
overflow: hidden;
padding: 0;
position: absolute;
right: 0;
top: 0;
width: 4.4rem
}
.field__button>svg {
height: 2.5rem;
width: 2.5rem
}
.field__input:-webkit-autofill~.field__button,
.field__input:-webkit-autofill~.field__label,
.customer .field input:-webkit-autofill~label {
color: #000
}
.text-area {
font-family: var(--font-body-family);
font-style: var(--font-body-style);
font-weight: var(--font-body-weight);
min-height: 10rem;
resize: none
}
input[type=checkbox] {
display: inline-block;
width: auto;
margin-right: .5rem
}
.form__label {
display: block;
margin-bottom: .6rem
}
.form__message {
align-items: center;
display: flex;
font-size: 1.4rem;
line-height: 1;
margin-top: 1rem
}
.form__message--large {
font-size: 1.6rem
}
.customer .field .form__message {
font-size: 1.4rem;
text-align: left
}
.form__message .icon,
.customer .form__message svg {
flex-shrink: 0;
height: 1.3rem;
margin-right: .5rem;
width: 1.3rem
}
.form__message--large .icon,
.customer .form__message svg {
height: 1.5rem;
width: 1.5rem;
margin-right: 1rem
}
.customer .field .form__message svg {
align-self: start
}
.form-status {
margin: 0;
font-size: 1.6rem
}
.form-status-list {
padding: 0;
margin: 2rem 0 4rem
}
.form-status-list li {
list-style-position: inside
}
.form-status-list .link:first-letter {
text-transform: capitalize
}
.quantity {
color: rgba(var(--color-foreground));
position: relative;
width: calc(14rem / var(--font-body-scale) + var(--inputs-border-width) * 2);
display: flex;
border-radius: var(--inputs-radius);
min-height: calc((var(--inputs-border-width) * 2) + 4.5rem)
}
.quantity:after {
pointer-events: none;
content: "";
position: absolute;
top: var(--inputs-border-width);
right: var(--inputs-border-width);
bottom: var(--inputs-border-width);
left: var(--inputs-border-width);
border: .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 {
background: rgb(var(--color-background));
pointer-events: none;
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 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-shadow), var(--inputs-shadow-opacity));
z-index: -1
}
.quantity__input {
color: currentColor;
font-size: 1.6rem;
font-weight: 500;
opacity: .85;
text-align: center;
background-color: transparent;
border: 0;
padding: 0 .5rem;
width: 100%;
flex-grow: 1;
-webkit-appearance: none;
appearance: none
}
.quantity__button {
width: calc(4.5rem / var(--font-body-scale));
flex-shrink: 0;
font-size: 1.8rem;
border: 0;
background-color: transparent;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: rgb(var(--color-foreground));
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: black;
z-index: 2
}
.quantity__button:focus,
.quantity__input:focus {
background-color: black;
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 {
box-shadow: 0 0 0 10rem rgb(var(--color-background)) inset !important;
-webkit-box-shadow: 0 0 0 10rem rgb(var(--color-background)) inset !important
}
.quantity__input::-webkit-outer-spin-button,
.quantity__input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0
}
.quantity__input[type=number] {
-moz-appearance: textfield
}
.quantity__rules {
margin-top: .5rem;
position: relative;
font-size: 1.2rem
}
.quantity__rules .caption {
display: inline-block;
margin-top: 0;
margin-bottom: 0
}
.quantity__rules .divider+.divider:before {
content: "\2022";
margin: 0 .5rem
}
.quantity__rules-cart {
position: relative
}
product-info .loading__spinner:not(.hidden)~*,
.quantity__rules-cart .loading__spinner:not(.hidden)~* {
visibility: hidden
}
.modal__toggle {
list-style-type: none
}
.no-js details[open] .modal__toggle {
position: absolute;
z-index: 5
}
.modal__toggle-close {
display: none
}
.no-js details[open] svg.modal__toggle-close {
display: flex;
z-index: 1;
height: 1.7rem;
width: 1.7rem
}
.modal__toggle-open {
display: flex
}
.no-js details[open] .modal__toggle-open {
display: none
}
.no-js .modal__close-button.link {
display: none
}
.modal__close-button.link {
display: flex;
justify-content: center;
align-items: center;
padding: 0rem;
height: 4.4rem;
width: 4.4rem;
background-color: transparent
}
.modal__close-button .icon {
width: 1.7rem;
height: 1.7rem
}
.modal__content {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgb(var(--color-background));
z-index: 4;
display: flex;
justify-content: center;
align-items: center
}
.media-modal {
cursor: zoom-out
}
.media-modal .deferred-media {
cursor: initial
}
.cart-count-bubble:empty {
display: none
}
.cart-count-bubble {
position: absolute;
background-color: rgb(var(--color-button));
color: rgb(var(--color-button-text));
height: 1.7rem;
width: 1.7rem;
border-radius: 100%;
display: flex;
justify-content: center;
align-items: center;
font-size: .9rem;
bottom: .8rem;
left: 2.2rem;
line-height: calc(1 + .1 / var(--font-body-scale))
}
.utility-bar {
height: 100%
}
.utility-bar--bottom-border {
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
@media screen and (min-width: 990px) {
.utility-bar--bottom-border-social-only {
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
}
.utility-bar__grid {
display: grid;
grid-template-columns: 1fr;
grid-template-areas: "announcements"
}
.utility-bar__grid .list-social {
justify-content: flex-start;
align-content: center;
margin-left: -1.2rem;
grid-area: social-icons
}
@media screen and (max-width: 989px) {
.utility-bar .utility-bar__grid .list-social {
display: none
}
}
.utility-bar .list-social__item .icon {
scale: .9
}
@media screen and (min-width: 990px) {
.utility-bar__grid--3-col {
grid-template-columns: 3fr 4fr 3fr;
grid-template-areas: "social-icons announcements language-currency"
}
.utility-bar__grid--2-col {
grid-template-columns: 1fr 1fr;
grid-template-areas: "social-icons language-currency"
}
.announcement-bar.announcement-bar--one-announcement,
.announcement-bar--one-announcement .announcement-bar__link {
width: fit-content;
margin: auto
}
}
.announcement-bar,
.announcement-bar__announcement {
color: rgb(var(--color-foreground));
width: 100%;
height: 100%;
display: flex;
justify-content: center;
flex-wrap: wrap;
align-content: center;
grid-area: announcements
}
.announcement-bar .slider--everywhere {
margin-bottom: 0;
scroll-behavior: auto
}
.utility-bar__grid .announcement-bar-slider,
.announcement-bar-slider,
.announcement-bar-slider .slider {
width: 100%
}
.announcement-bar .slider-button--next {
margin-right: -1.5rem;
min-width: 44px
}
.announcement-bar .slider-button--prev {
margin-left: -1.5rem;
min-width: 44px
}
.announcement-bar .slider-button--next:focus-visible,
.announcement-bar .slider-button--prev:focus-visible,
.utility-bar .list-social__link:focus-visible {
outline-offset: -.3rem;
box-shadow: 0 0 0 -.2rem rgb(var(--color-foreground))
}
.localization-wrapper {
grid-area: language-currency;
align-self: center;
display: flex;
justify-content: flex-end
}
.localization-wrapper .localization-selector+.disclosure__list-wrapper {
animation: animateMenuOpen var(--duration-default) ease
}
.utility-bar .localization-wrapper .disclosure .localization-form__select,
.utility-bar .localization-wrapper .disclosure__link {
font-size: calc(var(--font-heading-scale) * 1.3rem)
}
@media screen and (min-width: 990px) {
body:has(.section-header .header:not(.drawer-menu)) .utility-bar .page-width {
padding-left: 5rem;
padding-right: 5rem
}
.announcement-bar-slider {
width: 60%
}
.announcement-bar .slider-button {
height: 3.8rem
}
}
.announcement-bar__link {
display: flex;
width: 100%;
text-decoration: none;
height: 100%;
justify-content: center;
align-items: center
}
.announcement-bar__link:hover {
text-decoration: underline
}
.announcement-bar__link .icon-arrow {
display: inline-block;
pointer-events: none;
margin-left: .8rem;
vertical-align: middle;
margin-bottom: .2rem
}
.announcement-bar__message {
text-align: center;
padding: 1rem 0;
margin: 0;
letter-spacing: .1rem;
min-height: 3.8rem
}
.announcement-bar-slider--fade-in-next .announcement-bar__message,
.announcement-bar-slider--fade-in-previous .announcement-bar__message,
.announcement-bar-slider--fade-out-next .announcement-bar__message,
.announcement-bar-slider--fade-out-previous .announcement-bar__message {
animation-duration: var(--duration-announcement-bar);
animation-timing-function: ease-in-out;
animation-fill-mode: forwards
}
.announcement-bar-slider--fade-in-next .announcement-bar__message {
--announcement-translate-from: -1.5rem;
opacity: 0;
animation-name: translateAnnouncementSlideIn;
animation-delay: var(--duration-announcement-bar)
}
.announcement-bar-slider--fade-in-previous .announcement-bar__message {
--announcement-translate-from: 1.5rem;
opacity: 0;
animation-name: translateAnnouncementSlideIn;
animation-delay: var(--duration-announcement-bar)
}
.announcement-bar-slider--fade-out-next .announcement-bar__message {
--announcement-translate-to: 1.5rem;
animation-name: translateAnnouncementSlideOut
}
.announcement-bar-slider--fade-out-previous .announcement-bar__message {
--announcement-translate-to: -1.5rem;
animation-name: translateAnnouncementSlideOut
}
@keyframes translateAnnouncementSlideIn {
0% {
opacity: 0;
transform: translate(var(--announcement-translate-from))
}
to {
opacity: 1;
transform: translate(0)
}
}
@keyframes translateAnnouncementSlideOut {
0% {
opacity: 1;
transform: translate(0)
}
to {
opacity: 0;
transform: translate(var(--announcement-translate-to))
}
}
.section-header.shopify-section-group-header-group {
z-index: 3
}
.shopify-section-header-sticky {
position: sticky;
top: 0
}
.shopify-section-header-hidden {
top: calc(-1 * var(--header-height))
}
.shopify-section-header-hidden.menu-open {
top: 0
}
.section-header.animate {
transition: top .15s ease-out
}
.shopify-section-group-header-group {
z-index: 4
}
.section-header~.shopify-section-group-header-group {
z-index: initial
}
.header-wrapper {
display: block;
position: relative;
background-color: rgb(var(--color-background))
}
.header-wrapper--border-bottom {
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
.header {
display: grid;
grid-template-areas: "left-icons heading icons";
grid-template-columns: 1fr 2fr 1fr;
align-items: center
}
@media screen and (max-width: 749px) {
.header--has-app {
grid-template-columns: auto 1fr auto
}
}
@media screen and (min-width: 990px) {
.header {
grid-template-columns: 1fr auto 1fr
}
.header--top-left,
.header--middle-left:not(.header--has-menu) {
grid-template-areas: "heading icons" "navigation navigation";
grid-template-columns: 1fr auto
}
.header--top-left.drawer-menu,
.header--middle-left.drawer-menu {
grid-template-areas: "navigation heading icons";
grid-template-columns: auto 1fr auto;
column-gap: 1rem
}
.header--middle-left {
grid-template-areas: "heading navigation icons";
grid-template-columns: auto auto 1fr;
column-gap: 2rem
}
.header--middle-center:not(.drawer-menu) {
grid-template-areas: "navigation heading icons";
grid-template-columns: 1fr auto 1fr;
column-gap: 2rem
}
.header--middle-center a.header__heading-link {
text-align: center
}
.header--top-center {
grid-template-areas: "left-icons heading icons" "navigation navigation navigation"
}
.header--top-center.drawer-menu {
grid-template-areas: "left-icons heading icons";
grid-template-columns: 1fr auto 1fr
}
.header:not(.header--middle-left, .header--middle-center) .header__inline-menu {
margin-top: 1.05rem
}
}
.header *[tabindex="-1"]:focus {
outline: none
}
.header__heading {
margin: 0;
line-height: 0
}
.header>.header__heading-link {
line-height: 0
}
.header__heading,
.header__heading-link {
grid-area: heading;
justify-self: center
}
.header__heading-link {
display: inline-block;
padding: .75rem;
text-decoration: none;
word-break: break-word
}
.header__heading-link:hover .h2 {
color: rgb(var(--color-foreground))
}
.header__heading-link .h2 {
line-height: 1;
color: rgba(var(--color-foreground), .75)
}
.header__heading-logo {
height: auto;
max-width: 100%
}
.header__heading-logo-wrapper {
width: 100%;
display: inline-block;
transition: width .3s cubic-bezier(.52, 0, .61, .99)
}
@media screen and (max-width: 989px) {
.header__heading,
.header__heading-link {
text-align: center
}
.header--mobile-left .header__heading,
.header--mobile-left .header__heading-link {
text-align: left;
justify-self: start
}
.header--mobile-left {
grid-template-columns: auto 2fr 1fr
}
}
@media screen and (min-width: 990px) {
.header--middle-left .header__heading-link,
.header--top-left .header__heading-link {
margin-left: -.75rem
}
.header__heading,
.header__heading-link {
justify-self: start
}
.header--middle-center .header__heading-link,
.header--middle-center .header__heading,
.header--top-center .header__heading-link,
.header--top-center .header__heading {
justify-self: center;
text-align: center
}
}
.header__icons {
display: flex;
grid-area: icons;
justify-self: end;
padding-right: .8rem
}
.header__icons .shopify-app-block {
max-width: 4.4rem;
max-height: 4.4rem;
overflow: hidden
}
.header__icon:not(.header__icon--summary),
.header__icon span {
display: flex;
align-items: center;
justify-content: center
}
.header__icon {
color: rgb(var(--color-foreground))
}
.header__icon span {
height: 100%
}
.header__icon:after {
content: none
}
.header__icon:hover .icon,
.modal__close-button:hover .icon {
transform: scale(1.07)
}
.header__icon .icon {
height: 2rem;
width: 2rem;
fill: none;
vertical-align: middle
}
.header__icon,
.header__icon--cart .icon {
height: 4.4rem;
width: 4.4rem;
padding: 0
}
.header__icon--cart {
position: relative;
margin-right: -1.2rem
}
.header__icon--menu[aria-expanded=true]:before {
content: "";
top: 100%;
left: 0;
height: calc(var(--viewport-height, 100vh) - (var(--header-bottom-position, 100%)));
width: 100%;
display: block;
position: absolute;
background: rgba(var(--color-foreground), .5)
}
menu-drawer+.header__search {
display: none
}
.header>.header__search {
grid-area: left-icons;
justify-self: start
}
.header--top-center.drawer-menu>.header__search {
margin-left: 3.2rem
}
.header--top-center header-drawer {
grid-area: left-icons
}
.header:not(.header--has-menu) *>.header__search {
display: none
}
.header__search {
display: inline-flex;
line-height: 0
}
.header--top-center>.header__search {
display: none
}
.header--top-center *>.header__search {
display: inline-flex
}
@media screen and (min-width: 990px) {
.header:not(.header--top-center) *>.header__search,
.header--top-center>.header__search {
display: inline-flex
}
.header:not(.header--top-center)>.header__search,
.header--top-center *>.header__search {
display: none
}
}
.no-js .predictive-search {
display: none
}
details[open]>.search-modal {
opacity: 1;
animation: animateMenuOpen var(--duration-default) ease
}
details[open] .modal-overlay {
display: block
}
details[open] .modal-overlay:after {
position: absolute;
content: "";
background-color: rgb(var(--color-foreground), .5);
top: 100%;
left: 0;
right: 0;
height: 100vh
}
.no-js details[open]>.header__icon--search {
top: 1rem;
right: .5rem
}
.search-modal {
opacity: 0;
border-bottom: .1rem solid rgba(var(--color-foreground), .08);
min-height: calc(100% + var(--inputs-margin-offset) + (2 * var(--inputs-border-width)));
height: 100%
}
.search-modal__content {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
padding: 0 5rem 0 1rem;
line-height: calc(1 + .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 {
width: 100%
}
.search-modal__close-button {
position: absolute;
right: .3rem
}
@media screen and (min-width: 750px) {
.search-modal__close-button {
right: 1rem
}
.search-modal__content {
padding: 0 6rem
}
}
@media screen and (min-width: 990px) {
.search-modal__form {
max-width: 74.2rem
}
.search-modal__close-button {
position: initial;
margin-left: .5rem
}
}
.header__icon--menu .icon {
display: block;
position: absolute;
opacity: 1;
transform: scale(1);
transition: transform .15s ease, opacity .15s ease
}
details:not([open])>.header__icon--menu .icon-close,
details[open]>.header__icon--menu .icon-hamburger {
visibility: hidden;
opacity: 0;
transform: scale(.8)
}
.js details[open]:not(.menu-opening)>.header__icon--menu .icon-close {
visibility: hidden
}
.js details[open]:not(.menu-opening)>.header__icon--menu .icon-hamburger {
visibility: visible;
opacity: 1;
transform: scale(1.07)
}
.js details>.header__submenu {
opacity: 0;
transform: translateY(-1.5rem)
}
details[open]>.header__submenu {
animation: animateMenuOpen var(--duration-default) ease;
animation-fill-mode: forwards;
z-index: 1
}
@media (prefers-reduced-motion) {
details[open]>.header__submenu {
opacity: 1;
transform: translateY(0)
}
}
.header__inline-menu {
margin-left: -1.2rem;
grid-area: navigation;
display: none
}
.header--top-center .header__inline-menu,
.header--top-center .header__heading-link {
margin-left: 0
}
@media screen and (min-width: 990px) {
.header__inline-menu {
display: block
}
.header--top-center .header__inline-menu {
justify-self: center
}
.header--top-center .header__inline-menu>.list-menu--inline {
justify-content: center
}
.header--middle-left .header__inline-menu {
margin-left: 0
}
}
.header__menu {
padding: 0 1rem
}
.header__menu-item {
padding: 1.2rem;
text-decoration: none;
color: rgba(var(--color-foreground), .75)
}
.header__menu-item:hover {
color: rgb(var(--color-foreground))
}
.header__menu-item span {
transition: text-decoration var(--duration-short) ease
}
.header__menu-item:hover span {
text-decoration: underline;
text-underline-offset: .3rem
}
details[open]>.header__menu-item {
text-decoration: underline
}
details[open]:hover>.header__menu-item {
text-decoration-thickness: .2rem
}
details[open]>.header__menu-item .icon-caret {
transform: rotate(180deg)
}
.header__active-menu-item {
transition: text-decoration-thickness var(--duration-short) ease;
color: rgb(var(--color-foreground));
text-decoration: underline;
text-underline-offset: .3rem
}
.header__menu-item:hover .header__active-menu-item {
text-decoration-thickness: .2rem
}
.header__submenu {
transition: opacity var(--duration-default) ease, transform var(--duration-default) ease
}
.global-settings-popup,
.header__submenu.global-settings-popup {
border-radius: var(--popup-corner-radius);
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
border-style: solid;
border-width: var(--popup-border-width);
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity));
z-index: -1
}
.header__submenu.list-menu {
padding: 1rem 0
}
.header__submenu .header__submenu {
background-color: rgba(var(--color-foreground), .03);
padding: 1rem 0;
margin: 1rem 0
}
.header__submenu .header__menu-item:after {
right: 2rem
}
.header__submenu .header__menu-item {
justify-content: space-between;
padding: .8rem 2rem
}
.header__submenu .header__menu-item:hover {
text-decoration-line: underline
}
.header__menu-item .icon-caret {
right: .8rem
}
.header__submenu .icon-caret {
flex-shrink: 0;
margin-left: 1rem;
position: static
}
header-menu>details,
details-disclosure>details {
position: relative
}
@keyframes animateMenuOpen {
0% {
opacity: 0;
transform: translateY(-1.5rem)
}
to {
opacity: 1;
transform: translateY(0)
}
}
.overflow-hidden-mobile,
.overflow-hidden-tablet,
.overflow-hidden-desktop {
overflow: hidden
}
@media screen and (min-width: 750px) {
.overflow-hidden-mobile {
overflow: auto
}
}
@media screen and (min-width: 990px) {
.overflow-hidden-tablet {
overflow: auto
}
}
.badge {
border: 1px solid transparent;
border-radius: var(--badge-corner-radius);
display: inline-block;
font-size: 1.2rem;
letter-spacing: .1rem;
line-height: 1;
padding: .5rem 1.3rem .6rem;
text-align: center;
background-color: rgb(var(--color-badge-background));
border-color: rgba(var(--color-badge-border), var(--alpha-badge-border));
color: rgb(var(--color-badge-foreground));
word-break: break-word
}
.gradient {
background: rgb(var(--color-background));
background: var(--gradient-background);
background-attachment: fixed
}
@media screen and (forced-colors: active) {
.icon {
color: CanvasText;
fill: CanvasText !important
}
.icon-close-small path {
stroke: CanvasText
}
}
.ratio {
display: flex;
position: relative;
align-items: stretch
}
.ratio:before {
content: "";
width: 0;
height: 0;
padding-bottom: var(--ratio-percent)
}
.content-container {
border-radius: var(--text-boxes-radius);
border: var(--text-boxes-border-width) solid rgba(var(--color-foreground), var(--text-boxes-border-opacity));
position: relative
}
.content-container:after {
content: "";
position: absolute;
top: calc(var(--text-boxes-border-width) * -1);
right: calc(var(--text-boxes-border-width) * -1);
bottom: calc(var(--text-boxes-border-width) * -1);
left: calc(var(--text-boxes-border-width) * -1);
border-radius: var(--text-boxes-radius);
box-shadow: var(--text-boxes-shadow-horizontal-offset) var(--text-boxes-shadow-vertical-offset) var(--text-boxes-shadow-blur-radius) rgba(var(--color-shadow), var(--text-boxes-shadow-opacity));
z-index: -1
}
.content-container--full-width:after {
left: 0;
right: 0;
border-radius: 0
}
@media screen and (max-width: 749px) {
.content-container--full-width-mobile {
border-left: none;
border-right: none;
border-radius: 0
}
.content-container--full-width-mobile:after {
display: none
}
}
.global-media-settings {
position: relative;
border: var(--media-border-width) solid rgba(var(--color-foreground), var(--media-border-opacity));
border-radius: var(--media-radius);
overflow: visible !important;
background-color: rgb(var(--color-background))
}
.global-media-settings:after {
content: "";
position: absolute;
top: calc(var(--media-border-width) * -1);
right: calc(var(--media-border-width) * -1);
bottom: calc(var(--media-border-width) * -1);
left: calc(var(--media-border-width) * -1);
border-radius: var(--media-radius);
box-shadow: var(--media-shadow-horizontal-offset) var(--media-shadow-vertical-offset) var(--media-shadow-blur-radius) rgba(var(--color-shadow), var(--media-shadow-opacity));
z-index: -1;
pointer-events: none
}
.global-media-settings--no-shadow {
overflow: hidden !important
}
.global-media-settings--no-shadow:after {
content: none
}
.global-media-settings img,
.global-media-settings iframe,
.global-media-settings model-viewer,
.global-media-settings video,
.global-media-settings .placeholder-svg {
border-radius: calc(var(--media-radius) - var(--media-border-width))
}
.content-container--full-width,
.global-media-settings--full-width,
.global-media-settings--full-width img,
.global-media-settings--full-width video,
.global-media-settings--full-width iframe,
.global-media-settings--full-width .placeholder-svg {
border-radius: 0;
border-left: none;
border-right: none
}
@supports not (inset: 10px) {
.grid {
margin-left: calc(-1 * var(--grid-mobile-horizontal-spacing))
}
.grid__item {
padding-left: var(--grid-mobile-horizontal-spacing);
padding-bottom: var(--grid-mobile-vertical-spacing)
}
@media screen and (min-width: 750px) {
.grid {
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing))
}
.grid__item {
padding-left: var(--grid-desktop-horizontal-spacing);
padding-bottom: var(--grid-desktop-vertical-spacing)
}
}
.grid--gapless .grid__item {
padding-left: 0;
padding-bottom: 0
}
@media screen and (min-width: 749px) {
.grid--peek .grid__item {
padding-left: var(--grid-mobile-horizontal-spacing)
}
}
.product-grid .grid__item {
padding-bottom: var(--grid-mobile-vertical-spacing)
}
@media screen and (min-width: 750px) {
.product-grid .grid__item {
padding-bottom: var(--grid-desktop-vertical-spacing)
}
}
}
.font-body-bold {
font-weight: var(--font-body-weight-bold)
}
@media (forced-colors: active) {
.button,
.shopify-challenge__button,
.customer button {
border: transparent solid 1px
}
.button:focus-visible,
.button:focus,
.button.focused,
.shopify-payment-button__button--unbranded:focus-visible,
.shopify-payment-button [role=button]:focus-visible,
.shopify-payment-button__button--unbranded:focus,
.shopify-payment-button [role=button]:focus {
outline: solid transparent 1px
}
.field__input:focus,
.select__select:focus,
.customer .field input:focus,
.customer select:focus,
.localization-form__select:focus.localization-form__select:after {
outline: transparent solid 1px
}
.localization-form__select:focus {
outline: transparent solid 1px
}
}
.rte:after {
clear: both;
content: "";
display: block
}
.rte>*:first-child {
margin-top: 0
}
.rte>*:last-child {
margin-bottom: 0
}
.rte table {
table-layout: fixed
}
@media screen and (min-width: 750px) {
.rte table td {
padding-left: 1.2rem;
padding-right: 1.2rem
}
}
.rte img {
height: auto;
max-width: 100%;
border: var(--media-border-width) solid rgba(var(--color-foreground), var(--media-border-opacity));
border-radius: var(--media-radius);
box-shadow: var(--media-shadow-horizontal-offset) var(--media-shadow-vertical-offset) var(--media-shadow-blur-radius) rgba(var(--color-shadow), var(--media-shadow-opacity));
margin-bottom: var(--media-shadow-vertical-offset)
}
.rte ul,
.rte ol {
list-style-position: inside;
padding-left: 2rem
}
.rte li {
list-style: inherit
}
.rte li:last-child {
margin-bottom: 0
}
.rte a {
color: rgba(var(--color-link), var(--alpha-link));
text-underline-offset: .3rem;
text-decoration-thickness: .1rem;
transition: text-decoration-thickness var(--duration-short) ease
}
.rte a:hover {
color: rgb(var(--color-link));
text-decoration-thickness: .2rem
}
.rte blockquote {
display: inline-flex
}
.rte blockquote>* {
margin: -.5rem 0
}
.shape--mask {
display: block;
height: 0;
width: 0
}
.shape--arch {
clip-path: url(#Shape-Arch)
}
.shape--blob {
clip-path: polygon(var(--shape--blob-1))
}
.shape--chevronleft {
clip-path: polygon(100% 0%, 85% 50%, 100% 100%, 15% 100%, 0% 50%, 15% 0%)
}
.shape--chevronright {
clip-path: polygon(85% 0%, 100% 50%, 85% 100%, 0% 100%, 15% 50%, 0% 0%)
}
.shape--circle {
clip-path: circle(closest-side)
}
.shape--diamond {
clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)
}
.shape--parallelogram {
clip-path: polygon(15% 0, 100% 0%, 85% 100%, 0% 100%)
}
.shape--round {
clip-path: ellipse(45% 45% at 50% 50%)
}
.animate--fixed {
clip-path: inset(0)
}
.animate--fixed>img:not(.zoom):not(.deferred-media__poster-button),
.animate--fixed>svg:not(.zoom):not(.deferred-media__poster-button) {
position: fixed;
height: 100vh
}
.animate--zoom-in {
--zoom-in-ratio: 1
}
.animate--zoom-in>img,
.animate--zoom-in>svg {
transition: scale var(--duration-short) linear;
scale: var(--zoom-in-ratio)
}
@media (prefers-reduced-motion: no-preference) {
.animate--ambient>img,
.animate--ambient>svg {
animation: animateAmbient 30s linear infinite
}
@keyframes animateAmbient {
0% {
transform: rotate(0) translate(1em) rotate(0) scale(1.2)
}
to {
transform: rotate(360deg) translate(1em) rotate(-360deg) scale(1.2)
}
}
.scroll-trigger.animate--fade-in,
.scroll-trigger.animate--slide-in {
opacity: .01
}
.scroll-trigger.animate--slide-in {
transform: translateY(2rem)
}
.scroll-trigger:not(.scroll-trigger--offscreen).animate--fade-in {
opacity: 1;
animation: var(--animation-fade-in)
}
.scroll-trigger:not(.scroll-trigger--offscreen).animate--slide-in {
animation: var(--animation-slide-in);
animation-delay: calc(var(--animation-order) * 75ms)
}
.scroll-trigger.scroll-trigger--design-mode.animate--fade-in,
.scroll-trigger.scroll-trigger--design-mode.animate--slide-in,
.scroll-trigger.scroll-trigger--design-mode .slider,
.scroll-trigger:not(.scroll-trigger--offscreen).scroll-trigger--cancel {
opacity: 1;
animation: none;
transition: none
}
.scroll-trigger.scroll-trigger--design-mode.animate--slide-in {
transform: translateY(0)
}
@keyframes slideIn {
0% {
transform: translateY(2rem);
opacity: .01
}
to {
transform: translateY(0);
opacity: 1
}
}
@keyframes fadeIn {
0% {
opacity: .01
}
to {
opacity: 1
}
}
}
@media (prefers-reduced-motion: no-preference) and (hover: hover) {
.animate--hover-3d-lift .card-wrapper .card--card,
.animate--hover-3d-lift .card-wrapper .card--standard .card__inner,
.animate--hover-3d-lift .button:not(.button--tertiary),
.animate--hover-3d-lift .shopify-challenge__button,
.animate--hover-3d-lift .customer button,
.animate--hover-3d-lift .shopify-payment-button__button,
.animate--hover-3d-lift .deferred-media .deferred-media__poster-button {
transition: transform var(--duration-long) ease, box-shadow var(--duration-long) ease;
transform-origin: center
}
.animate--hover-3d-lift .card-wrapper:hover .card--card,
.animate--hover-3d-lift .card-wrapper:hover .card--standard .card__inner,
.animate--hover-3d-lift .button:not(.button--tertiary):not([disabled]):hover,
.animate--hover-3d-lift .shopify-challenge__button:not([disabled]):hover,
.animate--hover-3d-lift .customer button:not([disabled]):hover,
.animate--hover-3d-lift .shopify-payment-button__button:hover,
.animate--hover-3d-lift .deferred-media:hover .deferred-media__poster-button {
transition: transform var(--duration-extended) ease, box-shadow var(--duration-long) ease;
transform: rotate(1deg);
box-shadow: -1rem -1rem 1rem -1rem #0000000d, 1rem 1rem 1rem -1rem #0000000d, 0 0 .5rem #fff0, 0 2rem 3.5rem -2rem #00000080
}
.animate--hover-3d-lift .deferred-media:hover .deferred-media__poster-button {
transform: translate(-50%, -50%) scale(1.05)
}
.animate--hover-3d-lift .collage__item .card-wrapper:hover .card--card,
.animate--hover-3d-lift .collage__item .card-wrapper:hover .card--standard .card__inner {
transform: rotate(.5deg)
}
.animate--hover-3d-lift .product-grid .grid__item:hover,
.animate--hover-3d-lift .collection-list .grid__item:hover,
.animate--hover-3d-lift .collage__item:hover,
.animate--hover-3d-lift .blog-articles .article:hover,
.animate--hover-3d-lift .complementary-slide li:hover {
z-index: 2
}
.animate--hover-3d-lift .product-grid {
isolation: isolate
}
.animate--hover-3d-lift .card-wrapper .card--shape.card--standard:not(.card--text) .card__inner {
box-shadow: none;
transition: transform var(--duration-long) ease, filter var(--duration-long) ease
}
.animate--hover-3d-lift .card-wrapper:hover .card--shape.card--standard:not(.card--text) .card__inner {
transition: transform calc(2 * var(--duration-extended)) ease, filter var(--duration-long) ease;
filter: drop-shadow(0rem 2rem 2rem rgba(0, 0, 0, .15)) drop-shadow(0rem 1rem 1rem rgba(0, 0, 0, .15))
}
.animate--hover-3d-lift .card-wrapper:hover .card--card:after,
.animate--hover-3d-lift .card-wrapper:hover .card--standard .card__inner:after,
.animate--hover-3d-lift .card-wrapper:hover .card--shape.card--standard:not(.card--text) .card__inner .card__media:before {
background-image: var(--easter-egg);
background-size: 250px 250px;
mix-blend-mode: color-dodge;
pointer-events: none;
z-index: 2
}
.animate--hover-3d-lift .card-wrapper:hover .card--shape.card--standard:not(.card--text) .card__inner .card__media:before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0
}
.animate--hover-3d-lift .card-wrapper .card--card:before,
.animate--hover-3d-lift .card-wrapper .card--standard .card__media:after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
opacity: 0;
pointer-events: none;
transition: background-position calc(2 * var(--duration-extended)) ease, opacity var(--duration-default) ease;
mix-blend-mode: overlay;
background-size: 400% 100%;
background-position: 90% 0;
background-repeat: no-repeat;
background-image: linear-gradient(135deg, rgba(255, 255, 255, 0) 45%, rgba(255, 255, 255, 1) 50%, rgba(255, 255, 255, 0) 55%)
}
.animate--hover-3d-lift .card-wrapper:hover .card--card:before,
.animate--hover-3d-lift .card-wrapper:hover .card--standard .card__media:after {
opacity: .2;
transition: background-position 6s ease, opacity var(--duration-long) ease;
background-position: left;
z-index: 2
}
:root {
--easter-egg: none;
--sparkle: url(sparkle.gif)
}
.animate--hover-vertical-lift .button:not(.button--tertiary),
.animate--hover-vertical-lift .shopify-challenge__button,
.animate--hover-vertical-lift .customer button,
.animate--hover-vertical-lift .shopify-payment-button__button {
transition: transform var(--duration-default) var(--ease-out-slow)
}
.animate--hover-vertical-lift .card-wrapper .card--card,
.animate--hover-vertical-lift .card-wrapper .card--standard .card__inner {
transition: transform var(--duration-medium) var(--ease-out-slow)
}
.animate--hover-vertical-lift .card-wrapper:hover .card--card,
.animate--hover-vertical-lift .card-wrapper:hover .card--standard .card__inner {
transform: translateY(-.75rem)
}
.animate--hover-vertical-lift .card-wrapper:active .card--card,
.animate--hover-vertical-lift .card-wrapper:active .card--standard .card__inner {
transform: translateY(-.5rem)
}
.animate--hover-vertical-lift .button:not(.button--tertiary):not([disabled]):hover,
.animate--hover-vertical-lift .shopify-challenge__button:not([disabled]):hover,
.animate--hover-vertical-lift .customer button:not([disabled]):hover,
.animate--hover-vertical-lift .shopify-payment-button__button:hover {
transform: translateY(-.25rem)
}
.animate--hover-vertical-lift .button:not(.button--tertiary):not([disabled]):active,
.animate--hover-vertical-lift .shopify-challenge__button:not([disabled]):active,
.animate--hover-vertical-lift .customer button:not([disabled]):active,
.animate--hover-vertical-lift .shopify-payment-button__button:active {
transform: translateY(0)
}
.animate--hover-vertical-lift .button:not([disabled]):hover:after,
.animate--hover-vertical-lift .customer button:not([disabled]):hover:after,
.animate--hover-vertical-lift .shopify-payment-button__button:not([disabled]):hover:after {
--border-offset: .3px;
box-shadow: 0 0 0 calc(var(--buttons-border-width) + var(--border-offset)) rgba(var(--color-button-text), var(--border-opacity)), 0 0 0 var(--buttons-border-width) rgba(var(--color-button), var(--alpha-button-background))
}
.animate--hover-vertical-lift .button:not([disabled]).button--secondary:hover:after {
--border-offset: 0px
}
}
</style>
<link rel="preload" as="font"
href="https://infinite-style.com/cdn/fonts/questrial/questrial_n4.0ba6d2b6094954bab23732c75d3ecb4c47a5869c.woff2?h1=N2ViNWQ0LTMuYWNjb3VudC5teXNob3BpZnkuY29t&h2=eHh4LmRlcm1hYmxlbmQuY29t&hmac=2ddb1e040059f191fdb3e184199ec4bc383d5aa55a6213bf798372c9da87d664"
type="font/woff2" crossorigin>
<link rel="preload" as="font"
href="https://infinite-style.com/cdn/fonts/archivo/archivo_n7.6f363ab30b12ea00d5e6243ed0e977a11393a3ad.woff2?h1=N2ViNWQ0LTMuYWNjb3VudC5teXNob3BpZnkuY29t&h2=eHh4LmRlcm1hYmxlbmQuY29t&hmac=6cc30ef697b84bb8f7f3bf9979eb1a3b3e1410751b95cc93dce027cd0262d372"
type="font/woff2" crossorigin>
<style>
.predictive-search {
display: none;
position: absolute;
top: calc(100% + .1rem);
left: -.1rem;
border-width: var(--popup-border-width);
border-style: solid;
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
background-color: black;
z-index: 3;
border-bottom-right-radius: var(--popup-corner-radius);
border-bottom-left-radius: var(--popup-corner-radius);
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity));
overflow-y: auto;
-webkit-overflow-scrolling: touch
}
.predictive-search--search-template {
z-index: 2;
width: calc(100% + .2rem)
}
.predictive-search__results-groups-wrapper {
display: flex;
border-bottom: .1rem solid rgba(var(--color-foreground), .08);
padding-bottom: 1rem
}
@media screen and (max-width: 749px) {
.predictive-search--header {
right: 0;
left: 0;
top: 100%
}
.predictive-search__results-groups-wrapper {
flex-direction: column
}
.predictive-search__results-groups-wrapper:not(.predictive-search__results-groups-wrapper--no-suggestions) {
gap: 2rem
}
}
@media screen and (min-width: 750px) {
.predictive-search {
border-top: none;
width: calc(100% + .2rem)
}
.header predictive-search {
position: relative
}
}
predictive-search[open] .predictive-search,
predictive-search[loading] .predictive-search {
display: block
}
.predictive-search__result-group {
display: flex;
flex-direction: column;
flex: 1 1 auto;
gap: 2rem
}
.predictive-search__result-group:first-child .predictive-search__pages-wrapper {
display: none
}
@media screen and (min-width: 750px) {
.predictive-search__results-groups-wrapper--no-products .predictive-search__result-group:nth-child(2),
.predictive-search__result-group:last-child .predictive-search__pages-wrapper {
display: none
}
.predictive-search__result-group:first-child .predictive-search__pages-wrapper {
display: initial
}
.predictive-search__result-group:first-child {
flex: 0 0 26.4rem
}
.predictive-search__results-groups-wrapper--no-products .predictive-search__result-group:first-child,
.predictive-search__result-group:only-child {
flex-grow: 1
}
}
.predictive-search__heading {
border-bottom: .1rem solid rgba(var(--color-foreground), .08);
margin: 0 2rem;
padding: 1.5rem 0 .75rem;
color: rgba(var(--color-foreground), .7)
}
predictive-search .spinner {
width: 1.5rem;
height: 1.5rem;
line-height: 0
}
predictive-search:not([loading]) .predictive-search__loading-state,
predictive-search:not([loading]) .predictive-search-status__loading {
display: none
}
predictive-search[loading] .predictive-search__loading-state {
display: flex;
justify-content: center;
padding: 1rem
}
predictive-search[loading] .predictive-search__search-for-button {
display: none
}
predictive-search[loading] .predictive-search__results-groups-wrapper~.predictive-search__loading-state {
display: none
}
predictive-search[loading] .predictive-search__results-groups-wrapper~.predictive-search__search-for-button {
display: initial
}
.predictive-search__list-item[aria-selected=true]>*,
.predictive-search__list-item:hover>*,
.predictive-search__item[aria-selected=true],
.predictive-search__item:hover {
color: rgb(var(--color-foreground));
background-color: rgba(var(--color-foreground), .04)
}
.predictive-search__list-item[aria-selected=true] .predictive-search__item-heading,
.predictive-search__list-item:hover .predictive-search__item-heading {
text-decoration: underline;
text-underline-offset: .3rem
}
.predictive-search__item {
display: flex;
padding: 1rem 2rem;
text-align: left;
text-decoration: none;
width: 100%
}
.predictive-search__item--link-with-thumbnail {
display: grid;
grid-template-columns: 5rem 1fr;
grid-column-gap: 2rem;
grid-template-areas: "product-image product-content"
}
.predictive-search__item-content {
grid-area: product-content;
display: flex;
flex-direction: column
}
.predictive-search__item-content--centered {
justify-content: center
}
.predictive-search__item-vendor {
font-size: .9rem
}
.predictive-search__item-heading {
margin: 0
}
.predictive-search__item-query-result *:not(mark) {
font-weight: bolder
}
.predictive-search__item-query-result mark {
color: rgba(var(--color-foreground), .75)
}
.predictive-search__item-query-result mark {
background-color: transparent
}
.predictive-search__item .price {
color: rgba(var(--color-foreground), .7);
font-size: 1.2rem
}
.predictive-search__item-vendor+.predictive-search__item-heading,
.predictive-search .price {
margin-top: .5rem
}
.predictive-search__item--term {
justify-content: space-between;
align-items: center;
padding: 1.3rem 2rem;
word-break: break-all;
line-height: calc(1 + .4 / var(--font-body-scale))
}
@media screen and (min-width: 750px) {
.predictive-search__item--term {
padding-top: 1rem;
padding-bottom: 1rem
}
}
.predictive-search__item--term .icon-arrow {
width: calc(var(--font-heading-scale) * 1.4rem);
height: calc(var(--font-heading-scale) * 1.4rem);
flex-shrink: 0;
margin-left: calc(var(--font-heading-scale) * 2rem);
color: rgb(var(--color-link))
}
.predictive-search__image {
grid-area: product-image;
object-fit: contain;
font-family: "object-fit: contain"
}
</style>
<script>
document.documentElement.className = document.documentElement.className.replace('no-js', 'js');
if (Shopify.designMode) {
document.documentElement.classList.add('shopify-design-mode');
}
</script>
<link href="https://monorail-edge.shopifysvc.com/" rel="dns-prefetch">
<script>
(function () {
if ("sendBeacon" in navigator && "performance" in window) {
var session_token = document.cookie.match(/_shopify_s=([^;]*)/);
function handle_abandonment_event(e) {
var entries = performance.getEntries().filter(function (entry) {
return /monorail-edge.shopifysvc.com/.test(entry.name);
});
if (!window.abandonment_tracked && entries.length === 0) {
window.abandonment_tracked = true;
var currentMs = Date.now();
var navigation_start = performance.timing.navigationStart;
var payload = {
shop_id: 67119169539,
url: window.location.href,
navigation_start,
duration: currentMs - navigation_start,
session_token: session_token && session_token.length === 2 ? session_token[1] : "",
page_type: "product"
};
window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({
schema_id: "online_store_buyer_site_abandonment/1.1",
payload: payload,
metadata: {
event_created_at_ms: currentMs,
event_sent_at_ms: currentMs
}
}));
}
}
window.addEventListener('pagehide', handle_abandonment_event);
}
}());
</script>
<script id="web-pixels-manager-setup">
(function e(e, n, a, t, o, r, i) {
var s = null !== e,
l = ("function" == typeof BigInt && BigInt.toString().indexOf("[native code]") ? "modern" : "legacy").substring(0, 1),
c = t.substring(0, 1);
if (s) {
window.Shopify = window.Shopify || {};
var d = window.Shopify;
d.analytics = d.analytics || {};
var u = d.analytics;
u.replayQueue = [], u.publish = function (e, n, a) {
u.replayQueue.push([e, n, a])
};
try {
self.performance.mark("wpm:start")
} catch (e) { }
}
var p, f, y, h, v, m, w, g, b, _ = [a, "/wpm", "https://infinite-style.com/", c, r, l, ".js"].join("");
f = (p = {
src: _,
async: !0,
onload: function () {
if (e) {
var a = window.webPixelsManager.init(e);
null == n || n(a);
var t = window.Shopify.analytics;
t.replayQueue.forEach((function (e) {
var n = e[0],
t = e[1],
o = e[2];
a.publishCustomEvent(n, t, o)
})), t.replayQueue = [], t.publish = a.publishCustomEvent, t.visitor = a.visitor
}
},
onerror: function () {
var n = (null == e ? void 0 : e.storefrontBaseUrl) ? e.storefrontBaseUrl.replace(/\/$/, "") : self.location.origin,
a = "".concat(n, "/.well-known/shopify/monorail/unstable/produce_batch"),
t = JSON.stringify({
metadata: {
event_sent_at_ms: (new Date).getTime()
},
events: [{
schema_id: "web_pixels_manager_load/2.0",
payload: {
version: o || "latest",
page_url: self.location.href,
status: "failed",
error_msg: "".concat(_, " has failed to load")
},
metadata: {
event_created_at_ms: (new Date).getTime()
}
}]
});
try {
if (self.navigator.sendBeacon.bind(self.navigator)(a, t)) return !0
} catch (e) { }
var r = new XMLHttpRequest;
try {
return r.open("POST.html", a, !0), r.setRequestHeader("Content-Type", "text/plain"), r.send(t), !0
} catch (e) {
console && console.warn && console.warn("[Web Pixels Manager] Got an unhandled error while logging a load error.")
}
return !1
}
}).src, y = p.async, h = void 0 === y || y, v = p.onload, m = p.onerror, w = document.createElement("script"), g = document.head, b = document.body, w.async = h, w.src = f, v && w.addEventListener("load", v), m && w.addEventListener("error", m), g ? g.appendChild(w) : b ? b.appendChild(w) : console.error("Did not find a head or body element to append the script")
})({
shopId: 67119169539,
storefrontBaseUrl: "https://infinite-style.com/",
cdnBaseUrl: "https://infinite-style.com/cdn",
surface: "storefront-renderer",
enabledBetaFlags: ["web_pixels_async_pixel_refactor", "web_pixels_manager_performance_improvement"],
webPixelsConfigList: [{
"id": "shopify-app-pixel",
"configuration": "{}",
"eventPayloadVersion": "v1",
"runtimeContext": "STRICT",
"scriptVersion": "0570",
"apiClientId": "shopify-pixel",
"type": "APP"
}, {
"id": "shopify-custom-pixel",
"eventPayloadVersion": "v1",
"runtimeContext": "LAX",
"scriptVersion": "0570",
"apiClientId": "shopify-pixel",
"type": "CUSTOM"
}],
initData: {
"cart": null,
"checkout": null,
"customer": null,
"productVariants": [{
"id": "43114192093653",
"image": {
"src": "https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"
},
"price": {
"amount": 5.000,
"currencyCode": "IDR"
},
"product": {
"id": "8226828321669",
"title": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"untranslatedTitle": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"url": "https://infinite-style.com/",
"vendor": "KOITOTO",
"type": ""
},
"sku": "",
"title": "Default Title",
"untranslatedTitle": "Default Title"
}]
},
}, function pageEvents(webPixelsManagerAPI) {
webPixelsManagerAPI.publish("page_viewed");
webPixelsManagerAPI.publish("product_viewed", {
"productVariant": {
"id": "43114192093653",
"image": {
"src": "https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"
},
"price": {
"amount": 5.000,
"currencyCode": "IDR"
},
"product": {
"id": "8226828321669",
"title": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"untranslatedTitle": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"url": "https://infinite-style.com/",
"vendor": "KOITOTO",
"type": ""
},
"sku": "",
"title": "Default Title",
"untranslatedTitle": "Default Title"
}
});
}, "https://infinite-style.com/cdn", "browser", "0.0.407", "f25882c1w423ab3d2p8df04b18m261f6c04", ["web_pixels_async_pixel_refactor", "web_pixels_manager_performance_improvement"]);
</script>
<script>
window.ShopifyAnalytics = window.ShopifyAnalytics || {};
window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {};
window.ShopifyAnalytics.meta.currency = 'IDR';
var meta = {
"product": {
"id": 8226828321669,
"gid": "gid:\/\/shopify\/Product\/8226828321669",
"vendor": "KOITOTO",
"type": "",
"variants": [{
"id": 43114192093653,
"price": 5.000,
"name": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"public_title": null,
"sku": ""
}]
},
"page": {
"pageType": "product",
"resourceType": "product",
"resourceId": 8226828321669
}
};
for (var attr in meta) {
window.ShopifyAnalytics.meta[attr] = meta[attr];
}
</script>
<script>
window.ShopifyAnalytics.merchantGoogleAnalytics = function () { };
</script>
<script class="analytics">
! function () {
var o = function (e) {
var t = null;
window.jQuery ? t = window.jQuery : window.Checkout && window.Checkout.$ && (t = window.Checkout.$), t && t("body").append(e)
},
r = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || [];
if (!r.integrations) {
r.methods = ["identify", "page", "ready", "track", "trackForm", "trackLink"], r.factory = function (t) {
return function () {
var e = Array.prototype.slice.call(arguments);
return e.unshift(t), r.push(e), r
}
};
for (var e = 0; e < r.methods.length; e++) {
var t = r.methods[e];
r[t] = r.factory(t)
}
r.load = function (e) {
r.config = e || {}, r.config.initialDocumentCookie = document.cookie;
var n = document.getElementsByTagName("script")[0],
t = document.createElement("script");
t.type = "text/javascript", t.onerror = function (e) {
var t = document.createElement("script");
t.type = "text/javascript", t.onerror = function (e) {
var i = {
produce: function (e, t, n) {
var o = (new Date).getTime(),
r = {
schema_id: t,
payload: n,
metadata: {
event_created_at_ms: o,
event_sent_at_ms: o
}
};
return i.sendRequest("https://" + e + "/v1/produce", JSON.stringify(r))
},
sendRequest: function (e, t) {
if (window && window.navigator && "function" == typeof window.navigator.sendBeacon && "function" == typeof window.Blob && !i.isIos12()) {
var n = new window.Blob([t], {
type: "text/plain"
});
if (window.navigator.sendBeacon(e, n)) return !0
}
var o = new XMLHttpRequest;
try {
o.open("POST.html", e), o.setRequestHeader("Content-Type", "text/plain"), o.send(t)
} catch (e) {
console.log(e)
}
return !1
},
isIos12: function () {
return -1 !== window.navigator.userAgent.lastIndexOf("iPhone; CPU iPhone OS 12_") || -1 !== window.navigator.userAgent.lastIndexOf("iPad; CPU OS 12_")
}
};
i.produce("monorail-edge.shopifysvc.com", "trekkie_storefront_load_errors/1.1", {
shop_id: 67119169539,
theme_id: 138081403093,
app_name: "storefront",
context_url: window.location.href,
source_url: "//allamericanwindowtinting.com/cdn/s/trekkie.storefront.cdbb3ab87b2344fc90b72e01ec11aedeab3a9cf7.min.js"
})
}, t.async = !0, t.src = "cdn/s/trekkie.storefront.cdbb3ab87b2344fc90b72e01ec11aedeab3a9cf7.min.js", n.parentNode.insertBefore(t, n)
}, t.async = !0, t.src = "cdn/s/trekkie.storefront.cdbb3ab87b2344fc90b72e01ec11aedeab3a9cf7.min.js", n.parentNode.insertBefore(t, n)
}, r.load({
Trekkie: {
appName: "storefront",
development: !1,
defaultAttributes: {
shopId: 67119169539,
isMerchantRequest: null,
themeId: 138081403093,
themeCityHash: "17813912158783281087",
contentLanguage: "en",
currency: "IDR"
},
isServerSideCookieWritingEnabled: !0,
monorailRegion: "shop_domain"
},
"Session Attribution": {},
S2S: {
facebookCapiEnabled: !1,
source: "trekkie-storefront-renderer"
}
});
var i = !1;
r.ready(function () {
if (!i) {
i = !0, window.ShopifyAnalytics.lib = window.trekkie;
var e = document.write;
document.write = o;
try {
window.ShopifyAnalytics.merchantGoogleAnalytics.call(this)
} catch (e) { }
document.write = e, window.ShopifyAnalytics.lib.page(null, {
pageType: "product",
resourceType: "product",
resourceId: 8226828321669
});
var t = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/),
n = t ? t[1] : void 0;
(function (e) {
return !!e && -1 !== document.cookie.indexOf("loggedConversion=" + e)
})(n) || (function (e) {
if (e) {
var t = new Date(Date.now());
t.setMonth(t.getMonth() + 2), document.cookie = "loggedConversion=" + e + "; expires=" + t
}
}(n), window.ShopifyAnalytics.lib.track("Viewed Product", {
currency: "IDR",
variantId: 43114192093653,
productId: 8226828321669,
productGid: "gid://shopify/Product/8226828321669",
name: "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
price: "5000.0",
sku: "",
brand: "KOITOTO",
variant: null,
category: "",
nonInteraction: !0
}), window.ShopifyAnalytics.lib.track("monorail://trekkie_storefront_viewed_product/1.1", {
currency: "IDR",
variantId: 43114192093653,
productId: 8226828321669,
productGid: "gid://shopify/Product/8226828321669",
name: "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
price: "5000.0",
sku: "",
brand: "KOITOTO",
variant: null,
category: "",
nonInteraction: !0,
referer: "https://infinite-style.com/"
}))
}
});
var n = document.createElement("script");
n.async = !0, n.src = "cdn/shopifycloud/shopify/assets/shop_events_listener-a7c63dba65ccddc484f77541dc8ca437e60e1e9e297fe1c3faebf6523a0ede9b.js", document.getElementsByTagName("head")[0].appendChild(n)
}
}()
</script>
<script class="boomerang">
! function () {
if (!window.BOOMR || !window.BOOMR.version && !window.BOOMR.snippetExecuted) {
window.BOOMR = window.BOOMR || {}, window.BOOMR.snippetStart = (new Date).getTime(), window.BOOMR.snippetExecuted = !0, window.BOOMR.snippetVersion = 12, window.BOOMR.application = "storefront-renderer", window.BOOMR.themeName = "Refresh", window.BOOMR.themeVersion = "12.0.0", window.BOOMR.shopId = 67119169539, window.BOOMR.themeId = 138081403093, window.BOOMR.renderRegion = "gcp-us-central1", window.BOOMR.url = "cdn/shopifycloud/boomerang/shopify-boomerang-1.0.0.min.js";
var r = (document.currentScript || document.getElementsByTagName("script")[0]).parentNode,
c = !1,
e = document.createElement("link");
e.relList && "function" == typeof e.relList.supports && e.relList.supports("preload") && "as" in e ? (window.BOOMR.snippetMethod = "p", e.href = window.BOOMR.url, e.rel = "preload", e.as = "script", e.addEventListener("load", function () {
if (!c) {
var e = document.createElement("script");
e.id = "boomr-scr-as", e.src = window.BOOMR.url, e.async = !0, r.appendChild(e), c = !0
}
}), e.addEventListener("error", function () {
n(!0)
}), setTimeout(function () {
c || n(!0)
}, 3e3), BOOMR_lstart = (new Date).getTime(), r.appendChild(e)) : n(!1), window.addEventListener ? window.addEventListener("load", t, !1) : window.attachEvent && window.attachEvent("onload", t), document.addEventListener ? document.addEventListener("onBoomerangLoaded", function (e) {
e.detail.BOOMR.init({
ResourceTiming: {
enabled: !0,
trackedResourceTypes: ["script", "img", "css"]
}
}), e.detail.BOOMR.t_end = (new Date).getTime()
}) : document.attachEvent && document.attachEvent("onpropertychange", function (e) {
e || (e = event), "onBoomerangLoaded" === e.propertyName && (e.detail.BOOMR.init({
ResourceTiming: {
enabled: !0,
trackedResourceTypes: ["script", "img", "css"]
}
}), e.detail.BOOMR.t_end = (new Date).getTime())
})
}
function n(e) {
var n, t, o, i;
c = !0;
var d = document,
a = window;
if (window.BOOMR.snippetMethod = e ? "if" : "i", t = function (e, n) {
var t = d.createElement("script");
t.id = n || "boomr-if-as", t.src = window.BOOMR.url, BOOMR_lstart = (new Date).getTime(), (e = e || d.body).appendChild(t)
}, !window.addEventListener && window.attachEvent && navigator.userAgent.match(/MSIE [67]./)) return window.BOOMR.snippetMethod = "s", void t(r, "boomr-async");
(o = document.createElement("IFRAME")).src = "about:blank", o.title = "", o.role = "presentation", o.loading = "eager", (i = (o.frameElement || o).style).width = 0, i.height = 0, i.border = 0, i.display = "none", r.appendChild(o);
try {
a = o.contentWindow, d = a.document.open()
} catch (e) {
n = document.domain, o.src = "javascript:var d=document.open();d.domain='" + n + "';void(0);", a = o.contentWindow, d = a.document.open()
}
n ? (d._boomrl = function () {
this.domain = n, t()
}, d.write(" < body onload = 'document._boomrl();' > ")) : (a._boomrl = function () {
t()
}, a.addEventListener ? a.addEventListener("load", a._boomrl, !1) : a.attachEvent && a.attachEvent("onload", a._boomrl)), d.close()
}
function t(e) {
window.BOOMR_onload = e && e.timeStamp || (new Date).getTime()
}
}()
</script>
<script type="application/ld+json" class="yoast-schema-graph">
{
"@context":"https://schema.org",
"@graph":[{"@type":"WebSite",
"@id":"https://infinite-style.com/",
"url":"https://infinite-style.com/",
"name":"KOITOTO",
"potentialAction":[{"@type":"SearchAction",
"target":{"@type":"EntryPoint",
"urlTemplate":"#?s={search_term_string}"},
"query-input":"required name=search_term_string"}],
"inLanguage":"id-ID"},{"@type":"CollectionPage",
"@id":"##webpage",
"url":"https://infinite-style.com/",
"name":"KOITOTO",
"isPartOf":{"@id":"#website"},
"description":"Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.",
"breadcrumb":{"@id":"#breadcrumb"},
"inLanguage":"id-ID",
"potentialAction":[{"@type":"ReadAction",
"target":["https://infinite-style.com/"]}]},
{"@type":"BreadcrumbList",
"@id":"#breadcrumb",
"itemListElement":[{"@type":"ListItem",
"position":1,
"name":"Home"}]}]}
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Game",
"name": "KOITOTO",
"author": { "@type": "Person",
"name": "KOITOTO" },
"headline": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"description": "Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.",
"keywords":"KOITOTO, KOITOTO login, KOITOTO daftar, prediksi KOITOTO, situs alexitogel, situs togel",
"image": "https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg",
"url": "https://infinite-style.com/",
"publisher": { "@type": "Organization", "name": "KOITOTO" },
"aggregateRating": { "@type": "AggregateRating",
"ratingValue": "100",
"bestRating": "100",
"worstRating": "0",
"ratingCount": "10987881" },
"inLanguage": "id-ID"}
</script>
<script type='application/ld+json'>
{
"@context": "http://schema.org",
"@type": "Article",
"@id": "#article",
"mainEntityOfPage": "https://infinite-style.com/",
"headline": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"name": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"url": "https://infinite-style.com/",
"description": "Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.",
"image": "https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg",
"datePublished": "2024-07-08T10:42:40+00:00",
"dateModified": "2024-07-08T10:42:40+00:00",
"author": {
"@type": "Person",
"name": "KOITOTO",
"url": "https://infinite-style.com/"
},
"publisher": {
"@type": "Organization",
"name": "https://infinite-style.com/",
"description": "Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.",
"logo": {
"@type": "ImageObject",
"url": "https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg",
"width": 600,
"height": 60
}
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "KOITOTO",
"alternateName": "KOITOTO",
"url": "https://infinite-style.com/",
"logo": "https://imgstore.io/images/2025/04/14/logo-koi.webp",
"description": "Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.",
"address": {
"@type": "PostalAddress",
"streetAddress":"Kuningan",
"postOfficeBoxNumber":"11450",
"addressLocality":"DaerahKhususIbukotaJakarta",
"addressRegion":"KotaJakartaPusat",
"postalCode":"41000",
"addressCountry": "ID"
},
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+62821-3366-5511",
"contactType": "customer service",
"areaServed": "ID",
"availableLanguage": "Indonesian"
},
"sameAs": [
"https://www.youtube.com/KOITOTO",
"https://twitter.com/KOITOTO",
"https://infinite-style.com/"
]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Apa itu KOITOTO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "KOITOTO adalah platform permainan angka dan slot digital yang menyediakan akses login cepat, pasaran resmi, serta layanan pelanggan aktif 24 jam nonstop."
}
},{
"@type": "Question",
"name": "Apakah KOITOTO benar-benar support 24 jam?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Iya, tim support KOITOTO aktif setiap hari tanpa libur dan bisa dihubungi lewat live chat atau aplikasi seperti WhatsApp dan Telegram."
}
},{
"@type": "Question",
"name": "Slot di KOITOTO beneran anti lag?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Benar, semua game berjalan di server stabil dan ringan. Slot bisa dimainkan lancar tanpa gangguan, cocok untuk semua perangkat termasuk HP kentang."
}
},{
"@type": "Question",
"name": "Berapa minimal main di KOITOTO?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Cukup modal kecil, mulai dari 10 ribu kamu sudah bisa main togel 4D atau slot pilihan dan langsung akses link tanpa ribet."
}
}]
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://infinite-style.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "KOITOTO",
"item": "https://infinite-style.com/"
},
{
"@type": "ListItem",
"position": 3,
"name": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"item": "https://infinite-style.com/"
}
]
}
</script>
</head>
<body class="gradient">
<a class="skip-to-content-link button visually-hidden" href="#MainContent">
Skip to content
</a>
<style>
quantity-popover {
position: relative;
display: block
}
quantity-popover volume-pricing li:nth-child(odd) {
background: rgba(var(--color-foreground), .03)
}
quantity-popover volume-pricing li {
font-size: 1.4rem;
letter-spacing: .06rem;
padding: .6rem .8rem;
display: flex;
justify-content: space-between
}
.quantity-popover__info.global-settings-popup {
width: 100%;
z-index: 2;
position: absolute;
background-color: black;
max-width: 36rem
}
.quantity-popover__info .button-close,
.variant-remove-total quick-order-list-remove-all-button .button,
.quick-order-list-total__confirmation quick-order-list-remove-all-button .button,
quantity-popover quick-order-list-remove-button .button {
--shadow-opacity: 0;
--border-opacity: 0
}
.quantity-popover__info-button {
display: flex;
align-items: center;
margin: 0 .4rem 0 0;
min-width: 1.5rem;
min-height: 1.5rem;
--shadow-opacity: 0;
--border-opacity: 0
}
.quantity-popover__info-button--icon-with-label {
align-items: flex-start;
text-align: left
}
.quantity-popover__info-button--icon-with-label svg {
flex-shrink: 0
}
.quantity-popover__info-button--open {
text-decoration: underline
}
.quantity-popover__info-button span {
padding-left: 1rem
}
@media screen and (max-width: 989px) {
.quantity-popover__info.global-settings-popup {
left: 0
}
.quantity-popover__info-button {
padding-left: 0
}
}
.quantity-popover__info .quantity__rules {
margin-top: 1.2rem;
margin-bottom: 1rem
}
.quantity-popover__info .volume-pricing-label {
display: block;
margin-left: 1.2rem;
margin-top: 1.2rem;
font-size: 1.2rem
}
.quantity-popover__info .button {
width: 3.2rem;
height: 3.2rem;
position: absolute;
top: .4rem;
right: 0;
padding: 0 1.2rem 0 0;
display: flex;
justify-content: flex-end
}
.quantity-popover__info .volume-pricing-label~.button {
top: -.2rem
}
.quantity-popover__info .button .icon {
width: 1.5rem;
height: 1.5rem
}
quantity-popover volume-pricing {
margin-top: 1.2rem;
display: block
}
quantity-popover .quantity__rules span:first-of-type {
display: block
}
.rtpIcon {
position: fixed;
left: 10px;
bottom: 150px;
z-index: 999;
}
.rtpIcon img {
width: 80px;
height: 80px;
cursor: pointer;
}
.quantity-popover-container {
display: flex;
padding: .5rem .5rem .5rem 0
}
.quantity-popover-container:not(.quantity-popover-container--hover) {
align-items: center
}
@media screen and (min-width: 990px) {
.quantity-popover-container--hover:hover {
background-color: rgba(var(--color-foreground), .03);
border-radius: var(--inputs-radius-outset)
}
.quantity-popover-container--empty {
margin-right: 2.7rem
}
.quantity-popover__info.global-settings-popup {
width: 27rem
}
.quantity-popover-container {
width: auto;
max-width: 20rem
}
.quantity-popover__info.global-settings-popup {
transform: translateY(1rem)
}
}
quantity-popover:has(.quantity__input:focus-visible) .quantity-popover__info {
display: block
}
quantity-popover .quantity {
background: rgb(var(--color-background))
}
quantity-popover .quantity__rules {
margin-left: .8rem
}
quantity-popover .quantity__rules .divider:nth-child(2):before {
content: none
}
quantity-popover .quantity__button:not(:focus-visible):not(.focused),
quantity-popover .quantity__input:not(:focus-visible):not(.focused) {
background-color: initial
}
</style>
<style>
.card-wrapper {
color: inherit;
height: 100%;
position: relative;
text-decoration: none
}
.card {
text-decoration: none;
text-align: var(--text-alignment)
}
.card:not(.ratio) {
display: flex;
flex-direction: column;
height: 100%
}
.card.card--horizontal {
--text-alignment: left;
--image-padding: 0rem;
flex-direction: row;
align-items: flex-start;
gap: 1.5rem
}
.card--horizontal.ratio:before {
padding-bottom: 0
}
.card--card.card--horizontal {
padding: 1.2rem
}
.card--card.card--horizontal.card--text {
column-gap: 0
}
.card--card {
height: 100%
}
.card--card,
.card--standard .card__inner {
position: relative;
box-sizing: border-box;
border-radius: var(--border-radius);
border: var(--border-width) solid rgba(var(--color-foreground), var(--border-opacity))
}
.card--card:after,
.card--standard .card__inner:after {
content: "";
position: absolute;
z-index: -1;
width: calc(var(--border-width) * 2 + 100%);
height: calc(var(--border-width) * 2 + 100%);
top: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
border-radius: var(--border-radius);
box-shadow: var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius) rgba(var(--color-shadow), var(--shadow-opacity))
}
.card--card.gradient,
.card__inner.gradient {
transform: perspective(0)
}
.card__inner.color-background-1 {
background: transparent
}
.card .card__inner .card__media {
overflow: hidden;
z-index: 0;
border-radius: calc(var(--border-radius) - var(--border-width) - var(--image-padding))
}
.card--card .card__inner .card__media {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0
}
.card--standard.card--text {
background-color: transparent
}
.card-information {
text-align: var(--text-alignment)
}
.card__media,
.card .media {
bottom: 0;
position: absolute;
top: 0
}
.card .media {
width: 100%
}
.card__media {
margin: var(--image-padding);
width: calc(100% - 2 * var(--image-padding))
}
.card--standard .card__media {
margin: var(--image-padding)
}
.card__inner {
width: 100%
}
.card--media .card__inner .card__content {
position: relative;
padding: calc(var(--image-padding) + 1rem)
}
.card__content {
display: grid;
grid-template-rows: minmax(0, 1fr) max-content minmax(0, 1fr);
padding: 1rem;
width: 100%;
flex-grow: 1
}
.card__content--auto-margins {
grid-template-rows: minmax(0, auto) max-content minmax(0, auto)
}
.card__information {
grid-row-start: 2;
padding: 1.3rem 1rem
}
.card:not(.ratio)>.card__content {
grid-template-rows: max-content minmax(0, 1fr) max-content auto
}
.card-information .card__information-volume-pricing-note {
margin-top: .6rem;
line-height: calc(.5 + .4 / var(--font-body-scale));
color: rgba(var(--color-foreground), .75)
}
@media screen and (min-width: 750px) {
.card__information {
padding-bottom: 1.7rem;
padding-top: 1.7rem
}
}
.card__badge {
align-self: flex-end;
grid-row-start: 3;
justify-self: flex-start
}
.card__badge.top {
align-self: flex-start;
grid-row-start: 1
}
.card__badge.right {
justify-self: flex-end
}
.card:not(.card--horizontal)>.card__content>.card__badge {
margin: 1.3rem
}
.card__media .media img {
height: 100%;
object-fit: cover;
object-position: center center;
width: 100%
}
.card__inner:not(.ratio)>.card__content {
height: 100%
}
.card__heading {
margin-top: 0;
margin-bottom: 0
}
.card__heading:last-child {
margin-bottom: 0
}
.card--horizontal .card__heading,
.card--horizontal .price__container .price-item,
.card--horizontal__quick-add {
font-size: calc(var(--font-heading-scale) * 1.2rem)
}
.card--horizontal .card-information>*:not(.visually-hidden:first-child)+*:not(.rating):not(.card__information-volume-pricing-note) {
margin-top: 0
}
.card--horizontal__quick-add:before {
box-shadow: none
}
@media only screen and (min-width: 750px) {
.card--horizontal .card__heading,
.card--horizontal .price__container .price-item,
.card--horizontal__quick-add {
font-size: calc(var(--font-heading-scale) * 1.3rem)
}
}
.card--card.card--media>.card__content {
margin-top: calc(0rem - var(--image-padding))
}
.card--standard.card--text a:after,
.card--card .card__heading a:after {
bottom: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
right: calc(var(--border-width) * -1);
top: calc(var(--border-width) * -1)
}
.card__heading a:after {
bottom: 0;
content: "";
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: 1
}
.card__heading a:after {
outline-offset: .3rem
}
.card__heading a:focus:after {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3);
outline: .2rem solid rgba(var(--color-foreground), .5)
}
.card__heading a:focus-visible:after {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3);
outline: .2rem solid rgba(var(--color-foreground), .5)
}
.card__heading a:focus:not(:focus-visible):after {
box-shadow: none;
outline: 0
}
.card__heading a:focus {
box-shadow: none;
outline: 0
}
@media screen and (min-width: 990px) {
.card .media.media--hover-effect>img:only-child,
.card-wrapper .media.media--hover-effect>img:only-child {
transition: transform var(--duration-long) ease
}
.card:hover .media.media--hover-effect>img:first-child:only-child,
.card-wrapper:hover .media.media--hover-effect>img:first-child:only-child {
transform: scale(1.03)
}
.card-wrapper:hover .media.media--hover-effect>img:first-child:not(:only-child) {
opacity: 0
}
.card-wrapper:hover .media.media--hover-effect>img+img {
opacity: 1;
transition: transform var(--duration-long) ease;
transform: scale(1.03)
}
.underline-links-hover:hover a {
text-decoration: underline;
text-underline-offset: .3rem
}
}
.card--standard.card--media .card__inner .card__information,
.card--standard.card--text:not(.card--horizontal)>.card__content .card__heading:not(.card__heading--placeholder),
.card--standard:not(.card--horizontal)>.card__content .card__badge,
.card--standard.card--text.article-card>.card__content .card__information,
.card--standard>.card__content .card__caption {
display: none
}
.card--standard:not(.card--horizontal) .placeholder-svg {
height: auto;
width: 100%
}
.card--standard>.card__content {
padding: 0
}
.card--standard>.card__content .card__information {
padding-left: 0;
padding-right: 0
}
.card--card.card--media .card__inner .card__information,
.card--card.card--text .card__inner,
.card--card.card--media>.card__content .card__badge {
display: none
}
.card--horizontal .card__badge,
.card--horizontal.card--text .card__inner {
display: none
}
.card--extend-height {
height: 100%
}
.card--extend-height.card--standard.card--text,
.card--extend-height.card--media {
display: flex;
flex-direction: column
}
.card--extend-height.card--standard.card--text .card__inner,
.card--extend-height.card--media .card__inner {
flex-grow: 1
}
.card .icon-wrap {
margin-left: .8rem;
white-space: nowrap;
transition: transform var(--duration-short) ease;
overflow: hidden
}
.card-information>*+* {
margin-top: .5rem
}
.card-information {
width: 100%
}
.card-information>* {
line-height: calc(1 + .4 / var(--font-body-scale));
color: rgb(var(--color-foreground))
}
.card-information>.price {
color: rgb(var(--color-foreground))
}
.card--horizontal .card-information>.price {
color: rgba(var(--color-foreground), .75)
}
.card-information>.rating {
margin-top: .4rem
}
.card-information>*:not(.visually-hidden:first-child)+*:not(.rating):not(.card__information-volume-pricing-note) {
margin-top: .7rem
}
.card-information .caption {
letter-spacing: .07rem
}
.card-article-info {
margin-top: 1rem
}
.card--shape .card__content {
padding-top: 0
}
.card--shape.card--standard:not(.card--text) .card__inner {
border: 0;
background-color: transparent;
filter: drop-shadow(var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius) rgba(var(--color-shadow), var(--shadow-opacity)))
}
.card--shape.card--standard:not(.card--text) .card__inner:after {
display: none
}
.grid__item:nth-child(2n) .shape--blob {
clip-path: polygon(var(--shape--blob-2))
}
.grid__item:nth-child(3n) .shape--blob {
clip-path: polygon(var(--shape--blob-3))
}
.grid__item:nth-child(4n) .shape--blob {
clip-path: polygon(var(--shape--blob-4))
}
.grid__item:nth-child(5n) .shape--blob {
clip-path: polygon(var(--shape--blob-5))
}
.grid__item:nth-child(7n) .shape--blob {
clip-path: polygon(var(--shape--blob-6))
}
.grid__item:nth-child(8n) .shape--blob {
clip-path: polygon(var(--shape--blob-1))
}
@media (prefers-reduced-motion: no-preference) {
.product-card-wrapper .shape--round {
transition: clip-path var(--duration-long) ease
}
.product-card-wrapper:hover .shape--round {
clip-path: ellipse(47% 47% at 50% 50%)
}
.product-card-wrapper .shape--blob {
transition: clip-path var(--duration-long) ease-in-out
}
.product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-5))
}
.grid__item:nth-child(2n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-6))
}
.grid__item:nth-child(3n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-1))
}
.grid__item:nth-child(4n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-2))
}
.grid__item:nth-child(5n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-3))
}
.grid__item:nth-child(7n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-4))
}
.grid__item:nth-child(8n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-5))
}
}
</style>
<script>
/** Shopify CDN: Minification failed
Line 16:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 17:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 22:6 Transforming const to the configured target environment ("es5") is not supported yet
Line 30:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 31:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 36:4 Transforming const to the configured target environment ("es5") is not supported yet
Line 45:19 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 54:22 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 60:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 64:14 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
... and 38 more hidden warnings
**/
class CartRemoveButton extends HTMLElement {
constructor() {
super();
this.addEventListener('click', (event) => {
event.preventDefault();
const cartItems = this.closest('cart-items') || this.closest('cart-drawer-items');
cartItems.updateQuantity(this.dataset.index, 0);
});
}
}
customElements.define('cart-remove-button', CartRemoveButton);
class CartItems extends HTMLElement {
constructor() {
super();
this.lineItemStatusElement =
document.getElementById('shopping-cart-line-item-status') || document.getElementById('CartDrawer-LineItemStatus');
const debouncedOnChange = debounce((event) => {
this.onChange(event);
}, ON_CHANGE_DEBOUNCE_TIMER);
this.addEventListener('change', debouncedOnChange.bind(this));
}
cartUpdateUnsubscriber = undefined;
connectedCallback() {
this.cartUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.cartUpdate, (event) => {
if (event.source === 'cart-items') {
return;
}
this.onCartUpdate();
});
}
disconnectedCallback() {
if (this.cartUpdateUnsubscriber) {
this.cartUpdateUnsubscriber();
}
}
onChange(event) {
this.updateQuantity(event.target.dataset.index, event.target.value, document.activeElement.getAttribute('name'), event.target.dataset.quantityVariantId);
}
onCartUpdate() {
if (this.tagName === 'CART-DRAWER-ITEMS') {
fetch(`${routes.cart_url}?section_id=cart-drawer`)
.then((response) => response.text())
.then((responseText) => {
const html = new DOMParser().parseFromString(responseText, 'text/html');
const selectors = ['cart-drawer-items', '.cart-drawer__footer'];
for (const selector of selectors) {
const targetElement = document.querySelector(selector);
const sourceElement = html.querySelector(selector);
if (targetElement && sourceElement) {
targetElement.replaceWith(sourceElement);
}
}
})
.catch((e) => {
console.error(e);
});
} else {
fetch(`${routes.cart_url}?section_id=main-cart-items`)
.then((response) => response.text())
.then((responseText) => {
const html = new DOMParser().parseFromString(responseText, 'text/html');
const sourceQty = html.querySelector('cart-items');
this.innerHTML = sourceQty.innerHTML;
})
.catch((e) => {
console.error(e);
});
}
}
getSectionsToRender() {
return [
{
id: 'main-cart-items',
section: document.getElementById('main-cart-items').dataset.id,
selector: '.js-contents',
},
{
id: 'cart-icon-bubble',
section: 'cart-icon-bubble',
selector: '.shopify-section',
},
{
id: 'cart-live-region-text',
section: 'cart-live-region-text',
selector: '.shopify-section',
},
{
id: 'main-cart-footer',
section: document.getElementById('main-cart-footer').dataset.id,
selector: '.js-contents',
},
];
}
updateQuantity(line, quantity, name, variantId) {
this.enableLoading(line);
const body = JSON.stringify({
line,
quantity,
sections: this.getSectionsToRender().map((section) => section.section),
sections_url: window.location.pathname,
});
fetch(`${routes.cart_change_url}`, { ...fetchConfig(), ...{ body } })
.then((response) => {
return response.text();
})
.then((state) => {
const parsedState = JSON.parse(state);
const quantityElement =
document.getElementById(`Quantity-${line}`) || document.getElementById(`Drawer-quantity-${line}`);
const items = document.querySelectorAll('.cart-item');
if (parsedState.errors) {
quantityElement.value = quantityElement.getAttribute('value');
this.updateLiveRegions(line, parsedState.errors);
return;
}
this.classList.toggle('is-empty', parsedState.item_count === 0);
const cartDrawerWrapper = document.querySelector('cart-drawer');
const cartFooter = document.getElementById('main-cart-footer');
if (cartFooter) cartFooter.classList.toggle('is-empty', parsedState.item_count === 0);
if (cartDrawerWrapper) cartDrawerWrapper.classList.toggle('is-empty', parsedState.item_count === 0);
this.getSectionsToRender().forEach((section) => {
const elementToReplace =
document.getElementById(section.id).querySelector(section.selector) || document.getElementById(section.id);
elementToReplace.innerHTML = this.getSectionInnerHTML(
parsedState.sections[section.section],
section.selector
);
});
const updatedValue = parsedState.items[line - 1] ? parsedState.items[line - 1].quantity : undefined;
let message = '';
if (items.length === parsedState.items.length && updatedValue !== parseInt(quantityElement.value)) {
if (typeof updatedValue === 'undefined') {
message = window.cartStrings.error;
} else {
message = window.cartStrings.quantityError.replace('[quantity]', updatedValue);
}
}
this.updateLiveRegions(line, message);
const lineItem =
document.getElementById(`CartItem-${line}`) || document.getElementById(`CartDrawer-Item-${line}`);
if (lineItem && lineItem.querySelector(`[name="${name}"]`)) {
cartDrawerWrapper
? trapFocus(cartDrawerWrapper, lineItem.querySelector(`[name="${name}"]`))
: lineItem.querySelector(`[name="${name}"]`).focus();
} else if (parsedState.item_count === 0 && cartDrawerWrapper) {
trapFocus(cartDrawerWrapper.querySelector('.drawer__inner-empty'), cartDrawerWrapper.querySelector('a'));
} else if (document.querySelector('.cart-item') && cartDrawerWrapper) {
trapFocus(cartDrawerWrapper, document.querySelector('.cart-item__name'));
}
publish(PUB_SUB_EVENTS.cartUpdate, { source: 'cart-items', cartData: parsedState, variantId: variantId });
})
.catch(() => {
this.querySelectorAll('.loading__spinner').forEach((overlay) => overlay.classList.add('hidden'));
const errors = document.getElementById('cart-errors') || document.getElementById('CartDrawer-CartErrors');
errors.textContent = window.cartStrings.error;
})
.finally(() => {
this.disableLoading(line);
});
}
updateLiveRegions(line, message) {
const lineItemError =
document.getElementById(`Line-item-error-${line}`) || document.getElementById(`CartDrawer-LineItemError-${line}`);
if (lineItemError) lineItemError.querySelector('.cart-item__error-text').innerHTML = message;
this.lineItemStatusElement.setAttribute('aria-hidden', true);
const cartStatus =
document.getElementById('cart-live-region-text') || document.getElementById('CartDrawer-LiveRegionText');
cartStatus.setAttribute('aria-hidden', false);
setTimeout(() => {
cartStatus.setAttribute('aria-hidden', true);
}, 1000);
}
getSectionInnerHTML(html, selector) {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;
}
enableLoading(line) {
const mainCartItems = document.getElementById('main-cart-items') || document.getElementById('CartDrawer-CartItems');
mainCartItems.classList.add('cart__items--disabled');
const cartItemElements = this.querySelectorAll(`#CartItem-${line} .loading__spinner`);
const cartDrawerItemElements = this.querySelectorAll(`#CartDrawer-Item-${line} .loading__spinner`);
[...cartItemElements, ...cartDrawerItemElements].forEach((overlay) => overlay.classList.remove('hidden'));
document.activeElement.blur();
this.lineItemStatusElement.setAttribute('aria-hidden', false);
}
disableLoading(line) {
const mainCartItems = document.getElementById('main-cart-items') || document.getElementById('CartDrawer-CartItems');
mainCartItems.classList.remove('cart__items--disabled');
const cartItemElements = this.querySelectorAll(`#CartItem-${line} .loading__spinner`);
const cartDrawerItemElements = this.querySelectorAll(`#CartDrawer-Item-${line} .loading__spinner`);
cartItemElements.forEach((overlay) => overlay.classList.add('hidden'));
cartDrawerItemElements.forEach((overlay) => overlay.classList.add('hidden'));
}
}
customElements.define('cart-items', CartItems);
if (!customElements.get('cart-note')) {
customElements.define(
'cart-note',
class CartNote extends HTMLElement {
constructor() {
super();
this.addEventListener(
'change',
debounce((event) => {
const body = JSON.stringify({ note: event.target.value });
fetch(`${routes.cart_update_url}`, { ...fetchConfig(), ...{ body } });
}, ON_CHANGE_DEBOUNCE_TIMER)
);
}
}
);
}
</script>
<script>
/** Shopify CDN: Minification failed
Line 17:4 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 18:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 53:19 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 61:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 62:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 68:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 77:18 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 79:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 81:8 Transforming const to the configured target environment ("es5") is not supported yet
**/
if (!customElements.get('quantity-popover')) {
customElements.define(
'quantity-popover',
class QuantityPopover extends HTMLElement {
constructor() {
super();
this.mql = window.matchMedia('(min-width: 990px)');
this.mqlTablet = window.matchMedia('(min-width: 750px)');
this.infoButtonDesktop = this.querySelector('.quantity-popover__info-button--icon-only');
this.infoButtonMobile = this.querySelector('.quantity-popover__info-button--icon-with-label');
this.popoverInfo = this.querySelector('.quantity-popover__info');
this.closeButton = this.querySelector('.button-close');
this.variantInfo = this.querySelector('.quantity-popover-container');
this.eventMouseEnterHappened = false;
if (this.closeButton) {
this.closeButton.addEventListener('click', this.closePopover.bind(this));
}
if (this.popoverInfo && this.infoButtonDesktop && this.mql.matches) {
this.popoverInfo.addEventListener('mouseenter', this.closePopover.bind(this));
}
if (this.infoButtonDesktop) {
this.infoButtonDesktop.addEventListener('click', this.togglePopover.bind(this));
this.infoButtonDesktop.addEventListener('focusout', this.closePopover.bind(this));
}
if (this.infoButtonMobile) {
this.infoButtonMobile.addEventListener('click', this.togglePopover.bind(this));
this.infoButtonMobile.addEventListener('focusout', this.closePopover.bind(this));
}
if (this.infoButtonDesktop && this.mqlTablet.matches) {
this.variantInfo.addEventListener('mouseenter', this.togglePopover.bind(this));
this.variantInfo.addEventListener('mouseleave', this.closePopover.bind(this));
}
}
togglePopover(event) {
event.preventDefault();
if (event.type === 'mouseenter') {
this.eventMouseEnterHappened = true;
}
if (event.type === 'click' && this.eventMouseEnterHappened) return;
const button = this.infoButtonDesktop && this.mql.matches ? this.infoButtonDesktop : this.infoButtonMobile;
const isExpanded = button.getAttribute('aria-expanded') === 'true';
button.setAttribute('aria-expanded', !isExpanded);
this.popoverInfo.toggleAttribute('hidden');
const isOpen = button.getAttribute('aria-expanded') === 'true';
button.classList.toggle('quantity-popover__info-button--open');
if (isOpen && event.type !== 'mouseenter') {
button.focus();
}
}
closePopover(event) {
event.preventDefault();
const isChild = this.variantInfo.contains(event.relatedTarget);
const button = this.infoButtonDesktop && this.mql.matches ? this.infoButtonDesktop : this.infoButtonMobile;
if (!event.relatedTarget || !isChild) {
button.setAttribute('aria-expanded', 'false');
button.classList.remove('quantity-popover__info-button--open');
this.popoverInfo.setAttribute('hidden', '');
}
this.eventMouseEnterHappened = false;
}
}
);
}
</script>
<style>
.drawer {
visibility: hidden;
}
</style>
<cart-drawer class="drawer is-empty">
<div id="CartDrawer" class="cart-drawer">
<div id="CartDrawer-Overlay" class="cart-drawer__overlay"></div>
<div class="drawer__inner gradient color-background-1" role="dialog" aria-modal="true"
aria-label="Your cart" tabindex="-1">
<div class="drawer__inner-empty">
<div class="cart-drawer__warnings center">
<div class="cart-drawer__empty-content">
<h2 class="cart__empty-text">LINK ALTERNATIF</h2>
<button class="drawer__close" type="button" onclick="this.closest('cart-drawer').close()"
aria-label="Close">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"
class="icon icon-close" fill="none" viewBox="0 0 18 17">
<path
d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z"
fill="currentColor">
</svg>
</button>
<a href="https://infinite-style.com/" class="button">
KOITOTO
</a>
</div>
</div>
</div>
<div class="drawer__header">
<h2 class="drawer__heading">Your cart</h2>
<button class="drawer__close" type="button" onclick="this.closest('cart-drawer').close()"
aria-label="Close">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"
class="icon icon-close" fill="none" viewBox="0 0 18 17">
<path
d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z"
fill="currentColor">
</svg>
</button>
</div>
<cart-drawer-items class=" is-empty">
<form action="https://infinite-style.com/" id="CartDrawer-Form" class="cart__contents cart-drawer__form"
method="post">
<div id="CartDrawer-CartItems" class="drawer__contents js-contents">
<p id="CartDrawer-LiveRegionText" class="visually-hidden" role="status"></p>
<p id="CartDrawer-LineItemStatus" class="visually-hidden" aria-hidden="true" role="status">
Loading...
</p>
</div>
<div id="CartDrawer-CartErrors" role="alert"></div>
</form>
</cart-drawer-items>
<div class="drawer__footer"><!-- Start blocks -->
<!-- Subtotals -->
<div class="cart-drawer__footer">
<div></div>
<div class="totals" role="status">
<h2 class="totals__total">Estimated total</h2>
<p class="totals__total-value">Rp 0,00 IDR</p>
</div>
<small class="tax-note caption-large rte">Taxes, discounts and shipping calculated at checkout
</small>
</div>
<!-- CTAs -->
<div class="cart__ctas">
<noscript>
<button type="submit" class="cart__update-button button button--secondary"
form="CartDrawer-Form">
Update
</button>
</noscript>
<button type="submit" id="CartDrawer-Checkout" class="cart__checkout-button button"
name="checkout" form="CartDrawer-Form" disabled>
Check out
</button>
</div>
</div>
</div>
</div>
</cart-drawer>
<script>
document.addEventListener('DOMContentLoaded', function () {
function isIE() {
const ua = window.navigator.userAgent;
const msie = ua.indexOf('MSIE ');
const trident = ua.indexOf('Trident/https://infinite-style.com/');
return msie > 0 || trident > 0;
}
if (!isIE()) return;
const cartSubmitInput = document.createElement('input');
cartSubmitInput.setAttribute('name', 'checkout');
cartSubmitInput.setAttribute('type', 'hidden');
document.querySelector('#cart').appendChild(cartSubmitInput);
document.querySelector('#checkout').addEventListener('click', function (event) {
document.querySelector('#cart').submit();
});
});
</script>
<!-- BEGIN sections: header-group -->
<style>
slideshow-component {
position: relative;
display: flex;
flex-direction: column
}
@media screen and (max-width: 989px) {
.no-js slideshow-component .slider {
padding-bottom: 3rem
}
}
slideshow-component .slideshow.banner {
flex-direction: row;
flex-wrap: nowrap;
margin: 0;
gap: 0
}
.slideshow__slide {
padding: 0;
position: relative;
display: flex;
flex-direction: column;
visibility: visible
}
@media screen and (max-width: 749px) {
.slideshow--placeholder.banner--mobile-bottom.banner--adapt_image .slideshow__media,
.slideshow--placeholder.banner--adapt_image:not(.banner--mobile-bottom) {
height: 28rem
}
}
@media screen and (min-width: 750px) {
.slideshow--placeholder.banner--adapt_image {
height: 56rem
}
}
.slideshow__text.banner__box {
display: flex;
flex-direction: column;
justify-content: center;
max-width: 54.5rem
}
.slideshow__text>* {
max-width: 100%
}
@media screen and (max-width: 749px) {
slideshow-component.page-width .slideshow__text {
border-right: var(--text-boxes-border-width) solid rgba(var(--color-foreground), var(--text-boxes-border-opacity));
border-left: var(--text-boxes-border-width) solid rgba(var(--color-foreground), var(--text-boxes-border-opacity))
}
.banner--mobile-bottom .slideshow__text.banner__box {
max-width: 100%
}
.banner--mobile-bottom .slideshow__text-wrapper {
flex-grow: 1
}
.banner--mobile-bottom .slideshow__text.banner__box {
height: 100%
}
.banner--mobile-bottom .slideshow__text .button {
flex-grow: 0
}
.slideshow__text.slideshow__text-mobile--left {
align-items: flex-start;
text-align: left
}
.slideshow__text.slideshow__text-mobile--right {
align-items: flex-end;
text-align: right
}
}
@media screen and (min-width: 750px) {
.slideshow__text.slideshow__text--left {
align-items: flex-start;
text-align: left
}
.slideshow__text.slideshow__text--right {
align-items: flex-end;
text-align: right
}
}
.slideshow:not(.banner--mobile-bottom) .slideshow__text-wrapper {
height: 100%
}
@media screen and (min-width: 750px) {
.slideshow__text-wrapper.banner__content {
height: 100%;
padding: 5rem
}
}
.slideshow__controls {
border: .1rem solid rgba(var(--color-foreground), .08)
}
.slideshow__controls--top {
order: 2;
z-index: 1
}
@media screen and (max-width: 749px) {
.slideshow__controls--border-radius-mobile {
border-bottom-right-radius: var(--text-boxes-radius);
border-bottom-left-radius: var(--text-boxes-radius)
}
}
.spaced-section--full-width:last-child slideshow-component:not(.page-width) .slideshow__controls {
border-bottom: none
}
@media screen and (min-width: 750px) {
.slideshow__controls {
position: relative
}
}
slideshow-component:not(.page-width) .slider-buttons {
border-right: 0;
border-left: 0
}
.slideshow__control-wrapper {
display: flex
}
.slideshow__autoplay {
position: absolute;
right: 0;
border-left: none;
display: flex;
justify-content: center;
align-items: center
}
@media screen and (max-width: 749px) {
slideshow-component.page-width .slideshow__autoplay {
right: 1.5rem
}
}
@media screen and (min-width: 750px) {
.slideshow__autoplay.slider-button {
position: inherit;
margin-left: .6rem;
padding: 0 0 0 .6rem;
border-left: .1rem solid rgba(var(--color-foreground), .08)
}
}
.slideshow__autoplay .icon.icon-play,
.slideshow__autoplay .icon.icon-pause {
display: block;
position: absolute;
opacity: 1;
transform: scale(1);
transition: transform .15s ease, opacity .15s ease;
width: .8rem;
height: 1.2rem
}
.slideshow__autoplay .icon.icon-play {
height: 1rem
}
.slideshow__autoplay path {
fill: rgba(var(--color-foreground), .75)
}
.slideshow__autoplay:hover path {
fill: rgb(var(--color-foreground))
}
@media screen and (forced-colors: active) {
.slideshow__autoplay path,
.slideshow__autoplay:hover path {
fill: CanvasText
}
}
.slideshow__autoplay:hover svg {
transform: scale(1.1)
}
.slideshow__autoplay--paused .icon-pause,
.slideshow__autoplay:not(.slideshow__autoplay--paused) .icon-play {
visibility: hidden;
opacity: 0;
transform: scale(.8)
}
</style>
<style>
slider-component {
--desktop-margin-left-first-item: max(5rem, calc((100vw - var(--page-width) + 10rem - var(--grid-desktop-horizontal-spacing)) / 2));
position: relative;
display: block
}
slider-component.slider-component-full-width {
--desktop-margin-left-first-item: 1.5rem
}
@media screen and (max-width: 749px) {
slider-component.page-width {
padding: 0 1.5rem
}
}
@media screen and (min-width: 749px) and (max-width: 990px) {
slider-component.page-width {
padding: 0 5rem
}
}
@media screen and (max-width: 989px) {
.no-js slider-component .slider {
padding-bottom: 3rem
}
}
.slider__slide {
--focus-outline-padding: .5rem;
--shadow-padding-top: calc((var(--shadow-vertical-offset) * -1 + var(--shadow-blur-radius)) * var(--shadow-visible));
--shadow-padding-bottom: calc((var(--shadow-vertical-offset) + var(--shadow-blur-radius)) * var(--shadow-visible));
scroll-snap-align: start;
flex-shrink: 0;
padding-bottom: 0
}
@media screen and (max-width: 749px) {
.slider.slider--mobile {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1.5rem;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem
}
.slider--mobile:after {
content: "";
width: 0;
padding-left: 1.5rem
}
.slider.slider--mobile .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom))
}
.slider.slider--mobile.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding)
}
.slider.slider--mobile.contains-content-container .slider__slide {
--focus-outline-padding: 0rem
}
}
@media screen and (min-width: 750px) {
.slider.slider--tablet-up {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1rem;
-webkit-overflow-scrolling: touch
}
.slider.slider--tablet-up .slider__slide {
margin-bottom: 0
}
}
@media screen and (max-width: 989px) {
.slider.slider--tablet {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1.5rem;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem
}
.slider--tablet:after {
content: "";
width: 0;
padding-left: 1.5rem;
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing))
}
.slider.slider--tablet .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom))
}
.slider.slider--tablet.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding)
}
.slider.slider--tablet.contains-content-container .slider__slide {
--focus-outline-padding: 0rem
}
}
.slider--everywhere {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem
}
.slider.slider--everywhere .slider__slide {
margin-bottom: 0;
scroll-snap-align: center
}
@media screen and (min-width: 990px) {
.slider-component-desktop.page-width {
max-width: none
}
.slider--desktop {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem;
scroll-padding-left: var(--desktop-margin-left-first-item)
}
.slider--desktop:after {
content: "";
width: 0;
padding-left: 5rem;
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing))
}
.slider.slider--desktop .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom))
}
.slider--desktop .slider__slide:first-child {
margin-left: var(--desktop-margin-left-first-item);
scroll-margin-left: var(--desktop-margin-left-first-item)
}
.slider-component-full-width .slider--desktop {
scroll-padding-left: 1.5rem
}
.slider-component-full-width .slider--desktop .slider__slide:first-child {
margin-left: 1.5rem;
scroll-margin-left: 1.5rem
}
.slider-component-full-width .slider--desktop:after {
padding-left: 1.5rem
}
.slider--desktop.grid--5-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 5 - var(--grid-desktop-horizontal-spacing) * 2)
}
.slider--desktop.grid--4-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 4 - var(--grid-desktop-horizontal-spacing) * 3)
}
.slider--desktop.grid--3-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 3 - var(--grid-desktop-horizontal-spacing) * 4)
}
.slider--desktop.grid--2-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 2 - var(--grid-desktop-horizontal-spacing) * 5)
}
.slider--desktop.grid--1-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) - var(--grid-desktop-horizontal-spacing) * 9)
}
.slider.slider--desktop.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding)
}
.slider.slider--desktop.contains-content-container .slider__slide {
--focus-outline-padding: 0rem
}
}
@media (prefers-reduced-motion) {
.slider {
scroll-behavior: auto
}
}
.slider {
scrollbar-color: rgb(var(--color-foreground)) rgba(var(--color-foreground), .04);
-ms-overflow-style: none;
scrollbar-width: none
}
.slider::-webkit-scrollbar {
height: .4rem;
width: .4rem;
display: none
}
.no-js .slider {
-ms-overflow-style: auto;
scrollbar-width: auto
}
.no-js .slider::-webkit-scrollbar {
display: initial
}
.slider::-webkit-scrollbar-thumb {
background-color: rgb(var(--color-foreground));
border-radius: .4rem;
border: 0
}
.slider::-webkit-scrollbar-track {
background: rgba(var(--color-foreground), .04);
border-radius: .4rem
}
.slider-counter {
display: flex;
justify-content: center;
min-width: 4.4rem
}
@media screen and (min-width: 750px) {
.slider-counter--dots {
margin: 0 1.2rem
}
}
.slider-counter__link {
padding: 1rem
}
@media screen and (max-width: 749px) {
.slider-counter__link {
padding: .7rem
}
}
.slider-counter__link--dots .dot {
width: 1rem;
height: 1rem;
border-radius: 50%;
border: .1rem solid rgba(var(--color-foreground), .5);
padding: 0;
display: block
}
.slider-counter__link--active.slider-counter__link--dots .dot {
background-color: rgb(var(--color-foreground))
}
@media screen and (forced-colors: active) {
.slider-counter__link--active.slider-counter__link--dots .dot {
background-color: CanvasText
}
}
.slider-counter__link--dots:not(.slider-counter__link--active):hover .dot {
border-color: rgb(var(--color-foreground))
}
.slider-counter__link--dots .dot,
.slider-counter__link--numbers {
transition: transform .2s ease-in-out
}
.slider-counter__link--active.slider-counter__link--numbers,
.slider-counter__link--dots:not(.slider-counter__link--active):hover .dot,
.slider-counter__link--numbers:hover {
transform: scale(1.1)
}
.slider-counter__link--numbers {
color: rgba(var(--color-foreground), .5);
text-decoration: none
}
.slider-counter__link--numbers:hover {
color: rgb(var(--color-foreground))
}
.slider-counter__link--active.slider-counter__link--numbers {
text-decoration: underline;
color: rgb(var(--color-foreground))
}
.slider-buttons {
display: flex;
align-items: center;
justify-content: center
}
@media screen and (min-width: 990px) {
.slider:not(.slider--everywhere):not(.slider--desktop)+.slider-buttons {
display: none
}
}
@media screen and (max-width: 989px) {
.slider--desktop:not(.slider--tablet)+.slider-buttons {
display: none
}
}
@media screen and (min-width: 750px) {
.slider--mobile+.slider-buttons {
display: none
}
}
.slider-button {
color: rgba(var(--color-foreground), .75);
background: transparent;
border: none;
cursor: pointer;
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center
}
.slider-button:not([disabled]):hover {
color: rgb(var(--color-foreground))
}
.slider-button .icon {
height: .6rem
}
.slider-button[disabled] .icon {
color: rgba(var(--color-foreground), .3);
cursor: not-allowed
}
.slider-button--next .icon {
transform: rotate(-90deg)
}
.slider-button--prev .icon {
transform: rotate(90deg)
}
.slider-button--next:not([disabled]):hover .icon {
transform: rotate(-90deg) scale(1.1)
}
.slider-button--prev:not([disabled]):hover .icon {
transform: rotate(90deg) scale(1.1)
}
</style>
<div class="utility-bar color-accent-1 gradient utility-bar--bottom-border">
<div class="page-width utility-bar__grid">
<div class="announcement-bar" role="region" aria-label="Announcement">
<p class="announcement-bar__message h5">
<span id="typewriter"></span>
</p>
<!-- HTML -->
<div id="typewriter" style="color: white; font-size: 18px; font-weight: bold; text-align: center; padding: 20px;"></div>
<!-- SCRIPT -->
<script>
// Gabungkan semua kalimat ke dalam satu string pakai join
const text = [
"SELAMAT DATANG DI KOITOTO",
"LOGIN SITUS TOGEL ONLINE SUPPORT 24 JAM",
"NIKMATI TOTO SLOT ANTI LAG YANG MUDAH MENANG",
"DEPOSIT MINIMAL CUMA 10 RIBU AJA",
"PROSES PENARIKAN CEPAT DAN LANGSUNG MASUK",
"LAYANAN CUSTOMER SERVICE ONLINE SETIAP SAAT",
"BERGABUNGLAH SEKARANG DAN RASAKAN BEDANYA BERMAIN DI KOITOTO"
].join(" "); // Digabung jadi satu string
const target = document.getElementById("typewriter");
let i = 0;
function typeWriter() {
if (i < text.length) {
target.textContent += text.charAt(i);
i++;
setTimeout(typeWriter, 60); // kecepatan ketik
}
}
typeWriter();
</script>
</div>
<div class="localization-wrapper">
</div>
</div>
</div>
</div>
<div id="shopify-section-sections--17040648405205__header"
class="shopify-section shopify-section-group-header-group section-header">
<style>
.list-menu--right {
right: 0;
}
.list-menu--disclosure {
position: absolute;
min-width: 100%;
width: 20rem;
border: 1px solid rgba(var(--color-foreground), 0.2);
}
.list-menu--disclosure:focus {
outline: none;
}
.list-menu__item--active {
text-decoration: underline;
text-underline-offset: 0.3rem;
}
.list-menu__item--active:hover {
text-decoration-thickness: 0.2rem;
}
.list-menu--disclosure.localization-selector {
max-height: 18rem;
overflow: auto;
width: 10rem;
padding: 0.5rem;
}
</style>
<style>
.search__input.field__input {
padding-right: 9.8rem
}
.search__button {
right: var(--inputs-border-width);
top: var(--inputs-border-width)
}
.reset__button {
right: calc(var(--inputs-border-width) + 4.4rem);
top: var(--inputs-border-width)
}
.reset__button:not(:focus-visible):after {
border-right: .1rem solid rgba(var(--color-foreground), .08);
display: block;
height: calc(100% - 1.6rem);
content: "";
position: absolute;
right: 0
}
.reset__button:not(:focus):after {
border-right: .1rem solid rgba(var(--color-foreground), .08);
display: block;
height: calc(100% - 1.8rem);
content: "";
position: absolute;
right: 0
}
.search__button:focus-visible,
.reset__button:focus-visible {
background-color: black;
z-index: 4
}
.search__button:focus,
.reset__button:focus {
background-color: black;
z-index: 4
}
.search__button:not(:focus-visible):not(.focused),
.reset__button:not(:focus-visible):not(.focused) {
box-shadow: inherit;
background-color: inherit
}
.search__button:hover .icon,
.reset__button:hover .icon {
transform: scale(1.07)
}
.search__button .icon {
height: 1.8rem;
width: 1.8rem
}
.reset__button .icon.icon-close {
height: 1.8rem;
width: 1.8rem;
stroke-width: .1rem
}
input::-webkit-search-decoration {
-webkit-appearance: none
}
.template-search__results {
position: relative
}
</style>
<style>
.header__icon--menu {
position: initial
}
.js menu-drawer>details>summary:before,
.js menu-drawer>details[open]:not(.menu-opening)>summary:before {
content: "";
position: absolute;
cursor: default;
width: 100%;
height: calc(100vh - 100%);
height: calc(var(--viewport-height, 100vh) - (var(--header-bottom-position, 100%)));
top: 100%;
left: 0;
background: rgba(var(--color-foreground), .5);
opacity: 0;
visibility: hidden;
z-index: 2;
transition: opacity 0s, visibility 0s
}
menu-drawer>details[open]>summary:before {
visibility: visible;
opacity: 1;
transition: opacity var(--duration-default) ease, visibility var(--duration-default) ease
}
.menu-drawer {
position: absolute;
transform: translate(-100%);
visibility: hidden;
z-index: 3;
left: 0;
top: 100%;
width: 100%;
padding: 0;
background-color: black;
overflow-x: hidden;
filter: drop-shadow(var(--drawer-shadow-horizontal-offset) var(--drawer-shadow-vertical-offset) var(--drawer-shadow-blur-radius) rgba(var(--color-shadow), var(--drawer-shadow-opacity)))
}
.js .menu-drawer {
height: calc(100vh - 100%);
height: calc(var(--viewport-height, 100vh) - (var(--header-bottom-position, 100%)))
}
.js details[open]>.menu-drawer,
.js details[open]>.menu-drawer__submenu {
transition: transform var(--duration-default) ease, visibility var(--duration-default) ease
}
.no-js details[open]>.menu-drawer,
.js details[open].menu-opening>.menu-drawer,
details[open].menu-opening>.menu-drawer__submenu {
transform: translate(0);
visibility: visible
}
.js .menu-drawer__navigation .submenu-open {
visibility: hidden
}
@media screen and (min-width: 750px) {
.menu-drawer {
width: 40rem;
border-width: 0 var(--drawer-border-width) 0 0;
border-style: solid;
border-color: rgba(var(--color-foreground), var(--drawer-border-opacity))
}
.no-js .menu-drawer {
height: auto
}
}
.menu-drawer__inner-container {
position: relative;
height: 100%
}
.menu-drawer__navigation-container {
display: grid;
grid-template-rows: 1fr auto;
align-content: space-between;
overflow-y: auto;
height: 100%
}
.menu-drawer__navigation {
padding: 3rem 0
}
.menu-drawer__inner-submenu {
height: 100%;
overflow-x: hidden;
overflow-y: auto
}
.no-js .menu-drawer__navigation {
padding: 0
}
.no-js .menu-drawer__navigation>ul>li {
border-bottom: .1rem solid rgba(var(--color-foreground), .04)
}
.no-js .menu-drawer__submenu ul>li {
border-top: .1rem solid rgba(var(--color-foreground), .04)
}
.js .menu-drawer__menu li {
margin-bottom: .2rem
}
.menu-drawer__menu-item {
padding: 1.1rem 3rem;
text-decoration: none;
font-size: 1.8rem
}
.no-js .menu-drawer__menu-item {
font-size: 1.6rem
}
.no-js .menu-drawer__submenu .menu-drawer__menu-item {
padding: 1.2rem 5.2rem 1.2rem 6rem
}
.no-js .menu-drawer__submenu .menu-drawer__submenu .menu-drawer__menu-item {
padding-left: 9rem
}
.menu-drawer summary.menu-drawer__menu-item {
padding-right: 5.2rem
}
.no-js .menu-drawer__menu-item .icon-caret {
right: 3rem
}
.menu-drawer__menu-item--active,
.menu-drawer__menu-item:focus,
.menu-drawer__close-button:focus,
.menu-drawer__menu-item:hover,
.menu-drawer__close-button:hover {
color: rgb(var(--color-foreground));
background-color: rgba(var(--color-foreground), .04)
}
.menu-drawer__menu-item--active:hover {
background-color: rgba(var(--color-foreground), .08)
}
.js .menu-drawer__menu-item .icon-caret,
.no-js .menu-drawer .icon-arrow {
display: none
}
.menu-drawer__menu-item>.icon-arrow {
position: absolute;
right: 3rem;
top: 50%;
transform: translateY(-50%)
}
.js .menu-drawer__submenu {
position: absolute;
top: 0;
width: 100%;
bottom: 0;
left: 0;
background-color: black;
z-index: 1;
transform: translate(100%);
visibility: hidden
}
.js .menu-drawer__submenu .menu-drawer__submenu {
overflow-y: auto
}
.menu-drawer__close-button {
margin-top: 1.5rem;
padding: 1.2rem 2.6rem 1.2rem 3rem;
text-decoration: none;
display: flex;
align-items: center;
font-size: 1.4rem;
width: 100%;
background-color: transparent;
font-family: var(--font-body-family);
font-style: var(--font-body-style);
text-align: left
}
.no-js .menu-drawer__close-button {
display: none
}
.menu-drawer__close-button .icon-arrow {
transform: rotate(180deg);
margin-right: 1rem
}
.menu-drawer__utility-links {
padding: 0;
background-color: rgba(var(--color-foreground), .03);
position: relative
}
.header--has-social .menu-drawer__utility-links {
padding: 2rem 3rem
}
@media screen and (max-width: 749px) {
.header--has-account:where(:not(.header--has-social):not(.header--has-localizations)) .menu-drawer__utility-links {
padding: 2rem 3rem
}
}
@media screen and (max-width: 989px) {
.header--has-localizations:where(:not(.header--has-social)) .menu-drawer__utility-links {
padding: 2rem 3rem
}
}
.menu-drawer__account {
display: inline-flex;
align-items: center;
text-decoration: none;
padding: 1rem 0;
font-size: 1.4rem;
color: rgb(var(--color-foreground));
margin-bottom: 0
}
.menu-drawer__utility-links:has(.menu-drawer__localization) .menu-drawer__account {
margin: 0
}
.menu-drawer__account .icon-account {
height: 2rem;
width: 2rem;
margin-right: 1rem
}
.menu-drawer__account:hover .icon-account {
transform: scale(1.07)
}
.menu-drawer .list-social {
justify-content: flex-start;
margin-left: -1.25rem
}
.menu-drawer .list-social:empty {
display: none
}
.menu-drawer .list-social__link {
padding: 1.1rem
}
</style>
<style>
.cart-notification-wrapper {
position: relative
}
.cart-notification-wrapper .cart-notification {
display: block
}
.cart-notification {
border-bottom-right-radius: var(--popup-corner-radius);
border-bottom-left-radius: var(--popup-corner-radius);
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
border-style: solid;
border-width: 0 0 var(--popup-border-width);
padding: 2.5rem 3.5rem;
position: absolute;
right: 0;
transform: translateY(-100%);
visibility: hidden;
width: 100%;
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity));
z-index: -1
}
.cart-notification.focused {
box-shadow: 0 0 .2rem 0 rgba(var(--color-foreground), .3), var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity))
}
.cart-notification:focus-visible {
box-shadow: 0 0 .2rem 0 rgba(var(--color-foreground), .3), var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity))
}
@media screen and (min-width: 750px) {
.header-wrapper:not(.header-wrapper--border-bottom)+cart-notification .cart-notification {
border-top-width: var(--popup-border-width)
}
.cart-notification {
border-width: 0 var(--popup-border-width) var(--popup-border-width);
max-width: 36.8rem;
right: 2.2rem
}
}
@media screen and (min-width: 990px) {
.cart-notification-wrapper:is(.page-width)>.cart-notification {
right: 4rem
}
}
.cart-notification.animate {
transition: transform var(--duration-short) ease, visibility 0s var(--duration-short) ease
}
.cart-notification.active {
transform: translateY(0);
transition: transform var(--duration-default) ease, visibility 0s;
visibility: visible
}
.cart-notification__header {
align-items: flex-start;
display: flex
}
.cart-notification__heading {
align-items: center;
display: flex;
flex-grow: 1;
margin-bottom: 0;
margin-top: 0
}
.cart-notification__heading .icon-checkmark {
color: rgb(var(--color-foreground));
margin-right: 1rem;
width: 1.3rem
}
.cart-notification__close {
margin-top: -2rem;
margin-right: -3rem
}
.cart-notification__links {
text-align: center
}
.cart-notification__links>* {
margin-top: 1rem
}
.cart-notification-product {
align-items: flex-start;
display: flex;
padding-bottom: 3rem;
padding-top: 2rem
}
.cart-notification-product dl {
margin-bottom: 0;
margin-top: 0
}
.cart-notification-product__image {
display: inline-flex;
margin-right: 1.5rem;
margin-top: .5rem
}
.cart-notification-product__image:after {
content: none
}
.cart-notification-product__name {
margin-bottom: .5rem;
margin-top: 0
}
</style>
<style>
cart-items .title-wrapper-with-link {
margin-top: 0
}
.cart-items td,
.cart-items th {
padding: 0;
border: none
}
.cart-items th {
text-align: left;
padding-bottom: 1.8rem;
opacity: .85;
font-weight: 400
}
.cart-item__quantity-wrapper {
display: flex
}
.cart-item__totals {
position: relative
}
.cart-items *.right {
text-align: right
}
.cart-item__image-container {
display: inline-flex;
align-items: flex-start
}
.cart-item__image-container:after {
content: none
}
.cart-item__image {
height: auto;
max-width: calc(10rem / var(--font-body-scale))
}
@media screen and (min-width: 750px) {
.cart-item__image {
max-width: 100%
}
}
.cart-item__details {
font-size: 1.6rem;
line-height: calc(1 + .4 / var(--font-body-scale))
}
.cart-item__details>* {
margin: 0;
max-width: 30rem
}
.cart-item__details>*+* {
margin-top: .6rem
}
.cart-item__media {
position: relative
}
.cart-item__link {
display: block;
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
width: 100%;
height: 100%
}
.cart-item__name {
text-decoration: none;
display: block
}
.cart-item__name:hover {
text-decoration: underline;
text-underline-offset: .3rem;
text-decoration-thickness: .2rem
}
.cart-item__price-wrapper>* {
display: block;
margin: 0;
padding: 0
}
.cart-item__discounted-prices dd {
margin: 0
}
.cart-item__discounted-prices .cart-item__old-price {
font-size: 1.4rem
}
.cart-item__old-price {
opacity: .7
}
.cart-item__final-price {
font-weight: 400
}
.product-option {
font-size: 1.4rem;
word-break: break-word;
line-height: calc(1 + .5 / var(--font-body-scale))
}
.cart-item cart-remove-button {
display: flex;
margin-left: 1rem
}
@media screen and (min-width: 750px) and (max-width: 989px) {
.cart-item cart-remove-button {
width: 4.5rem;
height: 4.5rem
}
}
cart-remove-button .button {
min-width: calc(4.5rem / var(--font-body-scale));
min-height: 4.5rem;
padding: 0;
margin: 0 .1rem .1rem 0
}
cart-remove-button .button:before,
cart-remove-button .button:after {
content: none
}
cart-remove-button .button:not([disabled]):hover {
color: rgb(var(--color-foreground))
}
@media screen and (min-width: 750px) {
cart-remove-button .button {
min-width: 3.5rem;
min-height: 3.5rem
}
}
cart-remove-button .icon-remove {
height: 1.5rem;
width: 1.5rem
}
.cart-item .loading__spinner {
top: 0;
left: auto;
right: auto;
bottom: 0;
padding: 0
}
@media screen and (min-width: 750px) {
.cart-item .loading__spinner {
right: 0;
padding-top: 4.5rem;
bottom: auto
}
}
.cart-item .loading__spinner:not(.hidden)~* {
visibility: hidden
}
.cart-item__error {
display: flex;
align-items: flex-start;
margin-top: .2rem;
width: min-content;
min-width: 100%
}
.cart-item__error-text {
font-size: 1.2rem;
line-height: calc(1 + .2 / var(--font-body-scale));
order: 1
}
.cart-item__error-text+svg {
flex-shrink: 0;
width: 1.2rem;
margin-right: .5rem;
margin-top: .1rem
}
.cart-item__error-text:empty+svg {
display: none
}
.product-option+.product-option {
margin-top: .4rem
}
.product-option * {
display: inline;
margin: 0
}
.cart-items thead th {
text-transform: uppercase
}
@media screen and (max-width: 749px) {
.cart-items,
.cart-items thead,
.cart-items tbody {
display: block;
width: 100%
}
.cart-items thead tr {
display: flex;
justify-content: space-between;
border-bottom: .1rem solid rgba(var(--color-foreground), .2);
margin-bottom: 4rem
}
.cart-item {
display: grid;
grid-template: repeat(2, auto) / repeat(4, 1fr);
gap: 1.5rem;
margin-bottom: 3.5rem
}
.cart-item:last-child {
margin-bottom: 0
}
.cart-item__media {
grid-row: 1 / 3
}
.cart-item__details {
grid-column: 2 / 4
}
.cart-item__quantity {
grid-column: 2 / 5
}
.cart-item__quantity-wrapper {
flex-wrap: wrap
}
.cart-item__totals {
display: flex;
align-items: flex-start;
justify-content: flex-end
}
}
@media screen and (min-width: 750px) {
.cart-items {
border-spacing: 0;
border-collapse: separate;
box-shadow: none;
width: 100%;
display: table
}
.cart-items th {
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
.cart-items thead th:first-child {
width: 50%
}
.cart-items th+th {
padding-left: 4rem
}
.cart-items td {
vertical-align: top;
padding-top: 4rem
}
.cart-item {
display: table-row
}
.cart-item>td+td {
padding-left: 4rem
}
.cart-item__details {
width: 35rem
}
.cart-item__media {
width: 10rem
}
.cart-item cart-remove-button {
margin: .5rem 0 0 1.5rem
}
.cart-item__price-wrapper>*:only-child:not(.cart-item__discounted-prices) {
margin-top: 1rem
}
.cart-item__error {
margin-left: .3rem
}
}
@media screen and (min-width: 990px) {
.cart-item .cart-item__quantity,
.cart-items .cart-items__heading--wide {
padding-left: 6rem
}
.cart-item__details {
width: 50rem
}
.cart-items thead th:first-child {
width: 60%
}
}
@media screen and (min-width: 750px) {
.cart-items .cart-items__heading--quantity,
.cart-item .cart-item__quantity,
.cart-item__quantity--info quantity-popover>*,
.no-js .cart-item .cart-item__quantity--info {
padding-left: 5rem
}
.cart-item .cart-item__quantity--info,
.cart-item__quantity--info .cart-item__quantity-wrapper,
.cart-item__quantity--info .cart-items__info {
padding-left: 0
}
}
@media screen and (min-width: 749px) and (max-width: 990px) {
.cart-items .quantity-popover__info-button {
padding-left: 1.5rem
}
}
</style>
<style>
.price {
font-size: 1.6rem;
letter-spacing: .1rem;
line-height: calc(1 + .5 / var(--font-body-scale));
color: rgb(var(--color-foreground))
}
.price>* {
display: inline-block;
vertical-align: top
}
.price.price--unavailable {
visibility: hidden
}
.price--end {
text-align: right
}
.price .price-item {
display: inline-block;
margin: 0 1rem 0 0
}
.price__regular .price-item--regular {
margin-right: 0
}
.price:not(.price--show-badge) .price-item--last:last-of-type {
margin: 0
}
@media screen and (min-width: 750px) {
.price {
margin-bottom: 0
}
}
.price--large {
font-size: 1.6rem;
line-height: calc(1 + .5 / var(--font-body-scale));
letter-spacing: .13rem
}
@media screen and (min-width: 750px) {
.price--large {
font-size: 1.8rem
}
}
.price--sold-out .price__availability,
.price__regular {
display: block
}
.price__sale,
.price__availability,
.price .price__badge-sale,
.price .price__badge-sold-out,
.price--on-sale .price__regular,
.price--on-sale .price__availability {
display: none
}
.price--sold-out .price__badge-sold-out,
.price--on-sale .price__badge-sale,
.volume-pricing--sale-badge .price__badge-sale {
display: inline-block
}
.volume-pricing--sale-badge .price__badge-sale {
margin-left: .5rem
}
.price--on-sale .price__sale {
display: initial;
flex-direction: row;
flex-wrap: wrap
}
.price--center {
display: initial;
justify-content: center
}
.price--on-sale .price-item--regular {
text-decoration: line-through;
color: rgba(var(--color-foreground), .75);
font-size: 1.3rem
}
.unit-price {
display: block;
font-size: 1.1rem;
letter-spacing: .04rem;
line-height: calc(1 + .2 / var(--font-body-scale));
margin-top: .2rem;
text-transform: uppercase;
color: rgba(var(--color-foreground), .7)
}
</style>
<style>
.drawer {
position: fixed;
z-index: 1000;
left: 0;
top: 0;
width: 100vw;
height: 100%;
display: flex;
justify-content: flex-end;
background-color: rgba(var(--color-foreground), .5);
transition: visibility var(--duration-default) ease
}
.drawer.active {
visibility: visible
}
.drawer__inner {
height: 100%;
width: 40rem;
max-width: calc(100vw - 3rem);
padding: 0 1.5rem;
border: .1rem solid rgba(var(--color-foreground), .2);
border-right: 0;
overflow: hidden;
display: flex;
flex-direction: column;
transform: translate(100%);
transition: transform var(--duration-default) ease
}
.drawer__inner-empty {
height: 100%;
padding: 0 1.5rem;
overflow: hidden;
display: flex;
flex-direction: column
}
.cart-drawer__warnings {
display: flex;
flex-direction: column;
flex: 1;
justify-content: center
}
cart-drawer.is-empty .drawer__inner {
display: grid;
grid-template-rows: 1fr;
align-items: center;
padding: 0
}
cart-drawer.is-empty .drawer__header {
display: none
}
cart-drawer:not(.is-empty) .cart-drawer__warnings,
cart-drawer:not(.is-empty) .cart-drawer__collection {
display: none
}
.cart-drawer__warnings--has-collection .cart__login-title {
margin-top: 2.5rem
}
.drawer.active .drawer__inner {
transform: translate(0)
}
.drawer__header {
position: relative;
padding: 1.5rem 0;
display: flex;
justify-content: space-between;
align-items: center
}
.drawer__heading {
margin: 0 0 1rem
}
.drawer__close {
display: inline-block;
padding: 0;
min-width: 4.4rem;
min-height: 4.4rem;
box-shadow: 0 0 0 .2rem rgba(var(--color-button), 0);
position: absolute;
top: 10px;
right: -10px;
color: rgb(var(--color-foreground));
background-color: transparent;
border: none;
cursor: pointer
}
.cart-drawer__warnings .drawer__close {
right: 5px
}
.drawer__close svg {
height: 2.4rem;
width: 2.4rem
}
.drawer__contents {
flex-grow: 1;
display: flex;
flex-direction: column
}
.drawer__footer {
border-top: .1rem solid rgba(var(--color-foreground), .2);
padding: 1.5rem 0
}
cart-drawer-items.is-empty+.drawer__footer {
display: none
}
.drawer__footer>details {
margin-top: -1.5rem;
border-bottom: .1rem solid rgba(var(--color-foreground), .2)
}
.drawer__footer>details[open] {
padding-bottom: 1.5rem
}
.drawer__footer summary {
display: flex;
position: relative;
line-height: 1;
padding: 1.5rem 0
}
.drawer__footer>details+.cart-drawer__footer {
padding-top: 1.5rem
}
cart-drawer {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100%
}
.cart-drawer__overlay {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0
}
.cart-drawer__overlay:empty {
display: block
}
.cart-drawer__form {
flex-grow: 1;
display: flex;
flex-wrap: wrap
}
.cart-drawer__collection {
margin: 0 2.5rem 1.5rem
}
.cart-drawer .drawer__cart-items-wrapper {
flex-grow: 1
}
.cart-drawer .cart-items,
.cart-drawer tbody {
display: block;
width: 100%
}
.cart-drawer thead {
display: inline-table;
width: 100%;
position: sticky;
top: 0;
z-index: 2
}
cart-drawer-items {
overflow: auto;
flex: 1
}
@media screen and (max-height: 650px) {
cart-drawer-items {
overflow: visible
}
.drawer__inner {
overflow: scroll
}
}
.cart-drawer .cart-item {
display: grid;
grid-template: repeat(2, auto) / repeat(4, 1fr);
gap: 1.5rem;
margin-bottom: 0
}
.cart-drawer .cart-item:last-child {
margin-bottom: 1rem
}
.cart-drawer .cart-item__media {
grid-row: 1 / 3
}
.cart-drawer .cart-item__image {
max-width: 100%
}
.cart-drawer .cart-items thead {
margin-bottom: .5rem
}
.cart-drawer .cart-items thead th:first-child,
.cart-drawer .cart-items thead th:last-child {
width: 0;
padding: 0
}
.cart-drawer .cart-items thead th:nth-child(2) {
width: 50%;
padding-left: 0
}
.cart-drawer .cart-items thead tr {
display: table-row;
margin-bottom: 0
}
.cart-drawer .cart-items th {
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
.cart-drawer .cart-item:last-child {
margin-bottom: 1.5rem
}
.cart-drawer .cart-item .loading__spinner {
right: 5px;
padding-top: 2.5rem
}
.cart-drawer .cart-items td {
padding-top: 2rem
}
.cart-drawer .cart-item>td+td {
padding-left: 1rem
}
.cart-drawer .cart-item__details {
width: auto;
grid-column: 2 / 4
}
.cart-drawer .cart-item__totals {
pointer-events: none;
display: flex;
align-items: flex-start;
justify-content: flex-end
}
.cart-drawer.cart-drawer .cart-item__price-wrapper>*:only-child {
margin-top: 0
}
.cart-drawer .cart-item__price-wrapper .cart-item__discounted-prices {
display: flex;
flex-direction: column;
gap: .6rem
}
.cart-drawer .unit-price {
margin-top: .6rem
}
.cart-drawer .cart-items .cart-item__quantity {
padding-top: 0;
grid-column: 2 / 5
}
@media screen and (max-width: 749px) {
.cart-drawer .cart-item cart-remove-button {
margin-left: 0
}
}
.cart-drawer__footer>*+* {
margin-top: 1rem
}
.cart-drawer .totals {
justify-content: space-between
}
.cart-drawer .price {
line-height: 1
}
.cart-drawer .tax-note {
margin: 1.2rem 0 1rem auto;
text-align: left
}
.cart-drawer .product-option dd {
word-break: break-word
}
.cart-drawer details[open]>summary .icon-caret {
transform: rotate(180deg)
}
.cart-drawer .cart__checkout-button {
max-width: none
}
.drawer__footer .cart__dynamic-checkout-buttons {
max-width: 100%
}
.drawer__footer #dynamic-checkout-cart ul {
flex-wrap: wrap !important;
flex-direction: row !important;
margin: .5rem -.5rem 0 0 !important;
gap: .5rem
}
.drawer__footer [data-shopify-buttoncontainer] {
justify-content: flex-start
}
.drawer__footer #dynamic-checkout-cart ul>li {
flex-basis: calc(50% - .5rem) !important;
margin: 0 !important
}
.drawer__footer #dynamic-checkout-cart ul>li:only-child {
flex-basis: 100% !important;
margin-right: .5rem !important
}
@media screen and (min-width: 750px) {
.drawer__footer #dynamic-checkout-cart ul>li {
flex-basis: calc(100% / 3 - .5rem) !important;
margin: 0 !important
}
.drawer__footer #dynamic-checkout-cart ul>li:first-child:nth-last-child(2),
.drawer__footer #dynamic-checkout-cart ul>li:first-child:nth-last-child(2)~li,
.drawer__footer #dynamic-checkout-cart ul>li:first-child:nth-last-child(4),
.drawer__footer #dynamic-checkout-cart ul>li:first-child:nth-last-child(4)~li {
flex-basis: calc(50% - .5rem) !important
}
}
cart-drawer-items::-webkit-scrollbar {
width: 3px
}
cart-drawer-items::-webkit-scrollbar-thumb {
background-color: rgba(var(--color-foreground), .7);
border-radius: 100px
}
cart-drawer-items::-webkit-scrollbar-track-piece {
margin-top: 31px
}
.cart-drawer .quantity-popover-container {
padding: 0
}
.cart-drawer .quantity-popover__info.global-settings-popup {
transform: translateY(0);
right: 0
}
.cart-drawer .cart-item__error {
margin-top: .8rem
}
.cart-drawer .quantity-popover__info+.cart-item__error {
margin-top: .2rem
}
@media screen and (min-width: 750px) {
.cart-drawer .cart-item__quantity--info quantity-popover>* {
padding-left: 0
}
.cart-drawer .cart-item__error {
margin-left: 0
}
}
</style>
<style>
.cart {
position: relative;
display: block
}
.cart__empty-text,
.is-empty .cart__contents,
cart-items.is-empty .title-wrapper-with-link,
.is-empty .cart__footer {
display: none
}
.is-empty .cart__empty-text,
.is-empty .cart__warnings {
display: block
}
.cart__warnings {
display: none;
text-align: center;
padding: 3rem 0 1rem
}
.cart__empty-text {
margin: 4.5rem 0 2rem
}
.cart__contents>*+* {
margin-top: 2.5rem
}
.cart__login-title {
margin: 5.5rem 0 .5rem
}
.cart__login-paragraph {
margin-top: .8rem
}
.cart__login-paragraph a {
font-size: inherit
}
@media screen and (min-width: 990px) {
.cart__warnings {
padding: 7rem 0 1rem
}
.cart__empty-text {
margin: 0 0 3rem
}
}
cart-items {
display: block
}
.cart__items {
position: relative;
padding-bottom: 3rem;
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
.cart__items--disabled {
pointer-events: none
}
.cart__footer-wrapper:last-child .cart__footer {
padding-bottom: 5rem
}
.cart__footer>div:only-child {
margin-left: auto
}
.cart__footer>*+* {
margin-top: 6.5rem
}
.cart__footer .discounts {
margin-bottom: 1rem
}
.cart__note {
height: fit-content;
top: 2.5rem
}
.cart__note label {
display: flex;
align-items: flex-end;
position: absolute;
line-height: 1;
height: 1.8rem;
top: -3rem;
color: rgba(var(--color-foreground), .75)
}
.cart__note .field__input {
height: 100%;
position: relative;
border-radius: var(--inputs-radius);
padding: 1rem 2rem
}
.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;
grid-column-end: 3;
padding-bottom: 4rem
}
.cart__contents>*+* {
margin-top: 0
}
.cart__items+.cart__footer {
grid-column: 2
}
.cart__footer {
display: flex;
justify-content: space-between;
border: 0
}
.cart__footer-wrapper:last-child {
padding-top: 0
}
.cart__footer>* {
width: 35rem
}
.cart__footer>*+* {
margin-left: 4rem;
margin-top: 0
}
}
.cart__ctas button {
width: 100%
}
.cart__ctas>*:not(noscript:first-child)+* {
margin-top: 1rem
}
.cart__update-button {
margin-bottom: 1rem
}
.cart__dynamic-checkout-buttons {
max-width: 36rem;
margin: 0 auto
}
.cart__dynamic-checkout-buttons:has(.dynamic-checkout__content:empty) {
margin: 0
}
.cart__dynamic-checkout-buttons div[role=button] {
border-radius: var(--buttons-radius-outset) !important
}
.cart__blocks>*+* {
margin-top: 1rem
}
.cart-note__label {
display: inline-block;
margin-bottom: 1rem;
line-height: calc(1 + 1 / var(--font-body-scale))
}
.tax-note {
margin: 2.2rem 0 1.6rem auto;
text-align: center;
display: block
}
.cart__checkout-button {
max-width: 36rem
}
.cart__ctas {
text-align: center
}
@media screen and (min-width: 750px) {
.cart-note {
max-width: 35rem
}
.cart__update-button {
margin-bottom: 0;
margin-right: .8rem
}
.tax-note {
margin-bottom: 2.2rem;
text-align: right
}
[data-shopify-buttoncontainer] {
justify-content: flex-end
}
.cart__ctas {
display: flex;
gap: 1rem
}
}
</style>
<style>
.totals {
display: flex;
justify-content: center;
align-items: flex-end
}
.totals>* {
font-size: 1.6rem;
margin: 0
}
.totals>h2 {
font-size: calc(var(--font-heading-scale) * 1.6rem)
}
.totals * {
line-height: 1
}
.totals>*+* {
margin-left: 2rem
}
.totals__total {
margin-top: .5rem
}
.totals__total-value {
font-size: 1.8rem
}
.cart__ctas+.totals {
margin-top: 2rem
}
@media all and (min-width: 750px) {
.totals {
justify-content: flex-end
}
}
</style>
<style>
.price {
font-size: 1.6rem;
letter-spacing: .1rem;
line-height: calc(1 + .5 / var(--font-body-scale));
color: rgb(var(--color-foreground))
}
.price>* {
display: inline-block;
vertical-align: top
}
.price.price--unavailable {
visibility: hidden
}
.price--end {
text-align: right
}
.price .price-item {
display: inline-block;
margin: 0 1rem 0 0
}
.price__regular .price-item--regular {
margin-right: 0
}
.price:not(.price--show-badge) .price-item--last:last-of-type {
margin: 0
}
@media screen and (min-width: 750px) {
.price {
margin-bottom: 0
}
}
.price--large {
font-size: 1.6rem;
line-height: calc(1 + .5 / var(--font-body-scale));
letter-spacing: .13rem
}
@media screen and (min-width: 750px) {
.price--large {
font-size: 1.8rem
}
}
.price--sold-out .price__availability,
.price__regular {
display: block
}
.price__sale,
.price__availability,
.price .price__badge-sale,
.price .price__badge-sold-out,
.price--on-sale .price__regular,
.price--on-sale .price__availability {
display: none
}
.price--sold-out .price__badge-sold-out,
.price--on-sale .price__badge-sale,
.volume-pricing--sale-badge .price__badge-sale {
display: inline-block
}
.volume-pricing--sale-badge .price__badge-sale {
margin-left: .5rem
}
.price--on-sale .price__sale {
display: initial;
flex-direction: row;
flex-wrap: wrap
}
.price--center {
display: initial;
justify-content: center
}
.price--on-sale .price-item--regular {
text-decoration: line-through;
color: rgba(var(--color-foreground), .75);
font-size: 1.3rem
}
.unit-price {
display: block;
font-size: 1.1rem;
letter-spacing: .04rem;
line-height: calc(1 + .2 / var(--font-body-scale));
margin-top: .2rem;
text-transform: uppercase;
color: rgba(var(--color-foreground), .7)
}
</style>
<style>
.discounts {
font-size: 1.2rem;
}
.discounts__discount {
display: flex;
align-items: center;
line-height: calc(1 + 0.5 / var(--font-body-scale));
}
.discounts__discount svg {
color: rgba(var(--color-button), var(--alpha-button-background));
}
.discounts__discount--position {
justify-content: center;
}
@media screen and (min-width: 750px) {
.discounts__discount--position {
justify-content: flex-end;
}
}
.discounts__discount>.icon {
color: rgb(var(--color-foreground));
width: 1.2rem;
height: 1.2rem;
margin-right: 0.7rem;
}
</style>
<style>
p img {
width: 100%;
}
header-drawer {
justify-self: start;
margin-left: -1.2rem;
}
@media screen and (min-width: 990px) {
header-drawer {
display: none;
}
}
.menu-drawer-container {
display: flex;
}
.list-menu {
list-style: none;
padding: 0;
margin: 0;
}
.list-menu--inline {
display: inline-flex;
flex-wrap: wrap;
}
summary.list-menu__item {
padding-right: 2.7rem;
}
.list-menu__item {
display: flex;
align-items: center;
line-height: calc(1 + 0.3 / var(--font-body-scale));
}
.list-menu__item--link {
text-decoration: none;
padding-bottom: 1rem;
padding-top: 1rem;
line-height: calc(1 + 0.8 / var(--font-body-scale));
}
@media screen and (min-width: 750px) {
.list-menu__item--link {
padding-bottom: 0.5rem;
padding-top: 0.5rem;
}
}
</style>
<style data-shopify>
.header {
padding: 10px 3rem 10px 3rem;
}
.section-header {
position: sticky;
/* This is for fixing a Safari z-index issue. PR #2147 */
margin-bottom: 0px;
}
@media screen and (min-width: 750px) {
.section-header {
margin-bottom: 0px;
}
}
@media screen and (min-width: 990px) {
.header {
padding-top: 20px;
padding-bottom: 20px;
}
}
</style>
<script>
/** Shopify CDN: Minification failed
Line 13:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 14:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 23:12 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 29:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 39:7 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 47:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 48:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 53:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
**/
class DetailsDisclosure extends HTMLElement {
constructor() {
super();
this.mainDetailsToggle = this.querySelector('details');
this.content = this.mainDetailsToggle.querySelector('summary').nextElementSibling;
this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
this.mainDetailsToggle.addEventListener('toggle', this.onToggle.bind(this));
}
onFocusOut() {
setTimeout(() => {
if (!this.contains(document.activeElement)) this.close();
});
}
onToggle() {
if (!this.animations) this.animations = this.content.getAnimations();
if (this.mainDetailsToggle.hasAttribute('open')) {
this.animations.forEach((animation) => animation.play());
} else {
this.animations.forEach((animation) => animation.cancel());
}
}
close() {
this.mainDetailsToggle.removeAttribute('open');
this.mainDetailsToggle.querySelector('summary').setAttribute('aria-expanded', false);
}
}
customElements.define('details-disclosure', DetailsDisclosure);
class HeaderMenu extends DetailsDisclosure {
constructor() {
super();
this.header = document.querySelector('.header-wrapper');
}
onToggle() {
if (!this.header) return;
this.header.preventHide = this.mainDetailsToggle.open;
if (document.documentElement.style.getPropertyValue('--header-bottom-position-desktop') !== '') return;
document.documentElement.style.setProperty(
'--header-bottom-position-desktop',
`${Math.floor(this.header.getBoundingClientRect().bottom)}px`
);
}
}
customElements.define('header-menu', HeaderMenu);
</script>
<script>
/** Shopify CDN: Minification failed
Line 13:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 14:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 26:8 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 30:16 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 35:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 39:6 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 51:7 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 51:20 Transforming default arguments to the configured target environment ("es5") is not supported yet
**/
class DetailsModal extends HTMLElement {
constructor() {
super();
this.detailsContainer = this.querySelector('details');
this.summaryToggle = this.querySelector('summary');
this.detailsContainer.addEventListener('keyup', (event) => event.code.toUpperCase() === 'ESCAPE' && this.close());
this.summaryToggle.addEventListener('click', this.onSummaryClick.bind(this));
this.querySelector('button[type="button"]').addEventListener('click', this.close.bind(this));
this.summaryToggle.setAttribute('role', 'button');
}
isOpen() {
return this.detailsContainer.hasAttribute('open');
}
onSummaryClick(event) {
event.preventDefault();
event.target.closest('details').hasAttribute('open') ? this.close() : this.open(event);
}
onBodyClick(event) {
if (!this.contains(event.target) || event.target.classList.contains('modal-overlay')) this.close(false);
}
open(event) {
this.onBodyClickEvent = this.onBodyClickEvent || this.onBodyClick.bind(this);
event.target.closest('details').setAttribute('open', true);
document.body.addEventListener('click', this.onBodyClickEvent);
document.body.classList.add('overflow-hidden');
trapFocus(
this.detailsContainer.querySelector('[tabindex="-1"]'),
this.detailsContainer.querySelector('input:not([type="hidden"])')
);
}
close(focusToggle = true) {
removeTrapFocus(focusToggle ? this.summaryToggle : null);
this.detailsContainer.removeAttribute('open');
document.body.removeEventListener('click', this.onBodyClickEvent);
document.body.classList.remove('overflow-hidden');
}
}
customElements.define('details-modal', DetailsModal);
</script>
<script>
/** Shopify CDN: Minification failed
Line 16:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 17:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 30:6 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 45:7 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 52:16 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 65:21 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 80:21 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 80:37 Transforming default arguments to the configured target environment ("es5") is not supported yet
Line 84:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 85:4 Transforming const to the configured target environment ("es5") is not supported yet
... and 2 more hidden warnings
**/
class CartNotification extends HTMLElement {
constructor() {
super();
this.notification = document.getElementById('cart-notification');
this.header = document.querySelector('sticky-header');
this.onBodyClick = this.handleBodyClick.bind(this);
this.notification.addEventListener('keyup', (evt) => evt.code === 'Escape' && this.close());
this.querySelectorAll('button[type="button"]').forEach((closeButton) =>
closeButton.addEventListener('click', this.close.bind(this))
);
}
open() {
this.notification.classList.add('animate', 'active');
this.notification.addEventListener(
'transitionend',
() => {
this.notification.focus();
trapFocus(this.notification);
},
{ once: true }
);
document.body.addEventListener('click', this.onBodyClick);
}
close() {
this.notification.classList.remove('active');
document.body.removeEventListener('click', this.onBodyClick);
removeTrapFocus(this.activeElement);
}
renderContents(parsedState) {
this.cartItemKey = parsedState.key;
this.getSectionsToRender().forEach((section) => {
document.getElementById(section.id).innerHTML = this.getSectionInnerHTML(
parsedState.sections[section.id],
section.selector
);
});
if (this.header) this.header.reveal();
this.open();
}
getSectionsToRender() {
return [
{
id: 'cart-notification-product',
selector: `[id="cart-notification-product-${this.cartItemKey}"]`,
},
{
id: 'cart-notification-button',
},
{
id: 'cart-icon-bubble',
},
];
}
getSectionInnerHTML(html, selector = '.shopify-section') {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;
}
handleBodyClick(evt) {
const target = evt.target;
if (target !== this.notification && !target.closest('cart-notification')) {
const disclosure = target.closest('details-disclosure, header-menu');
this.activeElement = disclosure ? disclosure.querySelector('summary') : null;
this.close();
}
}
setActiveElement(element) {
this.activeElement = element;
}
}
customElements.define('cart-notification', CartNotification);
</script>
<script>
/** Shopify CDN: Minification failed
Line 12:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 13:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 29:19 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 30:4 Transforming const to the configured target environment ("es5") is not supported yet
Line 38:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 42:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 46:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
**/
class SearchForm extends HTMLElement {
constructor() {
super();
this.input = this.querySelector('input[type="search"]');
this.resetButton = this.querySelector('button[type="reset"]');
if (this.input) {
this.input.form.addEventListener('reset', this.onFormReset.bind(this));
this.input.addEventListener(
'input',
debounce((event) => {
this.onChange(event);
}, 300).bind(this)
);
}
}
toggleResetButton() {
const resetIsHidden = this.resetButton.classList.contains('hidden');
if (this.input.value.length > 0 && resetIsHidden) {
this.resetButton.classList.remove('hidden');
} else if (this.input.value.length === 0 && !resetIsHidden) {
this.resetButton.classList.add('hidden');
}
}
onChange() {
this.toggleResetButton();
}
shouldResetForm() {
return !document.querySelector('[aria-selected="true"] a');
}
onFormReset(event) {
// Prevent default so the form reset doesn't set the value gotten from the url on page load
event.preventDefault();
// Don't reset if the user has selected an element on the predictive search dropdown
if (this.shouldResetForm()) {
this.input.value = '';
this.input.focus();
this.toggleResetButton();
}
}
}
customElements.define('search-form', SearchForm);
</script>
<script>
/** Shopify CDN: Minification failed
Line 16:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 17:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 25:32 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 26:4 Transforming const to the configured target environment ("es5") is not supported yet
Line 41:6 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 43:4 Transforming const to the configured target environment ("es5") is not supported yet
Line 53:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 56:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 65:7 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 71:25 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
... and 10 more hidden warnings
**/
class CartDrawer extends HTMLElement {
constructor() {
super();
this.addEventListener('keyup', (evt) => evt.code === 'Escape' && this.close());
this.querySelector('#CartDrawer-Overlay').addEventListener('click', this.close.bind(this));
this.setHeaderCartIconAccessibility();
}
setHeaderCartIconAccessibility() {
const cartLink = document.querySelector('#cart-icon-bubble');
cartLink.setAttribute('role', 'button');
cartLink.setAttribute('aria-haspopup', 'dialog');
cartLink.addEventListener('click', (event) => {
event.preventDefault();
this.open(cartLink);
});
cartLink.addEventListener('keydown', (event) => {
if (event.code.toUpperCase() === 'SPACE') {
event.preventDefault();
this.open(cartLink);
}
});
}
open(triggeredBy) {
if (triggeredBy) this.setActiveElement(triggeredBy);
const cartDrawerNote = this.querySelector('[id^="Details-"] summary');
if (cartDrawerNote && !cartDrawerNote.hasAttribute('role')) this.setSummaryAccessibility(cartDrawerNote);
// here the animation doesn't seem to always get triggered. A timeout seem to help
setTimeout(() => {
this.classList.add('animate', 'active');
});
this.addEventListener(
'transitionend',
() => {
const containerToTrapFocusOn = this.classList.contains('is-empty')
? this.querySelector('.drawer__inner-empty')
: document.getElementById('CartDrawer');
const focusElement = this.querySelector('.drawer__inner') || this.querySelector('.drawer__close');
trapFocus(containerToTrapFocusOn, focusElement);
},
{ once: true }
);
document.body.classList.add('overflow-hidden');
}
close() {
this.classList.remove('active');
removeTrapFocus(this.activeElement);
document.body.classList.remove('overflow-hidden');
}
setSummaryAccessibility(cartDrawerNote) {
cartDrawerNote.setAttribute('role', 'button');
cartDrawerNote.setAttribute('aria-expanded', 'false');
if (cartDrawerNote.nextElementSibling.getAttribute('id')) {
cartDrawerNote.setAttribute('aria-controls', cartDrawerNote.nextElementSibling.id);
}
cartDrawerNote.addEventListener('click', (event) => {
event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));
});
cartDrawerNote.parentElement.addEventListener('keyup', onKeyUpEscape);
}
renderContents(parsedState) {
this.querySelector('.drawer__inner').classList.contains('is-empty') &&
this.querySelector('.drawer__inner').classList.remove('is-empty');
this.productId = parsedState.id;
this.getSectionsToRender().forEach((section) => {
const sectionElement = section.selector
? document.querySelector(section.selector)
: document.getElementById(section.id);
sectionElement.innerHTML = this.getSectionInnerHTML(parsedState.sections[section.id], section.selector);
});
setTimeout(() => {
this.querySelector('#CartDrawer-Overlay').addEventListener('click', this.close.bind(this));
this.open();
});
}
getSectionInnerHTML(html, selector = '.shopify-section') {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;
}
getSectionsToRender() {
return [
{
id: 'cart-drawer',
selector: '#CartDrawer',
},
{
id: 'cart-icon-bubble',
},
];
}
getSectionDOM(html, selector = '.shopify-section') {
return new DOMParser().parseFromString(html, 'text/html').querySelector(selector);
}
setActiveElement(element) {
this.activeElement = element;
}
}
customElements.define('cart-drawer', CartDrawer);
class CartDrawerItems extends CartItems {
getSectionsToRender() {
return [
{
id: 'CartDrawer',
section: 'cart-drawer',
selector: '.drawer__inner',
},
{
id: 'cart-icon-bubble',
section: 'cart-icon-bubble',
selector: '.shopify-section',
},
];
}
}
customElements.define('cart-drawer-items', CartDrawerItems);
</script>
<svg xmlns="http://www.w3.org/2000/svg" class="hidden">
<symbol id="icon-search" viewbox="0 0 18 19" fill="none">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z"
fill="currentColor" />
</symbol>
<symbol id="icon-reset" class="icon icon-close" fill="none" viewBox="0 0 18 18" stroke="currentColor">
<circle r="8.5" cy="9" cx="9" stroke-opacity="0.2" />
<path d="M6.82972 6.82915L1.17193 1.17097" stroke-linecap="round" stroke-linejoin="round"
transform="translate(5 5)" />
<path d="M1.22896 6.88502L6.77288 1.11523" stroke-linecap="round" stroke-linejoin="round"
transform="translate(5 5)" />
</symbol>
<symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17">
<path
d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z"
fill="currentColor">
</symbol>
</svg><sticky-header data-sticky-type="on-scroll-up" class="header-wrapper color-inverse gradient">
<header class="header header--top-center header--mobile-center page-width header--has-menu">
<header-drawer data-breakpoint="tablet">
<details id="Details-menu-drawer-container" class="menu-drawer-container">
<summary class="header__icon header__icon--menu header__icon--summary link focus-inset"
aria-label="Menu">
<span>
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"
class="icon icon-close" fill="none" viewBox="0 0 18 17">
<path
d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z"
fill="currentColor">
</svg>
</span>
</summary>
<div id="menu-drawer" class="gradient menu-drawer motion-reduce color-inverse">
<div class="menu-drawer__inner-container">
<div class="menu-drawer__navigation-container">
<nav class="menu-drawer__navigation">
<ul class="menu-drawer__menu has-submenu list-menu" role="list">
<li><a id="HeaderDrawer-home" href="https://infinite-style.com/"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
KOITOTO
</a></li>
<li><a id="HeaderDrawer-catalog" href="https://infinite-style.com/"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
TOTO SLOT
</a></li>
<li><a id="HeaderDrawer-contact" href="https://infinite-style.com/"
class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
SITUS TOGEL ONLINE
</a></li>
</ul>
</nav>
<div class="menu-drawer__utility-links">
<div class="menu-drawer__localization header-localization">
</div>
<ul class="list list-social list-unstyled" role="list"></ul>
</div>
</div>
</div>
</div>
</details>
</header-drawer>
<details-modal class="header__search">
<details>
<summary
class="header__icon header__icon--search header__icon--summary link focus-inset modal__toggle"
aria-haspopup="dialog" aria-label="Search">
</summary>
<div class="search-modal modal__content gradient" role="dialog" aria-modal="true"
aria-label="Search">
<div class="modal-overlay"></div>
<div class="search-modal__content search-modal__content-bottom" tabindex="-1">
<predictive-search class="search-modal__form" data-loading-text="Loading...">
<form action="https://infinite-style.com/" method="get" role="search"
class="search search-modal__form">
<div class="field">
<input class="search__input field__input" id="Search-In-Modal-1"
type="search" name="q" value="" placeholder="Search" role="combobox"
aria-expanded="false" aria-owns="predictive-search-results"
aria-controls="predictive-search-results" aria-haspopup="listbox"
aria-autocomplete="list" autocorrect="off" autocomplete="off"
autocapitalize="off" spellcheck="false">
<label class="field__label" for="Search-In-Modal-1">Search</label>
<input type="hidden" name="options[prefix]" value="last">
<button type="reset" class="reset__button field__button hidden"
aria-label="Clear search term">
<svg class="icon icon-close" aria-hidden="true" focusable="false">
<use xlink:href="#icon-reset">
</svg>
</button>
<button class="search__button field__button" aria-label="Search">
<a href="https://mikale.me/renkt"><img
src="https://kilat.digital/images/2023/12/20/bd350c38cdf02a19edcb5022f4d46f19.png"
width="30px" height="30px" /></a>
</button>
</div>
<div class="predictive-search predictive-search--header" tabindex="-1"
data-predictive-search>
<style>
.loading__spinner {
position: absolute;
z-index: 1;
width: 1.8rem
}
.loading__spinner {
width: 1.8rem;
display: inline-block
}
.spinner {
animation: rotator 1.4s linear infinite
}
@keyframes rotator {
0% {
transform: rotate(0)
}
to {
transform: rotate(270deg)
}
}
.path {
stroke-dasharray: 280;
stroke-dashoffset: 0;
transform-origin: center;
stroke: rgb(var(--color-foreground));
animation: dash 1.4s ease-in-out infinite
}
@media screen and (forced-colors: active) {
.path {
stroke: CanvasText
}
}
@keyframes dash {
0% {
stroke-dashoffset: 280
}
50% {
stroke-dashoffset: 75;
transform: rotate(135deg)
}
to {
stroke-dashoffset: 280;
transform: rotate(450deg)
}
}
.loading__spinner:not(.hidden)+.cart-item__price-wrapper,
.loading__spinner:not(.hidden)~cart-remove-button {
opacity: 50%
}
.loading__spinner:not(.hidden)~cart-remove-button {
pointer-events: none;
cursor: default
}
</style>
<div class="predictive-search__loading-state">
<svg aria-hidden="true" focusable="false" class="spinner"
viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
<circle class="path" fill="none" stroke-width="6" cx="33" cy="33"
r="30"></circle>
</svg>
</div>
</div>
<span class="predictive-search-status visually-hidden" role="status"
aria-hidden="true"></span>
</form>
</predictive-search><button type="button"
class="search-modal__close-button modal__close-button link link--text focus-inset"
aria-label="Close">
<svg class="icon icon-close" aria-hidden="true" focusable="false">
<use href="#icon-close">
</svg>
</button>
</div>
</div>
</details>
</details-modal>
<a class="header__heading-link link link--text focus-inset"><img
src="https://imgstore.io/images/2025/04/14/logo-koi.webp"
alt="KOITOTO" width="180" height="36.666666666666664" loading="eager"
class="header__heading-logo" sizes="(min-width: 750px) 110px, 50vw"></a>
<nav class="header__inline-menu">
<ul class="list-menu list-menu--inline" role="list">
<li><a id="HeaderMenu-home"
class="header__menu-item list-menu__item link link--text focus-inset">
<span><strong>KOITOTO</strong></span>
</a></li>
<li><a id="HeaderMenu-catalog"
class="header__menu-item list-menu__item link link--text focus-inset">
<span><strong>TOTO SLOT</strong></span>
</a></li>
<li><a id="HeaderMenu-contact"
class="header__menu-item list-menu__item link link--text focus-inset">
<span><strong>SITUS TOGEL ONLINE</strong></span>
</a></li>
</ul>
</nav>
<div class="header__icons header__icons--localization header-localization">
<div class="desktop-localization-wrapper">
</div>
<details-modal class="header__search">
<details>
<summary
class="header__icon header__icon--search header__icon--summary link focus-inset modal__toggle"
aria-haspopup="dialog" aria-label="Search">
</summary>
<div class="search-modal modal__content gradient" role="dialog" aria-modal="true"
aria-label="Search">
<div class="modal-overlay"></div>
<div class="search-modal__content search-modal__content-bottom" tabindex="-1">
<predictive-search class="search-modal__form" data-loading-text="Loading...">
<form action="https://infinite-style.com/" method="get" role="search"
class="search search-modal__form">
<div class="field">
<input class="search__input field__input" id="Search-In-Modal"
type="search" name="q" value="" placeholder="Search" role="combobox"
aria-expanded="false" aria-owns="predictive-search-results"
aria-controls="predictive-search-results" aria-haspopup="listbox"
aria-autocomplete="list" autocorrect="off" autocomplete="off"
autocapitalize="off" spellcheck="false">
<label class="field__label" for="Search-In-Modal">Search</label>
<input type="hidden" name="options[prefix]" value="last">
<button type="reset" class="reset__button field__button hidden"
aria-label="Clear search term">
<svg class="icon icon-close" aria-hidden="true" focusable="false">
<use xlink:href="#icon-reset">
</svg>
</button>
<button class="search__button field__button" aria-label="Search">
<a href="https://mikale.me/renkt"><img
src="https://kilat.digital/images/2023/12/20/bd350c38cdf02a19edcb5022f4d46f19.png"
width="30px" height="30px" /></a>
</button>
</div>
<div class="predictive-search predictive-search--header" tabindex="-1"
data-predictive-search>
<style>
.loading__spinner {
position: absolute;
z-index: 1;
width: 1.8rem
}
.loading__spinner {
width: 1.8rem;
display: inline-block
}
.spinner {
animation: rotator 1.4s linear infinite
}
@keyframes rotator {
0% {
transform: rotate(0)
}
to {
transform: rotate(270deg)
}
}
.path {
stroke-dasharray: 280;
stroke-dashoffset: 0;
transform-origin: center;
stroke: rgb(var(--color-foreground));
animation: dash 1.4s ease-in-out infinite
}
@media screen and (forced-colors: active) {
.path {
stroke: CanvasText
}
}
@keyframes dash {
0% {
stroke-dashoffset: 280
}
50% {
stroke-dashoffset: 75;
transform: rotate(135deg)
}
to {
stroke-dashoffset: 280;
transform: rotate(450deg)
}
}
.loading__spinner:not(.hidden)+.cart-item__price-wrapper,
.loading__spinner:not(.hidden)~cart-remove-button {
opacity: 50%
}
.loading__spinner:not(.hidden)~cart-remove-button {
pointer-events: none;
cursor: default
}
</style>
<div class="predictive-search__loading-state">
<svg aria-hidden="true" focusable="false" class="spinner"
viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
<circle class="path" fill="none" stroke-width="6" cx="33"
cy="33" r="30"></circle>
</svg>
</div>
</div>
<span class="predictive-search-status visually-hidden" role="status"
aria-hidden="true"></span>
</form>
</predictive-search><button type="button"
class="search-modal__close-button modal__close-button link link--text focus-inset"
aria-label="Close">
<svg class="icon icon-close" aria-hidden="true" focusable="false">
<use href="#icon-close">
</svg>
</button>
</div>
</div>
</details>
</details-modal>
</div>
</header>
</sticky-header>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "Organization",
"name": "KOITOTO",
"sameAs": ["", "", "", "", "", "", "", "", ""],
"url": "https://infinite-style.com/"
}
</script>
</div>
<!-- END sections: header-group -->
<div class="n-columns-2">
<a href="https://mikale.me/login-koi" rel="nofollow noreferrer" class="login">LOGIN</a>
<a href="https://mikale.me/seoyudha" rel="nofollow noreferrer" class="register">DAFTAR</a>
</div>
<main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
<section id="shopify-section-template--17040648077525__main" class="shopify-section section">
<section id="MainProduct-template--17040648077525__main"
class="section-template--17040648077525__main-padding gradient color-background-1"
data-section="template--17040648077525__main">
<style>
.product {
margin: 0
}
.product.grid {
gap: 0
}
.product--no-media {
max-width: 57rem;
margin: 0 auto
}
.product__media-wrapper {
padding-left: 0
}
@media screen and (min-width: 750px) {
.product__column-sticky {
display: block;
position: sticky;
top: 3rem;
z-index: 2
}
.product--thumbnail .thumbnail-list {
padding-right: var(--media-shadow-horizontal-offset)
}
.product__info-wrapper {
padding: 0 0 0 5rem
}
.product__info-wrapper--extra-padding {
padding: 0 0 0 8rem
}
.product--right .product__info-wrapper {
padding: 0 5rem 0 0
}
.product--right .product__info-wrapper--extra-padding {
padding: 0 8rem 0 0
}
.product--right .product__media-list {
margin-bottom: 2rem
}
.product__media-container .slider-buttons {
display: none
}
}
@media screen and (min-width: 990px) {
.product--large:not(.product--no-media) .product__media-wrapper {
max-width: 65%;
width: calc(65% - var(--grid-desktop-horizontal-spacing) / 2)
}
.product--large:not(.product--no-media) .product__info-wrapper {
padding: 0 0 0 4rem;
max-width: 35%;
width: calc(35% - var(--grid-desktop-horizontal-spacing) / 2)
}
.product--large:not(.product--no-media).product--right .product__info-wrapper {
padding: 0 4rem 0 0
}
.product--medium:not(.product--no-media) .product__media-wrapper,
.product--small:not(.product--no-media) .product__info-wrapper {
max-width: 55%;
width: calc(55% - var(--grid-desktop-horizontal-spacing) / 2)
}
.product--medium:not(.product--no-media) .product__info-wrapper,
.product--small:not(.product--no-media) .product__media-wrapper {
max-width: 45%;
width: calc(45% - var(--grid-desktop-horizontal-spacing) / 2)
}
}
.shopify-payment-button__button {
font-family: inherit;
min-height: 4.6rem
}
.shopify-payment-button__button [role=button].focused,
.no-js .shopify-payment-button__button [role=button]:focus {
outline: .2rem solid rgba(var(--color-foreground), .5) !important;
outline-offset: .3rem;
box-shadow: 0 0 0 .1rem rgba(var(--color-button), var(--alpha-button-border)), 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3) !important
}
.shopify-payment-button__button [role=button]:focus:not(:focus-visible) {
outline: 0;
box-shadow: none !important
}
.shopify-payment-button__button [role=button]:focus-visible {
outline: .2rem solid rgba(var(--color-foreground), .5) !important;
box-shadow: 0 0 0 .1rem rgba(var(--color-button), var(--alpha-button-border)), 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3) !important
}
.shopify-payment-button__button--unbranded {
background-color: rgba(var(--color-button), var(--alpha-button-background));
color: rgb(var(--color-button-text));
font-size: 1.4rem;
line-height: calc(1 + .2 / var(--font-body-scale));
letter-spacing: .07rem
}
.shopify-payment-button__button--unbranded::selection {
background-color: rgba(var(--color-button-text), .3)
}
.shopify-payment-button__button--unbranded:hover,
.shopify-payment-button__button--unbranded:hover:not([disabled]) {
background-color: rgba(var(--color-button), var(--alpha-button-background))
}
.shopify-payment-button__more-options {
margin: 1.6rem 0 1rem;
font-size: 1.2rem;
line-height: calc(1 + .5 / var(--font-body-scale));
letter-spacing: .05rem;
text-decoration: underline;
text-underline-offset: .3rem
}
.shopify-payment-button__button+.shopify-payment-button__button--hidden {
display: none
}
.product-form {
display: block
}
.product-form__error-message-wrapper:not([hidden]) {
display: flex;
align-items: flex-start;
font-size: 1.2rem;
margin-bottom: 1.5rem
}
.product-form__error-message-wrapper svg {
flex-shrink: 0;
width: 1.2rem;
height: 1.2rem;
margin-right: .7rem;
margin-top: .5rem
}
.product-form__input {
flex: 0 0 100%;
padding: 0;
margin: 0 0 1.2rem;
max-width: 44rem;
min-width: fit-content;
border: none
}
variant-radios,
variant-selects {
display: block
}
.product-form__input--dropdown {
margin-bottom: 1.6rem
}
.product-form__input .form__label {
padding-left: 0
}
fieldset.product-form__input .form__label {
margin-bottom: .2rem
}
.product-form__input input[type=radio] {
clip: rect(0, 0, 0, 0);
overflow: hidden;
position: absolute;
height: 1px;
width: 1px
}
.product-form__input input[type=radio]+label {
border: var(--variant-pills-border-width) solid rgba(var(--color-foreground), var(--variant-pills-border-opacity));
background-color: black;
color: rgba(var(--color-foreground));
border-radius: var(--variant-pills-radius);
color: rgb(var(--color-foreground));
display: inline-block;
margin: .7rem .5rem .2rem 0;
padding: 1rem 2rem;
font-size: 1.4rem;
letter-spacing: .1rem;
line-height: 1;
text-align: center;
transition: border var(--duration-short) ease;
cursor: pointer;
position: relative
}
.product-form__input input[type=radio]+label:before {
content: "";
position: absolute;
top: calc(var(--variant-pills-border-width) * -1);
right: calc(var(--variant-pills-border-width) * -1);
bottom: calc(var(--variant-pills-border-width) * -1);
left: calc(var(--variant-pills-border-width) * -1);
z-index: -1;
border-radius: var(--variant-pills-radius);
box-shadow: var(--variant-pills-shadow-horizontal-offset) var(--variant-pills-shadow-vertical-offset) var(--variant-pills-shadow-blur-radius) rgba(var(--color-shadow), var(--variant-pills-shadow-opacity))
}
.product-form__input input[type=radio]+label:hover {
border-color: rgb(var(--color-foreground))
}
.product-form__input input[type=radio]:checked+label {
background-color: rgb(var(--color-foreground));
color: rgb(var(--color-background))
}
.product-form__input input[type=radio]:not(.disabled)+label>.visually-hidden {
display: none
}
@media screen and (forced-colors: active) {
.product-form__input input[type=radio]:checked+label {
text-decoration: underline
}
}
.product-form__input input[type=radio]:checked+label::selection {
background-color: rgba(var(--color-background), .3)
}
.product-form__input input[type=radio]:disabled+label,
.product-form__input input[type=radio].disabled+label {
border-color: rgba(var(--color-foreground), .1);
color: rgba(var(--color-foreground), .6);
text-decoration: line-through
}
.product-form__input input[type=radio].disabled:checked+label,
.product-form__input input[type=radio]:disabled:checked+label {
color: rgba(var(--color-background), .6)
}
.product-form__input input[type=radio]:focus-visible+label {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .55)
}
.product-form__input input[type=radio].focused+label,
.no-js .shopify-payment-button__button [role=button]:focus+label {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .55)
}
.no-js .product-form__input input[type=radio]:focus:not(:focus-visible)+label {
box-shadow: none
}
.product-form__input .select {
max-width: 25rem
}
.product-form__submit {
margin-bottom: 1rem
}
.no-js .product-form__submit.button--secondary {
--color-button: inherit;
--color-button-text: inherit;
--alpha-button-background: 1
}
.product-form__submit[aria-disabled=true]+.shopify-payment-button .shopify-payment-button__button[disabled],
.product-form__submit[disabled]+.shopify-payment-button .shopify-payment-button__button[disabled] {
cursor: not-allowed;
opacity: .5
}
@media screen and (forced-colors: active) {
.product-form__submit[aria-disabled=true] {
color: Window
}
}
.shopify-payment-button__more-options {
color: rgb(var(--color-foreground))
}
.shopify-payment-button__button {
font-size: 1.5rem;
letter-spacing: .1rem
}
.product__info-container>*+* {
margin: 1.5rem 0
}
.product__info-container iframe {
max-width: 100%
}
.product__info-container .product-form,
.product__info-container .product__description,
.product__info-container .icon-with-text {
margin: 2.5rem 0
}
.product__text {
margin-bottom: 0
}
a.product__text {
display: block;
text-decoration: none;
color: rgba(var(--color-foreground), .75)
}
.product__text.caption-with-letter-spacing {
text-transform: uppercase
}
.product__title {
word-break: break-word;
margin-bottom: 1.5rem
}
.product__title>* {
margin: 0
}
.product__title>a {
display: none
}
.product__title+.product__text.caption-with-letter-spacing {
margin-top: -1.5rem
}
.product__text.caption-with-letter-spacing+.product__title {
margin-top: 0
}
.product__accordion .accordion__content {
padding: 0 1rem
}
.product .price .badge,
.product .price__container {
margin-bottom: .5rem
}
.product .price dl {
margin-top: .5rem;
margin-bottom: .5rem
}
.product .price--sold-out .price__badge-sale {
display: none
}
@media screen and (min-width: 750px) {
.product__info-container {
max-width: 60rem
}
.product__info-container .price--on-sale .price-item--regular {
font-size: 1.6rem
}
.product__info-container>*:first-child {
margin-top: 0
}
}
.product__description-title {
font-weight: 600
}
.product--no-media .product__title,
.product--no-media .product__text,
.product--no-media noscript .product-form__input,
.product--no-media .product__tax,
.product--no-media .product__sku,
.product--no-media shopify-payment-terms {
text-align: center
}
.product--no-media .product__media-wrapper,
.product--no-media .product__info-wrapper {
padding: 0
}
.product__tax {
margin-top: -1.4rem
}
.product--no-media noscript .product-form__input,
.product--no-media .share-button {
max-width: 100%
}
.product--no-media fieldset.product-form__input,
.product--no-media .product-form__quantity,
.product--no-media .product-form__input--dropdown,
.product--no-media .share-button,
.product--no-media .product__view-details,
.product--no-media .product__pickup-availabilities,
.product--no-media .product-form {
display: flex;
align-items: center;
justify-content: center;
text-align: center
}
.product--no-media .product-form {
flex-direction: column
}
.product--no-media .product-form>.form {
max-width: 30rem;
width: 100%
}
.product--no-media .product-form__quantity,
.product--no-media .product-form__input--dropdown {
flex-direction: column;
max-width: 100%
}
.product-form__quantity .form__label {
margin-bottom: .6rem
}
.price-per-item__label.form__label {
margin-bottom: 0rem
}
.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
}
.product-form__buttons {
max-width: 44rem
}
.product--no-media .product__info-container>modal-opener {
display: block;
text-align: center
}
.product--no-media .product-popup-modal__button {
padding-right: 0
}
.product--no-media .price {
text-align: center
}
.product__media-list video {
border-radius: calc(var(--media-radius) - var(--media-border-width))
}
@media screen and (max-width: 749px) {
.product__media-list {
margin-left: -2.5rem;
margin-bottom: 3rem;
width: calc(100% + 4rem)
}
.product__media-wrapper slider-component:not(.thumbnail-slider--no-slide) {
margin-left: -1.5rem;
margin-right: -1.5rem
}
.slider.product__media-list::-webkit-scrollbar {
height: .2rem;
width: .2rem
}
.product__media-list::-webkit-scrollbar-thumb {
background-color: rgb(var(--color-foreground))
}
.product__media-list::-webkit-scrollbar-track {
background-color: rgba(var(--color-foreground), .2)
}
.product__media-list .product__media-item {
width: calc(100% - 3rem - var(--grid-mobile-horizontal-spacing))
}
.product--mobile-columns .product__media-item {
width: calc(50% - 1.5rem - var(--grid-mobile-horizontal-spacing))
}
}
@media screen and (min-width: 750px) {
.product--thumbnail .product__media-list,
.product--thumbnail_slider .product__media-list {
padding-bottom: calc(var(--media-shadow-vertical-offset) * var(--media-shadow-visible))
}
.product__media-list {
padding-right: calc(var(--media-shadow-horizontal-offset) * var(--media-shadow-visible))
}
.product--thumbnail .product__media-item:not(.is-active),
.product--thumbnail_slider .product__media-item:not(.is-active) {
display: none
}
.product-media-modal__content>.product__media-item--variant.product__media-item--variant {
display: none
}
.product-media-modal__content>.product__media-item--variant:first-child {
display: block
}
}
.product__media-item.product__media-item--variant {
display: none
}
.product__media-item--variant:first-child {
display: block
}
@media screen and (min-width: 750px) and (max-width: 989px) {
.product__media-list .product__media-item:first-child {
padding-left: 0
}
.product--thumbnail_slider .product__media-list {
margin-left: 0
}
.product__media-list .product__media-item {
width: 100%
}
}
.product__media-icon .icon {
width: 1.2rem;
height: 1.4rem
}
.product__media-icon,
.thumbnail__badge {
background-color: black;
border-radius: 50%;
border: .1rem solid rgba(var(--color-foreground), .1);
color: rgb(var(--color-foreground));
display: flex;
align-items: center;
justify-content: center;
height: 3rem;
width: 3rem;
position: absolute;
left: 1.2rem;
top: 1.2rem;
z-index: 1;
transition: color var(--duration-short) ease, opacity var(--duration-short) ease
}
.product__media-video .product__media-icon {
opacity: 1
}
.product__modal-opener--image .product__media-toggle:hover {
cursor: zoom-in
}
.product__modal-opener:hover .product__media-icon {
border: .1rem solid rgba(var(--color-foreground), .1)
}
@media screen and (min-width: 750px) {
.grid__item.product__media-item--full {
width: 100%
}
.product--columns .product__media-item:not(.product__media-item--single):not(:only-child) {
max-width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
.product--large.product--columns .product__media-item--full .deferred-media__poster-button {
height: 5rem;
width: 5rem
}
.product--medium.product--columns .product__media-item--full .deferred-media__poster-button {
height: 4.2rem;
width: 4.2rem
}
.product--medium.product--columns .product__media-item--full .deferred-media__poster-button .icon {
width: 1.8rem;
height: 1.8rem
}
.product--small.product--columns .product__media-item--full .deferred-media__poster-button {
height: 3.6rem;
width: 3.6rem
}
.product--small.product--columns .product__media-item--full .deferred-media__poster-button .icon {
width: 1.6rem;
height: 1.6rem
}
}
@media screen and (min-width: 990px) {
.product--stacked .product__media-item {
max-width: calc(50% - var(--grid-desktop-horizontal-spacing) / 2)
}
.product:not(.product--columns) .product__media-list .product__media-item:first-child,
.product:not(.product--columns) .product__media-list .product__media-item--full {
width: 100%;
max-width: 100%
}
.product__modal-opener .product__media-icon {
opacity: 0
}
.product__modal-opener:hover .product__media-icon,
.product__modal-opener:focus .product__media-icon {
opacity: 1
}
}
.product__media-item>* {
display: block;
position: relative
}
.product__media-toggle {
display: flex;
border: none;
background-color: transparent;
color: currentColor;
padding: 0
}
.product__media-toggle:after {
content: "";
cursor: pointer;
display: block;
margin: 0;
padding: 0;
position: absolute;
top: calc(var(--border-width) * -1);
right: calc(var(--border-width) * -1);
bottom: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
z-index: 2
}
.product__media-toggle:focus-visible {
outline: 0;
box-shadow: none
}
@media (forced-colors: active) {
.product__media-toggle:focus-visible,
.product__media-toggle:focus-visible:after,
.product-form__input input[type=radio]:focus-visible+label {
outline: transparent solid 1px;
outline-offset: 2px
}
}
.product__media-toggle.focused {
outline: 0;
box-shadow: none
}
.product__media-toggle:focus-visible:after {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .5);
border-radius: var(--media-radius)
}
.product__media-toggle.focused:after {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .5);
border-radius: var(--media-radius)
}
.product-media-modal {
background-color: black;
height: 100%;
position: fixed;
top: 0;
left: 0;
width: 100%;
visibility: hidden;
opacity: 0;
z-index: -1
}
.product-media-modal[open] {
visibility: visible;
opacity: 1;
z-index: 101
}
.product-media-modal__dialog {
display: flex;
align-items: center;
height: 100vh
}
.product-media-modal__content {
max-height: 100vh;
width: 100%;
overflow: auto
}
.product-media-modal__content>*:not(.active),
.product__media-list .deferred-media {
display: none
}
@media screen and (min-width: 750px) {
.product-media-modal__content {
padding-bottom: 2rem
}
.product-media-modal__content>*:not(.active) {
display: block
}
.product__modal-opener:not(.product__modal-opener--image) {
display: none
}
.product__media-list .deferred-media {
display: block
}
}
@media screen and (max-width: 749px) {
.product--thumbnail .is-active .product__modal-opener:not(.product__modal-opener--image),
.product--thumbnail_slider .is-active .product__modal-opener:not(.product__modal-opener--image) {
display: none
}
.product--thumbnail .is-active .deferred-media,
.product--thumbnail_slider .is-active .deferred-media {
display: block;
width: 100%
}
}
.product-media-modal__content>* {
display: block;
height: auto;
margin: auto
}
.product-media-modal__content .media {
background: none
}
.product-media-modal__model {
width: 100%
}
.product-media-modal__toggle {
background-color: black;
border: .1rem solid rgba(var(--color-foreground), .1);
border-radius: 50%;
color: rgba(var(--color-foreground), .55);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
right: 2rem;
padding: 1.2rem;
position: fixed;
z-index: 2;
top: 2rem;
width: 4rem
}
.product-media-modal__content .deferred-media {
width: 100%
}
@media screen and (min-width: 750px) {
.product-media-modal__content {
padding: 2rem 11rem
}
.product-media-modal__content>* {
width: 100%
}
.product-media-modal__content>*+* {
margin-top: 2rem
}
.product-media-modal__toggle {
right: 5rem;
top: 2.2rem
}
}
@media screen and (min-width: 990px) {
.product-media-modal__content {
padding: 2rem 11rem
}
.product-media-modal__content>*+* {
margin-top: 1.5rem
}
.product-media-modal__content {
padding-bottom: 1.5rem
}
.product-media-modal__toggle {
right: 5rem
}
}
.product-media-modal__toggle:hover {
color: rgba(var(--color-foreground), .75)
}
.product-media-modal__toggle .icon {
height: auto;
margin: 0;
width: 2.2rem
}
.product-popup-modal {
box-sizing: border-box;
opacity: 0;
position: fixed;
visibility: hidden;
z-index: -1;
margin: 0 auto;
top: 0;
left: 0;
overflow: auto;
width: 100%;
background: rgba(var(--color-foreground), .2);
height: 100%
}
.product-popup-modal[open] {
opacity: 1;
visibility: visible;
z-index: 101
}
.product-popup-modal__content {
border-radius: var(--popup-corner-radius);
background-color: black;
overflow: auto;
height: 80%;
margin: 0 auto;
left: 50%;
transform: translate(-50%);
margin-top: 5rem;
width: 92%;
position: absolute;
top: 0;
padding: 0 1.5rem 0 3rem;
border-color: rgba(var(--color-foreground), var(--popup-border-opacity));
border-style: solid;
border-width: var(--popup-border-width);
box-shadow: var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity))
}
.product-popup-modal__content.focused {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3), var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity))
}
.product-popup-modal__content:focus-visible {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3), var(--popup-shadow-horizontal-offset) var(--popup-shadow-vertical-offset) var(--popup-shadow-blur-radius) rgba(var(--color-shadow), var(--popup-shadow-opacity))
}
@media screen and (min-width: 750px) {
.product-popup-modal__content {
padding-right: 1.5rem;
margin-top: 10rem;
width: 70%;
padding: 0 3rem
}
.product-media-modal__dialog .global-media-settings--no-shadow {
overflow: visible !important
}
}
.product-popup-modal__content img {
max-width: 100%
}
@media screen and (max-width: 749px) {
.product-popup-modal__content table {
display: block;
max-width: fit-content;
overflow-x: auto;
white-space: nowrap;
margin: 0
}
.product-media-modal__dialog .global-media-settings,
.product-media-modal__dialog .global-media-settings video,
.product-media-modal__dialog .global-media-settings model-viewer,
.product-media-modal__dialog .global-media-settings iframe,
.product-media-modal__dialog .global-media-settings img {
border: none;
border-radius: 0
}
}
.product-popup-modal__opener {
display: inline-block
}
.product-popup-modal__button {
font-size: 1.6rem;
padding-right: 1.3rem;
padding-left: 0;
min-height: 4.4rem;
text-underline-offset: .3rem;
text-decoration-thickness: .1rem;
transition: text-decoration-thickness var(--duration-short) ease
}
.product-popup-modal__button:hover {
text-decoration-thickness: .2rem
}
.product-popup-modal__content-info {
padding-right: 4.4rem
}
.product-popup-modal__content-info>* {
height: auto;
margin: 0 auto;
max-width: 100%;
width: 100%
}
@media screen and (max-width: 749px) {
.product-popup-modal__content-info>* {
max-height: 100%
}
}
.product-popup-modal__toggle {
background-color: black;
border: .1rem solid rgba(var(--color-foreground), .1);
border-radius: 50%;
color: rgba(var(--color-foreground), .55);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
position: sticky;
padding: 1.2rem;
z-index: 2;
top: 1.5rem;
width: 4rem;
margin: 0 0 0 auto
}
.product-popup-modal__toggle:hover {
color: rgba(var(--color-foreground), .75)
}
.product-popup-modal__toggle .icon {
height: auto;
margin: 0;
width: 2.2rem
}
.product__media-list .media>* {
overflow: hidden
}
.thumbnail-list {
flex-wrap: wrap;
grid-gap: 1rem
}
.slider--mobile.thumbnail-list:after {
content: none
}
@media screen and (min-width: 750px) {
.product--stacked .thumbnail-list {
display: none
}
.thumbnail-list {
display: grid;
grid-template-columns: repeat(4, 1fr)
}
}
.thumbnail-list_item--variant:not(:first-child) {
display: none
}
@media screen and (min-width: 990px) {
.thumbnail-list {
grid-template-columns: repeat(4, 1fr)
}
.product--medium .thumbnail-list {
grid-template-columns: repeat(5, 1fr)
}
.product--large .thumbnail-list {
grid-template-columns: repeat(6, 1fr)
}
}
@media screen and (max-width: 749px) {
.product__media-item {
display: flex;
align-items: center
}
.product__modal-opener {
width: 100%
}
.thumbnail-slider {
display: flex;
align-items: center
}
.thumbnail-slider .thumbnail-list.slider {
display: flex;
padding: .5rem;
flex: 1;
scroll-padding-left: .5rem
}
.thumbnail-list__item.slider__slide {
width: calc(33% - .6rem)
}
}
@media screen and (min-width: 750px) {
.product--thumbnail_slider .thumbnail-slider {
display: flex;
align-items: center
}
.thumbnail-slider .thumbnail-list.slider--tablet-up {
display: flex;
padding: .5rem;
flex: 1;
scroll-padding-left: .5rem
}
.product__media-wrapper .slider-mobile-gutter .slider-button {
display: none
}
.thumbnail-list.slider--tablet-up .thumbnail-list__item.slider__slide {
width: calc(25% - .8rem)
}
.product--thumbnail_slider .slider-mobile-gutter .slider-button {
display: flex
}
}
@media screen and (min-width: 900px) {
.product--small .thumbnail-list.slider--tablet-up .thumbnail-list__item.slider__slide {
width: calc(25% - .8rem)
}
.thumbnail-list.slider--tablet-up .thumbnail-list__item.slider__slide {
width: calc(20% - .8rem)
}
}
.thumbnail {
position: absolute;
top: 0;
left: 0;
display: block;
height: 100%;
width: 100%;
padding: 0;
color: rgb(var(--color-foreground));
cursor: pointer;
background-color: transparent
}
.thumbnail:hover {
opacity: .7
}
.thumbnail.global-media-settings img {
border-radius: 0
}
.thumbnail[aria-current] {
box-shadow: 0 0 0 .1rem rgb(var(--color-foreground));
border-color: rgb(var(--color-foreground))
}
.image-magnify-full-size {
cursor: zoom-out;
z-index: 1;
margin: 0;
border-radius: calc(var(--media-radius) - var(--media-border-width))
}
.image-magnify-hover {
cursor: zoom-in
}
.product__modal-opener--image .product__media-zoom-none,
.product__media-icon--none {
display: none
}
.product__modal-opener>.loading__spinner {
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
position: absolute;
display: flex;
align-items: center;
height: 48px;
width: 48px
}
.product__modal-opener .path {
stroke: rgb(var(--color-button));
opacity: .75
}
@media (hover: hover) {
.product__media-zoom-hover,
.product__media-icon--hover {
display: none
}
}
@media screen and (max-width: 749px) {
.product__media-zoom-hover,
.product__media-icon--hover {
display: flex
}
}
.js .product__media {
overflow: hidden !important
}
.thumbnail[aria-current]:focus-visible {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .5)
}
.thumbnail[aria-current]:focus,
.thumbnail.focused {
outline: 0;
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 0 .5rem rgba(var(--color-foreground), .5)
}
@media (forced-colors: active) {
.thumbnail[aria-current]:focus,
.thumbnail.focused {
outline: transparent solid 1px
}
}
.thumbnail[aria-current]:focus:not(:focus-visible) {
outline: 0;
box-shadow: 0 0 0 .1rem rgb(var(--color-foreground))
}
.thumbnail img {
object-fit: cover;
width: 100%;
height: 100%;
pointer-events: none
}
.thumbnail__badge .icon {
width: 1rem;
height: 1rem
}
.thumbnail__badge .icon-3d-model {
width: 1.2rem;
height: 1.2rem
}
.thumbnail__badge {
color: rgb(var(--color-foreground), .6);
height: 2rem;
width: 2rem;
left: auto;
right: calc(.4rem + var(--media-border-width));
top: calc(.4rem + var(--media-border-width))
}
@media screen and (min-width: 750px) {
.product:not(.product--small) .thumbnail__badge {
height: 3rem;
width: 3rem
}
.product:not(.product--small) .thumbnail__badge .icon {
width: 1.2rem;
height: 1.2rem
}
.product:not(.product--small) .thumbnail__badge .icon-3d-model {
width: 1.4rem;
height: 1.4rem
}
}
.thumbnail-list__item {
position: relative
}
.thumbnail-list__item:before {
content: "";
display: block;
padding-bottom: 100%
}
.product:not(.featured-product) .product__view-details {
display: none
}
.product__view-details {
display: block;
text-decoration: none
}
.product__view-details:hover {
text-decoration: underline;
text-underline-offset: .3rem
}
.product__view-details .icon {
width: 1.2rem;
margin-left: 1.2rem;
flex-shrink: 0
}
.product__inventory {
display: flex;
align-items: center;
gap: .5rem
}
.product--no-media .product__inventory {
justify-content: center
}
.product__inventory.visibility-hidden:empty {
display: block
}
.product__inventory.visibility-hidden:empty:after {
content: "#"
}
.icon-with-text {
--icon-size: calc(var(--font-heading-scale) * 3rem);
--icon-spacing: calc(var(--font-heading-scale) * 1rem)
}
.icon-with-text--horizontal {
display: flex;
justify-content: center;
column-gap: 3rem;
flex-direction: row
}
.icon-with-text--vertical {
--icon-size: calc(var(--font-heading-scale) * 2rem)
}
.icon-with-text .icon {
fill: rgb(var(--color-foreground));
height: var(--icon-size);
width: var(--icon-size)
}
.icon-with-text--horizontal .icon,
.icon-with-text--horizontal img {
margin-bottom: var(--icon-spacing)
}
.icon-with-text--vertical .icon {
min-height: var(--icon-size);
min-width: var(--icon-size);
margin-right: var(--icon-spacing)
}
.icon-with-text img {
height: var(--icon-size);
width: var(--icon-size);
object-fit: contain
}
.icon-with-text--vertical img {
margin-right: var(--icon-spacing)
}
.icon-with-text--horizontal .h4 {
padding-top: calc(var(--icon-size) + var(--icon-spacing));
text-align: center
}
.icon-with-text--horizontal svg+.h4,
.icon-with-text--horizontal img+.h4,
.icon-with-text--horizontal.icon-with-text--text-only .h4 {
padding-top: 0
}
.icon-with-text__item {
display: flex;
align-items: center
}
.icon-with-text--horizontal .icon-with-text__item {
flex-direction: column;
width: 33%
}
.icon-with-text--vertical .icon-with-text__item {
margin-bottom: var(--icon-size)
}
.product__sku.visibility-hidden:after {
content: "#"
}
.product-media-container {
--aspect-ratio: var(--preview-ratio);
--ratio-percent: calc(1 / var(--aspect-ratio) * 100%);
position: relative;
width: 100%;
max-width: calc(100% - calc(var(--media-border-width) * 2))
}
.product-media-container.constrain-height {
--viewport-offset: 400px;
--constrained-min-height: 300px;
--constrained-height: max(var(--constrained-min-height), calc(100vh - var(--viewport-offset)));
margin-right: auto;
margin-left: auto
}
.product-media-container.constrain-height.media-fit-contain {
--contained-width: calc(var(--constrained-height) * var(--aspect-ratio));
width: min(var(--contained-width), 100%)
}
.product-media-container .media {
padding-top: var(--ratio-percent)
}
.product-media-container.constrain-height .media {
padding-top: min(var(--constrained-height), var(--ratio-percent))
}
@media screen and (max-width: 749px) {
.product-media-container.media-fit-cover {
display: flex;
align-self: stretch
}
.product-media-container.media-fit-cover .media {
position: initial
}
}
@media screen and (min-width: 750px) {
.product-media-container {
max-width: 100%
}
.product-media-container:not(.media-type-image) {
--aspect-ratio: var(--ratio)
}
.product-media-container.constrain-height {
--viewport-offset: 170px;
--constrained-min-height: 500px
}
.product-media-container.media-fit-cover,
.product-media-container.media-fit-cover .product__modal-opener,
.product-media-container.media-fit-cover .media {
height: 100%
}
.product-media-container.media-fit-cover .deferred-media__poster img {
object-fit: cover;
width: 100%
}
}
.product-media-container .product__modal-opener {
display: block;
position: relative
}
@media screen and (min-width: 750px) {
.product-media-container .product__modal-opener:not(.product__modal-opener--image) {
display: none
}
}
.recipient-form {
--recipient-checkbox-margin-top: .64rem;
display: block;
position: relative;
max-width: 44rem;
margin-bottom: 2.5rem
}
.recipient-form-field-label {
margin: .6rem 0
}
.recipient-form-field-label--space-between {
display: flex;
justify-content: space-between
}
.recipient-checkbox {
flex-grow: 1;
font-size: 1.6rem;
display: flex;
word-break: break-word;
align-items: flex-start;
max-width: inherit;
position: relative;
cursor: pointer
}
.no-js .recipient-checkbox {
display: none
}
.recipient-form>input[type=checkbox] {
position: absolute;
width: 1.6rem;
height: 1.6rem;
margin: var(--recipient-checkbox-margin-top) 0;
top: 0;
left: 0;
z-index: -1;
appearance: none;
-webkit-appearance: none
}
.recipient-fields__field {
margin: 0 0 2rem
}
.recipient-fields .field__label {
white-space: nowrap;
text-overflow: ellipsis;
max-width: calc(100% - 3.5rem);
overflow: hidden
}
.recipient-checkbox>svg {
margin-top: var(--recipient-checkbox-margin-top);
margin-right: 1.2rem;
flex-shrink: 0
}
.recipient-form .icon-checkmark {
visibility: hidden;
position: absolute;
left: .28rem;
z-index: 5;
top: .4rem
}
.recipient-form>input[type=checkbox]:checked+label .icon-checkmark {
visibility: visible
}
.js .recipient-fields {
display: none
}
.recipient-fields hr {
margin: 1.6rem auto
}
.recipient-form>input[type=checkbox]:checked~.recipient-fields {
display: block;
animation: animateMenuOpen var(--duration-default) ease
}
.recipient-form>input[type=checkbox]:not(:checked, :disabled)~.recipient-fields,
.recipient-email-label {
display: none
}
.js .recipient-email-label.required,
.no-js .recipient-email-label.optional {
display: inline
}
.recipient-form ul {
line-height: calc(1 + .6 / var(--font-body-scale));
padding-left: 4.4rem;
text-align: left
}
.recipient-form ul a {
display: inline
}
.recipient-form .error-message:first-letter {
text-transform: capitalize
}
@media screen and (forced-colors: active) {
.recipient-fields>hr {
border-top: .1rem solid rgb(var(--color-background))
}
.recipient-checkbox>svg {
background-color: inherit;
border: .1rem solid rgb(var(--color-background))
}
.recipient-form>input[type=checkbox]:checked+label .icon-checkmark {
border: none
}
}
</style>
<style>
.accordion summary {
display: flex;
position: relative;
line-height: 1;
padding: 1.5rem 0
}
.accordion .summary__title {
display: flex;
flex: 1
}
.accordion .summary__title+.icon-caret {
height: calc(var(--font-heading-scale) * .6rem)
}
.accordion+.accordion {
margin-top: 0;
border-top: none
}
.accordion {
margin-top: 2.5rem;
margin-bottom: 0;
border-top: .1rem solid rgba(var(--color-foreground), .08);
border-bottom: .1rem solid rgba(var(--color-foreground), .08)
}
.accordion__title {
display: inline-block;
max-width: calc(100% - 6rem);
min-height: 1.6rem;
margin: 0;
word-break: break-word
}
.accordion .icon-accordion {
align-self: center;
fill: rgb(var(--color-foreground));
height: calc(var(--font-heading-scale) * 2rem);
margin-right: calc(var(--font-heading-scale) * 1rem);
width: calc(var(--font-heading-scale) * 2rem)
}
.accordion details[open]>summary .icon-caret {
transform: rotate(180deg)
}
.accordion__content {
margin-bottom: 1.5rem;
word-break: break-word;
overflow-x: auto;
padding: 0 .6rem
}
.accordion__content img {
max-width: 100%
}
</style>
<style>
.price {
font-size: 1.6rem;
letter-spacing: .1rem;
line-height: calc(1 + .5 / var(--font-body-scale));
color: rgb(var(--color-foreground))
}
.price>* {
display: inline-block;
vertical-align: top
}
.price.price--unavailable {
visibility: hidden
}
.price--end {
text-align: right
}
.price .price-item {
display: inline-block;
margin: 0 1rem 0 0
}
.price__regular .price-item--regular {
margin-right: 0
}
.price:not(.price--show-badge) .price-item--last:last-of-type {
margin: 0
}
@media screen and (min-width: 750px) {
.price {
margin-bottom: 0
}
}
.price--large {
font-size: 1.6rem;
line-height: calc(1 + .5 / var(--font-body-scale));
letter-spacing: .13rem
}
@media screen and (min-width: 750px) {
.price--large {
font-size: 1.8rem
}
}
.price--sold-out .price__availability,
.price__regular {
display: block
}
.price__sale,
.price__availability,
.price .price__badge-sale,
.price .price__badge-sold-out,
.price--on-sale .price__regular,
.price--on-sale .price__availability {
display: none
}
.price--sold-out .price__badge-sold-out,
.price--on-sale .price__badge-sale,
.volume-pricing--sale-badge .price__badge-sale {
display: inline-block
}
.volume-pricing--sale-badge .price__badge-sale {
margin-left: .5rem
}
.price--on-sale .price__sale {
display: initial;
flex-direction: row;
flex-wrap: wrap
}
.price--center {
display: initial;
justify-content: center
}
.price--on-sale .price-item--regular {
text-decoration: line-through;
color: rgba(var(--color-foreground), .75);
font-size: 1.3rem
}
.unit-price {
display: block;
font-size: 1.1rem;
letter-spacing: .04rem;
line-height: calc(1 + .2 / var(--font-body-scale));
margin-top: .2rem;
text-transform: uppercase;
color: rgba(var(--color-foreground), .7)
}
</style>
<style>
slider-component {
--desktop-margin-left-first-item: max(5rem, calc((100vw - var(--page-width) + 10rem - var(--grid-desktop-horizontal-spacing)) / 2));
position: relative;
display: block
}
slider-component.slider-component-full-width {
--desktop-margin-left-first-item: 1.5rem
}
@media screen and (max-width: 749px) {
slider-component.page-width {
padding: 0 1.5rem
}
}
@media screen and (min-width: 749px) and (max-width: 990px) {
slider-component.page-width {
padding: 0 5rem
}
}
@media screen and (max-width: 989px) {
.no-js slider-component .slider {
padding-bottom: 3rem
}
}
.slider__slide {
--focus-outline-padding: .5rem;
--shadow-padding-top: calc((var(--shadow-vertical-offset) * -1 + var(--shadow-blur-radius)) * var(--shadow-visible));
--shadow-padding-bottom: calc((var(--shadow-vertical-offset) + var(--shadow-blur-radius)) * var(--shadow-visible));
scroll-snap-align: start;
flex-shrink: 0;
padding-bottom: 0
}
@media screen and (max-width: 749px) {
.slider.slider--mobile {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1.5rem;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem
}
.slider--mobile:after {
content: "";
width: 0;
padding-left: 1.5rem
}
.slider.slider--mobile .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom))
}
.slider.slider--mobile.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding)
}
.slider.slider--mobile.contains-content-container .slider__slide {
--focus-outline-padding: 0rem
}
}
@media screen and (min-width: 750px) {
.slider.slider--tablet-up {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1rem;
-webkit-overflow-scrolling: touch
}
.slider.slider--tablet-up .slider__slide {
margin-bottom: 0
}
}
@media screen and (max-width: 989px) {
.slider.slider--tablet {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
scroll-padding-left: 1.5rem;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem
}
.slider--tablet:after {
content: "";
width: 0;
padding-left: 1.5rem;
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing))
}
.slider.slider--tablet .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom))
}
.slider.slider--tablet.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding)
}
.slider.slider--tablet.contains-content-container .slider__slide {
--focus-outline-padding: 0rem
}
}
.slider--everywhere {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem
}
.slider.slider--everywhere .slider__slide {
margin-bottom: 0;
scroll-snap-align: center
}
@media screen and (min-width: 990px) {
.slider-component-desktop.page-width {
max-width: none
}
.slider--desktop {
position: relative;
flex-wrap: inherit;
overflow-x: auto;
scroll-snap-type: x mandatory;
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
margin-bottom: 1rem;
scroll-padding-left: var(--desktop-margin-left-first-item)
}
.slider--desktop:after {
content: "";
width: 0;
padding-left: 5rem;
margin-left: calc(-1 * var(--grid-desktop-horizontal-spacing))
}
.slider.slider--desktop .slider__slide {
margin-bottom: 0;
padding-top: max(var(--focus-outline-padding), var(--shadow-padding-top));
padding-bottom: max(var(--focus-outline-padding), var(--shadow-padding-bottom))
}
.slider--desktop .slider__slide:first-child {
margin-left: var(--desktop-margin-left-first-item);
scroll-margin-left: var(--desktop-margin-left-first-item)
}
.slider-component-full-width .slider--desktop {
scroll-padding-left: 1.5rem
}
.slider-component-full-width .slider--desktop .slider__slide:first-child {
margin-left: 1.5rem;
scroll-margin-left: 1.5rem
}
.slider-component-full-width .slider--desktop:after {
padding-left: 1.5rem
}
.slider--desktop.grid--5-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 5 - var(--grid-desktop-horizontal-spacing) * 2)
}
.slider--desktop.grid--4-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 4 - var(--grid-desktop-horizontal-spacing) * 3)
}
.slider--desktop.grid--3-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 3 - var(--grid-desktop-horizontal-spacing) * 4)
}
.slider--desktop.grid--2-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) / 2 - var(--grid-desktop-horizontal-spacing) * 5)
}
.slider--desktop.grid--1-col-desktop .grid__item {
width: calc((100% - var(--desktop-margin-left-first-item)) - var(--grid-desktop-horizontal-spacing) * 9)
}
.slider.slider--desktop.contains-card--standard .slider__slide:not(.collection-list__item--no-media) {
padding-bottom: var(--focus-outline-padding)
}
.slider.slider--desktop.contains-content-container .slider__slide {
--focus-outline-padding: 0rem
}
}
@media (prefers-reduced-motion) {
.slider {
scroll-behavior: auto
}
}
.slider {
scrollbar-color: rgb(var(--color-foreground)) rgba(var(--color-foreground), .04);
-ms-overflow-style: none;
scrollbar-width: none
}
.slider::-webkit-scrollbar {
height: .4rem;
width: .4rem;
display: none
}
.no-js .slider {
-ms-overflow-style: auto;
scrollbar-width: auto
}
.no-js .slider::-webkit-scrollbar {
display: initial
}
.slider::-webkit-scrollbar-thumb {
background-color: rgb(var(--color-foreground));
border-radius: .4rem;
border: 0
}
.slider::-webkit-scrollbar-track {
background: rgba(var(--color-foreground), .04);
border-radius: .4rem
}
.slider-counter {
display: flex;
justify-content: center;
min-width: 4.4rem
}
@media screen and (min-width: 750px) {
.slider-counter--dots {
margin: 0 1.2rem
}
}
.slider-counter__link {
padding: 1rem
}
@media screen and (max-width: 749px) {
.slider-counter__link {
padding: .7rem
}
}
.slider-counter__link--dots .dot {
width: 1rem;
height: 1rem;
border-radius: 50%;
border: .1rem solid rgba(var(--color-foreground), .5);
padding: 0;
display: block
}
.slider-counter__link--active.slider-counter__link--dots .dot {
background-color: rgb(var(--color-foreground))
}
@media screen and (forced-colors: active) {
.slider-counter__link--active.slider-counter__link--dots .dot {
background-color: CanvasText
}
}
.slider-counter__link--dots:not(.slider-counter__link--active):hover .dot {
border-color: rgb(var(--color-foreground))
}
.slider-counter__link--dots .dot,
.slider-counter__link--numbers {
transition: transform .2s ease-in-out
}
.slider-counter__link--active.slider-counter__link--numbers,
.slider-counter__link--dots:not(.slider-counter__link--active):hover .dot,
.slider-counter__link--numbers:hover {
transform: scale(1.1)
}
.slider-counter__link--numbers {
color: rgba(var(--color-foreground), .5);
text-decoration: none
}
.slider-counter__link--numbers:hover {
color: rgb(var(--color-foreground))
}
.slider-counter__link--active.slider-counter__link--numbers {
text-decoration: underline;
color: rgb(var(--color-foreground))
}
.slider-buttons {
display: flex;
align-items: center;
justify-content: center
}
@media screen and (min-width: 990px) {
.slider:not(.slider--everywhere):not(.slider--desktop)+.slider-buttons {
display: none
}
}
@media screen and (max-width: 989px) {
.slider--desktop:not(.slider--tablet)+.slider-buttons {
display: none
}
}
@media screen and (min-width: 750px) {
.slider--mobile+.slider-buttons {
display: none
}
}
.slider-button {
color: rgba(var(--color-foreground), .75);
background: transparent;
border: none;
cursor: pointer;
width: 44px;
height: 44px;
display: flex;
align-items: center;
justify-content: center
}
.slider-button:not([disabled]):hover {
color: rgb(var(--color-foreground))
}
.slider-button .icon {
height: .6rem
}
.slider-button[disabled] .icon {
color: rgba(var(--color-foreground), .3);
cursor: not-allowed
}
.slider-button--next .icon {
transform: rotate(-90deg)
}
.slider-button--prev .icon {
transform: rotate(90deg)
}
.slider-button--next:not([disabled]):hover .icon {
transform: rotate(-90deg) scale(1.1)
}
.slider-button--prev:not([disabled]):hover .icon {
transform: rotate(90deg) scale(1.1)
}
</style>
<style>
.rating {
display: inline-block;
margin: 0
}
.product .rating-star {
--letter-spacing: .8;
--font-size: 1.7
}
.card-wrapper .rating-star {
--letter-spacing: .7;
--font-size: 1.4
}
.rating-star {
--color-rating-star: rgb(var(--color-foreground));
--percent: calc((var(--rating) / var(--rating-max) + var(--rating-decimal) * var(--font-size) / (var(--rating-max) * (var(--letter-spacing) + var(--font-size)))) * 100%);
letter-spacing: calc(var(--letter-spacing) * 1rem);
font-size: calc(var(--font-size) * 1rem);
line-height: 1;
display: inline-block;
font-family: Times;
margin: 0
}
.rating-star:before {
content: "\2605\2605\2605\2605\2605";
background: linear-gradient(90deg, var(--color-rating-star) var(--percent), rgba(var(--color-foreground), .15) var(--percent));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent
}
.rating-text {
display: none
}
.rating-count {
display: inline-block;
margin: 0
}
@media (forced-colors: active) {
.rating {
display: none
}
.rating-text {
display: block
}
}
</style>
<style>
.deferred-media__poster {
background-color: transparent;
border: none;
cursor: pointer;
margin: 0;
padding: 0;
height: 100%;
width: 100%;
overflow: hidden;
border-radius: calc(var(--border-radius) - var(--border-width))
}
.media>.deferred-media__poster {
display: flex;
align-items: center;
justify-content: center
}
.deferred-media__poster img {
width: auto;
max-width: 100%;
height: 100%
}
.deferred-media {
overflow: hidden
}
.deferred-media:not([loaded]) template {
z-index: -1
}
.deferred-media[loaded]>.deferred-media__poster {
display: none
}
.deferred-media__poster:focus-visible {
outline: none;
box-shadow: 0 0 0 var(--media-border-width) rgba(var(--color-foreground), var(--media-border-opacity)), 0 0 0 calc(var(--media-border-width) + .3rem) rgb(var(--color-background)), 0 0 0 calc(var(--media-border-width) + .5rem) rgba(var(--color-foreground), .5);
border-radius: calc(var(--media-radius) - var(--media-border-width))
}
.deferred-media__poster:focus {
outline: none;
box-shadow: 0 0 0 var(--media-border-width) rgba(var(--color-foreground), var(--media-border-opacity)), 0 0 0 calc(var(--media-border-width) + .3rem) rgb(var(--color-background)), 0 0 0 calc(var(--media-border-width) + .5rem) rgba(var(--color-foreground), .5);
border-radius: calc(var(--media-radius) - var(--media-border-width))
}
.global-media-settings--full-width .deferred-media__poster,
.global-media-settings--full-width .deferred-media__poster:is(:focus, :focus-visible) {
border-radius: 0
}
@media (forced-colors: active) {
.deferred-media__poster:focus {
outline: transparent solid 1px
}
}
.deferred-media__poster:focus:not(:focus-visible) {
outline: 0;
box-shadow: none
}
.deferred-media__poster-button {
background-color: black;
border: .1rem solid rgba(var(--color-foreground), .1);
border-radius: 50%;
color: rgb(var(--color-foreground));
display: flex;
align-items: center;
justify-content: center;
height: 6.2rem;
width: 6.2rem;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%) scale(1);
transition: transform var(--duration-short) ease, color var(--duration-short) ease;
z-index: 1
}
.deferred-media__poster-button:hover {
transform: translate(-50%, -50%) scale(1.1)
}
.deferred-media__poster-button .icon {
width: 2rem;
height: 2rem
}
.deferred-media__poster-button .icon-play {
margin-left: .2rem
}
</style>
<style data-shopify>
.section-template--17040648077525__main-padding {
padding-top: 45px;
padding-bottom: 45px;
}
@media screen and (min-width: 750px) {
.section-template--17040648077525__main-padding {
padding-top: 60px;
padding-bottom: 60px;
}
}
</style>
<script src="cdn/shop/t/4/assets/product-infob121.js?v=81873523020508815201701676179"
defer="defer"></script>
<script src="cdn/shop/t/4/assets/product-form5df2.js?v=133081758708377679181701676179"
defer="defer"></script>
<div class="page-width">
<div
class="product product--small product--left product--thumbnail_slider product--mobile-hide grid grid--1-col grid--2-col-tablet">
<div class="grid__item product__media-wrapper">
<media-gallery id="MediaGallery-template--17040648077525__main" role="region"
class="product__column-sticky" aria-label="Gallery Viewer"
data-desktop-layout="thumbnail_slider">
<div id="GalleryStatus-template--17040648077525__main" class="visually-hidden"
role="status"></div>
<slider-component id="GalleryViewer-template--17040648077525__main"
class="slider-mobile-gutter"><a
class="skip-to-content-link button visually-hidden quick-add-hidden"
href="#ProductInfo-template--17040648077525__main">
Skip to product information
</a>
<ul id="Slider-Gallery-template--17040648077525__main"
class="product__media-list contains-media grid grid--peek list-unstyled slider slider--mobile"
role="list">
<li id="Slide-template--17040648077525__main-33478743672119"
class="product__media-item grid__item slider__slide is-active scroll-trigger animate--fade-in"
data-media-id="template--17040648077525__main-33478743672119">
<div class="product-media-container media-type-image media-fit-contain global-media-settings gradient constrain-height"
style="--ratio: 1.0; --preview-ratio: 1.0;">
<noscript>
<div class="product__media media">
<img src="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"
alt="KOITOTO"
srcset="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 246w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 493w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 600w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 713w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg3 823w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 990w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 1100w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 1206w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 1346w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 1426w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 1646w, https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg 1946w"
width="1946" height="1946"
sizes="(min-width: 1200px) 495px, (min-width: 990px) calc(45.0vw - 10rem), (min-width: 750px) calc((100vw - 11.5rem) / 2), calc(100vw / 1 - 4rem)">
</div>
</noscript>
<modal-opener
class="product__modal-opener product__modal-opener--image no-js-hidden"
data-modal="#ProductModal-template--17040648077525__main">
<span
class="product__media-icon motion-reduce quick-add-hidden product__media-icon--lightbox"
aria-hidden="true"><svg aria-hidden="true" focusable="false"
class="icon icon-plus" width="19" height="19"
viewBox="0 0 19 19" fill="none"
xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M4.66724 7.93978C4.66655 7.66364 4.88984 7.43922 5.16598 7.43853L10.6996 7.42464C10.9758 7.42395 11.2002 7.64724 11.2009 7.92339C11.2016 8.19953 10.9783 8.42395 10.7021 8.42464L5.16849 8.43852C4.89235 8.43922 4.66793 8.21592 4.66724 7.93978Z"
fill="currentColor" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M7.92576 4.66463C8.2019 4.66394 8.42632 4.88723 8.42702 5.16337L8.4409 10.697C8.44159 10.9732 8.2183 11.1976 7.94215 11.1983C7.66601 11.199 7.44159 10.9757 7.4409 10.6995L7.42702 5.16588C7.42633 4.88974 7.64962 4.66532 7.92576 4.66463Z"
fill="currentColor" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M12.8324 3.03011C10.1255 0.323296 5.73693 0.323296 3.03011 3.03011C0.323296 5.73693 0.323296 10.1256 3.03011 12.8324C5.73693 15.5392 10.1255 15.5392 12.8324 12.8324C15.5392 10.1256 15.5392 5.73693 12.8324 3.03011ZM2.32301 2.32301C5.42035 -0.774336 10.4421 -0.774336 13.5395 2.32301C16.6101 5.39361 16.6366 10.3556 13.619 13.4588L18.2473 18.0871C18.4426 18.2824 18.4426 18.599 18.2473 18.7943C18.0521 18.9895 17.7355 18.9895 17.5402 18.7943L12.8778 14.1318C9.76383 16.6223 5.20839 16.4249 2.32301 13.5395C-0.774335 10.4421 -0.774335 5.42035 2.32301 2.32301Z"
fill="currentColor" />
</svg>
</span>
<style>
.loading__spinner {
position: absolute;
z-index: 1;
width: 1.8rem
}
.loading__spinner {
width: 1.8rem;
display: inline-block
}
.spinner {
animation: rotator 1.4s linear infinite
}
@keyframes rotator {
0% {
transform: rotate(0)
}
to {
transform: rotate(270deg)
}
}
.path {
stroke-dasharray: 280;
stroke-dashoffset: 0;
transform-origin: center;
stroke: rgb(var(--color-foreground));
animation: dash 1.4s ease-in-out infinite
}
@media screen and (forced-colors: active) {
.path {
stroke: CanvasText
}
}
@keyframes dash {
0% {
stroke-dashoffset: 280
}
50% {
stroke-dashoffset: 75;
transform: rotate(135deg)
}
to {
stroke-dashoffset: 280;
transform: rotate(450deg)
}
}
.loading__spinner:not(.hidden)+.cart-item__price-wrapper,
.loading__spinner:not(.hidden)~cart-remove-button {
opacity: 50%
}
.loading__spinner:not(.hidden)~cart-remove-button {
pointer-events: none;
cursor: default
}
</style>
<div class="loading__spinner hidden">
<svg aria-hidden="true" focusable="false" class="spinner"
viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
<circle class="path" fill="none" stroke-width="6" cx="33"
cy="33" r="30"></circle>
</svg>
</div>
<div class="product__media media media--transparent">
<img src="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"
alt="KOITOTO" width="1000" height="1000"
class="image-magnify-lightbox"
sizes="(min-width: 1200px) 495px, (min-width: 990px) calc(45.0vw - 10rem), (min-width: 750px) calc((100vw - 11.5rem) / 2), calc(100vw / 1 - 4rem)">
</div>
<button
class="product__media-toggle quick-add-hidden product__media-zoom-lightbox"
type="button" aria-haspopup="dialog"
data-media-id="33478743672119">
<span class="visually-hidden">
Open media 1 in modal
</span>
</button>
</modal-opener>
</div>
</li>
</ul>
<div class="slider-buttons no-js-hidden quick-add-hidden small-hide">
<button type="button" class="slider-button slider-button--prev" name="previous"
aria-label="Slide left">
<svg aria-hidden="true" focusable="false" class="icon icon-caret"
viewBox="0 0 10 6">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z"
fill="currentColor">
</svg>
</button>
<div class="slider-counter caption">
<span class="slider-counter--current">1</span>
<span aria-hidden="true"> / </span>
<span class="visually-hidden">of</span>
<span class="slider-counter--total">1</span>
</div>
<button type="button" class="slider-button slider-button--next" name="next"
aria-label="Slide right">
<svg aria-hidden="true" focusable="false" class="icon icon-caret"
viewBox="0 0 10 6">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z"
fill="currentColor">
</svg>
</button>
</div>
</slider-component>
</media-gallery>
</div>
<div class="product__info-wrapper grid__item scroll-trigger animate--slide-in">
<product-info id="ProductInfo-template--17040648077525__main"
data-section="template--17040648077525__main" data-url="https://infinite-style.com/"
class="product__info-container product__column-sticky">
<div class="product__title">
<h1 style=" color: black;">KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang</h1>
<a href="https://infinite-style.com/" class="product__title">
<h2 class="h1">
KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang
</h2>
</a>
</div>
<div class="no-js-hidden" id="price-template--17040648077525__main" role="status">
<div class="
price price--large price--on-sale price--show-badge">
<div class="price__container">
<div class="price__regular"><span
class="visually-hidden visually-hidden--inline">Regular
price</span>
<span class="price-item price-item--regular">
Rp 5.000,00
</span>
</div>
<div class="price__sale">
<span class="visually-hidden visually-hidden--inline">Regular
price</span>
<span>
<s class="price-item price-item--regular">
Rp 90.000
</s>
</span><span class="visually-hidden visually-hidden--inline">Sale
price</span>
<span class="price-item price-item--sale price-item--last">
Rp 10.000
</span>
</div>
<small class="unit-price caption hidden">
<span class="visually-hidden">Unit price</span>
<span class="price-item price-item--last">
<span></span>
<span aria-hidden="true">/</span>
<span class="visually-hidden"> per </span>
<span>
</span>
</span>
</small>
</div><span class="badge price__badge-sale color-accent-1">
Discount
</span>
<span class="badge price__badge-sold-out color-background-1">
Sold out
</span>
</div>
</div>
<div class="product__tax caption rte"></div>
<div>
<form method="post" action="https://infinite-style.com/"
id="product-form-installment-template--17040648077525__main"
accept-charset="UTF-8" class="installment caption-large"
enctype="multipart/form-data"><input type="hidden" name="form_type"
value="product" /><input type="hidden" name="utf8" value="✓" /><input
type="hidden" name="id" value="43114192093653">
<input type="hidden" name="product-id" value="8226828321669" />
</form>
</div>
<noscript class="product-form__noscript-wrapper-template--17040648077525__main">
<div class="product-form__input hidden">
<label class="form__label" for="Variants-template--17040648077525__main">Product
variants</label>
<div class="select">
<select name="id" id="Variants-template--17040648077525__main"
class="select__select"
form="product-form-template--17040648077525__main">
<option selected="selected" value="43114192093653">Default Title - Rp
5.000,00</option>
</select>
<svg aria-hidden="true" focusable="false" class="icon icon-caret"
viewBox="0 0 10 6">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z"
fill="currentColor">
</svg>
</div>
</div>
</noscript>
<div id="Quantity-Form-template--17040648077525__main"
class="product-form__input product-form__quantity">
<label class="quantity__label form__label"
for="Quantity-template--17040648077525__main">
Quantity
<span class="quantity__rules-cart no-js-hidden hidden">
<style>
.loading__spinner {
position: absolute;
z-index: 1;
width: 1.8rem
}
.loading__spinner {
width: 1.8rem;
display: inline-block
}
.spinner {
animation: rotator 1.4s linear infinite
}
@keyframes rotator {
0% {
transform: rotate(0)
}
to {
transform: rotate(270deg)
}
}
.path {
stroke-dasharray: 280;
stroke-dashoffset: 0;
transform-origin: center;
stroke: rgb(var(--color-foreground));
animation: dash 1.4s ease-in-out infinite
}
@media screen and (forced-colors: active) {
.path {
stroke: CanvasText
}
}
@keyframes dash {
0% {
stroke-dashoffset: 280
}
50% {
stroke-dashoffset: 75;
transform: rotate(135deg)
}
to {
stroke-dashoffset: 280;
transform: rotate(450deg)
}
}
.loading__spinner:not(.hidden)+.cart-item__price-wrapper,
.loading__spinner:not(.hidden)~cart-remove-button {
opacity: 50%
}
.loading__spinner:not(.hidden)~cart-remove-button {
pointer-events: none;
cursor: default
}
</style>
<div class="loading__spinner hidden">
<svg aria-hidden="true" focusable="false" class="spinner"
viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
<circle class="path" fill="none" stroke-width="6" cx="33" cy="33"
r="30"></circle>
</svg>
</div>
<span>(<span class="quantity-cart">0</span> in cart)</span>
</span>
</label>
<div class="price-per-item__container">
<quantity-input class="quantity" data-url="https://infinite-style.com/"
data-section="template--17040648077525__main">
<button class="quantity__button no-js-hidden" name="minus" type="button">
<span class="visually-hidden">Decrease quantity for KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang</span>
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
focusable="false" class="icon icon-minus" fill="none"
viewBox="0 0 10 2">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M.5 1C.5.7.7.5 1 .5h8a.5.5 0 110 1H1A.5.5 0 01.5 1z"
fill="currentColor">
</svg>
</button>
<input class="quantity__input" type="number" name="quantity"
id="Quantity-template--17040648077525__main" data-cart-quantity="0"
data-min="1" min="1" step="1" value="1"
form="product-form-template--17040648077525__main" />
<button class="quantity__button no-js-hidden" name="plus" type="button">
<span class="visually-hidden">Increase quantity for KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang</span>
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
focusable="false" class="icon icon-plus" fill="none"
viewBox="0 0 10 10">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z"
fill="currentColor">
</svg>
</button>
</quantity-input>
</div>
<div class="quantity__rules caption no-js-hidden"
id="Quantity-Rules-template--17040648077525__main">
</div>
</div>
<div><product-form class="product-form" data-hide-errors="false"
data-section-id="template--17040648077525__main">
<div class="product-form__error-message-wrapper" role="alert" hidden>
<svg aria-hidden="true" focusable="false" class="icon icon-error"
viewBox="0 0 13 13">
<circle cx="6.5" cy="6.50049" r="5.5" stroke="white" stroke-width="2" />
<circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B"
stroke-width="0.7" />
<path
d="M5.87413 3.52832L5.97439 7.57216H7.02713L7.12739 3.52832H5.87413ZM6.50076 9.66091C6.88091 9.66091 7.18169 9.37267 7.18169 9.00504C7.18169 8.63742 6.88091 8.34917 6.50076 8.34917C6.12061 8.34917 5.81982 8.63742 5.81982 9.00504C5.81982 9.37267 6.12061 9.66091 6.50076 9.66091Z"
fill="white" />
<path
d="M5.87413 3.17832H5.51535L5.52424 3.537L5.6245 7.58083L5.63296 7.92216H5.97439H7.02713H7.36856L7.37702 7.58083L7.47728 3.537L7.48617 3.17832H7.12739H5.87413ZM6.50076 10.0109C7.06121 10.0109 7.5317 9.57872 7.5317 9.00504C7.5317 8.43137 7.06121 7.99918 6.50076 7.99918C5.94031 7.99918 5.46982 8.43137 5.46982 9.00504C5.46982 9.57872 5.94031 10.0109 6.50076 10.0109Z"
fill="white" stroke="#EB001B" stroke-width="0.7">
</svg>
<span class="product-form__error-message"></span>
</div>
<style>
.loading__spinner {
position: absolute;
z-index: 1;
width: 1.8rem
}
.loading__spinner {
width: 1.8rem;
display: inline-block
}
.spinner {
animation: rotator 1.4s linear infinite
}
@keyframes rotator {
0% {
transform: rotate(0)
}
to {
transform: rotate(270deg)
}
}
.path {
stroke-dasharray: 280;
stroke-dashoffset: 0;
transform-origin: center;
stroke: rgb(var(--color-foreground));
animation: dash 1.4s ease-in-out infinite
}
@media screen and (forced-colors: active) {
.path {
stroke: CanvasText
}
}
@keyframes dash {
0% {
stroke-dashoffset: 280
}
50% {
stroke-dashoffset: 75;
transform: rotate(135deg)
}
to {
stroke-dashoffset: 280;
transform: rotate(450deg)
}
}
.loading__spinner:not(.hidden)+.cart-item__price-wrapper,
.loading__spinner:not(.hidden)~cart-remove-button {
opacity: 50%
}
.loading__spinner:not(.hidden)~cart-remove-button {
pointer-events: none;
cursor: default
}
</style>
<div class="loading__spinner hidden">
<svg aria-hidden="true" focusable="false" class="spinner"
viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
<circle class="path" fill="none" stroke-width="6" cx="33"
cy="33" r="30"></circle>
</svg>
</div>
</button>
<div data-shopify="payment-button" data-has-selling-plan="false"
data-has-fixed-selling-plan="false" class="shopify-payment-button">
<button
class="shopify-payment-button__button shopify-payment-button__button--unbranded shopify-payment-button__button--hidden"
disabled="disabled" aria-hidden="true"> </button><button
class="shopify-payment-button__more-options shopify-payment-button__button--hidden"
disabled="disabled" aria-hidden="true"> </button>
</div>
</div><input type="hidden" name="product-id" value="8226828321669" />
</form>
</product-form>
<style>
pickup-availability {
display: block
}
pickup-availability[available] {
min-height: 8rem
}
.pickup-availability-preview {
align-items: flex-start;
display: flex;
gap: .2rem;
padding: 1rem 2rem 0 0
}
.pickup-availability-preview .icon {
flex-shrink: 0;
height: 1.8rem
}
.pickup-availability-preview .icon-unavailable {
height: 1.6rem;
margin-top: .1rem
}
.pickup-availability-button {
background-color: transparent;
color: rgba(var(--color-foreground), .75);
letter-spacing: .06rem;
padding: 0 0 .2rem;
text-align: left;
text-decoration: underline
}
.pickup-availability-button:hover {
color: rgb(var(--color-foreground))
}
.pickup-availability-info * {
margin: 0 0 .6rem
}
pickup-availability-drawer {
background-color: black;
height: 100%;
opacity: 0;
overflow-y: auto;
padding: 2rem;
position: fixed;
top: 0;
right: 0;
z-index: 4;
transition: opacity var(--duration-default) ease, transform var(--duration-default) ease;
transform: translate(100%);
width: 100%;
border-width: 0 0 0 var(--drawer-border-width);
border-color: rgba(var(--color-foreground), var(--drawer-border-opacity));
border-style: solid;
filter: drop-shadow(var(--drawer-shadow-horizontal-offset) var(--drawer-shadow-vertical-offset) var(--drawer-shadow-blur-radius) rgba(var(--color-shadow), var(--drawer-shadow-opacity)))
}
pickup-availability-drawer[open] {
transform: translate(0);
opacity: 1
}
@media screen and (min-width: 750px) {
pickup-availability-drawer {
transform: translate(100%);
width: 37.5rem
}
pickup-availability-drawer[open] {
opacity: 1;
transform: translate(0);
animation: animateDrawerOpen var(--duration-default) ease
}
}
.pickup-availability-header {
align-items: flex-start;
display: flex;
justify-content: space-between;
margin-bottom: 1.2rem
}
.pickup-availability-drawer-title {
margin: .5rem 0 0
}
.pickup-availability-header .icon {
width: 2rem
}
.pickup-availability-drawer-button {
background-color: transparent;
border: none;
color: rgb(var(--color-foreground));
cursor: pointer;
display: block;
height: 4.4rem;
padding: 1.2rem;
width: 4.4rem
}
.pickup-availability-drawer-button:hover {
color: rgba(var(--color-foreground), .75)
}
.pickup-availability-variant {
font-size: 1.3rem;
line-height: calc(1 + .2 / var(--font-body-scale));
margin: 0 0 1.2rem;
text-transform: capitalize
}
.pickup-availability-variant>*+strong {
margin-left: 1rem
}
.pickup-availability-list__item {
border-bottom: .1rem solid rgba(var(--color-foreground), .08);
padding: 2rem 0
}
.pickup-availability-list__item:first-child {
border-top: .1rem solid rgba(var(--color-foreground), .08)
}
.pickup-availability-list__item>* {
margin: 0
}
.pickup-availability-list__item>*+* {
margin-top: 1rem
}
.pickup-availability-address {
font-style: normal;
font-size: 1.2rem;
line-height: calc(1 + .5 / var(--font-body-scale))
}
.pickup-availability-address p {
margin: 0
}
@keyframes animateDrawerOpen {
@media screen and (max-width: 749px) {
0% {
opacity: 0;
transform: translateX(100%);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@media screen and (min-width: 750px) {
0% {
opacity: 0;
transform: translateX(100%);
}
100% {
opacity: 1;
transform: translateX(0);
}
}
}
</style>
<pickup-availability
class="product__pickup-availabilities no-js-hidden quick-add-hidden"
data-root-url="https://infinite-style.com/" data-variant-id="43114192093653"
data-has-only-default-variant="true"
data-product-page-color-scheme="gradient color-background-1">
<template>
<pickup-availability-preview class="pickup-availability-preview">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" aria-hidden="true"
focusable="false" class="icon icon-unavailable" fill="none"
viewBox="0 0 20 20">
<path fill="#DE3618" stroke="#fff"
d="M13.94 3.94L10 7.878l-3.94-3.94A1.499 1.499 0 103.94 6.06L7.88 10l-3.94 3.94a1.499 1.499 0 102.12 2.12L10 12.12l3.94 3.94a1.497 1.497 0 002.12 0 1.499 1.499 0 000-2.12L12.122 10l3.94-3.94a1.499 1.499 0 10-2.121-2.12z" />
</svg>
<div class="pickup-availability-info">
<p class="caption-large">Couldn't load pickup availability</p>
<button
class="pickup-availability-button link link--text underlined-link">
Refresh
</button>
</div>
</pickup-availability-preview>
</template>
</pickup-availability>
<script>
/** Shopify CDN: Minification failed
Line 19:4 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 20:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 30:23 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 31:8 Transforming let to the configured target environment ("es5") is not supported yet
Line 35:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 40:12 Transforming const to the configured target environment ("es5") is not supported yet
Line 46:12 Transforming const to the configured target environment ("es5") is not supported yet
Line 52:24 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 56:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 63:19 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
... and 9 more hidden warnings
**/
if (!customElements.get('pickup-availability')) {
customElements.define(
'pickup-availability',
class PickupAvailability extends HTMLElement {
constructor() {
super();
if (!this.hasAttribute('available')) return;
this.errorHtml = this.querySelector('template').content.firstElementChild.cloneNode(true);
this.onClickRefreshList = this.onClickRefreshList.bind(this);
this.fetchAvailability(this.dataset.variantId);
}
fetchAvailability(variantId) {
let rootUrl = this.dataset.rootUrl;
if (!rootUrl.endsWith('/')) {
rootUrl = rootUrl + '/';
}
const variantSectionUrl = `${rootUrl}variants/${variantId}/?section_id=pickup-availability`;
fetch(variantSectionUrl)
.then((response) => response.text())
.then((text) => {
const sectionInnerHTML = new DOMParser()
.parseFromString(text, 'text/html')
.querySelector('.shopify-section');
this.renderPreview(sectionInnerHTML);
})
.catch((e) => {
const button = this.querySelector('button');
if (button) button.removeEventListener('click', this.onClickRefreshList);
this.renderError();
});
}
onClickRefreshList(evt) {
this.fetchAvailability(this.dataset.variantId);
}
renderError() {
this.innerHTML = '';
this.appendChild(this.errorHtml);
this.querySelector('button').addEventListener('click', this.onClickRefreshList);
}
renderPreview(sectionInnerHTML) {
const drawer = document.querySelector('pickup-availability-drawer');
if (drawer) drawer.remove();
if (!sectionInnerHTML.querySelector('pickup-availability-preview')) {
this.innerHTML = '';
this.removeAttribute('available');
return;
}
this.innerHTML = sectionInnerHTML.querySelector('pickup-availability-preview').outerHTML;
this.setAttribute('available', '');
document.body.appendChild(sectionInnerHTML.querySelector('pickup-availability-drawer'));
const colorClassesToApply = this.dataset.productPageColorScheme.split(' ');
colorClassesToApply.forEach((colorClass) => {
document.querySelector('pickup-availability-drawer').classList.add(colorClass);
});
const button = this.querySelector('button');
if (button)
button.addEventListener('click', (evt) => {
document.querySelector('pickup-availability-drawer').show(evt.target);
});
}
}
);
}
if (!customElements.get('pickup-availability-drawer')) {
customElements.define(
'pickup-availability-drawer',
class PickupAvailabilityDrawer extends HTMLElement {
constructor() {
super();
this.onBodyClick = this.handleBodyClick.bind(this);
this.querySelector('button').addEventListener('click', () => {
this.hide();
});
this.addEventListener('keyup', (event) => {
if (event.code.toUpperCase() === 'ESCAPE') this.hide();
});
}
handleBodyClick(evt) {
const target = evt.target;
if (
target != this &&
!target.closest('pickup-availability-drawer') &&
target.id != 'ShowPickupAvailabilityDrawer'
) {
this.hide();
}
}
hide() {
this.removeAttribute('open');
document.body.removeEventListener('click', this.onBodyClick);
document.body.classList.remove('overflow-hidden');
removeTrapFocus(this.focusElement);
}
show(focusElement) {
this.focusElement = focusElement;
this.setAttribute('open', '');
document.body.addEventListener('click', this.onBodyClick);
document.body.classList.add('overflow-hidden');
trapFocus(this);
}
}
);
}
</script>
</div>
<style>
.product__description p {
text-align: justify;
}
.product__description h2 {
text-align: center;
}
.product__description a {
font-weight: bold;
text-decoration: none;
color: #8B0000;
}
.site-list li {
font-weight: bold;
}
.centre li {
font-weight: normal;
margin-left: -1em;
text-align: justify;
list-style-type: decimal;
<a href="https://infinite-style.com/">KOITOTO</a>
}
</style>
<div class="product__description rte quick-add-hidden">
<p class="product_description" style="text-align: justify; color: black;"><a href="https://infinite-style.com/" style="color: red;">KOITOTO</a> menjadi solusi utama bagi pemain angka dan slot digital yang ingin menikmati akses cepat dan stabil tanpa gangguan teknis. Situs ini dirancang untuk memberikan pengalaman terbaik dengan sistem login yang tidak ribet dan bisa langsung digunakan kapan saja. Tanpa perlu unduhan tambahan, cukup buka lewat browser dan pengguna bisa langsung menjelajahi semua fitur dan permainan yang tersedia.</p>
<p class="product_description" style="text-align: justify; color: black;">Salah satu keunggulan KOITOTO terletak pada layanan dukungan yang aktif setiap hari tanpa batas waktu. Support pelanggan bisa dihubungi melalui beberapa saluran seperti live chat dan aplikasi pesan populer. Tim yang bertugas memiliki respon cepat dan siap membantu menyelesaikan setiap kendala, baik itu terkait akun, transaksi, maupun informasi pasaran angka terbaru. Dengan support yang selalu standby, pengguna merasa lebih aman dan nyaman.</p>
<p class="product_description" style="text-align: justify; color: black;">KOITOTO juga menghadirkan koleksi permainan slot yang lancar tanpa hambatan. Teknologi yang digunakan memastikan game berjalan halus, tidak ada jeda atau gangguan yang bisa mengganggu ritme permainan. Ini sangat cocok untuk pemain yang mengandalkan kecepatan dan insting dalam memilih waktu putaran atau menentukan pilihan angka secara efisien.</p>
<p class="product_description" style="text-align: justify; color: black;">Dalam permainan angka, KOITOTO menghadirkan pilihan pasaran lengkap yang selalu update secara tepat waktu. Data angka ditampilkan secara transparan sehingga pemain bisa melihat hasil dengan jelas dan melakukan analisa sederhana sebelum memasang angka berikutnya. Semua pasaran tersusun rapi berdasarkan jam tayang agar pengguna bisa mengikuti sesuai zona waktu masing masing.</p>
<p class="product_description" style="text-align: justify; color: black;">Gabungan antara login yang ringan, layanan nonstop, serta sistem permainan yang cepat membuat KOITOTO banyak direkomendasikan. Platform ini dirancang agar pemain tidak hanya merasa terhibur tetapi juga mendapatkan kepastian soal kelancaran dan kenyamanan. Dengan semua fitur tersebut, tidak heran KOITOTO menjadi pilihan utama di kalangan pemain angka modern yang mencari situs lengkap dan bisa diandalkan.</p>
<h2 style="color: black;">Login Togel Online & Toto Slot KOITOTO Dengan Team Support 24 Jam</h2>
<p style="text-align: justify; color: black;">KOITOTO hadir sebagai <a href="https://infinite-style.com/" style="color: red;">situs toto</a> dan togel online digital yang mengutamakan kecepatan akses serta kemudahan layanan bagi semua pemain. Proses login dirancang agar bisa dilakukan dengan mudah tanpa perlu unduhan aplikasi tambahan. Cukup dengan mengakses link resmi, pengguna langsung diarahkan ke halaman utama dan bisa menikmati seluruh fitur yang tersedia. Sistem login ini juga kompatibel di berbagai perangkat, baik ponsel maupun desktop, sehingga memberi keleluasaan untuk bermain kapan saja.</p>
<p class="product_description" style="text-align: justify; color: black;">Fokus utama KOITOTO adalah memastikan setiap pengguna mendapatkan bantuan dan informasi yang mereka perlukan melalui dukungan tim support aktif sepanjang waktu. Tim ini siap memberikan respon cepat untuk semua kebutuhan, mulai dari kendala teknis, panduan transaksi, hingga informasi pasaran angka. Dukungan ini bisa diakses lewat berbagai jalur komunikasi yang disediakan, seperti live chat dan aplikasi pesan, agar pemain tidak kesulitan saat butuh bantuan.</p>
<p class="product_description" style="text-align: justify; color: black;">Fitur permainan angka di KOITOTO juga dirancang sederhana dan terstruktur, sehingga mudah dipahami oleh semua kalangan pengguna. Pasaran angka yang tersedia selalu diperbarui secara real time dengan hasil yang bisa dicek langsung setiap saat. Tampilan data disusun rapi agar pengguna bisa melihat pola atau referensi sebelum menentukan angka pilihan mereka. Semua fitur ini ditampilkan secara terbuka tanpa proses yang menyulitkan.</p>
<p class="product_description" style="text-align: justify; color: black;">Toto slot di KOITOTO juga tidak kalah menarik, dengan tampilan permainan yang ringan dan efek visual yang memanjakan mata. Permainan berjalan dengan lancar, tanpa lag, dan bisa diakses dengan koneksi standar sekalipun. Slot disusun berdasarkan kategori populer, terbaru, dan yang sedang ramai dimainkan agar pemain bisa memilih lebih mudah. Fitur ini memberi pengalaman bermain yang cepat dan tetap seru dari awal hingga akhir sesi.</p>
<p class="product_description" style="text-align: justify; color: black;">Dengan sistem login yang cepat, team support yang responsif, serta fitur permainan angka dan slot yang berjalan lancar, KOITOTO berhasil menjadi salah satu platform favorit pemain digital saat ini. Tidak hanya karena kelengkapan fiturnya, tapi juga karena pelayanan yang konsisten dan kemudahan akses dari semua sisi. KOITOTO membuktikan bahwa bermain angka dan slot bisa menjadi lebih praktis, efisien, dan tetap menghibur tanpa ribet.</p>
<h2 style="color: black;">Toto Slot & Togel Online Anti Lag KOITOTO Mudah Menang</h2>
<p class="product_description" style="text-align: justify; color: black;">KOITOTO dikenal sebagai salah satu platform permainan angka dan slot yang menawarkan kenyamanan maksimal saat diakses dari berbagai perangkat. Salah satu keunggulan utamanya adalah performa situs yang ringan dan anti lag, sehingga semua fitur berjalan lancar meski pengguna bermain dari ponsel atau jaringan biasa. Pengalaman bermain menjadi lebih menyenangkan karena tidak ada gangguan teknis yang bisa mengganggu jalannya permainan.</p>
<p class="product_description" style="text-align: justify; color: black;">Toto slot di KOITOTO dirancang dengan sistem yang mendukung kecepatan dan kestabilan setiap sesi permainan. Setiap putaran berlangsung mulus dengan animasi halus dan tanpa jeda yang menyita waktu. Slot yang tersedia berasal dari berbagai penyedia terpercaya dengan tema yang beragam, visual menarik, dan fitur yang mendukung peluang menang lebih besar. Hal ini memungkinkan pengguna menikmati permainan tanpa stres karena gangguan koneksi atau tampilan yang lambat.</p>
<p class="product_description" style="text-align: justify; color: black;">Untuk permainan angka, KOITOTO menyediakan berbagai pasaran togel online yang aktif setiap hari dengan hasil keluaran yang diperbarui secara real time. Pengguna bisa melihat data angka dengan jelas dan terstruktur, memudahkan dalam membuat analisa sebelum menentukan pilihan. Tampilan pasaran dibuat simpel agar bisa diakses dengan mudah oleh siapa saja, baik pemula maupun yang sudah berpengalaman. Setiap sesi hadir dengan transparansi tinggi agar pemain merasa lebih percaya diri saat bermain.</p>
<p class="product_description" style="text-align: justify; color: black;">Yang membuat KOITOTO semakin menarik adalah sistem yang bisa diakses kapan saja tanpa harus mengunduh aplikasi tambahan. Semua layanan bisa dibuka langsung melalui browser, dengan tampilan yang menyesuaikan otomatis di ponsel maupun komputer. Selain itu, kecepatan login dan navigasi antar menu membuat pemain tidak membuang waktu dan langsung fokus ke permainan. Proses transaksi juga cepat dan aman, memberikan kenyamanan tambahan saat mengelola saldo.</p>
<p class="product_description" style="text-align: justify; color: black;">Kombinasi dari slot anti lag, pasaran angka yang lengkap, serta sistem cepat dan stabil menjadikan KOITOTO pilihan yang tepat untuk pemain digital saat ini. Platform ini dirancang untuk memaksimalkan kenyamanan pengguna dari semua sisi, mulai dari tampilan, kecepatan, hingga dukungan fitur. KOITOTO bukan sekadar tempat bermain, tapi juga solusi modern untuk siapa saja yang ingin merasakan pengalaman angka dan slot dengan peluang menang yang nyata dan akses tanpa hambatan.</p>
<h2 style="color: black;">Sistem Toto Slot & Togel Online Stabil Serta Responsif Tanpa Ada Kecurangan</h2>
<p class="product_description" style="text-align: justify; color: black;">KOITOTO menghadirkan sistem permainan rogel online dan toto slot yang dibangun dengan teknologi stabil dan responsif untuk memastikan semua pemain mendapatkan pengalaman terbaik. Situs <a href="https://infinite-style.com/" style="color: red;">togel online</a> yang menghadirkan layanan login cepat dan sistem yang selalu aktif sepanjang hari. Pengguna bisa langsung mengakses halaman utama melalui link resmi tanpa perlu tambahan aplikasi. Keamanan login dijamin dengan sistem enkripsi modern yang menjaga data tetap terlindungi. Dengan proses masuk yang cepat dan mudah, pemain bisa langsung memulai permainan angka favorit mereka tanpa hambatan teknis atau proses yang berbelit.</p>
<p class="product_description" style="text-align: justify; color: black;">Kestabilan sistem di KOITOTO menjadi salah satu keunggulan yang membuat pengguna betah dan terus kembali. Semua fitur tersedia tanpa perlu unduhan aplikasi tambahan. Pemain cukup menggunakan perangkat yang mereka miliki dan bisa langsung menikmati permainan dengan kualitas tampilan yang ringan dan cepat. Baik dari jaringan ponsel maupun koneksi rumah, sistem tetap berjalan mulus. Ini membuktikan bahwa KOITOTO benar benar menyesuaikan kebutuhan para pemain digital saat ini.</p>
<p class="product_description" style="text-align: justify; color: black;">Slot yang disediakan juga tampil dengan performa tinggi dan tidak memerlukan perangkat berspesifikasi tinggi. Pemain dapat merasakan respons cepat di setiap tombol dan animasi yang berjalan mulus tanpa jeda. Semua ini berkat pengembangan platform yang dioptimalkan agar tidak membebani perangkat pengguna. Pemain pun bisa menikmati pengalaman penuh dari setiap permainan, baik untuk hiburan ringan maupun yang lebih menantang.</p>
<p class="product_description" style="text-align: justify; color: black;">Untuk permainan togel, KOITOTO juga menampilkan pasaran resmi yang dilengkapi hasil keluaran yang diperbarui secara langsung. Ini memberi kepercayaan lebih karena data yang ditampilkan bukan hasil yang dimanipulasi. Informasi yang diberikan disusun dengan format sederhana dan transparan. Hal ini menunjukkan bahwa KOITOTO menjunjung tinggi keadilan permainan dan mementingkan kenyamanan pemain dalam mengakses data yang akurat.</p>
<p class="product_description" style="text-align: justify; color: black;">Tidak hanya mengandalkan sistem yang stabil dan responsif, KOITOTO juga menekankan kejujuran dalam seluruh layanan yang disediakan. Tidak ada kecurangan tersembunyi dalam proses permainan maupun transaksi. Semua berlangsung secara otomatis dan transparan, dari pemilihan angka hingga penarikan hasil. Dengan prinsip fair play dan layanan profesional, KOITOTO layak dijadikan pilihan utama bagi siapa saja yang ingin bermain togel online dan toto slot dengan aman dan tenang.</p>
<h2 style="color: black;">Bergabunglah Sekarang Nikmati Hadiah Terbesar Dan Login Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang</h2>
<p class="product_description" style="text-align: justify; color: black;">KOITOTO menjadi tempat yang cocok untuk siapa saja yang ingin bermain togel online dan <a href="https://infinite-style.com/" style="color: red;">situs toto slot</a> dengan sistem lengkap, cepat, serta hadiah yang benar benar terasa. Dengan berbagai fitur unggulan yang terus dikembangkan, situs ini memberi pengalaman bermain yang nyaman dan efisien. Proses login berlangsung cepat tanpa hambatan teknis dan bisa langsung diakses dari semua jenis perangkat. Pengguna cukup membuka link utama dan langsung masuk ke halaman permainan.</p>
<p class="product_description" style="text-align: justify; color: black;">Salah satu alasan banyak pemain bergabung adalah karena KOITOTO menawarkan hadiah yang besar dan mudah untuk dicapai. Setiap permainan memberikan peluang menang yang nyata dengan sistem yang transparan. Baik melalui angka maupun slot, pengguna bisa memperoleh hasil maksimal tanpa proses rumit. Semua hadiah dikalkulasikan otomatis berdasarkan ketentuan yang jelas. Tidak perlu konfirmasi manual atau proses tambahan yang menyulitkan pengguna.</p>
<p class="product_description" style="text-align: justify; color: black;">KOITOTO juga dikenal dengan layanan pelanggan aktif sepanjang waktu yang menjawab semua pertanyaan dan membantu kendala teknis kapan pun dibutuhkan. Dukungan ini tersedia setiap hari tanpa batas jam dan bisa diakses lewat beberapa jalur komunikasi seperti live chat dan aplikasi pesan. Tim yang bertugas akan membantu dengan cepat dan ramah agar pengguna merasa nyaman dan tidak bingung saat mengalami kendala.</p>
<p class="product_description" style="text-align: justify; color: black;">Permainan slot di KOITOTO berjalan dengan sangat lancar tanpa gangguan. Sistemnya ringan dan didesain agar tetap stabil bahkan di koneksi standar. Ini membuat slot bisa dimainkan dengan nyaman tanpa jeda atau tampilan yang berat. Pengguna bisa menikmati berbagai jenis permainan dengan tema menarik dan fitur yang beragam. Setiap pilihan slot dirancang untuk memberikan pengalaman visual dan teknis yang optimal.</p>
<p class="product_description" style="text-align: justify; color: black;">Dengan hadiah besar, login cepat, support aktif setiap waktu, dan slot yang anti lag, KOITOTO membuktikan dirinya sebagai platform yang lengkap untuk pemain angka dan slot. Pengalaman bermain di situs ini tidak hanya soal menang, tapi juga soal kenyamanan, pelayanan, dan kepercayaan. Bagi siapa saja yang mencari tempat bermain yang stabil dan terpercaya, KOITOTO layak dijadikan pilihan utama. Gabung sekarang dan rasakan sendiri bedanya.</p>
</div>
<script>
/** Shopify CDN: Minification failed
Line 13:4 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 14:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 41:19 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 50:21 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 59:15 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
**/
if (!customElements.get('share-button')) {
customElements.define(
'share-button',
class ShareButton extends DetailsDisclosure {
constructor() {
super();
this.elements = {
shareButton: this.querySelector('button'),
shareSummary: this.querySelector('summary'),
closeButton: this.querySelector('.share-button__close'),
successMessage: this.querySelector('[id^="ShareMessage"]'),
urlInput: this.querySelector('input'),
};
this.urlToShare = this.elements.urlInput ? this.elements.urlInput.value : document.location.href;
if (navigator.share) {
this.mainDetailsToggle.setAttribute('hidden', '');
this.elements.shareButton.classList.remove('hidden');
this.elements.shareButton.addEventListener('click', () => {
navigator.share({ url: this.urlToShare, title: document.title });
});
} else {
this.mainDetailsToggle.addEventListener('toggle', this.toggleDetails.bind(this));
this.mainDetailsToggle
.querySelector('.share-button__copy')
.addEventListener('click', this.copyToClipboard.bind(this));
this.mainDetailsToggle.querySelector('.share-button__close').addEventListener('click', this.close.bind(this));
}
}
toggleDetails() {
if (!this.mainDetailsToggle.open) {
this.elements.successMessage.classList.add('hidden');
this.elements.successMessage.textContent = '';
this.elements.closeButton.classList.add('hidden');
this.elements.shareSummary.focus();
}
}
copyToClipboard() {
navigator.clipboard.writeText(this.elements.urlInput.value).then(() => {
this.elements.successMessage.classList.remove('hidden');
this.elements.successMessage.textContent = window.accessibilityStrings.shareSuccess;
this.elements.closeButton.classList.remove('hidden');
this.elements.closeButton.focus();
});
}
updateUrl(url) {
this.urlToShare = url;
this.elements.urlInput.value = url;
}
}
);
}
</script>
<share-button id="Share-template--17040648077525__main"
class="share-button quick-add-hidden">
<button class="share-button__button hidden">
<svg width="13" height="12" viewBox="0 0 13 12" class="icon icon-share"
fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
focusable="false">
<path
d="M1.625 8.125V10.2917C1.625 10.579 1.73914 10.8545 1.9423 11.0577C2.14547 11.2609 2.42102 11.375 2.70833 11.375H10.2917C10.579 11.375 10.8545 11.2609 11.0577 11.0577C11.2609 10.8545 11.375 10.579 11.375 10.2917V8.125"
stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M6.14775 1.27137C6.34301 1.0761 6.65959 1.0761 6.85485 1.27137L9.56319 3.9797C9.75845 4.17496 9.75845 4.49154 9.56319 4.6868C9.36793 4.88207 9.05135 4.88207 8.85609 4.6868L6.5013 2.33203L4.14652 4.6868C3.95126 4.88207 3.63468 4.88207 3.43942 4.6868C3.24415 4.49154 3.24415 4.17496 3.43942 3.9797L6.14775 1.27137Z"
fill="currentColor" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M6.5 1.125C6.77614 1.125 7 1.34886 7 1.625V8.125C7 8.40114 6.77614 8.625 6.5 8.625C6.22386 8.625 6 8.40114 6 8.125V1.625C6 1.34886 6.22386 1.125 6.5 1.125Z"
fill="currentColor" />
</svg>
Share
</button>
<details id="Details-share-template--17040648077525__main">
<summary class="share-button__button">
<svg width="13" height="12" viewBox="0 0 13 12" class="icon icon-share"
fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
focusable="false">
<path
d="M1.625 8.125V10.2917C1.625 10.579 1.73914 10.8545 1.9423 11.0577C2.14547 11.2609 2.42102 11.375 2.70833 11.375H10.2917C10.579 11.375 10.8545 11.2609 11.0577 11.0577C11.2609 10.8545 11.375 10.579 11.375 10.2917V8.125"
stroke="currentColor" stroke-linecap="round"
stroke-linejoin="round" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M6.14775 1.27137C6.34301 1.0761 6.65959 1.0761 6.85485 1.27137L9.56319 3.9797C9.75845 4.17496 9.75845 4.49154 9.56319 4.6868C9.36793 4.88207 9.05135 4.88207 8.85609 4.6868L6.5013 2.33203L4.14652 4.6868C3.95126 4.88207 3.63468 4.88207 3.43942 4.6868C3.24415 4.49154 3.24415 4.17496 3.43942 3.9797L6.14775 1.27137Z"
fill="currentColor" />
<path fill-rule="evenodd" clip-rule="evenodd"
d="M6.5 1.125C6.77614 1.125 7 1.34886 7 1.625V8.125C7 8.40114 6.77614 8.625 6.5 8.625C6.22386 8.625 6 8.40114 6 8.125V1.625C6 1.34886 6.22386 1.125 6.5 1.125Z"
fill="currentColor" />
</svg>
Share
</summary>
<div class="share-button__fallback motion-reduce">
<div class="field">
<span id="ShareMessage-template--17040648077525__main"
class="share-button__message hidden" role="status"> </span>
<input type="text" class="field__input"
id="ShareUrl-template--17040648077525__main"
value="https://infinite-style.com/" placeholder="Link"
onclick="this.select();" readonly>
<label class="field__label"
for="ShareUrl-template--17040648077525__main">Link</label>
</div>
<button class="share-button__close hidden no-js-hidden">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
focusable="false" class="icon icon-close" fill="none"
viewBox="0 0 18 17">
<path
d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z"
fill="currentColor">
</svg>
<span class="visually-hidden">Close share</span>
</button>
<button class="share-button__copy no-js-hidden">
<svg class="icon icon-clipboard" width="11" height="13" fill="none"
xmlns="http://www.w3.org/2000/svg" aria-hidden="true"
focusable="false" viewBox="0 0 11 13">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M2 1a1 1 0 011-1h7a1 1 0 011 1v9a1 1 0 01-1 1V1H2zM1 2a1 1 0 00-1 1v9a1 1 0 001 1h7a1 1 0 001-1V3a1 1 0 00-1-1H1zm0 10V3h7v9H1z"
fill="currentColor" />
</svg>
<span class="visually-hidden">Copy link</span>
</button>
</div>
</details>
</share-button>
<a href="https://infinite-style.com/" class="link product__view-details animate-arrow">
View full details
<svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false"
class="icon icon-arrow" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z"
fill="currentColor">
</svg>
</a>
</product-info>
</div>
</div>
<product-modal id="ProductModal-template--17040648077525__main"
class="product-media-modal media-modal">
<div class="product-media-modal__dialog color-background-1 gradient" role="dialog"
aria-label="Media gallery" aria-modal="true" tabindex="-1">
<button id="ModalClose-template--17040648077525__main" type="button"
class="product-media-modal__toggle" aria-label="Close">
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"
class="icon icon-close" fill="none" viewBox="0 0 18 17">
<path
d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z"
fill="currentColor">
</svg>
</button>
<div class="product-media-modal__content color-background-1 gradient" role="document"
aria-label="Media gallery" tabindex="0">
<img class="global-media-settings global-media-settings--no-shadow"
srcset="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"
sizes="(min-width: 750px) calc(100vw - 22rem), 1100px"
src="https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"
alt="situs togel online" loading="lazy" width="1100" height="1100"
data-media-id="33478743672119">
</div>
</div>
</product-modal>
<script>/** Shopify CDN: Minification failed
Line 17:4 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 18:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 22:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 26:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 31:21 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 37:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 38:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 39:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 43:8 Transforming const to the configured target environment ("es5") is not supported yet
**/
if (!customElements.get('product-modal')) {
customElements.define(
'product-modal',
class ProductModal extends ModalDialog {
constructor() {
super();
}
hide() {
super.hide();
}
show(opener) {
super.show(opener);
this.showActiveMedia();
}
showActiveMedia() {
this.querySelectorAll(
`[data-media-id]:not([data-media-id="${this.openedBy.getAttribute('data-media-id')}"])`
).forEach((element) => {
element.classList.remove('active');
});
const activeMedia = this.querySelector(`[data-media-id="${this.openedBy.getAttribute('data-media-id')}"]`);
const activeMediaTemplate = activeMedia.querySelector('template');
const activeMediaContent = activeMediaTemplate ? activeMediaTemplate.content : null;
activeMedia.classList.add('active');
activeMedia.scrollIntoView();
const container = this.querySelector('[role="document"]');
container.scrollLeft = (activeMedia.width - container.clientWidth) / 2;
if (
activeMedia.nodeName == 'DEFERRED-MEDIA' &&
activeMediaContent &&
activeMediaContent.querySelector('.js-youtube')
)
activeMedia.loadContent();
}
}
);
}</script>
<script>/** Shopify CDN: Minification failed
Line 19:4 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 20:17 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 39:20 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 40:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 46:20 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 47:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 56:12 Transforming const to the configured target environment ("es5") is not supported yet
Line 74:8 Transforming const to the configured target environment ("es5") is not supported yet
Line 79:24 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 91:24 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
... and 5 more hidden warnings
**/
if (!customElements.get('media-gallery')) {
customElements.define(
'media-gallery',
class MediaGallery extends HTMLElement {
constructor() {
super();
this.elements = {
liveRegion: this.querySelector('[id^="GalleryStatus"]'),
viewer: this.querySelector('[id^="GalleryViewer"]'),
thumbnails: this.querySelector('[id^="GalleryThumbnails"]'),
};
this.mql = window.matchMedia('(min-width: 750px)');
if (!this.elements.thumbnails) return;
this.elements.viewer.addEventListener('slideChanged', debounce(this.onSlideChanged.bind(this), 500));
this.elements.thumbnails.querySelectorAll('[data-target]').forEach((mediaToSwitch) => {
mediaToSwitch
.querySelector('button')
.addEventListener('click', this.setActiveMedia.bind(this, mediaToSwitch.dataset.target, false));
});
if (this.dataset.desktopLayout.includes('thumbnail') && this.mql.matches) this.removeListSemantic();
}
onSlideChanged(event) {
const thumbnail = this.elements.thumbnails.querySelector(
`[data-target="${event.detail.currentElement.dataset.mediaId}"]`
);
this.setActiveThumbnail(thumbnail);
}
setActiveMedia(mediaId, prepend) {
const activeMedia = this.elements.viewer.querySelector(`[data-media-id="${mediaId}"]`);
this.elements.viewer.querySelectorAll('[data-media-id]').forEach((element) => {
element.classList.remove('is-active');
});
activeMedia.classList.add('is-active');
if (prepend) {
activeMedia.parentElement.prepend(activeMedia);
if (this.elements.thumbnails) {
const activeThumbnail = this.elements.thumbnails.querySelector(`[data-target="${mediaId}"]`);
activeThumbnail.parentElement.prepend(activeThumbnail);
}
if (this.elements.viewer.slider) this.elements.viewer.resetPages();
}
this.preventStickyHeader();
window.setTimeout(() => {
if (this.elements.thumbnails) {
activeMedia.parentElement.scrollTo({ left: activeMedia.offsetLeft });
}
if (!this.elements.thumbnails || this.dataset.desktopLayout === 'stacked') {
activeMedia.scrollIntoView({ behavior: 'smooth' });
}
});
this.playActiveMedia(activeMedia);
if (!this.elements.thumbnails) return;
const activeThumbnail = this.elements.thumbnails.querySelector(`[data-target="${mediaId}"]`);
this.setActiveThumbnail(activeThumbnail);
this.announceLiveRegion(activeMedia, activeThumbnail.dataset.mediaPosition);
}
setActiveThumbnail(thumbnail) {
if (!this.elements.thumbnails || !thumbnail) return;
this.elements.thumbnails
.querySelectorAll('button')
.forEach((element) => element.removeAttribute('aria-current'));
thumbnail.querySelector('button').setAttribute('aria-current', true);
if (this.elements.thumbnails.isSlideVisible(thumbnail, 10)) return;
this.elements.thumbnails.slider.scrollTo({ left: thumbnail.offsetLeft });
}
announceLiveRegion(activeItem, position) {
const image = activeItem.querySelector('.product__modal-opener--image img');
if (!image) return;
image.onload = () => {
this.elements.liveRegion.setAttribute('aria-hidden', false);
this.elements.liveRegion.innerHTML = window.accessibilityStrings.imageAvailable.replace('[index]', position);
setTimeout(() => {
this.elements.liveRegion.setAttribute('aria-hidden', true);
}, 2000);
};
image.src = image.src;
}
playActiveMedia(activeItem) {
window.pauseAllMedia();
const deferredMedia = activeItem.querySelector('.deferred-media');
if (deferredMedia) deferredMedia.loadContent(false);
}
preventStickyHeader() {
this.stickyHeader = this.stickyHeader || document.querySelector('sticky-header');
if (!this.stickyHeader) return;
this.stickyHeader.dispatchEvent(new Event('preventHeaderReveal'));
}
removeListSemantic() {
if (!this.elements.viewer.slider) return;
this.elements.viewer.slider.setAttribute('role', 'presentation');
this.elements.viewer.sliderItems.forEach((slide) => slide.setAttribute('role', 'presentation'));
}
}
);
}
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
function isIE() {
const ua = window.navigator.userAgent;
const msie = ua.indexOf('MSIE ');
const trident = ua.indexOf('Trident/https://infinite-style.com/');
return msie > 0 || trident > 0;
}
if (!isIE()) return;
const hiddenInput = document.querySelector('#product-form-template--17040648077525__main input[name="id"]');
const noScriptInputWrapper = document.createElement('div');
const variantSwitcher =
document.querySelector('variant-radios[data-section="template--17040648077525__main"]') ||
document.querySelector('variant-selects[data-section="template--17040648077525__main"]');
noScriptInputWrapper.innerHTML = document.querySelector(
'.product-form__noscript-wrapper-template--17040648077525__main'
).textContent;
variantSwitcher.outerHTML = noScriptInputWrapper.outerHTML;
document.querySelector('#Variants-template--17040648077525__main').addEventListener('change', function (event) {
hiddenInput.value = event.currentTarget.value;
});
});
</script>
<script type="application/ld+json">
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "KOITOTO | Login Situs Togel Online Support 24 Jam & Toto Slot Anti Lag Mudah Menang",
"url": "https://infinite-style.com/",
"image": ["https://imgstore.io/images/2025/04/15/mudahmenang_1000x1000.jpeg"],
"description": "Main togel dan situs toto slot makin gampang di KOITOTO lewat link login cepat akses stabil pasaran resmi slot gacor layanan aktif 24 jam cocok buat yang cari menang tanpa ribet.",
"brand": {
"@type": "Brand",
"name": "KOITOTO"
},
"offers": [{
"@type": "Offer",
"availability": "http://schema.org/InStock",
"price": 5000.0,
"priceCurrency": "IDR",
"url": "https://infinite-style.com/"
}]
}
</script>
</div>
</section>
</section>
<section id="shopify-section-template--17040648077525__related-products" class="shopify-section section">
<style>
.card-wrapper {
color: inherit;
height: 100%;
position: relative;
text-decoration: none
}
.card {
text-decoration: none;
text-align: var(--text-alignment)
}
.card:not(.ratio) {
display: flex;
flex-direction: column;
height: 100%
}
.card.card--horizontal {
--text-alignment: left;
--image-padding: 0rem;
flex-direction: row;
align-items: flex-start;
gap: 1.5rem
}
.card--horizontal.ratio:before {
padding-bottom: 0
}
.card--card.card--horizontal {
padding: 1.2rem
}
.card--card.card--horizontal.card--text {
column-gap: 0
}
.card--card {
height: 100%
}
.card--card,
.card--standard .card__inner {
position: relative;
box-sizing: border-box;
border-radius: var(--border-radius);
border: var(--border-width) solid rgba(var(--color-foreground), var(--border-opacity))
}
.card--card:after,
.card--standard .card__inner:after {
content: "";
position: absolute;
z-index: -1;
width: calc(var(--border-width) * 2 + 100%);
height: calc(var(--border-width) * 2 + 100%);
top: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
border-radius: var(--border-radius);
box-shadow: var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius) rgba(var(--color-shadow), var(--shadow-opacity))
}
.card--card.gradient,
.card__inner.gradient {
transform: perspective(0)
}
.card__inner.color-background-1 {
background: transparent
}
.card .card__inner .card__media {
overflow: hidden;
z-index: 0;
border-radius: calc(var(--border-radius) - var(--border-width) - var(--image-padding))
}
.card--card .card__inner .card__media {
border-bottom-right-radius: 0;
border-bottom-left-radius: 0
}
.card--standard.card--text {
background-color: transparent
}
.card-information {
text-align: var(--text-alignment)
}
.card__media,
.card .media {
bottom: 0;
position: absolute;
top: 0
}
.card .media {
width: 100%
}
.card__media {
margin: var(--image-padding);
width: calc(100% - 2 * var(--image-padding))
}
.card--standard .card__media {
margin: var(--image-padding)
}
.card__inner {
width: 100%
}
.card--media .card__inner .card__content {
position: relative;
padding: calc(var(--image-padding) + 1rem)
}
.card__content {
display: grid;
grid-template-rows: minmax(0, 1fr) max-content minmax(0, 1fr);
padding: 1rem;
width: 100%;
flex-grow: 1
}
.card__content--auto-margins {
grid-template-rows: minmax(0, auto) max-content minmax(0, auto)
}
.card__information {
grid-row-start: 2;
padding: 1.3rem 1rem
}
.card:not(.ratio)>.card__content {
grid-template-rows: max-content minmax(0, 1fr) max-content auto
}
.card-information .card__information-volume-pricing-note {
margin-top: .6rem;
line-height: calc(.5 + .4 / var(--font-body-scale));
color: rgba(var(--color-foreground), .75)
}
@media screen and (min-width: 750px) {
.card__information {
padding-bottom: 1.7rem;
padding-top: 1.7rem
}
}
.card__badge {
align-self: flex-end;
grid-row-start: 3;
justify-self: flex-start
}
.card__badge.top {
align-self: flex-start;
grid-row-start: 1
}
.card__badge.right {
justify-self: flex-end
}
.card:not(.card--horizontal)>.card__content>.card__badge {
margin: 1.3rem
}
.card__media .media img {
height: 100%;
object-fit: cover;
object-position: center center;
width: 100%
}
.card__inner:not(.ratio)>.card__content {
height: 100%
}
.card__heading {
margin-top: 0;
margin-bottom: 0
}
.card__heading:last-child {
margin-bottom: 0
}
.card--horizontal .card__heading,
.card--horizontal .price__container .price-item,
.card--horizontal__quick-add {
font-size: calc(var(--font-heading-scale) * 1.2rem)
}
.card--horizontal .card-information>*:not(.visually-hidden:first-child)+*:not(.rating):not(.card__information-volume-pricing-note) {
margin-top: 0
}
.card--horizontal__quick-add:before {
box-shadow: none
}
@media only screen and (min-width: 750px) {
.card--horizontal .card__heading,
.card--horizontal .price__container .price-item,
.card--horizontal__quick-add {
font-size: calc(var(--font-heading-scale) * 1.3rem)
}
}
.card--card.card--media>.card__content {
margin-top: calc(0rem - var(--image-padding))
}
.card--standard.card--text a:after,
.card--card .card__heading a:after {
bottom: calc(var(--border-width) * -1);
left: calc(var(--border-width) * -1);
right: calc(var(--border-width) * -1);
top: calc(var(--border-width) * -1)
}
.card__heading a:after {
bottom: 0;
content: "";
left: 0;
position: absolute;
right: 0;
top: 0;
z-index: 1
}
.card__heading a:after {
outline-offset: .3rem
}
.card__heading a:focus:after {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3);
outline: .2rem solid rgba(var(--color-foreground), .5)
}
.card__heading a:focus-visible:after {
box-shadow: 0 0 0 .3rem rgb(var(--color-background)), 0 0 .5rem .4rem rgba(var(--color-foreground), .3);
outline: .2rem solid rgba(var(--color-foreground), .5)
}
.card__heading a:focus:not(:focus-visible):after {
box-shadow: none;
outline: 0
}
.card__heading a:focus {
box-shadow: none;
outline: 0
}
@media screen and (min-width: 990px) {
.card .media.media--hover-effect>img:only-child,
.card-wrapper .media.media--hover-effect>img:only-child {
transition: transform var(--duration-long) ease
}
.card:hover .media.media--hover-effect>img:first-child:only-child,
.card-wrapper:hover .media.media--hover-effect>img:first-child:only-child {
transform: scale(1.03)
}
.card-wrapper:hover .media.media--hover-effect>img:first-child:not(:only-child) {
opacity: 0
}
.card-wrapper:hover .media.media--hover-effect>img+img {
opacity: 1;
transition: transform var(--duration-long) ease;
transform: scale(1.03)
}
.underline-links-hover:hover a {
text-decoration: underline;
text-underline-offset: .3rem
}
}
.card--standard.card--media .card__inner .card__information,
.card--standard.card--text:not(.card--horizontal)>.card__content .card__heading:not(.card__heading--placeholder),
.card--standard:not(.card--horizontal)>.card__content .card__badge,
.card--standard.card--text.article-card>.card__content .card__information,
.card--standard>.card__content .card__caption {
display: none
}
.card--standard:not(.card--horizontal) .placeholder-svg {
height: auto;
width: 100%
}
.card--standard>.card__content {
padding: 0
}
.card--standard>.card__content .card__information {
padding-left: 0;
padding-right: 0
}
.card--card.card--media .card__inner .card__information,
.card--card.card--text .card__inner,
.card--card.card--media>.card__content .card__badge {
display: none
}
.card--horizontal .card__badge,
.card--horizontal.card--text .card__inner {
display: none
}
.card--extend-height {
height: 100%
}
.card--extend-height.card--standard.card--text,
.card--extend-height.card--media {
display: flex;
flex-direction: column
}
.card--extend-height.card--standard.card--text .card__inner,
.card--extend-height.card--media .card__inner {
flex-grow: 1
}
.card .icon-wrap {
margin-left: .8rem;
white-space: nowrap;
transition: transform var(--duration-short) ease;
overflow: hidden
}
.card-information>*+* {
margin-top: .5rem
}
.card-information {
width: 100%
}
.card-information>* {
line-height: calc(1 + .4 / var(--font-body-scale));
color: rgb(var(--color-foreground))
}
.card-information>.price {
color: rgb(var(--color-foreground))
}
.card--horizontal .card-information>.price {
color: rgba(var(--color-foreground), .75)
}
.card-information>.rating {
margin-top: .4rem
}
.card-information>*:not(.visually-hidden:first-child)+*:not(.rating):not(.card__information-volume-pricing-note) {
margin-top: .7rem
}
.card-information .caption {
letter-spacing: .07rem
}
.card-article-info {
margin-top: 1rem
}
.card--shape .card__content {
padding-top: 0
}
.card--shape.card--standard:not(.card--text) .card__inner {
border: 0;
background-color: transparent;
filter: drop-shadow(var(--shadow-horizontal-offset) var(--shadow-vertical-offset) var(--shadow-blur-radius) rgba(var(--color-shadow), var(--shadow-opacity)))
}
.card--shape.card--standard:not(.card--text) .card__inner:after {
display: none
}
.grid__item:nth-child(2n) .shape--blob {
clip-path: polygon(var(--shape--blob-2))
}
.grid__item:nth-child(3n) .shape--blob {
clip-path: polygon(var(--shape--blob-3))
}
.grid__item:nth-child(4n) .shape--blob {
clip-path: polygon(var(--shape--blob-4))
}
.grid__item:nth-child(5n) .shape--blob {
clip-path: polygon(var(--shape--blob-5))
}
.grid__item:nth-child(7n) .shape--blob {
clip-path: polygon(var(--shape--blob-6))
}
.grid__item:nth-child(8n) .shape--blob {
clip-path: polygon(var(--shape--blob-1))
}
@media (prefers-reduced-motion: no-preference) {
.product-card-wrapper .shape--round {
transition: clip-path var(--duration-long) ease
}
.product-card-wrapper:hover .shape--round {
clip-path: ellipse(47% 47% at 50% 50%)
}
.product-card-wrapper .shape--blob {
transition: clip-path var(--duration-long) ease-in-out
}
.product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-5))
}
.grid__item:nth-child(2n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-6))
}
.grid__item:nth-child(3n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-1))
}
.grid__item:nth-child(4n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-2))
}
.grid__item:nth-child(5n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-3))
}
.grid__item:nth-child(7n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-4))
}
.grid__item:nth-child(8n) .product-card-wrapper:hover .shape--blob {
clip-path: polygon(var(--shape--blob-5))
}
}
</style>
<style>
.price {
font-size: 1.6rem;
letter-spacing: .1rem;
line-height: calc(1 + .5 / var(--font-body-scale));
color: rgb(var(--color-foreground))
}
.price>* {
display: inline-block;
vertical-align: top
}
.price.price--unavailable {
visibility: hidden
}
.price--end {
text-align: right
}
.price .price-item {
display: inline-block;
margin: 0 1rem 0 0
}
.price__regular .price-item--regular {
margin-right: 0
}
.price:not(.price--show-badge) .price-item--last:last-of-type {
margin: 0
}
@media screen and (min-width: 750px) {
.price {
margin-bottom: 0
}
}
.price--large {
font-size: 1.6rem;
line-height: calc(1 + .5 / var(--font-body-scale));
letter-spacing: .13rem
}
@media screen and (min-width: 750px) {
.price--large {
font-size: 1.8rem
}
}
.price--sold-out .price__availability,
.price__regular {
display: block
}
.price__sale,
.price__availability,
.price .price__badge-sale,
.price .price__badge-sold-out,
.price--on-sale .price__regular,
.price--on-sale .price__availability {
display: none
}
.price--sold-out .price__badge-sold-out,
.price--on-sale .price__badge-sale,
.volume-pricing--sale-badge .price__badge-sale {
display: inline-block
}
.volume-pricing--sale-badge .price__badge-sale {
margin-left: .5rem
}
.price--on-sale .price__sale {
display: initial;
flex-direction: row;
flex-wrap: wrap
}
.price--center {
display: initial;
justify-content: center
}
.price--on-sale .price-item--regular {
text-decoration: line-through;
color: rgba(var(--color-foreground), .75);
font-size: 1.3rem
}
.unit-price {
display: block;
font-size: 1.1rem;
letter-spacing: .04rem;
line-height: calc(1 + .2 / var(--font-body-scale));
margin-top: .2rem;
text-transform: uppercase;
color: rgba(var(--color-foreground), .7)
}
</style>
<style>
.related-products {
display: block;
}
.related-products__heading {
margin: 0 0 3rem;
}
</style>
<style data-shopify>
.section-template--17040648077525__related-products-padding {
padding-top: 0px;
padding-bottom: 45px;
}
@media screen and (min-width: 750px) {
.section-template--17040648077525__related-products-padding {
padding-top: 0px;
padding-bottom: 60px;
}
}
</style>
<div class="color-background-1 gradient no-js-hidden">
<product-recommendations
class="related-products page-width section-template--17040648077525__related-products-padding isolate scroll-trigger animate--slide-in"
data-url="/recommendations/products?section_id=template--17040648077525__related-products&product_id=8226828321669&limit=4">
</product-recommendations>
</div>
</section>
</main>
<!-- BEGIN sections: footer-group -->
<section id="shopify-section-sections--17040648372437__newsletter"
class="shopify-section shopify-section-group-footer-group section">
<style>
.newsletter-form {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
position: relative
}
@media screen and (min-width: 750px) {
.newsletter-form {
align-items: flex-start;
margin: 0 auto;
max-width: 36rem
}
}
.newsletter-form__field-wrapper {
width: 100%
}
.newsletter-form__field-wrapper .field__input {
padding-right: 5rem
}
.newsletter-form__field-wrapper .field {
z-index: 0
}
.newsletter-form__message {
justify-content: center;
margin-bottom: 0
}
.newsletter-form__message--success {
margin-top: 2rem
}
@media screen and (min-width: 750px) {
.newsletter-form__message {
justify-content: flex-start
}
}
.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 {
width: 1.5rem
}
</style>
<style>
.newsletter__wrapper {
padding-right: calc(4rem / var(--font-body-scale));
padding-left: calc(4rem / var(--font-body-scale))
}
@media screen and (min-width: 750px) {
.newsletter__wrapper {
padding-right: 9rem;
padding-left: 9rem
}
}
.newsletter__wrapper>* {
margin-top: 0;
margin-bottom: 0
}
.newsletter__wrapper>*+* {
margin-top: 2rem
}
.newsletter__wrapper>*+.newsletter-form {
margin-top: 3rem
}
.newsletter__subheading {
max-width: 70rem;
margin-left: auto;
margin-right: auto
}
.newsletter__wrapper .newsletter-form__field-wrapper {
max-width: 36rem
}
.newsletter-form__field-wrapper .newsletter-form__message {
margin-top: 1.5rem
}
.newsletter__button {
margin-top: 3rem;
width: fit-content
}
@media screen and (min-width: 750px) {
.newsletter__button {
flex-shrink: 0;
margin: 0 0 0 1rem
}
}
</style>
<style data-shopify>
.section-sections--17040648372437__newsletter-padding {
padding-top: 21px;
padding-bottom: 0px;
}
@media screen and (min-width: 750px) {
.section-sections--17040648372437__newsletter-padding {
padding-top: 28px;
padding-bottom: 0px;
}
}
</style>
<div class="newsletter center ">
<div
class="newsletter__wrapper color-inverse gradient content-container isolate content-container--full-width section-sections--17040648372437__newsletter-padding">
<h2 class="inline-richtext h1 scroll-trigger animate--slide-in" data-cascade
style="--animation-order: 1;">
Pusat Lengkap Permainan Situs Toto Togel Online 4D KOITOTO Eksklusif 2025
</h2>
<div class="newsletter__subheading rte scroll-trigger animate--slide-in" data-cascade
style="--animation-order: 2;">
<p>⬇️</p>
</div>
<div>
<form method="post" action="contact#contact_form" id="contact_form" accept-charset="UTF-8"
class="newsletter-form"><input type="hidden" name="form_type" value="customer" /><input
type="hidden" name="utf8" value="✓" />
<input type="hidden" name="contact[tags]" value="newsletter">
<div class="newsletter-form__field-wrapper scroll-trigger animate--slide-in" data-cascade
style="--animation-order: 3;">
<div class="field">
<input id="NewsletterForm--sections--17040648372437__newsletter" type="email"
name="contact[email]" class="field__input" value="" aria-required="true"
autocorrect="off" autocapitalize="off" autocomplete="email" placeholder="Email"
required>
<label class="field__label" for="NewsletterForm--sections--17040648372437__newsletter">
Situs Toto & Togel Online 4D
</label>
<button type="submit" class="newsletter-form__button field__button" name="commit"
id="Subscribe" aria-label="Subscribe">
<svg viewBox="0 0 14 10" fill="none" aria-hidden="true" focusable="false"
class="icon icon-arrow" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd"
d="M8.537.808a.5.5 0 01.817-.162l4 4a.5.5 0 010 .708l-4 4a.5.5 0 11-.708-.708L11.793 5.5H1a.5.5 0 010-1h10.793L8.646 1.354a.5.5 0 01-.109-.546z"
fill="currentColor">
</button>
</div>
</div>
</form>
<br>
<br>
<!-- Gambar Logo -->
<div style="display: flex; justify-content: center; margin-top: 30px;">
<img
src="https://imgstore.io/images/2025/04/14/koitoto_icon.gif"
alt="KOITOTO Icon"
style="width: 1000px; width: 100%; height: auto;">
</div>
<!-- Gambar Provider -->
<div style="display: flex; justify-content: center; margin-top: 30px;">
<img
src="https://imgstore.io/images/2025/04/09/footer_provider_col.webp"
alt="Provider KOITOTO"
style="max-width: 1200px; width: 100%; height: auto;">
</div>
</section>
</div>
</div>
</div>
</section>
<div id="shopify-section-sections--17040648372437__footer"
class="shopify-section shopify-section-group-footer-group">
<style>
.footer {
border-top: .1rem solid rgba(var(--color-foreground), .08)
}
.footer:not(.color-background-1) {
border-top: none
}
.footer__content-top {
padding-bottom: 5rem;
display: block
}
@media screen and (max-width: 749px) {
.footer .grid {
display: block
}
.footer-block.grid__item {
padding: 0;
margin: 4rem 0;
width: 100%
}
.footer-block.grid__item:first-child {
margin-top: 0
}
.footer__content-top {
padding-bottom: 3rem;
padding-left: calc(4rem / var(--font-body-scale));
padding-right: calc(4rem / var(--font-body-scale))
}
}
@media screen and (min-width: 750px) {
.footer__content-top .grid {
row-gap: 6rem;
margin-bottom: 0
}
}
.footer__content-bottom {
border-top: solid .1rem rgba(var(--color-foreground), .08);
padding-top: 3rem
}
.footer__content-bottom:only-child {
border-top: 0
}
.footer__content-bottom-wrapper {
display: flex;
width: 100%
}
@media screen and (max-width: 749px) {
.footer__content-bottom {
flex-wrap: wrap;
padding-top: 0;
padding-left: 0;
padding-right: 0;
row-gap: 1.5rem
}
.footer__content-bottom-wrapper {
flex-wrap: wrap;
row-gap: 1.5rem;
justify-content: center
}
}
.footer__localization:empty+.footer__column--info {
align-items: center
}
@media screen and (max-width: 749px) {
.footer__localization:empty+.footer__column {
padding-top: 1.5rem
}
}
.footer__column {
width: 100%;
align-items: flex-end
}
.footer__column--info {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding-left: 2rem;
padding-right: 2rem
}
@media screen and (min-width: 750px) {
.footer__column--info {
padding-left: 0;
padding-right: 0;
align-items: flex-end
}
}
.footer-block:only-child:last-child {
text-align: center;
max-width: 76rem;
margin: 0 auto
}
@media screen and (min-width: 750px) {
.footer-block {
display: block;
margin-top: 0
}
}
.footer-block:empty {
display: none
}
.footer-block--newsletter {
display: flex;
align-items: flex-end;
margin-top: 3rem;
gap: 1rem
}
.footer-block--newsletter:only-child {
margin-top: 0
}
@media screen and (max-width: 749px) {
.footer-block.footer-block--menu:only-child {
text-align: left
}
}
@media screen and (min-width: 750px) {
.footer-block--newsletter {
flex-wrap: nowrap;
justify-content: center
}
}
.footer-block__heading {
margin-bottom: 2rem;
margin-top: 0;
font-size: calc(var(--font-heading-scale) * 1.6rem)
}
@media screen and (min-width: 990px) {
.footer-block__heading {
font-size: calc(var(--font-heading-scale) * 1.8rem)
}
}
.footer__list-social:empty,
.footer-block--newsletter:empty {
display: none
}
.footer__follow-on-shop {
display: flex;
text-align: center
}
.footer__list-social.list-social:only-child {
justify-content: center
}
.footer-block__newsletter {
text-align: center;
flex-grow: 1
}
.newsletter-form__field-wrapper {
max-width: 36rem
}
@media screen and (min-width: 750px) {
.footer-block__newsletter:not(:only-child) {
text-align: left;
margin-right: auto
}
.footer-block__newsletter:not(:only-child) .footer__newsletter {
justify-content: flex-start;
margin: 0
}
.footer-block__newsletter:not(:only-child) .newsletter-form__message--success {
left: auto
}
.footer__follow-on-shop {
margin-bottom: .4rem
}
.footer__follow-on-shop:first-child:not(:last-child) {
justify-content: flex-start;
margin-right: auto;
text-align: left
}
.footer__follow-on-shop:not(:first-child):not(:last-child) {
justify-content: flex-end;
text-align: right
}
}
@media screen and (max-width: 749px) {
.footer-block--newsletter {
display: flex;
flex-direction: column;
flex: 1 1 100%;
align-items: center;
gap: 3rem
}
.footer__list-social.list-social,
.footer__follow-on-shop,
.footer-block__newsletter {
display: flex;
justify-content: center
}
.footer-block__newsletter {
flex-direction: column
}
}
@media screen and (min-width: 750px) {
.footer-block__newsletter+.footer__list-social {
margin-top: 0
}
}
.footer__localization {
display: flex;
flex-direction: row;
justify-content: center;
align-content: center;
flex-wrap: wrap;
padding: 1rem 1rem 0
}
.footer__localization:empty {
display: none
}
.footer__localization h2 {
margin: 1rem 1rem .5rem;
color: rgba(var(--color-foreground), .75)
}
@media screen and (min-width: 750px) {
.footer__localization {
padding: .4rem 0;
justify-content: flex-start
}
.footer__localization h2 {
margin: 1rem 0 0
}
}
@media screen and (max-width: 989px) {
.footer__localization noscript {
width: 100%
}
}
@media screen and (min-width: 750px) {
.footer__payment {
margin-top: 1.5rem
}
}
.footer__content-bottom-wrapper--center {
justify-content: center
}
.footer__copyright {
text-align: center;
margin-top: 1.5rem
}
@media screen and (min-width: 750px) {
.footer__content-bottom-wrapper:not(.footer__content-bottom-wrapper--center) .footer__copyright {
text-align: right
}
}
@keyframes appear-down {
0% {
opacity: 0;
margin-top: -1rem
}
to {
opacity: 1;
margin-top: 0
}
}
.footer-block__details-content {
margin-bottom: 4rem
}
@media screen and (min-width: 750px) {
.footer-block__details-content {
margin-bottom: 0
}
.footer-block__details-content>p,
.footer-block__details-content>li {
padding: 0
}
.footer-block:only-child li {
display: inline
}
.footer-block__details-content>li:not(:last-child) {
margin-right: 1.5rem
}
}
.footer-block__details-content .list-menu__item--link,
.copyright__content a {
color: rgba(var(--color-foreground), .75)
}
.footer-block__details-content .list-menu__item--active {
transition: text-decoration-thickness var(--duration-short) ease;
color: rgb(var(--color-foreground))
}
@media screen and (min-width: 750px) {
.footer-block__details-content .list-menu__item--link:hover,
.copyright__content a:hover {
color: rgb(var(--color-foreground));
text-decoration: underline;
text-underline-offset: .3rem
}
.footer-block__details-content .list-menu__item--active:hover {
text-decoration-thickness: .2rem
}
}
@media screen and (max-width: 989px) {
.footer-block__details-content .list-menu__item--link {
padding-top: 1rem;
padding-bottom: 1rem
}
}
@media screen and (min-width: 750px) {
.footer-block__details-content .list-menu__item--link {
display: inline-block;
font-size: 1.4rem
}
.footer-block__details-content>:first-child .list-menu__item--link {
padding-top: 0
}
}
.footer-block-image {
display: flex
}
.footer-block-image.left {
justify-content: flex-start
}
.footer-block-image.center {
justify-content: center
}
.footer-block-image.right {
justify-content: flex-end
}
@media screen and (max-width: 749px) {
.footer-block-image,
.footer-block-image.left,
.footer-block-image.center,
.footer-block-image.right {
justify-content: center
}
}
.footer-block__image-wrapper {
margin-bottom: 2rem;
overflow: hidden !important
}
.footer-block__image-wrapper img {
display: block;
height: auto;
max-width: 100%
}
.footer-block__brand-info {
text-align: left
}
.footer-block:only-child .footer-block__brand-info {
text-align: center
}
.footer-block:only-child>.footer-block__brand-info>.footer-block__image-wrapper {
margin-left: auto;
margin-right: auto
}
.footer-block-image>img,
.footer-block__brand-info>img {
height: auto
}
.footer-block:only-child .footer-block__brand-info .footer__list-social.list-social {
justify-content: center
}
.footer-block__brand-info .footer__list-social.list-social {
justify-content: flex-start;
margin-left: -1.3rem;
margin-right: -1.3rem
}
.footer-block__details-content .placeholder-svg {
max-width: 20rem
}
.copyright__content {
font-size: 1.1rem
}
.copyright__content a {
color: currentColor;
text-decoration: none
}
.policies {
display: inline
}
.policies li {
display: inline-flex;
justify-content: center;
align-items: center
}
.policies li:before {
content: "\b7";
padding: 0 .8rem
}
.policies li a {
padding: .6rem 0;
display: block
}
@media screen and (min-width: 750px) {
.policies li a {
padding: 0
}
}
@keyframes animateLocalization {
0% {
opacity: 0;
transform: translateY(0)
}
to {
opacity: 1;
transform: translateY(-1rem)
}
}
@supports not (inset: 10px) {
@media screen and (max-width: 749px) {
.footer .grid {
margin-left: 0
}
}
@media screen and (min-width: 750px) {
.footer__content-top .grid {
margin-left: -3rem
}
.footer__content-top .grid__item {
padding-left: 3rem
}
}
}
</style>
<style>
.newsletter-form {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
width: 100%;
position: relative
}
@media screen and (min-width: 750px) {
.newsletter-form {
align-items: flex-start;
margin: 0 auto;
max-width: 36rem
}
}
.newsletter-form__field-wrapper {
width: 100%
}
.newsletter-form__field-wrapper .field__input {
padding-right: 5rem
}
.newsletter-form__field-wrapper .field {
z-index: 0
}
.newsletter-form__message {
justify-content: center;
margin-bottom: 0
}
.newsletter-form__message--success {
margin-top: 2rem
}
@media screen and (min-width: 750px) {
.newsletter-form__message {
justify-content: flex-start
}
}
.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 {
width: 1.5rem
}
</style>
<style>
.list-menu--right {
right: 0;
}
.list-menu--disclosure {
position: absolute;
min-width: 100%;
width: 20rem;
border: 1px solid rgba(var(--color-foreground), 0.2);
}
.list-menu--disclosure:focus {
outline: none;
}
.list-menu__item--active {
text-decoration: underline;
text-underline-offset: 0.3rem;
}
.list-menu__item--active:hover {
text-decoration-thickness: 0.2rem;
}
.list-menu--disclosure.localization-selector {
max-height: 18rem;
overflow: auto;
width: 10rem;
padding: 0.5rem;
}
</style>
<style>
.list-payment {
display: flex;
flex-wrap: wrap;
justify-content: center;
margin: -0.5rem 0;
padding-top: 1rem;
padding-left: 0;
}
@media screen and (min-width: 750px) {
.list-payment {
justify-content: flex-end;
margin: -0.5rem;
padding-top: 0;
}
}
.list-payment__item {
align-items: center;
display: flex;
padding: 0.5rem;
}
</style>
<style>
.list-social {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
}
@media only screen and (max-width: 749px) {
.list-social {
justify-content: center;
}
}
.list-social__item .icon {
height: 2.2rem;
width: 2.2rem;
}
.list-social__link {
align-items: center;
display: flex;
padding: 1.1rem;
color: rgb(var(--color-foreground));
}
.utility-bar .list-social__link {
padding: 0 0.8rem;
height: 3.8rem;
}
.list-social__link:hover .icon {
transform: scale(1.07);
}
</style>
<style data-shopify>
.footer {
margin-top: 0px;
}
.section-sections--17040648372437__footer-padding {
padding-top: 33px;
padding-bottom: 45px;
}
@media screen and (min-width: 750px) {
.footer {
margin-top: 0px;
}
.section-sections--17040648372437__footer-padding {
padding-top: 44px;
padding-bottom: 60px;
}
}
</style>
<footer class="footer color-inverse gradient section-sections--17040648372437__footer-padding">
<div class="footer__content-top page-width">
<div class="footer-block--newsletter scroll-trigger animate--slide-in" data-cascade></div>
</div>
<div class="footer__content-bottom scroll-trigger animate--slide-in" data-cascade>
<div class="footer__content-bottom-wrapper page-width">
<div class="footer__column footer__localization isolate"></div>
<div class="footer__column footer__column--info">
<div class="footer__payment">
<span class="visually-hidden">Payment methods</span>
<ul class="list list-payment" role="list"></ul>
</div>
</div>
</div>
<div class="footer__content-bottom-wrapper page-width">
<div class="footer__copyright caption">
<small class="copyright__content">© Copyright<a
href="https://infinite-style.com/"> 2018 - 2025 | KOITOTO |</a></small>
<small class="copyright__content"><a target="_blank" rel="nofollow">All Rights Reserved | 18+</a></small>
</div>
</div>
</div>
</footer>
<style>
.fixed-footer {
display: flex;
justify-content: space-around;
position: fixed;
background: linear-gradient(to bottom, #8B0000 0%, #8B0000 50%, #8B0000 100%);
padding: 5px 0;
box-shadow: 0 0 8px 4px #666;
left: 0;
right: 0;
bottom: 0;
z-index: 99
}
.fixed-footer a {
flex-basis: calc((100% - 15px*6)/ 5);
text-decoration: none;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
max-width: 75px;
font-size: 12px;
font-family: Ubuntu, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
}
.fixed-footer a:hover {
font-weight: bold;
}
.fixed-footer .center {
transform: scale(1.5) translateY(-5px);
background: center no-repeat;
background-size: contain;
background-color: inherit;
border-radius: 50%;
}
.fixed-footer img {
max-width: 20px;
margin-bottom: 0;
max-height: 20px;
}
</style>
<div class="fixed-footer">
<a href="https://lotsofpromotionskoi.org/" rel="nofollow noopener" target="_blank">
<img layout="intrinsic" height="20px" width="20px"
src="https://kilat.digital/images/2023/12/22/b3f1b578ebdb270700ff9b0c9475cf69.png"
alt="PROMO KOITOTO">
Bonus
</a>
<a href="https://mikale.me/login-koi" rel="nofollow noopener" target="_blank">
<img layout="intrinsic" height="20px" width="20px"
src="https://kilat.digital/images/2023/12/20/6b2ffffc4e97bb30e6d922ced607f802.png"
alt="LOGIN KOITOTO">
Login
</a>
<a href="https://mikale.me/seoyudha" rel="nofollow noopener" target="_blank" class="tada">
<img layout="intrinsic" height="50" width="50"
src="https://kilat.digital/images/2023/12/20/bd350c38cdf02a19edcb5022f4d46f19.png"
alt="DAFTAR KOITOTO">
Daftar
</a>
<a href="https://mikale.me/login-koi" rel="nofollow noopener" target="_blank">
<img layout="intrinsic" height="20px" width="20px"
src="https://kilat.digital/images/2023/12/22/2b1184d165c244636c89bef160799697.png"
alt="LINK KOITOTO">
Link
</a>
<a href="https://direct.lc.chat/13532091/" rel="nofollow noopener" target="_blank"
class="js_live_chat_link live-chat-link">
<img class="live-chat-icon" layout="intrinsic" height="20px" width="20px"
src="https://kilat.digital/images/2023/12/20/ed94593b02796a81fe558659411b7562.png"
alt="LIVECHAT KOITOTO">
Live Chat
</a>
</div>
</div>
<!-- END sections: footer-group -->
<ul hidden>
<li id="a11y-refresh-page-message">Choosing a selection results in a full page refresh.</li>
<li id="a11y-new-window-message">Opens in a new window.</li>
</ul>
<script>
window.shopUrl = 'https://infinite-style.com/';
window.routes = {
cart_add_url: '/cart/add',
cart_change_url: '/cart/change',
cart_update_url: '/cart/update',
cart_url: '/cart',
predictive_search_url: '/search/suggest',
};
window.cartStrings = {
error: `There was an error while updating your cart. Please try again.`,
quantityError: `You can only add [quantity] of this item to your cart.`,
};
window.variantStrings = {
addToCart: `Add to cart`,
soldOut: `Sold out`,
unavailable: `Unavailable`,
unavailable_with_option: `[value] - Unavailable`,
};
window.quickOrderListStrings = {
itemsAdded: `[quantity] items added`,
itemAdded: `[quantity] item added`,
itemsRemoved: `[quantity] items removed`,
itemRemoved: `[quantity] item removed`,
viewCart: `View cart`,
each: `[money]/ea`,
};
window.accessibilityStrings = {
imageAvailable: `Image [index] is now available in gallery view`,
shareSuccess: `Link copied to clipboard`,
pauseSlideshow: `Pause slideshow`,
playSlideshow: `Play slideshow`,
recipientFormExpanded: `Gift card recipient form expanded`,
recipientFormCollapsed: `Gift card recipient form collapsed`,
};
</script>
<script>
/** Shopify CDN: Minification failed
Line 16:0 Transforming class syntax to the configured target environment ("es5") is not supported yet
Line 17:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 29:21 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 38:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 42:10 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 44:4 Transforming const to the configured target environment ("es5") is not supported yet
Line 64:14 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 68:13 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 78:9 Transforming object literal extensions to the configured target environment ("es5") is not supported yet
Line 79:4 Transforming const to the configured target environment ("es5") is not supported yet
... and 31 more hidden warnings
**/
class PredictiveSearch extends SearchForm {
constructor() {
super();
this.cachedResults = {};
this.predictiveSearchResults = this.querySelector('[data-predictive-search]');
this.allPredictiveSearchInstances = document.querySelectorAll('predictive-search');
this.isOpen = false;
this.abortController = new AbortController();
this.searchTerm = '';
this.setupEventListeners();
}
setupEventListeners() {
this.input.form.addEventListener('submit', this.onFormSubmit.bind(this));
this.input.addEventListener('focus', this.onFocus.bind(this));
this.addEventListener('focusout', this.onFocusOut.bind(this));
this.addEventListener('keyup', this.onKeyup.bind(this));
this.addEventListener('keydown', this.onKeydown.bind(this));
}
getQuery() {
return this.input.value.trim();
}
onChange() {
super.onChange();
const newSearchTerm = this.getQuery();
if (!this.searchTerm || !newSearchTerm.startsWith(this.searchTerm)) {
// Remove the results when they are no longer relevant for the new search term
// so they don't show up when the dropdown opens again
this.querySelector('#predictive-search-results-groups-wrapper')?.remove();
}
// Update the term asap, don't wait for the predictive search query to finish loading
this.updateSearchForTerm(this.searchTerm, newSearchTerm);
this.searchTerm = newSearchTerm;
if (!this.searchTerm.length) {
this.close(true);
return;
}
this.getSearchResults(this.searchTerm);
}
onFormSubmit(event) {
if (!this.getQuery().length || this.querySelector('[aria-selected="true"] a')) event.preventDefault();
}
onFormReset(event) {
super.onFormReset(event);
if (super.shouldResetForm()) {
this.searchTerm = '';
this.abortController.abort();
this.abortController = new AbortController();
this.closeResults(true);
}
}
onFocus() {
const currentSearchTerm = this.getQuery();
if (!currentSearchTerm.length) return;
if (this.searchTerm !== currentSearchTerm) {
// Search term was changed from other search input, treat it as a user change
this.onChange();
} else if (this.getAttribute('results') === 'true') {
this.open();
} else {
this.getSearchResults(this.searchTerm);
}
}
onFocusOut() {
setTimeout(() => {
if (!this.contains(document.activeElement)) this.close();
});
}
onKeyup(event) {
if (!this.getQuery().length) this.close(true);
event.preventDefault();
switch (event.code) {
case 'ArrowUp':
this.switchOption('up');
break;
case 'ArrowDown':
this.switchOption('down');
break;
case 'Enter':
this.selectOption();
break;
}
}
onKeydown(event) {
// Prevent the cursor from moving in the input when using the up and down arrow keys
if (event.code === 'ArrowUp' || event.code === 'ArrowDown') {
event.preventDefault();
}
}
updateSearchForTerm(previousTerm, newTerm) {
const searchForTextElement = this.querySelector('[data-predictive-search-search-for-text]');
const currentButtonText = searchForTextElement?.innerText;
if (currentButtonText) {
if (currentButtonText.match(new RegExp(previousTerm, 'g')).length > 1) {
// The new term matches part of the button text and not just the search term, do not replace to avoid mistakes
return;
}
const newButtonText = currentButtonText.replace(previousTerm, newTerm);
searchForTextElement.innerText = newButtonText;
}
}
switchOption(direction) {
if (!this.getAttribute('open')) return;
const moveUp = direction === 'up';
const selectedElement = this.querySelector('[aria-selected="true"]');
// Filter out hidden elements (duplicated page and article resources) thanks
// to this https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent
const allVisibleElements = Array.from(this.querySelectorAll('li, button.predictive-search__item')).filter(
(element) => element.offsetParent !== null
);
let activeElementIndex = 0;
if (moveUp && !selectedElement) return;
let selectedElementIndex = -1;
let i = 0;
while (selectedElementIndex === -1 && i <= allVisibleElements.length) {
if (allVisibleElements[i] === selectedElement) {
selectedElementIndex = i;
}
i++;
}
this.statusElement.textContent = '';
if (!moveUp && selectedElement) {
activeElementIndex = selectedElementIndex === allVisibleElements.length - 1 ? 0 : selectedElementIndex + 1;
} else if (moveUp) {
activeElementIndex = selectedElementIndex === 0 ? allVisibleElements.length - 1 : selectedElementIndex - 1;
}
if (activeElementIndex === selectedElementIndex) return;
const activeElement = allVisibleElements[activeElementIndex];
activeElement.setAttribute('aria-selected', true);
if (selectedElement) selectedElement.setAttribute('aria-selected', false);
this.input.setAttribute('aria-activedescendant', activeElement.id);
}
selectOption() {
const selectedOption = this.querySelector('[aria-selected="true"] a, button[aria-selected="true"]');
if (selectedOption) selectedOption.click();
}
getSearchResults(searchTerm) {
const queryKey = searchTerm.replace(' ', '-').toLowerCase();
this.setLiveRegionLoadingState();
if (this.cachedResults[queryKey]) {
this.renderSearchResults(this.cachedResults[queryKey]);
return;
}
fetch(`${routes.predictive_search_url}?q=${encodeURIComponent(searchTerm)}§ion_id=predictive-search`, {
signal: this.abortController.signal,
})
.then((response) => {
if (!response.ok) {
var error = new Error(response.status);
this.close();
throw error;
}
return response.text();
})
.then((text) => {
const resultsMarkup = new DOMParser()
.parseFromString(text, 'text/html')
.querySelector('#shopify-section-predictive-search').innerHTML;
// Save bandwidth keeping the cache in all instances synced
this.allPredictiveSearchInstances.forEach((predictiveSearchInstance) => {
predictiveSearchInstance.cachedResults[queryKey] = resultsMarkup;
});
this.renderSearchResults(resultsMarkup);
})
.catch((error) => {
if (error?.code === 20) {
// Code 20 means the call was aborted
return;
}
this.close();
throw error;
});
}
setLiveRegionLoadingState() {
this.statusElement = this.statusElement || this.querySelector('.predictive-search-status');
this.loadingText = this.loadingText || this.getAttribute('data-loading-text');
this.setLiveRegionText(this.loadingText);
this.setAttribute('loading', true);
}
setLiveRegionText(statusText) {
this.statusElement.setAttribute('aria-hidden', 'false');
this.statusElement.textContent = statusText;
setTimeout(() => {
this.statusElement.setAttribute('aria-hidden', 'true');
}, 1000);
}
renderSearchResults(resultsMarkup) {
this.predictiveSearchResults.innerHTML = resultsMarkup;
this.setAttribute('results', true);
this.setLiveRegionResults();
this.open();
}
setLiveRegionResults() {
this.removeAttribute('loading');
this.setLiveRegionText(this.querySelector('[data-predictive-search-live-region-count-value]').textContent);
}
getResultsMaxHeight() {
this.resultsMaxHeight =
window.innerHeight - document.querySelector('.section-header').getBoundingClientRect().bottom;
return this.resultsMaxHeight;
}
open() {
this.predictiveSearchResults.style.maxHeight = this.resultsMaxHeight || `${this.getResultsMaxHeight()}px`;
this.setAttribute('open', true);
this.input.setAttribute('aria-expanded', true);
this.isOpen = true;
}
close(clearSearchTerm = false) {
this.closeResults(clearSearchTerm);
this.isOpen = false;
}
closeResults(clearSearchTerm = false) {
if (clearSearchTerm) {
this.input.value = '';
this.removeAttribute('results');
}
const selected = this.querySelector('[aria-selected="true"]');
if (selected) selected.setAttribute('aria-selected', false);
this.input.setAttribute('aria-activedescendant', '');
this.removeAttribute('loading');
this.removeAttribute('open');
this.input.setAttribute('aria-expanded', false);
this.resultsMaxHeight = false;
this.predictiveSearchResults.removeAttribute('style');
}
}
customElements.define('predictive-search', PredictiveSearch);
</script>
</body>
<div class="rtpIcon">
<a href="https://mikale.me/rtp-arm" target="_blank">
<img src="https://imgstore.io/images/2025/03/20/GIFRTPSLOT.gif" alt="RTP Slot">
</a>
</div>
</html>