Versa Oliwa Extra Virgin
Świeża trawa. Karczoch. Zielone migdały.Na koniec szczypie w gardle. I tak ma być. Tak smakują polifenole. Polifenole 413 mg/kg Dwa razy więcej niż sklepowa średnia (200) Kwasowość 0,21% Norma UE dopuszcza 0,8% Od drzewa do tłoczni 4 godziny Branżowy standard: kilka dni Odmiana Geracese, jeden gaj, zbiory 2025/26 Zero mieszanek Liczby sprawdza niezależne laboratorium AIPO. Pobierz certyfikat (PDF) → Z waszych kuchni. < > @majenakarnia @wrobellaura @patkersx @imvictoriaveronica @majenakarnia @patkersx @gotujzdiego @zbozna_piekarnia @tomasztraczszef @bartek_chef Więcej na @versami.pl Codziennie. Nie na specjalną okazję. Zupełnie szczerze: większość tej puszki zejdzie ci na chleb. Reszta: pomidor, jajko sadzone, burrata, makaron dokończony łyżką już na talerzu. Nagle wszyscy pytają, co zmieniłeś. Na ciepło radzi sobie tak samo: ryba, cebula, risotto, warzywa z piekarnika. Trzyma do 180°C i dalej jest sobą. Rośnie tu i tylko tu. Sto kilometrów jońskiego wybrzeża Kalabrii (Włochy). I nigdzie indziej. Botanicznie osobna, niespokrewniona z żadną inną włoską odmianą; miejscowi mówią na nią Grossa di Gerace. Zbiór ręczny, początek października: oliwka wciąż zielona, twarda, pełna polifenoli. W sklepie jej nie znajdziesz. Dlaczego puszka, nie butelka? Światło i tlen postarzają oliwę szybciej niż czas. Puszka odcina jedno i drugie. Otwierasz ją tak świeżą, jak ją zamknęliśmy. Duże opakowanie kusi ceną za litr. Ale oliwa to walka z czasem: od dnia tłoczenia tylko traci. Otwarty kanister przegrywa ją powoli, ostatnie dwa litry nigdy nie smakują jak pierwsze. Litr w puszce, zużyty w miesiąc, nie daje czasowi szans. .versa-ugc { --vugc-ink: #0C081C; --vugc-graphite: #1D1A16; /* Section sits on the theme's CORAL #FF5E33 band: STONE fails contrast there (~2:1), so secondary text uses GRAPHITE (5.5:1). Restore #69614F if the band goes light again. */ --vugc-muted: #1D1A16; --vugc-border: #E3DDCE; --vugc-accent: #CCFF00; --vugc-card-bg: transparent; --vugc-cutline-bg: #EFE7D3; --vugc-gap: 12px; --vugc-radius: 0px; --vugc-arrow: 44px; --vugc-arrow-inset: 6px; --vugc-arrow-clearance: 18px; --vugc-font-heading: 'Stolzl', sans-serif; --vugc-font-body: 'DM Sans', system-ui, -apple-system, sans-serif; --vugc-media-object-fit: cover; /* Uniform zoom (X+Y): 1 = off. Try 1.02–1.04 to hide thin screenshot/phone bezels; clip grows from center. */ --vugc-media-zoom: 1.02; box-sizing: border-box; display: block; width: 100%; max-width: 100%; min-width: 0; margin: 0 auto; padding-block: clamp(2.5rem, 6vmin, 5rem); padding-inline: 0; font-family: var(--vugc-font-body); color: var(--vugc-ink); background: transparent; overflow-x: clip; overflow-y: hidden; isolation: isolate; direction: ltr; unicode-bidi: isolate; } @media (min-width: 640px) { .versa-ugc { --vugc-gap: 28px; } } .versa-ugc *, .versa-ugc *::before, .versa-ugc *::after { box-sizing: border-box; } .versa-ugc__shell { width: 100%; max-width: 100%; min-width: 0; margin-inline: auto; overflow-x: clip; } .versa-ugc__inner { width: 100%; max-width: min(1040px, 100%); min-width: 0; margin-inline: auto; padding-left: max(1rem, env(safe-area-inset-left, 0px)); padding-right: max(1rem, env(safe-area-inset-right, 0px)); overflow-x: clip; display: flex; flex-direction: column; align-items: stretch; } .versa-ugc__header { width: 100%; max-width: min(45rem, 100%); min-width: 0; margin-inline: auto; margin-bottom: clamp(1.25rem, 3vmin, 2.5rem); text-align: center; direction: ltr; overflow-wrap: anywhere; } .versa-ugc__header .versa-ugc__eyebrow { font-family: var(--vugc-font-heading); font-size: clamp(0.625rem, 0.5rem + 0.5vmin, 0.6875rem); font-weight: 500; letter-spacing: 0.14em; text-transform: uppercase; color: var(--vugc-muted); margin: 0 0 0.875rem; text-align: center; white-space: normal; } .versa-ugc__header .versa-ugc__title { font-family: var(--vugc-font-heading); font-size: clamp(1.125rem, 0.45rem + 2.2vmin, 2.25rem); line-height: 1.2; font-weight: 400; letter-spacing: -0.02em; margin: 0; color: var(--vugc-ink); overflow-wrap: anywhere; word-break: break-word; hyphens: auto; text-align: center; white-space: normal; display: block; } .versa-ugc__viewport { position: relative; /* Stop the nowrap track min-content width from propagating into theme grid/flex ancestors (Shopify PDP blowout fix) */ contain: inline-size; width: 100%; min-width: 0; max-width: 100%; overflow-x: clip; overflow: hidden; } .versa-ugc__track { display: flex; flex-direction: row; flex-wrap: nowrap; align-items: stretch; gap: var(--vugc-gap); list-style: none; margin: 0; padding: 0.25rem 0 0; width: 0; max-width: 100%; min-width: 100%; overflow-x: auto; overflow-y: hidden; scroll-snap-type: x proximity; scroll-padding-inline: 0; scroll-behavior: smooth; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; touch-action: pan-x manipulation; scrollbar-width: none; } .versa-ugc__track::-webkit-scrollbar { display: none; } .versa-ugc__track>.versa-ugc__card { margin: 0; padding: 0; list-style: none; } .versa-ugc__card { flex: 0 0 auto; width: 100%; max-width: 100%; min-width: 0; scroll-snap-align: start; scroll-snap-stop: normal; background: var(--vugc-card-bg); border-radius: var(--vugc-radius); overflow: hidden; display: flex; flex-direction: column; align-items: stretch; justify-content: flex-start; } @media (min-width: 640px) { .versa-ugc .versa-ugc__track>.versa-ugc__card { width: calc((100% - var(--vugc-gap)) / 2); max-width: calc((100% - var(--vugc-gap)) / 2); } } @media (min-width: 900px) { .versa-ugc .versa-ugc__track>.versa-ugc__card { width: calc((100% - 2 * var(--vugc-gap)) / 3); max-width: calc((100% - 2 * var(--vugc-gap)) / 3); } } .versa-ugc__card--hide { display: none !important; } @media (prefers-reduced-motion: reduce) { .versa-ugc__track { scroll-behavior: auto; } .versa-ugc__arrow, .versa-ugc__card, .versa-ugc__media img, .versa-ugc__media video { transition: none; } } .versa-ugc__media { position: relative; width: 100%; min-width: 0; margin: 0; aspect-ratio: 9 / 16; background: transparent; overflow: hidden; float: none; isolation: isolate; border-radius: var(--vugc-radius) var(--vugc-radius) 0 0; } /* Play/pause toggle on video cards (in-palette: lime dot, ink glyph). Injected by the carousel JS into every media box that holds a video. */ .versa-ugc__playpause { position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; border-radius: 999px; border: 0; padding: 0; cursor: pointer; z-index: 2; background-color: var(--vugc-accent); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 6.5l9 5.5-9 5.5z' fill='%230C081C'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: 55% center; background-size: 16px; } .versa-ugc__playpause.is-playing { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M8 6h3.2v12H8zM12.8 6H16v12h-3.2z' fill='%230C081C'/%3E%3C/svg%3E"); background-position: center; } .versa-ugc__playpause:focus-visible { outline: 2px solid var(--vugc-ink); outline-offset: 2px; } .versa-ugc__media img, .versa-ugc__media video { width: 100%; height: 100%; max-width: none; object-fit: var(--vugc-media-object-fit); object-position: center center; display: block; float: none; transform: scale(var(--vugc-media-zoom)); transform-origin: center center; background: transparent; } @media (max-width: 639px) { .versa-ugc__inner { padding-left: max(12px, env(safe-area-inset-left, 0px)); padding-right: max(12px, env(safe-area-inset-right, 0px)); } .versa-ugc .versa-ugc__card { flex: 0 0 auto; /* Near-full-width card with a right-edge peek of the next card */ width: calc(100% - 48px); max-width: none; align-items: stretch !important; justify-content: flex-start !important; } .versa-ugc .versa-ugc__media { align-self: stretch !important; width: 100% !important; max-width: 100% !important; margin: 0 !important; float: none !important; position: relative; left: auto; right: auto; aspect-ratio: 4 / 5; height: auto; } .versa-ugc .versa-ugc__media img, .versa-ugc .versa-ugc__media video { margin: 0 !important; float: none !important; position: relative; left: auto; right: auto; object-fit: cover; object-position: center center; } .versa-ugc .versa-ugc__meta { align-self: stretch !important; width: 100% !important; max-width: 100% !important; align-items: center !important; text-align: center !important; margin: 0 !important; } .versa-ugc .versa-ugc__meta>* { text-align: center !important; max-width: 100%; } } .versa-ugc__meta { padding: 0.75rem 1rem 1rem; display: flex; flex-direction: column; gap: 0.375rem; min-width: 0; } @media (min-width: 640px) { .versa-ugc__meta { padding: clamp(0.75rem, 1.5vw, 1rem) clamp(0.75rem, 1.5vw, 1rem) clamp(0.875rem, 1.8vw, 1.25rem); } } .versa-ugc__handle { font-size: clamp(0.8125rem, 0.8rem + 0.35vw, 0.875rem); font-weight: 500; color: var(--vugc-ink); overflow-wrap: anywhere; line-height: 1.4; } .versa-ugc__role { font-size: clamp(0.6875rem, 0.65rem + 0.35vw, 0.75rem); color: var(--vugc-muted); margin-bottom: 0.125rem; overflow-wrap: anywhere; line-height: 1.4; } .versa-ugc__quote { font-size: clamp(0.8125rem, 0.78rem + 0.35vw, 0.875rem); line-height: 1.55; color: var(--vugc-ink); font-style: italic; overflow-wrap: anywhere; } /* Caption bar inside the card (Fishwife-style): centered handle on cream */ .versa-ugc__cutline { display: flex; flex-direction: column; gap: 2px; margin: 0; padding: 10px 12px 12px; background: var(--vugc-cutline-bg); text-align: center; align-items: center; /* Equal card heights: the bar stretches to the tallest card's bottom line (track is align-items: stretch), text stays centered. */ flex: 1 0 auto; justify-content: center; font-family: var(--vugc-font-body); line-height: 1.4; } .versa-ugc__cutline-name { font-size: 13px; color: var(--vugc-graphite); } .versa-ugc__cutline-credit { font-family: var(--vugc-font-heading); font-size: 11px; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--vugc-graphite); } /* Cards without a cutline still close with a cream bar */ .versa-ugc__card>.versa-ugc__media:last-child { border-radius: var(--vugc-radius); } .versa-ugc__controls { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; } .versa-ugc__masthead { font-family: var(--vugc-font-heading); font-size: clamp(22px, 2.8vw, 30px); line-height: 1.05; font-weight: 400; letter-spacing: -0.025em; color: var(--vugc-ink); margin: 0; } .versa-ugc__masthead::before, .versa-ugc__masthead::after { content: none !important; display: none !important; } .versa-ugc__nav { display: flex; align-items: center; gap: 2px; flex-shrink: 0; } .versa-ugc__arrow { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; background: transparent; border: none; color: var(--vugc-ink); cursor: pointer; font-family: var(--vugc-font-heading); font-size: 22px; line-height: 1; font-weight: 400; } .versa-ugc__arrow:disabled { color: var(--vugc-muted); opacity: 0.4; cursor: default; } .versa-ugc__arrow:focus-visible { outline: 2px solid var(--vugc-ink); outline-offset: 2px; } .versa-ugc__media--end { background: var(--vugc-ink); } .versa-ugc__end { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; width: 100%; height: 100%; text-decoration: none; } .versa-ugc__end svg { width: 44%; height: auto; } .versa-ugc__end span { font-family: var(--vugc-font-body); font-size: 13px; color: var(--vugc-accent); } .versa-ugc__end:focus-visible { outline: 2px solid var(--vugc-accent); outline-offset: -4px; } @supports selector(:has(*)) { .shopify-section:has(.versa-ugc) { max-width: 100%; overflow-x: clip; } } (function () { var root = document.querySelector('.versa-ugc'); if (!root) return; var track = root.querySelector('.versa-ugc__track'); if (!track) return; // Videos: seek to data-start (e.g. 20s) on load and on loop end var videos = root.querySelectorAll('.versa-ugc__media video'); videos.forEach(function (v) { var startAt = parseFloat(v.getAttribute('data-start')) || 0; v.muted = true; v.playsInline = true; var p0 = v.play(); if (p0 && p0.catch) p0.catch(function () { }); var media = v.closest('.versa-ugc__media') || v.parentElement; var toggle = document.createElement('button'); toggle.type = 'button'; toggle.className = 'versa-ugc__playpause'; toggle.setAttribute('aria-label', 'Odtwórz lub zatrzymaj wideo'); media.appendChild(toggle); function syncToggle() { toggle.classList.toggle('is-playing', !v.paused); } v.addEventListener('play', syncToggle); v.addEventListener('pause', syncToggle); syncToggle(); toggle.addEventListener('click', function (e) { e.preventDefault(); e.stopPropagation(); if (v.paused) { v.dataset.userPaused = '0'; var pp = v.play(); if (pp && pp.catch) pp.catch(function () { }); } else { v.dataset.userPaused = '1'; v.pause(); } }); function seekStart() { try { v.currentTime = startAt; } catch (e) { } } v.addEventListener('loadedmetadata', seekStart); v.addEventListener('ended', function () { seekStart(); var p = v.play(); if (p && p.catch) p.catch(function () { }); }); // Failsafe: if metadata is already cached on first paint if (v.readyState >= 1) seekStart(); }); var liveCards = Array.from(track.querySelectorAll('.versa-ugc__card:not(.versa-ugc__card--hide)')); // Frames in view get full colour (--live) and, if video, playback; the rest rest muted if ('IntersectionObserver' in window && liveCards.length) { var cardObserver = new IntersectionObserver( function (entries) { entries.forEach(function (entry) { var card = entry.target; var v = card.querySelector('video'); if (entry.isIntersecting) { card.classList.add('versa-ugc__card--live'); if (v && v.dataset.userPaused !== '1') { var p = v.play(); if (p && p.catch) p.catch(function () { }); } } else { card.classList.remove('versa-ugc__card--live'); if (v) v.pause(); } }); }, { threshold: 0.6 } ); liveCards.forEach(function (card) { cardObserver.observe(card); }); } var isDown = false, startX = 0, startScroll = 0, didDrag = false; track.addEventListener('mousedown', function (e) { isDown = true; didDrag = false; startX = e.pageX; startScroll = track.scrollLeft; track.style.cursor = 'grabbing'; }); track.addEventListener('mouseleave', function () { isDown = false; track.style.cursor = ''; }); track.addEventListener('mouseup', function () { isDown = false; track.style.cursor = ''; }); track.addEventListener('mousemove', function (e) { if (!isDown) return; var dx = e.pageX - startX; if (Math.abs(dx) > 4) didDrag = true; track.scrollLeft = startScroll - dx; }); track.addEventListener( 'click', function (e) { if (didDrag) { e.preventDefault(); e.stopPropagation(); } }, true ); // Fraction counter + prev/next arrows var prevBtn = root.querySelector('[data-vugc-prev]'); var nextBtn = root.querySelector('[data-vugc-next]'); var countEl = root.querySelector('.versa-ugc__count'); function cardStep() { if (liveCards.length < 2) return liveCards[0] ? liveCards[0].offsetWidth : 0; return liveCards[1].getBoundingClientRect().left - liveCards[0].getBoundingClientRect().left; } function pad(n) { return (n < 10 ? '0' : '') + n; } function updateControls() { var s = cardStep(); var maxScroll = track.scrollWidth - track.clientWidth; var i = s ? Math.round(track.scrollLeft / s) : 0; if (track.scrollLeft >= maxScroll - 2) i = liveCards.length - 1; if (i < 0) i = 0; if (i > liveCards.length - 1) i = liveCards.length - 1; if (countEl) countEl.textContent = pad(i + 1) + ' / ' + pad(liveCards.length); if (prevBtn) prevBtn.disabled = track.scrollLeft = maxScroll - 2; } if (prevBtn && nextBtn) { prevBtn.addEventListener('click', function () { track.scrollBy({ left: -cardStep(), behavior: 'smooth' }); }); nextBtn.addEventListener('click', function () { track.scrollBy({ left: cardStep(), behavior: 'smooth' }); }); var ticking = false; track.addEventListener( 'scroll', function () { if (ticking) return; ticking = true; requestAnimationFrame(function () { ticking = false; updateControls(); }); }, { passive: true } ); window.addEventListener('resize', updateControls); updateControls(); } // Calm auto-advance: one card every few seconds, smooth + snapped, // loops after the last frame, pauses on hover/touch, only while the // section is on screen, off entirely under reduced motion var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (!reduceMotion) { var AUTO_MS = 4000; var autoTimer = null; var sectionInView = true; function autoAdvance() { var maxScroll = track.scrollWidth - track.clientWidth; if (track.scrollLeft >= maxScroll - 2) { track.scrollTo({ left: 0, behavior: 'smooth' }); } else { track.scrollBy({ left: cardStep(), behavior: 'smooth' }); } } function stopAuto() { if (autoTimer) { clearInterval(autoTimer); autoTimer = null; } } function startAuto() { stopAuto(); if (sectionInView && document.visibilityState !== 'hidden') { autoTimer = setInterval(autoAdvance, AUTO_MS); } } if (window.matchMedia && window.matchMedia('(hover: hover)').matches) { track.addEventListener('pointerenter', stopAuto); track.addEventListener('pointerleave', startAuto); } track.addEventListener('touchstart', stopAuto, { passive: true }); track.addEventListener('touchend', startAuto, { passive: true }); if (prevBtn && nextBtn) { prevBtn.addEventListener('click', startAuto); nextBtn.addEventListener('click', startAuto); } document.addEventListener('visibilitychange', startAuto); if ('IntersectionObserver' in window) { var autoVisObserver = new IntersectionObserver( function (entries) { entries.forEach(function (entry) { sectionInView = entry.isIntersecting; startAuto(); }); }, { threshold: 0.3 } ); autoVisObserver.observe(root); } else { startAuto(); } } })(); Versa zaczęła się od jednej puszki. Przywiezionej z Włoch do Krakowa. Znajomi prosili o więcej. Potem ich znajomi. Potem restauracje. cała historia → Zbiory 2025/26: jeden rok, jedna partia. Jak się skończy, następna za rok.
More you might like
Related
Versa Oliwa Extra Virgin · 2 × 1L
Related
Versa Oliwa Extra Virgin · 4 × 250 ml
Related
Oliwa czosnkowa z Krety – oliwa z oliwek extra virgin 250 ml
Related