/*!***************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
  \***************************************************************************************************************************************************************************************************************************************/
@charset "UTF-8";
/**
 * Global frontend styles for Ollie UI Helpers.
 */
/**
 * Column controls styles.
 */
@media (max-width: 781px) {
  .wp-block-column[style*="--order-mobile"] {
    order: var(--order-mobile, 0);
  }
  .wp-block-columns > .wp-block-column:not([style*="--order-mobile"]) {
    order: 999;
  }
}
.wp-block-group.is-linked,
.wp-block-column.is-linked,
.wp-block-cover.is-linked {
  position: relative;
  cursor: pointer !important;
}
.wp-block-group.is-linked:hover,
.wp-block-column.is-linked:hover,
.wp-block-cover.is-linked:hover {
  cursor: pointer;
}
.wp-block-group.is-linked .ollie-group-link,
.wp-block-column.is-linked .ollie-group-link,
.wp-block-cover.is-linked .ollie-group-link {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
  white-space: nowrap;
  pointer-events: none;
  text-decoration: none;
}

.wp-block-group[data-sticky-on-scroll-up=true] {
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.wp-block-group[data-sticky-on-scroll-up=true].is-sticky-hidden {
  transform: translateY(calc(-100% - var(--sticky-full-offset, 0px)));
}
.wp-block-group[data-sticky-on-scroll-up=true].is-sticky-active {
  transform: translateY(0);
}
.wp-block-group[data-sticky-on-scroll-up=true]:has(.has-modal-open) {
  transform: none;
  transition: none;
}
@media (max-width: 600px) {
  .wp-block-group.ollie-row-stack {
    flex-direction: column !important;
  }
  .wp-block-group.ollie-row-stack > * {
    width: 100% !important;
    max-width: none !important;
  }
}

.has-hover__color:not(.wp-block-button) {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}
.has-hover__color:not(.wp-block-button):hover {
  color: var(--hover-color) !important;
}

.has-hover__background-color:not(.wp-block-button) {
  transition: background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}
.has-hover__background-color:not(.wp-block-button):hover {
  background-color: var(--hover-background-color) !important;
}

.has-hover__border-color:not(.wp-block-button) {
  transition: border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}
.has-hover__border-color:not(.wp-block-button):hover {
  border-color: var(--hover-border) !important;
}

.has-hover__color.has-hover__background-color:not(.wp-block-button) {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.has-hover__color.has-hover__border-color:not(.wp-block-button) {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.has-hover__background-color.has-hover__border-color:not(.wp-block-button) {
  transition: background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.has-hover__color.has-hover__background-color.has-hover__border-color:not(.wp-block-button) {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.has-hover__color .wp-element-button {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}
.wp-block-button.has-hover__color:hover .wp-element-button {
  color: var(--hover-color) !important;
}

.wp-block-button.has-hover__background-color .wp-element-button {
  transition: background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}
.wp-block-button.has-hover__background-color:hover .wp-element-button {
  background-color: var(--hover-background-color) !important;
}

.wp-block-button.has-hover__border-color .wp-element-button {
  transition: border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}
.wp-block-button.has-hover__border-color:hover .wp-element-button {
  border-color: var(--hover-border) !important;
}

.wp-block-button.has-hover__color.has-hover__background-color .wp-element-button {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.has-hover__color.has-hover__border-color .wp-element-button {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.has-hover__background-color.has-hover__border-color .wp-element-button {
  transition: background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.has-hover__color.has-hover__background-color.has-hover__border-color .wp-element-button {
  transition: color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__background-color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__border-color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__color.has-hover__background-color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__color.has-hover__border-color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__background-color.has-hover__border-color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.ollie-animate-scaleOnHover.has-hover__color.has-hover__background-color.has-hover__border-color:not(.wp-block-button) {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__background-color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__border-color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__color.has-hover__background-color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__color.has-hover__border-color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__background-color.has-hover__border-color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button.ollie-animate-scaleOnHover.has-hover__color.has-hover__background-color.has-hover__border-color .wp-element-button {
  transition: transform var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), background-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease), border-color var(--hover-transition-duration, 200ms) var(--hover-transition-timing, ease);
}

.wp-block-button[class*=has-icon__] .wp-block-button__link {
  display: flex;
  gap: 0.5em;
  align-items: center;
}
.wp-block-button[class*=has-icon__] .wp-block-button__link span {
  line-height: 0;
}
.wp-block-button[class*=has-icon__] .wp-block-button__link svg {
  color: currentColor;
  fill: currentColor;
  flex-shrink: 0;
}
.wp-block-buttons.is-content-justification-center .wp-block-button[class*=has-icon__] .wp-block-button__link {
  justify-content: center;
}
.wp-block-buttons.is-content-justification-right .wp-block-button[class*=has-icon__] .wp-block-button__link {
  justify-content: flex-end;
}
.wp-block-buttons.is-content-justification-left .wp-block-button[class*=has-icon__] .wp-block-button__link {
  justify-content: flex-start;
}
.wp-block-buttons.is-content-justification-space-between .wp-block-button[class*=has-icon__] .wp-block-button__link {
  justify-content: space-between;
}
.wp-block-button[class*=has-icon__][class*=has-icon__] svg {
  height: 1.2em;
  width: 1.2em;
}

.has-hover-decoration {
  transition: -webkit-text-decoration 0.2s ease;
  transition: text-decoration 0.2s ease;
  transition: text-decoration 0.2s ease, -webkit-text-decoration 0.2s ease;
}
.has-hover-decoration a {
  transition: -webkit-text-decoration 0.2s ease;
  transition: text-decoration 0.2s ease;
  transition: text-decoration 0.2s ease, -webkit-text-decoration 0.2s ease;
}

/**
 * Animation styles for frontend
 */
.ollie-animate {
  --animation-duration: 1s;
  --animation-delay: 0s;
  --animation-distance: 30px;
  --animation-scale: 1.05;
}
.ollie-animate:not(.ollie-animate-on-scroll) {
  will-change: transform, opacity;
  transform: translateZ(0);
  backface-visibility: hidden;
}

@keyframes ollieAnimateFadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes ollieAnimateFadeInUp {
  from {
    opacity: 0;
    transform: translateY(var(--animation-distance));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes ollieAnimateFadeInDown {
  from {
    opacity: 0;
    transform: translateY(calc(var(--animation-distance) * -1));
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes ollieAnimateFadeInLeft {
  from {
    opacity: 0;
    transform: translateX(var(--animation-distance));
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
@keyframes ollieAnimateFadeInRight {
  from {
    opacity: 0;
    transform: translateX(calc(var(--animation-distance) * -1));
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}
@keyframes ollieAnimateFadeInWords {
  from {
    opacity: 0;
    transform: translateY(0.25em);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes ollieAnimateZoomIn {
  from {
    opacity: 0;
    transform: scale(calc(2 - var(--animation-scale)));
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes ollieAnimatePulse {
  from {
    transform: scale3d(1, 1, 1);
  }
  50% {
    transform: scale3d(var(--animation-scale), var(--animation-scale), var(--animation-scale));
  }
  to {
    transform: scale3d(1, 1, 1);
  }
}
.ollie-animate-scaleOnHover:not(.has-hover__color):not(.has-hover__background-color):not(.has-hover__border-color) {
  transition: transform var(--animation-duration) ease;
}

.ollie-animate-scaleOnHover {
  transform-origin: center center;
  transform: scale(1);
}
.ollie-animate-scaleOnHover:hover {
  transform: scale(var(--animation-scale, 1.05));
}

.wp-block-cover.ollie-animate-zoomBackgroundOnHover {
  overflow: hidden;
}
.wp-block-cover.ollie-animate-zoomBackgroundOnHover .wp-block-cover__image-background,
.wp-block-cover.ollie-animate-zoomBackgroundOnHover .wp-block-cover__video-background {
  transition: transform var(--animation-duration, 1s) ease;
}
.wp-block-cover.ollie-animate-zoomBackgroundOnHover:hover .wp-block-cover__image-background,
.wp-block-cover.ollie-animate-zoomBackgroundOnHover:hover .wp-block-cover__video-background {
  transform: scale(var(--animation-scale, 1.05));
}

.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover) {
  animation-fill-mode: both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-fadeIn {
  animation: ollieAnimateFadeIn var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-fadeInUp {
  animation: ollieAnimateFadeInUp var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-fadeInDown {
  animation: ollieAnimateFadeInDown var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-fadeInLeft {
  animation: ollieAnimateFadeInLeft var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-fadeInRight {
  animation: ollieAnimateFadeInRight var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-zoomIn {
  animation: ollieAnimateZoomIn var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate:not(.ollie-animate-on-scroll):not(.ollie-animate-scaleOnHover).ollie-animate-pulse {
  animation: ollieAnimatePulse var(--animation-duration) ease-in-out var(--animation-delay) both;
}

.ollie-animate-fadeInWords {
  --word-delay: 0.2s;
}
.ollie-animate-fadeInWords .ollie-word {
  display: inline-block;
  opacity: 0;
  will-change: transform, opacity;
}

.ollie-animate:not(.ollie-animate-on-scroll).ollie-animate-fadeInWords .ollie-word {
  animation: ollieAnimateFadeInWords var(--animation-duration) ease-out calc(var(--animation-delay, 0s) + var(--word-index, 0) * var(--word-delay)) both;
}

.ollie-animate-on-scroll.ollie-animate-fadeInWords {
  opacity: 1;
}
.ollie-animate-on-scroll.ollie-animate-fadeInWords.ollie-animated .ollie-word {
  animation: ollieAnimateFadeInWords var(--animation-duration) ease-out calc(var(--animation-delay, 0s) + var(--word-index, 0) * var(--word-delay)) both;
}

.ollie-animate-on-scroll {
  opacity: 0;
}
.ollie-animate-on-scroll.ollie-animate-pulse {
  opacity: 1;
}
.ollie-animate-on-scroll.ollie-animate-ready {
  will-change: transform, opacity;
}
.ollie-animate-on-scroll.ollie-animated {
  opacity: 1;
  transition: opacity 0.1s ease-out;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animation-done {
  will-change: auto;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-fadeIn {
  animation: ollieAnimateFadeIn var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-fadeInUp {
  animation: ollieAnimateFadeInUp var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-fadeInDown {
  animation: ollieAnimateFadeInDown var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-fadeInLeft {
  animation: ollieAnimateFadeInLeft var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-fadeInRight {
  animation: ollieAnimateFadeInRight var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-zoomIn {
  animation: ollieAnimateZoomIn var(--animation-duration) ease-out var(--animation-delay) both;
}
.ollie-animate-on-scroll.ollie-animated.ollie-animate-pulse {
  animation: ollieAnimatePulse var(--animation-duration) ease-in-out var(--animation-delay) both;
}

.ollie-animate-sequentially.ollie-animate {
  animation: none !important;
}
.ollie-animate-sequentially.ollie-animate-on-scroll:not(.ollie-animated) {
  opacity: 1 !important;
  transform: none !important;
}
.ollie-animate-sequentially:not(.ollie-animate-on-scroll) {
  opacity: 1 !important;
  transform: none !important;
}
@media (prefers-reduced-motion: no-preference) {
  .ollie-animate-sequentially > *:not(.ollie-animate) {
    opacity: 0;
  }
}

.ollie-no-motion {
  opacity: 1 !important;
  transform: none !important;
  transition: none !important;
  animation: none !important;
}

/**
 * Cover Expand - Frontend Styles
 *
 * These styles are applied on both the frontend and in the editor.
 */
.wp-block-cover.has-expand-inside-contents {
  height: 100%;
  align-items: stretch;
}
.wp-block-cover.has-expand-inside-contents .wp-block-cover__inner-container {
  flex-direction: column;
}
.wp-block-cover.has-expand-inside-contents .wp-block-cover__inner-container > * {
  flex: 1;
}
.wp-block-cover.has-expand-inside-contents.has-aspect-ratio {
  height: auto;
}

/**
 * Cover Designer — pure-CSS gradient engine.
 *
 * Three styles share this sheet: Glow/Mesh paint blurred radial-gradient
 * "blobs", Waves paints layered SVG bands; all blend (screen over the dark
 * base, multiply over the light one), with optional texture overlays.
 * Animation is transform-only so it runs on the compositor thread. No
 * frontend JavaScript.
 */
.wp-block-cover > .ollie-cover-gradient {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  isolation: isolate;
}

/*
 * Stacking. The core cover block only applies z-index layering when media is
 * present; with no media its inner container is static-positioned and would
 * paint below the gradient. Define the full stack: media (0) < gradient (1) <
 * overlay (1, later in DOM) < content (2).
 */
.wp-block-cover.has-ollie-gradient > .ollie-cover-gradient,
.wp-block-cover.has-ollie-texture > .ollie-cover-gradient {
  z-index: 1;
}
.wp-block-cover.has-ollie-gradient,
.wp-block-cover.has-ollie-texture {
  /* Above the dim overlay; the inner container (same z-index, later in
   * the DOM) still paints over it. */
}
.wp-block-cover.has-ollie-gradient > .ollie-cover-texture,
.wp-block-cover.has-ollie-texture > .ollie-cover-texture {
  z-index: 2;
}
.wp-block-cover.has-ollie-gradient > .wp-block-cover__background,
.wp-block-cover.has-ollie-texture > .wp-block-cover__background {
  z-index: 1;
}
.wp-block-cover.has-ollie-gradient > .wp-block-cover__image-background,
.wp-block-cover.has-ollie-gradient > .wp-block-cover__video-background,
.wp-block-cover.has-ollie-texture > .wp-block-cover__image-background,
.wp-block-cover.has-ollie-texture > .wp-block-cover__video-background {
  z-index: 0;
}
.wp-block-cover.has-ollie-gradient > .wp-block-cover__inner-container,
.wp-block-cover.has-ollie-texture > .wp-block-cover__inner-container {
  position: relative;
  z-index: 2;
}

.ollie-cover-gradient .ocd-blob {
  position: absolute;
  border-radius: 999px;
  opacity: calc(var(--ocd-fade, 1) * var(--ocd-o, 1));
  mix-blend-mode: screen;
  background: radial-gradient(closest-side, var(--ocd-c) 0%, var(--ocd-c) 22%, transparent 76%);
  filter: blur(var(--ocd-blur, 30px));
  transform: translate(-50%, -50%) rotate(var(--ocd-a, 0deg));
}

/* Light mode: screen blending vanishes over a near-white base, so blobs
 * multiply instead — deeper palette tones tint the light background. */
.ollie-cover-gradient.is-light .ocd-blob {
  mix-blend-mode: multiply;
}

/* Texture overlay: a standalone host that works over any cover background
 * (image, video, color, or the motion gradient). The ink color flips via
 * --ocd-ink-rgb: `is-marks-dark` — written from the stored contrast choice —
 * switches to dark marks so textures read on light backgrounds. */
.wp-block-cover > .ollie-cover-texture {
  position: absolute;
  inset: 0;
  pointer-events: none;
  /* Strength is a straight opacity ramp: 1 = solid ink (pure white or
   * black marks), no blend-mode muting. */
  opacity: var(--ocd-noise-o, 0.5);
  --ocd-ink-rgb: 255, 255, 255;
}

.wp-block-cover > .ollie-cover-texture.is-marks-dark {
  --ocd-ink-rgb: 0, 0, 0;
}

/* Grain: a static feTurbulence tile — zero runtime cost. The tile is baked
 * light, so dark marks invert it. */
.ollie-cover-texture.is-grain {
  background-image: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27180%27 height=%27180%27%3E%3Cfilter id=%27n%27%3E%3CfeTurbulence type=%27fractalNoise%27 baseFrequency=%270.8%27 numOctaves=%275%27 stitchTiles=%27stitch%27/%3E%3CfeColorMatrix type=%27saturate%27 values=%270%27/%3E%3CfeComponentTransfer%3E%3CfeFuncA type=%27discrete%27 tableValues=%270 0.25 0.5 0.75 1%27/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width=%27100%25%27 height=%27100%25%27 filter=%27url%28%23n%29%27/%3E%3C/svg%3E");
  background-size: calc(180px * var(--ocd-noise-s, 1)) calc(180px * var(--ocd-noise-s, 1));
}

.ollie-cover-texture.is-grain.is-marks-dark {
  filter: invert(1);
}

/* Grid: graph paper — faint minor cells from the sliders, with a heavier
 * major line every fifth cell, all driven by custom properties. */
.ollie-cover-texture.is-grid {
  background-image: linear-gradient(to right, rgba(var(--ocd-ink-rgb), 0.6) calc(var(--ocd-line, 1px) * 2), transparent calc(var(--ocd-line, 1px) * 2)), linear-gradient(to bottom, rgba(var(--ocd-ink-rgb), 0.6) calc(var(--ocd-line, 1px) * 2), transparent calc(var(--ocd-line, 1px) * 2)), linear-gradient(to right, rgba(var(--ocd-ink-rgb), 0.4) var(--ocd-line, 1px), transparent var(--ocd-line, 1px)), linear-gradient(to bottom, rgba(var(--ocd-ink-rgb), 0.4) var(--ocd-line, 1px), transparent var(--ocd-line, 1px));
  background-size: calc(var(--ocd-line-gap, 16px) * 5) calc(var(--ocd-line-gap, 16px) * 5), calc(var(--ocd-line-gap, 16px) * 5) calc(var(--ocd-line-gap, 16px) * 5), var(--ocd-line-gap, 16px) var(--ocd-line-gap, 16px), var(--ocd-line-gap, 16px) var(--ocd-line-gap, 16px);
}

/* Dots: a uniform dot screen, sized and spaced by the editor's sliders. */
.ollie-cover-texture.is-dots {
  background-image: radial-gradient(circle, rgb(var(--ocd-ink-rgb)) calc(var(--ocd-dot, 2px) / 2), transparent calc(var(--ocd-dot, 2px) / 2 + 0.5px));
  background-size: var(--ocd-dot-gap, 8px) var(--ocd-dot-gap, 8px);
}

/* Halftone: a seeded SVG dot field generated inline by the editor JS / PHP
 * loader; the ink variable recolors the circles. */
.ollie-cover-texture.is-halftone svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.ollie-cover-texture.is-halftone g {
  fill: rgb(var(--ocd-ink-rgb, 255, 255, 255));
}

/* Waves variant: one oversized SVG of layered bezier bands. The svg extends
 * past the host so the tilt rotation and per-path drift never expose edges. */
.ollie-cover-gradient .ocd-waves {
  position: absolute;
  top: -20%;
  left: -20%;
  width: 140%;
  height: 140%;
  mix-blend-mode: screen;
  transform: rotate(var(--ocd-tilt, 0deg));
}

.ollie-cover-gradient.is-light .ocd-waves {
  mix-blend-mode: multiply;
}

.ollie-cover-gradient .ocd-wave {
  opacity: calc(var(--ocd-fade, 1) * var(--ocd-o, 1));
  filter: blur(var(--ocd-blur, 12px));
  transform-box: view-box;
}

@keyframes ocd-wave-drift {
  from {
    transform: translate(0, 0);
  }
  to {
    transform: translate(var(--ocd-dx, 0%), var(--ocd-dy, 0%));
  }
}
.ollie-cover-gradient.is-animated .ocd-wave {
  animation: ocd-wave-drift var(--ocd-t, 45s) ease-in-out infinite alternate;
  animation-delay: var(--ocd-dl, 0s);
}

@keyframes ocd-drift {
  from {
    transform: translate(-50%, -50%) rotate(var(--ocd-a, 0deg)) scale(1);
  }
  to {
    transform: translate(calc(-50% + var(--ocd-dx, 0%)), calc(-50% + var(--ocd-dy, 0%))) rotate(calc(var(--ocd-a, 0deg) + var(--ocd-ad, 0deg))) scale(var(--ocd-ds, 1));
  }
}
.ollie-cover-gradient.is-animated .ocd-blob {
  animation: ocd-drift var(--ocd-t, 45s) ease-in-out infinite alternate;
  animation-delay: var(--ocd-dl, 0s);
}

/* Promote layers to the compositor only while they actually animate —
 * static gradients paint flat instead of holding GPU textures. */
.ollie-cover-gradient.is-animated .ocd-blob,
.ollie-cover-gradient.is-animated .ocd-wave {
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .ollie-cover-gradient .ocd-blob,
  .ollie-cover-gradient .ocd-wave {
    animation: none !important;
  }
}
/* Color rows inside the inspector panel: chip + label buttons that open a
 * swatch popover, matching the look of core's color panel rows. */
.ocd-color-rows {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 16px;
  /* The dropdown wrappers are the flex items — stretch those, then let
   * each chip button fill its wrapper. */
}
.ocd-color-rows > .components-dropdown {
  flex: 1;
  min-width: 0;
}
.ocd-color-rows .components-button.ocd-color-row {
  width: 100%;
  height: 40px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding-left: 4px;
}
.ocd-color-rows .components-button.ocd-color-shuffle {
  flex-shrink: 0;
  margin-left: auto;
}

.ocd-color-popover {
  width: 260px;
  padding: 16px;
}

/* Shuffle Design / Shuffle Layout: stacked full-width centered buttons. */
.ocd-shuffle-row {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 8px;
}
.ocd-shuffle-row .components-button {
  justify-content: center;
}

/* Reset link at the foot of the gradient panel. */
.components-button.ocd-reset {
  margin-top: 12px;
}

/* Shuffle Halftone: full-width to match the Shuffle Design pair. */
.components-button.ocd-ht-shuffle {
  width: 100%;
  justify-content: center;
  margin-top: 8px;
}

/**
 * Video Modal - Frontend Styles
 */
.ollie-video-modal-trigger {
  cursor: pointer;
  position: relative;
  container-type: inline-size;
}
.ollie-video-modal-trigger.wp-block-button, .ollie-video-modal-trigger.wp-element-button {
  container-type: normal;
}
.ollie-video-modal-trigger a,
.ollie-video-modal-trigger button,
.ollie-video-modal-trigger .wp-block-button__link {
  position: relative;
  z-index: 20;
  cursor: pointer;
}
.ollie-video-modal-trigger[data-play-icon=always]::after, .ollie-video-modal-trigger[data-play-icon=hover]::after {
  --play-icon-size: 48px;
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: var(--play-icon-size);
  height: var(--play-icon-size);
  background: rgba(0, 0, 0, 0.3);
  border-radius: 50%;
  opacity: 1;
  transition: opacity 0.2s ease;
  pointer-events: none;
  z-index: 10;
  backdrop-filter: blur(8px);
  background-image: url("data:image/svg+xml,%3Csvg width=%2724%27 height=%2724%27 viewBox=%270 0 24 24%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M9.53688 5.97801C8.87115 5.55437 8 6.03258 8 6.82167V17.1783C8 17.9674 8.87115 18.4456 9.53688 18.022L17.6742 12.8437C18.2917 12.4507 18.2917 11.5493 17.6742 11.1563L9.53688 5.97801Z%27 fill=%27white%27/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: center;
  background-size: calc(var(--play-icon-size) * 0.5);
}
@container (min-width: 400px) {
  .ollie-video-modal-trigger[data-play-icon=always]::after, .ollie-video-modal-trigger[data-play-icon=hover]::after {
    --play-icon-size: 64px;
  }
}
@container (min-width: 600px) {
  .ollie-video-modal-trigger[data-play-icon=always]::after, .ollie-video-modal-trigger[data-play-icon=hover]::after {
    --play-icon-size: 84px;
  }
}
.ollie-video-modal-trigger[data-play-icon=hover]::after {
  opacity: 0;
}
.ollie-video-modal-trigger[data-play-icon=hover]:hover::after {
  opacity: 1;
}
.ollie-video-modal-trigger[data-play-icon=hide]::after {
  display: none;
}

.ollie-video-modal-overlay {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.8);
  z-index: 999999;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.3s ease, visibility 0.3s ease;
}
.ollie-video-modal-overlay.is-open {
  opacity: 1;
  visibility: visible;
  backdrop-filter: blur(30px);
}

.ollie-video-modal {
  position: relative;
  width: 90%;
  max-width: 1200px;
  aspect-ratio: 16/9;
  background: #000;
  border-radius: 8px;
  overflow: hidden;
  transform: scale(0.9);
  transition: transform 0.3s ease;
}
.ollie-video-modal-overlay.is-open .ollie-video-modal {
  transform: scale(1);
}
.ollie-video-modal__close {
  position: absolute;
  top: -50px;
  right: 0;
  width: 40px;
  height: 40px;
  background: transparent;
  border: none;
  cursor: pointer;
  color: #fff;
  font-size: 32px;
  line-height: 1;
  opacity: 0.8;
  transition: opacity 0.2s ease;
  z-index: 10;
}
.ollie-video-modal__close:hover {
  opacity: 1;
}
.ollie-video-modal__close::before {
  content: "×";
}
.ollie-video-modal__content {
  width: 100%;
  height: 100%;
}
.ollie-video-modal iframe,
.ollie-video-modal video {
  width: 100%;
  height: 100%;
  border: none;
}

@media (max-width: 768px) {
  .ollie-video-modal {
    width: 95%;
    border-radius: 4px;
  }
  .ollie-video-modal__close {
    top: -45px;
    width: 36px;
    height: 36px;
    font-size: 28px;
  }
}
/**
 * Text Wrap - Frontend and Editor Styles
 *
 * These styles apply text-wrap CSS property to paragraphs and headings.
 */
.has-text-wrap-pretty {
  text-wrap: pretty;
}

.has-text-wrap-balance {
  text-wrap: balance;
}

/**
 * Scroll Resize - Frontend Styles
 *
 * Styles for the scroll-based scale effect on sticky elements.
 */
.has-scroll-resize {
  will-change: transform;
}

/*# sourceMappingURL=style-index.css.map*/