/* =========================================================
   Sprwt page blocks — the Basic block set
   ---------------------------------------------------------
   Loaded in TWO places, and both are required:
     1. the builder canvas  (pages_builder_js.php, canvas.styles)
     2. published pages     (Pages.php / Home.php stylesheet list)

   The builder saves editor.getHtml() and serves that stored HTML on
   the front end, so blocks must express themselves through these
   classes rather than per-instance inline styles. Anything styled
   here can be re-themed later and the change reaches pages that were
   already published; anything inlined by the editor is frozen at
   save time.

   Overridable via the --spr-* custom properties below.
   ========================================================= */

:root {
    --spr-accent: #047857;
    --spr-accent-soft: #10b981;
    --spr-accent-deep: #065f46;
    --spr-accent-contrast: #ffffff;

    --spr-ink: #0f172a;
    --spr-ink-muted: #475569;
    --spr-line: #e5e7eb;
    --spr-surface: #ffffff;

    --spr-radius: 9px;
    --spr-gap: 24px;

    /* Container defaults, copied from Elementor.

       A Container ships with NO padding — the 10px in .e-con's
       `var(--container-default-padding-*, 10px)` is only the fallback
       for an old kit; a current one sets it to zero, and that is what
       the editor actually renders. Gap is the kit default (20px), and
       the content width is .e-con's --content-width, min()-clamped the
       same way so a boxed container can never exceed the viewport.

       Boxed centring uses max(--spr-con-x, slack), so a zero default
       here still centres. */
    --spr-con-y: 0px;
    --spr-con-x: 0px;
    --spr-con-gap: 20px;
    --spr-content-width: min(100%, 1140px);

    --spr-font: inherit;
}

/* ---------------------------------------------------------
   Container — Elementor's flexbox Container.

   Flex, column direction, by default: widgets dropped in stack and
   fill the width, exactly as Elementor's does. Containers nest, so
   a row of "columns" is a row-direction Container holding more
   Containers — there is no separate column element.

   Only the DEFAULTS live here. Direction / justify / align / gap /
   wrap are written as real CSS properties by the inspector through
   GrapesJS, so breakpoints and states are routed by GrapesJS itself
   rather than reimplemented. (Elementor routes the same values
   through --flex-* custom properties; that indirection only exists
   to serve its own responsive machinery.)

   Boxed vs Full Width is a class, not a style, so it can be
   re-themed after pages are published.
   --------------------------------------------------------- */
.spr-container,
.spr-section {
    /* Elementor's container variables, with our defaults. The panel
       writes these per container (and per breakpoint); the properties
       below read them — the same split Elementor's .e-con uses, so every
       Layout control composes with the rest instead of overwriting it. */
    --display: flex;
    --flex-direction: column;
    --justify-content: normal;
    --align-items: normal;
    --align-content: normal;
    --flex-wrap: nowrap;
    --row-gap: var(--spr-con-gap);
    --column-gap: var(--spr-con-gap);
    --width: 100%;
    --content-width: var(--spr-content-width);
    --min-height: initial;
    --padding-top: var(--spr-con-y);
    --padding-bottom: var(--spr-con-y);
    --padding-left: var(--spr-con-x);
    --padding-right: var(--spr-con-x);
    --margin-top: 0px;
    --margin-bottom: 0px;
    --margin-left: 0px;
    --margin-right: 0px;
    --position: relative;
    --z-index: revert;
    --overflow: visible;
    --border-radius: 0;
    /* What children inherit: widgets fill a column, share a row. */
    --spr-cw-width: 100%;
    --spr-cw-flex-grow: 0;

    position: var(--position);
    z-index: var(--z-index);
    overflow: var(--overflow);
    width: var(--width);
    height: auto;
    min-height: var(--min-height);
    border-radius: var(--border-radius);

    /* Nested containers otherwise refuse to shrink below their content —
       Elementor carries the same min-width for its ED-4964 fix. */
    min-width: 0;

    /* As a flex ITEM of a parent container: .e-con.e-flex is 0 1 auto. */
    flex: var(--flex-grow, 0) var(--flex-shrink, 1) var(--flex-basis, auto);
    align-self: var(--align-self, auto);
    order: var(--order, 0);

    display: var(--display);
    flex-direction: var(--flex-direction);
    justify-content: var(--justify-content);
    align-items: var(--align-items);
    align-content: var(--align-content);
    flex-wrap: var(--flex-wrap);
    gap: var(--row-gap) var(--column-gap);

    padding: var(--padding-top) var(--padding-right) var(--padding-bottom) var(--padding-left);
    margin: var(--margin-top) var(--margin-right) var(--margin-bottom) var(--margin-left);
    background-position: center;
    background-size: cover;
    background-repeat: no-repeat;
    transition: background var(--background-transition, .3s), border var(--border-transition, .3s),
        box-shadow var(--border-transition, .3s), transform var(--e-con-transform-transition-duration, .4s);
}
/* A container's own flex-item variables must not leak into its children
   (custom properties inherit); Elementor resets them per element too. */
:where(.spr-container, .spr-section) > * { --flex-grow: initial; --flex-shrink: initial; --flex-basis: initial; --order: initial; --align-self: initial; }

/* Elementor stamps e-flex / e-grid from container_type; these are those. */
.spr-container--flex { --display: flex; }

/* .e-grid's defaults, verbatim: 3 columns, 2 rows, row flow, content
   packed to the start on both axes. */
.spr-container--grid {
    --display: grid;
    grid-template-columns: var(--spr-grid-columns, repeat(3, 1fr));
    grid-template-rows: var(--spr-grid-rows, repeat(2, 1fr));
    grid-auto-flow: var(--grid-auto-flow, row);
    justify-content: var(--grid-justify-content, start);
    align-content: var(--grid-align-content, start);
    justify-items: var(--justify-items, legacy);
    align-items: var(--align-items, normal);
}

/* Top-level containers are centred, as Elementor centres the ones
   directly under the document root. */
:where(body, .spr-page) > .spr-container,
:where(body, .spr-page) > .spr-section {
    --margin-left: auto;
    --margin-right: auto;
    max-width: 100%;
}

/* Boxed: content constrained, background still edge to edge.

   Elementor gets this with an inner .e-con-inner wrapper. Centring
   through padding instead keeps the DOM flat — one fewer node the
   builder would have to hold undroppable, undraggable and
   unselectable. Each side's padding is the larger of what's set and
   the slack around the content width, so the content lands exactly
   where Elementor's inner wrapper would put it. */
.spr-container--boxed,
.spr-section--contained {
    padding-left: max(var(--padding-left), calc((100% - var(--content-width)) / 2));
    padding-right: max(var(--padding-right), calc((100% - var(--content-width)) / 2));
}

/* Full Width is the absence of the boxed constraint; the class exists
   so the choice is recorded in the markup rather than inferred. */
.spr-container--full { padding-left: var(--padding-left); padding-right: var(--padding-right); }

/* Background Overlay (Style tab) — Elementor's ::before layer, switched
   on by --background-overlay and styled by the overlay controls. */
.spr-container::before {
    content: var(--background-overlay);
    display: block;
    position: absolute;
    inset: 0;
    pointer-events: none;
    mix-blend-mode: var(--overlay-mix-blend-mode, normal);
    opacity: var(--overlay-opacity, 1);
    border-radius: var(--border-radius);
    transition: background var(--overlay-transition, .3s), opacity var(--overlay-transition, .3s);
}

/* Advanced > Transform on a container: Elementor gives containers their
   own variable set (--e-con-transform-*). */
.spr-container.spr-transform {
    transform:
        perspective(var(--e-con-transform-perspective, 100000px))
        rotateZ(var(--e-con-transform-rotateZ, 0))
        rotateX(var(--e-con-transform-rotateX, 0))
        rotateY(var(--e-con-transform-rotateY, 0))
        translate(var(--e-con-transform-translate, 0))
        translateX(var(--e-con-transform-translateX, 0))
        translateY(var(--e-con-transform-translateY, 0))
        scaleX(calc(var(--e-con-transform-flipX, 1) * var(--e-con-transform-scaleX, var(--e-con-transform-scale, 1))))
        scaleY(calc(var(--e-con-transform-flipY, 1) * var(--e-con-transform-scaleY, var(--e-con-transform-scale, 1))))
        skewX(var(--e-con-transform-skewX, 0))
        skewY(var(--e-con-transform-skewY, 0));
    transform-origin: var(--e-con-transform-origin-y, center) var(--e-con-transform-origin-x, center);
}

/* Overlay sits between the background and the content */
.spr-container--overlay::before,
.spr-section--overlay::before {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--spr-overlay-color, #0f172a);
    opacity: var(--spr-overlay-opacity, .5);
    pointer-events: none;
}
.spr-container--overlay > *,
.spr-section--overlay > * {
    position: relative;
}

/* Grid Outline — editor-only, the switcher Elementor puts in its Grid
   group. The dashed cells are drawn over the tracks by the builder
   (pages_builder_blocks_js.php, .spr-gridcell).

   An empty grid holds its shape as Elementor's does: the first cell is
   100px tall (Elementor's empty view), so with 1fr rows every row is. */
.spr-editing .spr-container--grid::after {
    /* Elementor's empty view: a placeholder in the grid's next free cell,
       after the last item (the + is drawn over it by the builder).
       ::before is the background overlay (absolute); this one stays in
       the grid's flow. */
    content: "";
    display: block;
    position: static;
    min-height: 50px;
    border: 1px dashed #d5d8dc;
}
.spr-editing .spr-container--grid:empty::after {
    /* Empty, it is the first cell: 100px, so every 1fr row is too. Its
       outline is the grid's own cell outline. */
    min-height: 100px;
    border: 0;
}
.spr-editing .spr-container--grid.spr-addslot::after { content: none; }

/* Pre-rename modifiers. `.spr-section` was the Container's class
   before it was renamed, and its Content Align option mapped onto
   what Align Items does now. Kept so pages saved then keep
   rendering; the builder hydrates those elements as Containers. */
.spr-section--align-top { justify-content: flex-start; }
.spr-section--align-middle { justify-content: center; }
.spr-section--align-bottom { justify-content: flex-end; }

/* ---------------------------------------------------------
   Grid — columns. Droppable, and so is each column.
   --------------------------------------------------------- */
.spr-grid {
    display: grid;
    gap: var(--spr-gap);
    grid-template-columns: repeat(var(--spr-cols, 1), minmax(0, 1fr));
}
.spr-grid--1 { --spr-cols: 1; }
.spr-grid--2 { --spr-cols: 2; }
.spr-grid--3 { --spr-cols: 3; }
.spr-grid--4 { --spr-cols: 4; }

/* Asymmetric variants, matching the existing "2 Columns 3/7" block */
.spr-grid--3-7 { grid-template-columns: 3fr 7fr; }
.spr-grid--7-3 { grid-template-columns: 7fr 3fr; }

.spr-col {
    min-width: 0;
}

@media (max-width: 767px) {
    .spr-grid:not(.spr-grid--no-stack) {
        grid-template-columns: 1fr;
    }
}

/* ---------------------------------------------------------
   Heading + Text
   --------------------------------------------------------- */
.spr-heading {
    margin: 0 0 .5em;
    font-family: var(--spr-font);
    color: var(--spr-ink);
    /* Elementor's .elementor-heading-title line-height. Kept on the base
       class (one class of specificity) so a Global Font or the block's own
       Typography still overrides it. */
    line-height: 1;
    font-weight: 600;
    /* Covers the div/span/p tags the panel also offers — those get no
       per-tag rule below but must still read as a heading. */
    font-size: 32px;
}

/* Sized on our own class rather than left to the bare h1..h6 the theme
   styles, because the two stacks disagree and the block has to look the
   same in both. grapesjs-tailwind injects Tailwind's preflight into the
   CANVAS only, and preflight resets h1..h6 to `font-size: inherit` — so
   an h2 measured 14px while editing and 40px once published. Class
   specificity settles it, and this file is loaded by the editor and the
   published page alike. */
h1.spr-heading { font-size: 40px; }
h2.spr-heading { font-size: 32px; }
h3.spr-heading { font-size: 26px; }
h4.spr-heading { font-size: 22px; }
h5.spr-heading { font-size: 18px; }
h6.spr-heading { font-size: 16px; }
.spr-text {
    margin: 0 0 1em;
    font-family: var(--spr-font);
    color: var(--spr-ink-muted);
    line-height: 1.6;
}
.spr-heading:last-child,
.spr-text:last-child { margin-bottom: 0; }

/* Heading size presets — Elementor's .elementor-size-* scale, which is
   deliberately separate from the HTML tag so structure and appearance
   can differ. Same five steps and same values it ships. */
/* Doubled class, not source order: the per-tag rules above are
   (0,1,1) and would otherwise outrank a single class whatever the
   order, leaving Size with no effect on a real h1..h6. */
.spr-heading.spr-heading--sm { font-size: 15px; }
.spr-heading.spr-heading--md { font-size: 19px; }
.spr-heading.spr-heading--lg { font-size: 29px; }
.spr-heading.spr-heading--xl { font-size: 39px; }
.spr-heading.spr-heading--xxl { font-size: 59px; }

/* ---------------------------------------------------------
   Widget wrapper.

   Elementor wraps every widget in a full-width
   <div class="elementor-widget elementor-widget-…"> and lets the widget
   itself sit at its natural size inside it — which is why its buttons
   are content-width while the selection outline spans the row. The
   wrapper is also what Position (text-align) and the Advanced tab's
   margin/padding/position apply to.
   --------------------------------------------------------- */
.spr-widget {
    width: 100%;
}
/* In a row, a widget keeps at least its content's width (the flex default,
   Elementor's too) — the containers beside it give way instead; a Button
   dropped into a full row stays inside it. In a column min-width doesn't
   apply. Sliders, grids and frames must be able to shrink, so they keep 0. */
.spr-widget--menu-grid, .spr-widget--menu-carousel, .spr-widget--categories, .spr-widget--pickups, .spr-widget--plans,
.spr-widget--order-options, .spr-widget--product, .spr-widget--maps, .spr-widget--video, .spr-widget--delivery,
.spr-widget--form, .spr-widget--lead-form, .spr-widget--macros, .spr-widget--n-accordion, .spr-widget--image { min-width: 0; }

/* Old-format widgets (no wrapper) are the container's own flex items,
   and the container's default `align-items: stretch` would blow an
   inline-natured one out to the full width. The builder upgrades them
   on load; these rules keep pages published before that rendering. */
.spr-icon:not(.spr-widget *),
.spr-image:not(.spr-widget *) { align-self: flex-start; }

.spr-align-left { text-align: left; }
.spr-align-center { text-align: center; }
.spr-align-right { text-align: right; }

/* ---------------------------------------------------------
   Button
   ---------------------------------------------------------
   NOTE: the admin's .btn / .btn--ghost live in admin-only
   stylesheets that published pages never load, so the variants are
   defined here independently. They mirror the admin design system
   deliberately — same palette, same radius — but are a separate
   front-end implementation.
   --------------------------------------------------------- */
.spr-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 24px;
    border: 0;
    border-radius: var(--spr-radius);
    /* Colour and sheen are split so the panel's Background Color (a
       background-color, as in Elementor) always shows: the design-system
       gradient is a translucent highlight laid over whatever colour is
       set, not a colour of its own. Background Type > Gradient replaces
       both. */
    background-color: var(--spr-accent);
    background-image: linear-gradient(135deg, rgba(255, 255, 255, .16) 0%, rgba(255, 255, 255, 0) 100%);
    color: var(--spr-accent-contrast);
    fill: var(--spr-accent-contrast);
    font-family: var(--spr-font);
    font-size: 15px;
    font-weight: 600;
    line-height: 1;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: all .3s;
    box-shadow: 0 4px 14px -4px rgba(15, 23, 42, .25), inset 0 1px 0 rgba(255, 255, 255, .22);
}
/* Hover darkens whatever the colour is — the kit's Accent, a Type preset
   or a picked colour — rather than switching to a fixed one. */
.spr-btn:hover,
.spr-btn:focus {
    background-image: linear-gradient(rgba(0, 0, 0, .14), rgba(0, 0, 0, .14)),
        linear-gradient(135deg, rgba(255, 255, 255, .16) 0%, rgba(255, 255, 255, 0) 100%);
    color: var(--spr-accent-contrast);
    text-decoration: none;
}
/* The lift is ours; a chosen Hover Animation replaces it. */
.spr-btn:not([class*="spr-animation-"]):hover { transform: translateY(-1px); }

/* Elementor's button structure. */
.spr-btn__content { display: flex; justify-content: center; align-items: center; flex-direction: row; gap: 5px; }
.spr-btn__icon { display: flex; align-items: center; }
.spr-btn__icon i, .spr-btn__icon svg, .spr-btn__icon .spr-svg-icon { width: 1em; height: 1em; font-size: inherit; }
.spr-btn__text { display: inline-block; }
.spr-btn--size-xs { padding: 10px 20px; font-size: 13px; border-radius: 2px; }
.spr-btn--size-md { padding: 15px 30px; font-size: 16px; border-radius: 4px; }
.spr-btn--size-lg { padding: 20px 40px; font-size: 18px; border-radius: 5px; }
.spr-btn--size-xl { padding: 25px 50px; font-size: 20px; border-radius: 6px; }

/* Type — Elementor's button_type, in our semantic tones. */
.spr-btn-type-info .spr-btn { background-color: #1d4ed8; }
.spr-btn-type-info .spr-btn:hover { background-color: #1e40af; }
.spr-btn-type-success .spr-btn { background-color: #047857; }
.spr-btn-type-success .spr-btn:hover { background-color: #065f46; }
.spr-btn-type-warning .spr-btn { background-color: #b45309; }
.spr-btn-type-warning .spr-btn:hover { background-color: #92400e; }
.spr-btn-type-danger .spr-btn { background-color: #b91c1c; }
.spr-btn-type-danger .spr-btn:hover { background-color: #991b1b; }

.spr-btn--ghost {
    background: var(--spr-surface);
    border: 1px solid;
    color: var(--spr-accent);
    border-color: var(--spr-accent);
    box-shadow: none;
}
.spr-btn--ghost:hover { background: #ecfdf5; color: var(--spr-accent-deep); }

.spr-btn--neutral {
    background: var(--spr-surface);
    border: 1px solid;
    color: var(--spr-ink-muted);
    border-color: var(--spr-line);
    box-shadow: none;
}
.spr-btn--neutral:hover { background: #f8fafc; color: var(--spr-ink); }

.spr-btn--info {
    background: var(--spr-surface);
    border: 1px solid;
    color: #1d4ed8;
    border-color: #bfdbfe;
    box-shadow: none;
}
.spr-btn--info:hover { background: #eff6ff; color: #1e40af; }

.spr-btn--danger {
    background: var(--spr-surface);
    border: 1px solid;
    color: #b91c1c;
    border-color: #fecaca;
    box-shadow: none;
}
.spr-btn--danger:hover { background: #fef2f2; color: #991b1b; }

.spr-btn--sm { padding: 7px 13px; font-size: 13.5px; }
.spr-btn--lg { padding: 13px 24px; font-size: 17px; }

/* ---------------------------------------------------------
   Image
   --------------------------------------------------------- */
.spr-image {
    display: block;
    max-width: 100%;
    height: auto;
}
.spr-image--round { border-radius: var(--spr-radius); }
.spr-image--circle { border-radius: 50%; }

.spr-image--cover,
.spr-image--contain { width: 100%; }
.spr-image--cover { object-fit: cover; }
.spr-image--contain { object-fit: contain; }

.spr-image--r-16-9 { aspect-ratio: 16 / 9; }
.spr-image--r-4-3 { aspect-ratio: 4 / 3; }
.spr-image--r-1-1 { aspect-ratio: 1 / 1; }

/* ---------------------------------------------------------
   Icon / Divider / Spacer / Video
   --------------------------------------------------------- */
.spr-icon:not(.spr-widget *) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--spr-icon-size, 32px);
    line-height: 1;
    color: var(--spr-accent);
}

hr.spr-divider {
    border: 0;
    border-top: 1px solid var(--spr-line);
    margin: var(--spr-gap) 0;
    width: 100%;
}
.spr-divider--dashed { border-top-style: dashed; }
.spr-divider--dotted { border-top-style: dotted; }
.spr-divider--thick { border-top-width: 3px; }
/* Only bites once Width is below 100%. */
.spr-divider--a-left { margin-right: auto; margin-left: 0; }
.spr-divider--a-center { margin-left: auto; margin-right: auto; }
.spr-divider--a-right { margin-left: auto; margin-right: 0; }

.spr-spacer:not(.spr-widget *) {
    display: block;
    width: 100%;
    height: var(--spr-spacer-h, 40px);
}

.spr-video {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: #0f172a;
}
.spr-video > iframe,
.spr-video > video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

/* ---------------------------------------------------------
   Responsive visibility (Advanced > Responsive).
   Breakpoints match the builder's device widths: tablet media
   992px, mobile landscape 768px. Real classes rather than inline
   styles, so the behaviour survives a re-theme like everything else.
   --------------------------------------------------------- */
@media (min-width: 993px) {
    .spr-hide-desktop { display: none !important; }
}
@media (min-width: 769px) and (max-width: 992px) {
    .spr-hide-tablet { display: none !important; }
}
@media (max-width: 768px) {
    .spr-hide-mobile { display: none !important; }
}

/* In the editor the element must stay visible and selectable even when
   it is hidden for the current breakpoint, or you could never click it
   again to turn the flag back off. Shown at reduced opacity instead. */
.spr-editing .spr-hide-desktop,
.spr-editing .spr-hide-tablet,
.spr-editing .spr-hide-mobile {
    display: revert !important;
    opacity: .45;
    outline: 1px dashed #cbd5e1;
    outline-offset: 2px;
}

/* ---------------------------------------------------------
   Editor-only affordances.
   The builder adds .spr-editing to the canvas body so empty
   containers stay findable while composing. None of this reaches a
   published page.
   --------------------------------------------------------- */
/* The idle dash. A LIGHTER grey than the builder's hover outline
   (#9da5ae), so hovering an empty container visibly darkens its border
   rather than redrawing the same line.

   Drawn ON the edge, not inset: with a -4px offset each slot's dashes
   sat 4px inside its own box, so two flush columns showed an 8px gutter
   between their lines that does not exist in the layout. Square corners
   for the same reason — a rounded line cannot meet its neighbour. */
.spr-editing .spr-container:empty,
.spr-editing .spr-section:empty,
.spr-editing .spr-col:empty,
.spr-editing .spr-grid:empty {
    min-height: 70px;
    outline: 1px dashed #dde1e6;
    outline-offset: -1px;
}

/* An Accordion item's empty Container: Elementor's empty view — a dashed
   box inside the item, the + (overlay, pages_builder_blocks_js.php) and
   "Drag widget here" under it. */
.spr-editing .spr-nacc__item > .spr-container:empty {
    position: relative;
    min-height: 160px;
    outline: 2px dashed #d5d8dc;
    outline-offset: -20px;
}
.spr-editing .spr-nacc__item > .spr-container:empty::after {
    content: 'Drag widget here';
    position: absolute; left: 0; right: 0; top: calc(50% + 16px);
    text-align: center; font-size: 13px; font-style: italic; color: #69727d;
    pointer-events: none;
}

/* The + an empty container shows is a real button in the editor's
   overlay layer (.spr-emptyadd in pages_edit.php), not a ::after here —
   Elementor's opens the widget panel, and a pseudo-element can't be
   clicked. */

/* A Container's hover and selection outlines are drawn by the builder's
   own overlay (.spr-conoutline), which alone can tell a nested container
   from a top-level one and can follow a hover from a widget up to the
   container around it. GrapesJS marks the element itself with
   .gjs-hovered / .gjs-selected and outlines it from a stylesheet it
   injects into the canvas, which would double every line — and always in
   the same blue.

   `!important` because its own rule carries one
   (`.gjs-selected { outline: … !important }`); between two important
   declarations the more specific wins, and three classes beat its one. */
.spr-editing .spr-container.gjs-hovered,
.spr-editing .spr-container.gjs-selected,
.spr-editing .spr-section.gjs-hovered,
.spr-editing .spr-section.gjs-selected {
    outline: none !important;
}

/* The placeholder the Add New Container wizard is drawn over. Editor
   only: the rule is scoped to .spr-editing, so a page saved while the
   wizard happened to be open renders identically.

   Carries .spr-container so it out-specifies the :empty rule above —
   that one is (0,3,0) and would otherwise hold the slot at 70px, which
   clipped the wizard's later steps out of their own box. */
.spr-editing .spr-container.spr-addslot {
    /* 20px taller than the panel: the wizard is inset by 10px a side. */
    min-height: 170px;
    outline: 0;
}
/* Steps 2 and 3 need the room. */
.spr-editing .spr-container.spr-addslot--tall { min-height: 250px; }

/* While a block is being dragged, the slot the block would land in says
   so — that one only, not every open slot on the page.

   .gjs-selected-parent is GrapesJS's own marker for the current drop
   parent, so it is exactly "the one being hovered" and it moves as the
   pointer does. Its yellow outline carries !important and wins over
   anything here, which is right: it is the same indicator every other
   drop target in the builder uses. This adds the fill. */
.spr-editing.spr-dragging .spr-container.spr-addslot.gjs-selected-parent {
    background-color: rgba(59, 151, 227, .05);
}
.spr-editing .spr-container.spr-addslot::after { content: none; }
.spr-editing .spr-spacer {
    outline: 1px dashed var(--spr-line);
    outline-offset: -2px;
}


/* =========================================================
   Control engine — behaviour classes and variables
   ---------------------------------------------------------
   The panel (pages_builder_controls_js.php) writes Elementor's
   settings as per-block CSS plus a few classes on the widget
   wrapper. These rules are what those classes and variables mean —
   our implementation of the behaviour Elementor's frontend gives
   its own equivalents.
   ========================================================= */
/* Global Colors / Global Fonts (--spr-global-*) are printed per client by
   Pagekit::headTags() in the page head, and by the builder in its canvas.
   Nothing is defined here: this file loads after the head, so a default
   would override the client's kit. Compiled rules carry the kit's value as
   their var() fallback instead. */

/* Position (Style > Button) and every other `align` prefix. */
.spr-align-left { text-align: left; }
.spr-align-center { text-align: center; }
.spr-align-right { text-align: right; }
.spr-align-justify .spr-btn { width: 100%; }
@media (max-width: 1024px) {
    .spr-tablet-align-left { text-align: left; }
    .spr-tablet-align-center { text-align: center; }
    .spr-tablet-align-right { text-align: right; }
    .spr-tablet-align-justify .spr-btn { width: 100%; }
}
@media (max-width: 767px) {
    .spr-mobile-align-left { text-align: left; }
    .spr-mobile-align-center { text-align: center; }
    .spr-mobile-align-right { text-align: right; }
    .spr-mobile-align-justify .spr-btn { width: 100%; }
}

/* Advanced > Layout: widgets as flex items of their Container.
   Align Self / Order / Size write these variables. */
/* Widgets as flex items of their Container. Width and grow come from
   the container's direction (a row shares, a column fills) unless the
   widget's own Advanced > Layout says otherwise. */
/* :where() keeps this at one class, level with the per-block rules the
   panel writes (.spr-e-<uid>), which come later and so win — the way
   Elementor's long element selectors outrank its container defaults. */
:where(.spr-container) > .spr-widget {
    /* No fallback on purpose: a row sets it to `initial`, which must
       leave the widget at its own width, as in Elementor. Every
       container defines it, so it's never missing here. */
    width: var(--spr-cw-width);
    align-self: var(--align-self, var(--spr-cw-align-self, auto));
    order: var(--order, 0);
    flex-grow: var(--flex-grow, var(--spr-cw-flex-grow, 0));
    flex-shrink: var(--flex-shrink, 1);
    flex-basis: var(--flex-basis, auto);
}
/* Heading, Text Editor, Button, Image and Icon take their own width, as in
   Elementor (3.28 applies the --container-widget-* variables only to its
   block widgets: Divider, Video, Maps, Accordion, Loop Grid / Carousel…):
   a column stretches them (Align Items: default), Align Items: Center sizes
   them to their content, and a row doesn't make them grow — a Button
   dropped beside two columns keeps its width and the columns give way. */
:where(.spr-container) > :is(.spr-widget--heading, .spr-widget--text, .spr-widget--btn, .spr-widget--image, .spr-widget--icon) {
    width: auto;
    align-self: var(--align-self, auto);
    flex-grow: var(--flex-grow, 0);
}
.spr-widget.spr-w-auto { width: auto; max-width: none; }
.spr-widget.spr-w-initial { width: var(--spr-cw-width, auto); }

/* Advanced > Layout > Position. */
.spr-absolute { position: absolute; }
.spr-fixed { position: fixed; }

/* Advanced > Transform — one transform built from the variables, so
   rotate, offset, scale, skew and flip compose instead of replacing
   one another. */
.spr-transform {
    transform:
        /* Browsers clamp perspective(0) to 1px, which would wildly distort
           any 3D rotate; unset means flat, so default to a distance with
           no visible effect. */
        perspective(var(--spr-tf-perspective, 100000px))
        rotateZ(var(--spr-tf-rotateZ, 0))
        rotateX(var(--spr-tf-rotateX, 0))
        rotateY(var(--spr-tf-rotateY, 0))
        translate(var(--spr-tf-translate, 0))
        translateX(var(--spr-tf-translateX, 0))
        translateY(var(--spr-tf-translateY, 0))
        scaleX(calc(var(--spr-tf-flipX, 1) * var(--spr-tf-scaleX, var(--spr-tf-scale, 1))))
        scaleY(calc(var(--spr-tf-flipY, 1) * var(--spr-tf-scaleY, var(--spr-tf-scale, 1))))
        skewX(var(--spr-tf-skewX, 0))
        skewY(var(--spr-tf-skewY, 0));
    transform-origin: var(--spr-tf-origin-y, center) var(--spr-tf-origin-x, center);
    transition: transform var(--spr-tf-transition-duration, .4s);
}

/* Bootstrap 3 on page-builder pages. The storefront's header, menus and popups are Bootstrap 3
   (open = .in); a builder page also loads the template's style.css, which carries Bootstrap 4
   (open = .show) — and its `.fade:not(.show)` / `.collapse:not(.show)` hid every open Bootstrap 3
   popup and panel: the welcome popup opened invisible, still locking the page's scroll. Same
   weight as those rules, loaded after them, so Bootstrap 3's open state wins again. */
.fade.in { opacity: 1; }
.collapse.in { display: block; }
tr.collapse.in { display: table-row; }
tbody.collapse.in { display: table-row-group; }
.modal.in .modal-dialog { transform: none; }
.modal-backdrop.fade.in { opacity: .5; }
.tooltip.in { opacity: .9; }
/* The storefront's popups (meal details and the rest) are sized and typed for Bootstrap 3 and the
   store's own base type: undo Bootstrap 4's 500px cap on .modal-dialog, and give them the
   storefront's text base rather than the builder page's. */
.modal .modal-dialog { max-width: none; }
.modal { font-size: 14px; font-weight: 300; line-height: 1.5; letter-spacing: normal; text-align: start; }
/* ...and Bootstrap 3's grid inside them (Bootstrap 4 makes .row a flex row and sizes .col-* as flex items). */
.modal .row { display: block; flex-wrap: nowrap; }
.modal [class*="col-"] { flex: 0 1 auto; max-width: none; }
.modal b, .modal strong { font-weight: 700; }

/* Advanced > Responsive — hidden on that device on the live page. While editing,
   Elementor keeps it in that device's view, greyed out (its content faded and
   desaturated, diagonal hairlines over it, a container washed white), and so do we. */
@media (min-width: 1025px) { .spr-hidden-desktop { display: none !important; } }
@media (min-width: 768px) and (max-width: 1024px) { .spr-hidden-tablet { display: none !important; } }
@media (max-width: 767px) { .spr-hidden-mobile { display: none !important; } }
@media (min-width: 1025px) {
    .spr-editing .spr-hidden-desktop { display: block !important; }
    .spr-editing .spr-container.spr-hidden-desktop { display: var(--display) !important; }   /* a container keeps its flex / grid */
    .spr-editing .spr-widget.spr-hidden-desktop:not(.spr-absolute):not(.spr-fixed) { position: relative; }
    .spr-editing .spr-hidden-desktop > * { filter: opacity(.4) saturate(0); }
    .spr-editing .spr-hidden-desktop::after { content: ""; display: block; position: absolute; inset: 0; z-index: 5; pointer-events: none; border-radius: inherit;
        background: repeating-linear-gradient(125deg, rgba(15, 23, 42, .16) 0 1px, transparent 1px 9px); }
    .spr-editing .spr-container.spr-hidden-desktop::after { background: repeating-linear-gradient(125deg, rgba(15, 23, 42, .16) 0 1px, transparent 1px 9px), linear-gradient(rgba(255, 255, 255, .55), rgba(255, 255, 255, .55)); }
}
@media (min-width: 768px) and (max-width: 1024px) {
    .spr-editing .spr-hidden-tablet { display: block !important; }
    .spr-editing .spr-container.spr-hidden-tablet { display: var(--display) !important; }   /* a container keeps its flex / grid */
    .spr-editing .spr-widget.spr-hidden-tablet:not(.spr-absolute):not(.spr-fixed) { position: relative; }
    .spr-editing .spr-hidden-tablet > * { filter: opacity(.4) saturate(0); }
    .spr-editing .spr-hidden-tablet::after { content: ""; display: block; position: absolute; inset: 0; z-index: 5; pointer-events: none; border-radius: inherit;
        background: repeating-linear-gradient(125deg, rgba(15, 23, 42, .16) 0 1px, transparent 1px 9px); }
    .spr-editing .spr-container.spr-hidden-tablet::after { background: repeating-linear-gradient(125deg, rgba(15, 23, 42, .16) 0 1px, transparent 1px 9px), linear-gradient(rgba(255, 255, 255, .55), rgba(255, 255, 255, .55)); }
}
@media (max-width: 767px) {
    .spr-editing .spr-hidden-mobile { display: block !important; }
    .spr-editing .spr-container.spr-hidden-mobile { display: var(--display) !important; }   /* a container keeps its flex / grid */
    .spr-editing .spr-widget.spr-hidden-mobile:not(.spr-absolute):not(.spr-fixed) { position: relative; }
    .spr-editing .spr-hidden-mobile > * { filter: opacity(.4) saturate(0); }
    .spr-editing .spr-hidden-mobile::after { content: ""; display: block; position: absolute; inset: 0; z-index: 5; pointer-events: none; border-radius: inherit;
        background: repeating-linear-gradient(125deg, rgba(15, 23, 42, .16) 0 1px, transparent 1px 9px); }
    .spr-editing .spr-container.spr-hidden-mobile::after { background: repeating-linear-gradient(125deg, rgba(15, 23, 42, .16) 0 1px, transparent 1px 9px), linear-gradient(rgba(255, 255, 255, .55), rgba(255, 255, 255, .55)); }
}

/* The Layers eye (editor only) hides an element even where it's greyed out above. */
.spr-editing [class].spr-layer-off.spr-layer-off { display: none !important; }

/* Hover Animation — the Hover.css effects Elementor offers. */
[class*="spr-animation-"] { transition-duration: .3s; transition-property: transform; }
.spr-animation-grow:hover { transform: scale(1.1); }
.spr-animation-shrink:hover { transform: scale(.9); }
.spr-animation-pulse:hover { animation: spr-pulse 1s linear infinite; }
.spr-animation-pulse-grow:hover { animation: spr-pulse-grow .3s linear infinite alternate; }
.spr-animation-pulse-shrink:hover { animation: spr-pulse-shrink .3s linear infinite alternate; }
.spr-animation-push:hover { animation: spr-push .3s linear 1; }
.spr-animation-pop:hover { animation: spr-pop .3s linear 1; }
.spr-animation-bounce-in:hover { transform: scale(1.2); transition-timing-function: cubic-bezier(.47, 2.02, .31, -.36); }
.spr-animation-bounce-out:hover { transform: scale(.8); transition-timing-function: cubic-bezier(.47, 2.02, .31, -.36); }
.spr-animation-rotate:hover { transform: rotate(4deg); }
.spr-animation-grow-rotate:hover { transform: scale(1.1) rotate(4deg); }
.spr-animation-float:hover { transform: translateY(-8px); transition-timing-function: ease-out; }
.spr-animation-sink:hover { transform: translateY(8px); transition-timing-function: ease-out; }
.spr-animation-bob:hover { animation: spr-bob-float .3s ease-out forwards, spr-bob 1.5s ease-in-out .3s infinite alternate; }
.spr-animation-hang:hover { animation: spr-hang-sink .3s ease-out forwards, spr-hang 1.5s ease-in-out .3s infinite alternate; }
.spr-animation-skew:hover { transform: skew(-10deg); }
.spr-animation-skew-forward:hover { transform: skew(-10deg); transform-origin: 0 100%; }
.spr-animation-skew-backward:hover { transform: skew(10deg); transform-origin: 0 100%; }
.spr-animation-wobble-vertical:hover { animation: spr-wobble-vertical 1s ease-in-out 1; }
.spr-animation-wobble-horizontal:hover { animation: spr-wobble-horizontal 1s ease-in-out 1; }
.spr-animation-wobble-to-bottom-right:hover { animation: spr-wobble-to-bottom-right 1s ease-in-out 1; }
.spr-animation-wobble-to-top-right:hover { animation: spr-wobble-to-top-right 1s ease-in-out 1; }
.spr-animation-wobble-top:hover { transform-origin: 0 100%; animation: spr-wobble-top 1s ease-in-out 1; }
.spr-animation-wobble-bottom:hover { transform-origin: 100% 0; animation: spr-wobble-bottom 1s ease-in-out 1; }
.spr-animation-wobble-skew:hover { animation: spr-wobble-skew 1s ease-in-out 1; }
.spr-animation-buzz:hover { animation: spr-buzz .15s linear infinite; }
.spr-animation-buzz-out:hover { animation: spr-buzz-out .75s linear 1; }
@keyframes spr-pulse { 25% { transform: scale(1.1); } 75% { transform: scale(.9); } }
@keyframes spr-pulse-grow { to { transform: scale(1.1); } }
@keyframes spr-pulse-shrink { to { transform: scale(.9); } }
@keyframes spr-push { 50% { transform: scale(.8); } 100% { transform: scale(1); } }
@keyframes spr-pop { 50% { transform: scale(1.2); } }
@keyframes spr-bob { 0% { transform: translateY(-8px); } 50% { transform: translateY(-4px); } 100% { transform: translateY(-8px); } }
@keyframes spr-bob-float { 100% { transform: translateY(-8px); } }
@keyframes spr-hang { 0% { transform: translateY(8px); } 50% { transform: translateY(4px); } 100% { transform: translateY(8px); } }
@keyframes spr-hang-sink { 100% { transform: translateY(8px); } }
@keyframes spr-wobble-vertical { 16.65% { transform: translateY(8px); } 33.3% { transform: translateY(-6px); } 49.95% { transform: translateY(4px); } 66.6% { transform: translateY(-2px); } 83.25% { transform: translateY(1px); } 100% { transform: translateY(0); } }
@keyframes spr-wobble-horizontal { 16.65% { transform: translateX(8px); } 33.3% { transform: translateX(-6px); } 49.95% { transform: translateX(4px); } 66.6% { transform: translateX(-2px); } 83.25% { transform: translateX(1px); } 100% { transform: translateX(0); } }
@keyframes spr-wobble-to-bottom-right { 16.65% { transform: translate(8px, 8px); } 33.3% { transform: translate(-6px, -6px); } 49.95% { transform: translate(4px, 4px); } 66.6% { transform: translate(-2px, -2px); } 83.25% { transform: translate(1px, 1px); } 100% { transform: translate(0, 0); } }
@keyframes spr-wobble-to-top-right { 16.65% { transform: translate(8px, -8px); } 33.3% { transform: translate(-6px, 6px); } 49.95% { transform: translate(4px, -4px); } 66.6% { transform: translate(-2px, 2px); } 83.25% { transform: translate(1px, -1px); } 100% { transform: translate(0, 0); } }
@keyframes spr-wobble-top { 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); } 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); } 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); } }
@keyframes spr-wobble-bottom { 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); } 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); } 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); } }
@keyframes spr-wobble-skew { 16.65% { transform: skew(-12deg); } 33.3% { transform: skew(10deg); } 49.95% { transform: skew(-6deg); } 66.6% { transform: skew(4deg); } 83.25% { transform: skew(-2deg); } 100% { transform: skew(0); } }
@keyframes spr-buzz { 50% { transform: translateX(3px) rotate(2deg); } 100% { transform: translateX(-3px) rotate(-2deg); } }
@keyframes spr-buzz-out { 10%, 30%, 50%, 70% { transform: translateX(3px) rotate(2deg); } 20%, 40%, 60%, 80% { transform: translateX(-3px) rotate(-2deg); } 90% { transform: translateX(2px) rotate(1deg); } 100% { transform: translateX(-2px) rotate(-1deg); } }
@media (prefers-reduced-motion: reduce) {
    [class*="spr-animation-"]:hover { animation: none !important; transform: none !important; }
}


/* =========================================================
   Widgets — Elementor's markup, our design system
   ---------------------------------------------------------
   Each widget is .spr-widget.spr-widget--<name> around the markup
   Elementor renders for it, so the panel's selectors land where
   they do in Elementor. The looks are ours.
   ========================================================= */

/* Heading */
.spr-widget--heading .spr-heading { margin: 0; padding: 0; }
.spr-widget--heading .spr-heading a { color: inherit; font-size: inherit; line-height: inherit; text-decoration: none; }
.spr-heading.spr-size-small { font-size: 15px; }
.spr-heading.spr-size-medium { font-size: 19px; }
.spr-heading.spr-size-large { font-size: 29px; }
.spr-heading.spr-size-xl { font-size: 39px; }
.spr-heading.spr-size-xxl { font-size: 59px; }

/* Text Editor. Elementor puts the Text Editor's colour and typography on
   the widget itself, so they must reach the text by inheritance: the base
   look sits on the wrapper at zero specificity (the Text global and the
   block's own Typography override it) and the inner element inherits. */
:where(.spr-widget--text) { font-family: var(--spr-font); line-height: 1.6; color: var(--spr-ink-muted); }
.spr-widget--text .spr-text { margin: 0; color: inherit; font-family: inherit; line-height: inherit; font-size: inherit; font-weight: inherit; }
.spr-widget--text .spr-text > :last-child { margin-bottom: 0; }
/* Paragraphs take the widget's Text Color and Typography (the kit's Text by
   default), as in Elementor — the store theme's own `p { color; font-family;
   line-height }` would otherwise win. */
.spr-widget--text .spr-text :is(p, li) { color: inherit; font-family: inherit; line-height: inherit; }
.spr-widget--text a { color: var(--spr-accent); }
/* Drop Cap — the first letter of the first block. */
.spr-drop-cap-yes .spr-text > :first-child::first-letter {
    float: left; text-align: center; line-height: 1; font-size: 50px; margin-inline-end: 10px;
    color: var(--spr-accent);
}
.spr-drop-cap-yes.spr-dropcap-view-stacked .spr-text > :first-child::first-letter { padding: 10px; background-color: var(--spr-accent); color: #fff; }
.spr-drop-cap-yes.spr-dropcap-view-framed .spr-text > :first-child::first-letter { padding: 10px; border: 3px solid var(--spr-accent); background-color: transparent; }

/* Image */
.spr-widget--image { text-align: center; }
.spr-widget--image a { display: inline-block; }
.spr-widget--image img { display: inline-block; vertical-align: middle; max-width: 100%; height: auto; }
/* Resets at zero specificity, so Theme Style › Images (.spr-page img)
   and the Image block's own settings both override them. */
:where(.spr-widget--image) img { border: none; border-radius: 0; box-shadow: none; }
.spr-widget--image .spr-image__fig { margin: 0; }
.spr-widget--image .spr-image__caption { margin-block-start: 8px; font-size: 14px; line-height: 1.5; color: var(--spr-ink-muted); }

/* Icon (also the Divider's icon) */
.spr-widget--icon .spr-icon-wrap { line-height: 1; }
.spr-widget .spr-icon { display: inline-block; line-height: 1; transition: all .3s; color: var(--spr-accent); fill: var(--spr-accent); text-align: center; }
.spr-widget--icon .spr-icon { font-size: 50px; }
.spr-widget .spr-icon i, .spr-widget .spr-icon svg, .spr-widget .spr-icon .spr-svg-icon { width: 1em; height: 1em; position: relative; display: block; }
.spr-widget .spr-icon i::before { position: absolute; left: 50%; transform: translateX(-50%); }
.spr-view-stacked .spr-icon { padding: .5em; background-color: var(--spr-accent); color: #fff; fill: #fff; }
.spr-view-framed .spr-icon { padding: .5em; color: var(--spr-accent); border: 3px solid var(--spr-accent); background-color: transparent; }
.spr-shape-circle .spr-icon { border-radius: 50%; }
.spr-shape-rounded .spr-icon { border-radius: 10%; }

/* Divider */
/* Zero specificity, so the Divider's defaults — its Secondary line
   colour, written on the wrapper itself — override these. */
:where(.spr-widget--divider) {
    --divider-border-style: none; --divider-border-width: 1px; --divider-color: var(--spr-line);
    --divider-icon-size: 20px; --divider-element-spacing: 10px;
}
.spr-widget--divider .spr-divider { display: flex; padding-block: 15px; }
.spr-widget--divider .spr-divider__sep { display: flex; width: 100%; margin: 0; direction: ltr; }
.spr-widget--divider .spr-divider__text { font-size: 15px; line-height: 1; max-width: 95%; color: var(--spr-ink-muted); font-family: var(--spr-font); }
.spr-widget--divider .spr-divider__element { margin: 0 var(--divider-element-spacing); flex-shrink: 0; }
.spr-widget--divider .spr-icon { font-size: var(--divider-icon-size); }
.spr-widget-divider--view-line_text .spr-divider__sep,
.spr-widget-divider--view-line_icon .spr-divider__sep { align-items: center; }
.spr-widget-divider--view-line_text .spr-divider__sep::before, .spr-widget-divider--view-line_text .spr-divider__sep::after,
.spr-widget-divider--view-line_icon .spr-divider__sep::before, .spr-widget-divider--view-line_icon .spr-divider__sep::after {
    display: block; content: ""; flex-grow: 1; border-block-end: 0;
    border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color);
}
.spr-widget-divider--element-align-left .spr-divider__sep::before { content: none; }
.spr-widget-divider--element-align-left .spr-divider__element { margin-left: 0; }
.spr-widget-divider--element-align-right .spr-divider__sep::after { content: none; }
.spr-widget-divider--element-align-right .spr-divider__element { margin-right: 0; }
.spr-widget--divider:not(.spr-widget-divider--view-line_text):not(.spr-widget-divider--view-line_icon) .spr-divider__sep {
    border-block-start: var(--divider-border-width) var(--divider-border-style) var(--divider-color);
}

/* Spacer */
.spr-widget--spacer { --spacer-size: 50px; }
.spr-widget--spacer .spr-spacer__inner { height: var(--spacer-size); }

/* Video */
.spr-widget--video .spr-video__wrap { position: relative; overflow: hidden; aspect-ratio: var(--video-aspect-ratio, 1.77777); background: #0f172a; }
.spr-widget--video .spr-video__el { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; display: flex; background: #000; }
.spr-widget--video .spr-video__overlay { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background-size: cover; background-position: center; cursor: pointer; }
.spr-widget--video .spr-video__play { color: #fff; font-size: 100px; line-height: 1; opacity: .85; text-shadow: 1px 0 6px rgba(0, 0, 0, .3); transition: opacity .3s; }
.spr-widget--video .spr-video__overlay:hover .spr-video__play { opacity: 1; }
.spr-widget--video .spr-video__empty { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #94a3b8; font: 14px/1.4 var(--spr-font); }
/* The player would swallow the clicks that select the widget. */
.spr-editing .spr-widget--video .spr-video__el { pointer-events: none; }

/* Entrance Animation (Advanced > Motion Effects). The runtime in
   assets/js/page-blocks.js hides the element, then adds .spr-animated
   and .spr-<name> as it scrolls into view. Durations match Elementor's
   Normal / Slow / Fast. */
.spr-invisible { visibility: hidden; }
.spr-animated { animation-duration: 1.25s; animation-fill-mode: both; }
.spr-animated.spr-anim-slow { animation-duration: 2s; }
.spr-animated.spr-anim-fast { animation-duration: .75s; }
.spr-fadeIn { animation-name: spr-fadeIn; }
.spr-fadeInDown { animation-name: spr-fadeInDown; }
.spr-fadeInLeft { animation-name: spr-fadeInLeft; }
.spr-fadeInRight { animation-name: spr-fadeInRight; }
.spr-fadeInUp { animation-name: spr-fadeInUp; }
.spr-zoomIn { animation-name: spr-zoomIn; }
.spr-zoomInDown { animation-name: spr-zoomInDown; }
.spr-zoomInLeft { animation-name: spr-zoomInLeft; }
.spr-zoomInRight { animation-name: spr-zoomInRight; }
.spr-zoomInUp { animation-name: spr-zoomInUp; }
.spr-bounceIn { animation-name: spr-bounceIn; }
.spr-bounceInDown { animation-name: spr-bounceInDown; }
.spr-bounceInLeft { animation-name: spr-bounceInLeft; }
.spr-bounceInRight { animation-name: spr-bounceInRight; }
.spr-bounceInUp { animation-name: spr-bounceInUp; }
.spr-slideInDown { animation-name: spr-slideInDown; }
.spr-slideInLeft { animation-name: spr-slideInLeft; }
.spr-slideInRight { animation-name: spr-slideInRight; }
.spr-slideInUp { animation-name: spr-slideInUp; }
.spr-rotateIn { animation-name: spr-rotateIn; transform-origin: center; }
.spr-rotateInDownLeft { animation-name: spr-rotateInDownLeft; transform-origin: left bottom; }
.spr-rotateInDownRight { animation-name: spr-rotateInDownRight; transform-origin: right bottom; }
.spr-rotateInUpLeft { animation-name: spr-rotateInUpLeft; transform-origin: left bottom; }
.spr-rotateInUpRight { animation-name: spr-rotateInUpRight; transform-origin: right bottom; }
.spr-bounce { animation-name: spr-bounce; transform-origin: center bottom; }
.spr-flash { animation-name: spr-flash; }
.spr-pulse { animation-name: spr-pulse-in; }
.spr-rubberBand { animation-name: spr-rubberBand; }
.spr-shake { animation-name: spr-shake; }
.spr-headShake { animation-name: spr-headShake; animation-timing-function: ease-in-out; }
.spr-swing { animation-name: spr-swing; transform-origin: top center; }
.spr-tada { animation-name: spr-tada; }
.spr-wobble { animation-name: spr-wobble; }
.spr-jello { animation-name: spr-jello; transform-origin: center; }
.spr-lightSpeedIn { animation-name: spr-lightSpeedIn; animation-timing-function: ease-out; }
.spr-rollIn { animation-name: spr-rollIn; }
@keyframes spr-fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes spr-fadeInDown { from { opacity: 0; transform: translate3d(0, -100%, 0); } to { opacity: 1; transform: none; } }
@keyframes spr-fadeInLeft { from { opacity: 0; transform: translate3d(-100%, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes spr-fadeInRight { from { opacity: 0; transform: translate3d(100%, 0, 0); } to { opacity: 1; transform: none; } }
@keyframes spr-fadeInUp { from { opacity: 0; transform: translate3d(0, 100%, 0); } to { opacity: 1; transform: none; } }
@keyframes spr-zoomIn { from { opacity: 0; transform: scale3d(.3, .3, .3); } 50% { opacity: 1; } }
@keyframes spr-zoomInDown { from { opacity: 0; transform: scale3d(.1, .1, .1) translate3d(0, -1000px, 0); animation-timing-function: cubic-bezier(.55, .055, .675, .19); } 60% { opacity: 1; transform: scale3d(.475, .475, .475) translate3d(0, 60px, 0); animation-timing-function: cubic-bezier(.175, .885, .32, 1); } }
@keyframes spr-zoomInLeft { from { opacity: 0; transform: scale3d(.1, .1, .1) translate3d(-1000px, 0, 0); animation-timing-function: cubic-bezier(.55, .055, .675, .19); } 60% { opacity: 1; transform: scale3d(.475, .475, .475) translate3d(10px, 0, 0); animation-timing-function: cubic-bezier(.175, .885, .32, 1); } }
@keyframes spr-zoomInRight { from { opacity: 0; transform: scale3d(.1, .1, .1) translate3d(1000px, 0, 0); animation-timing-function: cubic-bezier(.55, .055, .675, .19); } 60% { opacity: 1; transform: scale3d(.475, .475, .475) translate3d(-10px, 0, 0); animation-timing-function: cubic-bezier(.175, .885, .32, 1); } }
@keyframes spr-zoomInUp { from { opacity: 0; transform: scale3d(.1, .1, .1) translate3d(0, 1000px, 0); animation-timing-function: cubic-bezier(.55, .055, .675, .19); } 60% { opacity: 1; transform: scale3d(.475, .475, .475) translate3d(0, -60px, 0); animation-timing-function: cubic-bezier(.175, .885, .32, 1); } }
@keyframes spr-bounceIn { from, 20%, 40%, 60%, 80%, to { animation-timing-function: cubic-bezier(.215, .61, .355, 1); } 0% { opacity: 0; transform: scale3d(.3, .3, .3); } 20% { transform: scale3d(1.1, 1.1, 1.1); } 40% { transform: scale3d(.9, .9, .9); } 60% { opacity: 1; transform: scale3d(1.03, 1.03, 1.03); } 80% { transform: scale3d(.97, .97, .97); } to { opacity: 1; transform: scale3d(1, 1, 1); } }
@keyframes spr-bounceInDown { from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(.215, .61, .355, 1); } 0% { opacity: 0; transform: translate3d(0, -3000px, 0); } 60% { opacity: 1; transform: translate3d(0, 25px, 0); } 75% { transform: translate3d(0, -10px, 0); } 90% { transform: translate3d(0, 5px, 0); } to { transform: none; } }
@keyframes spr-bounceInLeft { from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(.215, .61, .355, 1); } 0% { opacity: 0; transform: translate3d(-3000px, 0, 0); } 60% { opacity: 1; transform: translate3d(25px, 0, 0); } 75% { transform: translate3d(-10px, 0, 0); } 90% { transform: translate3d(5px, 0, 0); } to { transform: none; } }
@keyframes spr-bounceInRight { from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(.215, .61, .355, 1); } from { opacity: 0; transform: translate3d(3000px, 0, 0); } 60% { opacity: 1; transform: translate3d(-25px, 0, 0); } 75% { transform: translate3d(10px, 0, 0); } 90% { transform: translate3d(-5px, 0, 0); } to { transform: none; } }
@keyframes spr-bounceInUp { from, 60%, 75%, 90%, to { animation-timing-function: cubic-bezier(.215, .61, .355, 1); } from { opacity: 0; transform: translate3d(0, 3000px, 0); } 60% { opacity: 1; transform: translate3d(0, -20px, 0); } 75% { transform: translate3d(0, 10px, 0); } 90% { transform: translate3d(0, -5px, 0); } to { transform: none; } }
@keyframes spr-slideInDown { from { transform: translate3d(0, -100%, 0); visibility: visible; } to { transform: none; } }
@keyframes spr-slideInLeft { from { transform: translate3d(-100%, 0, 0); visibility: visible; } to { transform: none; } }
@keyframes spr-slideInRight { from { transform: translate3d(100%, 0, 0); visibility: visible; } to { transform: none; } }
@keyframes spr-slideInUp { from { transform: translate3d(0, 100%, 0); visibility: visible; } to { transform: none; } }
@keyframes spr-rotateIn { from { transform: rotate3d(0, 0, 1, -200deg); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes spr-rotateInDownLeft { from { transform: rotate3d(0, 0, 1, -45deg); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes spr-rotateInDownRight { from { transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes spr-rotateInUpLeft { from { transform: rotate3d(0, 0, 1, 45deg); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes spr-rotateInUpRight { from { transform: rotate3d(0, 0, 1, -90deg); opacity: 0; } to { transform: none; opacity: 1; } }
@keyframes spr-bounce { from, 20%, 53%, 80%, to { animation-timing-function: cubic-bezier(.215, .61, .355, 1); transform: translate3d(0, 0, 0); } 40%, 43% { animation-timing-function: cubic-bezier(.755, .05, .855, .06); transform: translate3d(0, -30px, 0); } 70% { animation-timing-function: cubic-bezier(.755, .05, .855, .06); transform: translate3d(0, -15px, 0); } 90% { transform: translate3d(0, -4px, 0); } }
@keyframes spr-flash { from, 50%, to { opacity: 1; } 25%, 75% { opacity: 0; } }
@keyframes spr-pulse-in { from { transform: scale3d(1, 1, 1); } 50% { transform: scale3d(1.05, 1.05, 1.05); } to { transform: scale3d(1, 1, 1); } }
@keyframes spr-rubberBand { from { transform: scale3d(1, 1, 1); } 30% { transform: scale3d(1.25, .75, 1); } 40% { transform: scale3d(.75, 1.25, 1); } 50% { transform: scale3d(1.15, .85, 1); } 65% { transform: scale3d(.95, 1.05, 1); } 75% { transform: scale3d(1.05, .95, 1); } to { transform: scale3d(1, 1, 1); } }
@keyframes spr-shake { from, to { transform: translate3d(0, 0, 0); } 10%, 30%, 50%, 70%, 90% { transform: translate3d(-10px, 0, 0); } 20%, 40%, 60%, 80% { transform: translate3d(10px, 0, 0); } }
@keyframes spr-headShake { 0% { transform: translateX(0); } 6.5% { transform: translateX(-6px) rotateY(-9deg); } 18.5% { transform: translateX(5px) rotateY(7deg); } 31.5% { transform: translateX(-3px) rotateY(-5deg); } 43.5% { transform: translateX(2px) rotateY(3deg); } 50% { transform: translateX(0); } }
@keyframes spr-swing { 20% { transform: rotate3d(0, 0, 1, 15deg); } 40% { transform: rotate3d(0, 0, 1, -10deg); } 60% { transform: rotate3d(0, 0, 1, 5deg); } 80% { transform: rotate3d(0, 0, 1, -5deg); } to { transform: rotate3d(0, 0, 1, 0deg); } }
@keyframes spr-tada { from { transform: scale3d(1, 1, 1); } 10%, 20% { transform: scale3d(.9, .9, .9) rotate3d(0, 0, 1, -3deg); } 30%, 50%, 70%, 90% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, 3deg); } 40%, 60%, 80% { transform: scale3d(1.1, 1.1, 1.1) rotate3d(0, 0, 1, -3deg); } to { transform: scale3d(1, 1, 1); } }
@keyframes spr-wobble { from { transform: none; } 15% { transform: translate3d(-25%, 0, 0) rotate3d(0, 0, 1, -5deg); } 30% { transform: translate3d(20%, 0, 0) rotate3d(0, 0, 1, 3deg); } 45% { transform: translate3d(-15%, 0, 0) rotate3d(0, 0, 1, -3deg); } 60% { transform: translate3d(10%, 0, 0) rotate3d(0, 0, 1, 2deg); } 75% { transform: translate3d(-5%, 0, 0) rotate3d(0, 0, 1, -1deg); } to { transform: none; } }
@keyframes spr-jello { from, 11.1%, to { transform: none; } 22.2% { transform: skewX(-12.5deg) skewY(-12.5deg); } 33.3% { transform: skewX(6.25deg) skewY(6.25deg); } 44.4% { transform: skewX(-3.125deg) skewY(-3.125deg); } 55.5% { transform: skewX(1.5625deg) skewY(1.5625deg); } 66.6% { transform: skewX(-.78125deg) skewY(-.78125deg); } 77.7% { transform: skewX(.390625deg) skewY(.390625deg); } 88.8% { transform: skewX(-.1953125deg) skewY(-.1953125deg); } }
@keyframes spr-lightSpeedIn { from { transform: translate3d(100%, 0, 0) skewX(-30deg); opacity: 0; } 60% { transform: skewX(20deg); opacity: 1; } 80% { transform: skewX(-5deg); } to { transform: none; } }
@keyframes spr-rollIn { from { opacity: 0; transform: translate3d(-100%, 0, 0) rotate3d(0, 0, 1, -120deg); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .spr-animated { animation: none !important; } }

/* Editor only: a selected widget's frame is drawn above the page by the
   builder (pages_builder_blocks_js.php, .spr-woutline) — GrapesJS's own
   outline sits inside the box, under content at its edge. */
.spr-editing .spr-widget.gjs-selected { outline: none !important; }

/* Editor only: the container a drag will drop into — dashed accent, not
   GrapesJS's yellow. The page itself has the end-of-page area for that. */
.spr-editing .gjs-selected-parent:not([data-gjs-type="wrapper"]) { outline: 2px dashed #10b981 !important; outline-offset: -2px; }
.spr-editing [data-gjs-type="wrapper"].gjs-selected-parent { outline: 0 !important; }

/* ---------------------------------------------------------
   Current Menu Grid (spr-menu-grid)
   Markup: views/widgets/menu_grid.php. Elementor's Posts > Cards skin
   look, in our palette; the widget's Style controls write over these
   (genschema.js, buildMenuGrid), and its Columns / Gaps reach the grid
   through the variables below. The filter bar is Elementor's Taxonomy
   Filter, driven by its --spr-filter-* variables.
   --------------------------------------------------------- */
.spr-menu { width: 100%; }
.spr-menu__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: var(--spr-menu-col-gap, 30px);
    row-gap: var(--spr-menu-row-gap, 35px);
}
@media (max-width: 1024px) { .spr-menu__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .spr-menu__grid { grid-template-columns: minmax(0, 1fr); } }
.spr-menu__item { position: relative; display: flex; min-width: 0; cursor: pointer; outline: 0; }
.spr-menu__item[hidden] { display: none !important; }
.spr-menu__card {
    position: relative;
    display: flex;
    flex-direction: column;
    width: 100%;
    min-height: 100%;
    overflow: hidden;
    padding-bottom: 20px;
    background-color: #fff;
    border: 1px solid #e7eaee;
    border-radius: 12px;
    transition: box-shadow .25s, transform .25s;
}
.spr-card-shadow-yes .spr-menu__card { box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 6px 18px -6px rgba(15, 23, 42, .12); }
.spr-card-shadow-yes .spr-menu__item:hover .spr-menu__card { box-shadow: 0 2px 4px rgba(15, 23, 42, .05), 0 14px 30px -10px rgba(15, 23, 42, .2); }
.spr-menu__item:focus-visible .spr-menu__card { box-shadow: 0 0 0 3px var(--spr-global-color-accent, #10b981); }

/* Image: Elementor's ratio box (padding-bottom = Image Ratio). */
.spr-menu__thumb-link { position: relative; display: block; width: 100%; }
.spr-menu__thumb { position: relative; overflow: hidden; padding-bottom: calc(.66 * 100%); background: #f1f5f9; }
.spr-menu__thumb img {
    position: absolute; top: 0; left: 0; width: 100%; height: 100%;
    object-fit: cover; display: block; max-width: none;
    transition: filter .3s, transform .4s;
}
.spr-menu__item:hover .spr-menu__thumb img { transform: scale(1.03); }
.spr-posts--thumbnail-none .spr-menu__text { margin-top: 20px; }

.spr-menu__badge {
    position: absolute; top: 0; right: 0; z-index: 2;
    margin: 20px;
    padding: .5em 1em;
    border-radius: 999px;
    background-color: var(--spr-menu-badge-bg, var(--spr-global-color-accent, #10b981));
    color: #fff;
    font-size: 12px; font-weight: 600; line-height: 1;
    letter-spacing: .02em; text-transform: uppercase;
}

/* Macros / allergens: chips on the photo, each opening a popover. */
.spr-menu__chips { position: absolute; left: 12px; right: 12px; bottom: 12px; z-index: 3; display: flex; flex-wrap: wrap; gap: 6px; }
.spr-menu__chip { position: relative; }
.spr-menu__chip-btn {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 5px 10px;
    border: 0; border-radius: 999px;
    background: rgba(255, 255, 255, .94);
    color: #1e293b;
    font-family: inherit; font-size: 11px; font-weight: 600; line-height: 1.2;
    letter-spacing: .03em; text-transform: uppercase; white-space: nowrap;
    box-shadow: 0 2px 8px rgba(15, 23, 42, .15);
    cursor: pointer;
}
.spr-menu__chip--macros .spr-menu__chip-btn i { color: #ea580c; }
.spr-menu__chip--allergens .spr-menu__chip-btn i { color: #dc2626; }
.spr-menu__pop {
    position: absolute; left: 0; bottom: calc(100% + 8px); z-index: 5;
    width: 240px; max-width: 80vw;
    padding: 14px;
    border-radius: 12px;
    background: #fff;
    color: #1e293b;
    box-shadow: 0 12px 32px -8px rgba(15, 23, 42, .3);
    cursor: default;
    visibility: hidden; opacity: 0; transform: translateY(4px);
    transition: opacity .15s, transform .15s, visibility .15s;
}
.spr-menu__chip.is-open .spr-menu__pop { visibility: visible; opacity: 1; transform: none; }
.spr-menu__pop-title { margin-bottom: 10px; font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.spr-menu__pop-foot { display: block; margin-top: 10px; color: #64748b; font-size: 11px; }
.spr-menu__macros { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.spr-menu__macro { display: flex; flex-direction: column; padding: 8px 10px; border-radius: 8px; background: #f1f5f9; }
.spr-menu__macro b { font-size: 15px; line-height: 1.2; }
.spr-menu__macro span { color: #64748b; font-size: 11px; }
.spr-menu__macro--calories { background: #fff7ed; } .spr-menu__macro--calories b { color: #c2410c; }
.spr-menu__macro--protein { background: #eff6ff; } .spr-menu__macro--protein b { color: #1d4ed8; }
.spr-menu__macro--carbs { background: #f0fdf4; } .spr-menu__macro--carbs b { color: #15803d; }
.spr-menu__macro--fat { background: #fefce8; } .spr-menu__macro--fat b { color: #a16207; }
.spr-menu__allergens { display: flex; flex-wrap: wrap; gap: 5px; }
.spr-menu__allergens span { padding: 3px 8px; border-radius: 999px; background: #fef2f2; color: #b91c1c; font-size: 11px; font-weight: 600; text-transform: uppercase; }

/* Text column. The button sits at its foot so a row of cards lines up. */
.spr-menu__text { display: flex; flex-direction: column; flex: 1 1 auto; margin-top: 20px; padding: 0 20px; }
.spr-menu__title {
    margin: 0 0 8px;
    color: var(--spr-global-color-secondary, #0f172a);
    font-family: var(--spr-global-typography-primary-font-family, inherit);
    font-size: 18px; font-weight: 600; line-height: 1.3;
}
.spr-menu__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-bottom: 10px; color: #64748b; font-size: 12px; }
.spr-menu__rating { display: inline-flex; align-items: center; gap: 2px; }
.spr-menu__rating .fa-star { color: #d5d8dc; font-size: 12px; }
.spr-menu__rating .fa-star.is-on { color: #f59e0b; }
.spr-menu__rating span { margin-left: 4px; }
.spr-menu__tags { display: inline-flex; flex-wrap: wrap; gap: 5px; }
.spr-menu__tag { padding: 3px 9px; border-radius: 999px; background-color: #f1f5f9; color: #334155; font-size: 11px; font-weight: 600; line-height: 1.4; }
.spr-menu--tagcolors-yes .spr-menu__tag { background-color: var(--tag-bg, #f0f9ff); color: var(--tag-fg, #0369a1); }
.spr-menu--tagcolors-yes .spr-menu__tag--more { background-color: #f1f5f9; color: #64748b; }
.spr-menu__excerpt { margin-bottom: 0; }
.spr-menu__excerpt p { margin: 0; color: #64748b; font-size: 14px; line-height: 1.6; }
.spr-menu__action { display: flex; flex-direction: column; align-items: stretch; margin-top: auto; padding-top: 16px; }
.spr-menu__button { pointer-events: none; }
.spr-menu__item:hover .spr-menu__button { background-image: linear-gradient(rgba(0, 0, 0, .14), rgba(0, 0, 0, .14)), linear-gradient(135deg, rgba(255, 255, 255, .16) 0%, rgba(255, 255, 255, 0) 100%); }

/* Alignment (Style > Layout) */
.spr-posts--align-left .spr-menu__text { text-align: left; }
.spr-posts--align-center .spr-menu__text { text-align: center; }
.spr-posts--align-center .spr-menu__meta, .spr-posts--align-center .spr-menu__tags { justify-content: center; }
.spr-posts--align-right .spr-menu__text { text-align: right; }
.spr-posts--align-right .spr-menu__meta, .spr-posts--align-right .spr-menu__tags { justify-content: flex-end; }

/* Filter bar */
.spr-filter {
    display: flex;
    flex-direction: var(--spr-filter-direction, row);
    flex-wrap: var(--spr-filter-wrap, wrap);
    justify-content: var(--spr-filter-justify-content, center);
    gap: var(--spr-filter-space-between, 8px);
    overflow-x: var(--spr-filter-overflow-x, initial);
    margin-bottom: 24px;
}
.spr-filter__item {
    display: inline-flex;
    flex-grow: var(--spr-filter-item-flex-grow, 0);
    justify-content: var(--spr-filter-item-justify-content, center);
    width: var(--spr-filter-item-width, initial);
    white-space: var(--spr-filter-white-space, nowrap);
    padding: 8px 16px;
    border: 1px solid transparent;
    border-radius: var(--spr-filter-item-border-radius, 999px);
    background-color: #f1f5f9;
    color: var(--spr-filter-normal-text-color, #334155);
    font-family: var(--spr-global-typography-accent-font-family, inherit);
    font-size: 14px; font-weight: 600; line-height: 1.2;
    cursor: pointer;
    transition: background-color .2s, color .2s, border-color .2s, box-shadow .2s;
}
.spr-filter__item:hover { background-color: #e2e8f0; color: var(--spr-filter-hover-text-color, #0f172a); }
.spr-filter__item[aria-pressed="true"] { background-color: var(--spr-global-color-accent, #10b981); color: var(--spr-filter-active-text-color, #fff); }

.spr-menu__empty { padding: 32px 20px; border: 1px dashed #d5d8dc; border-radius: 12px; color: #64748b; font-size: 14px; text-align: center; }

/* Editor only: the cards are a preview — the whole widget is one element
   to select and drag (the builder paints it; it has no inner layers). */
.spr-editing .spr-widget--menu-grid *, .spr-editing .spr-widget--menu-carousel * { pointer-events: none !important; }
.spr-editing .spr-widget--menu-grid, .spr-editing .spr-widget--menu-carousel { min-height: 40px; }
.spr-editing .spr-widget--menu-grid.spr-is-loading, .spr-editing .spr-widget--menu-carousel.spr-is-loading { opacity: .6; transition: opacity .2s; }
.spr-menu--loading .spr-menu__thumb { animation: spr-skel 1.2s ease-in-out infinite; }
.spr-skel { height: 10px; margin-bottom: 10px; border-radius: 5px; background: #eef1f4; animation: spr-skel 1.2s ease-in-out infinite; }
.spr-skel--title { width: 70%; height: 16px; }
.spr-skel--short { width: 45%; }
@keyframes spr-skel { 50% { opacity: .55; } }

/* ---------------------------------------------------------
   Current Menu Carousel (spr-menu-carousel)
   Markup: views/widgets/menu_carousel.php; runtime: page-carousel.js
   (Swiper). Elementor's Loop Carousel variables throughout: the slide
   count and gap per device, arrow / dot positions and colours.
   --------------------------------------------------------- */
.spr-carousel { position: relative; }
.spr-carousel__stage { position: relative; }
.spr-carousel .spr-carousel__swiper { position: relative; overflow: hidden; margin: 0; padding: 0; z-index: 1; }
.spr-carousel .swiper-wrapper { display: flex; align-items: stretch; box-sizing: content-box; height: auto; }
.spr-carousel .swiper-slide { flex-shrink: 0; height: auto; display: block; }
.spr-carousel .swiper-slide > .spr-menu__item { min-height: 100%; }
/* Before Swiper starts (and in the builder until it does): the first
   slides laid out as Swiper will lay them, so nothing moves. */
.spr-carousel:not(.is-ready) .swiper-wrapper { gap: var(--swiper-slides-gap, 10px); }
.spr-carousel:not(.is-ready) .swiper-slide {
    width: calc((100% - (var(--swiper-slides-to-display, 3) - 1) * var(--swiper-slides-gap, 10px)) / var(--swiper-slides-to-display, 3));
}

/* Arrows: inside the slides by default; Position > Outside moves them
   into the gutters the carousel then leaves. */
.spr-carousel__arrow {
    position: absolute; z-index: 5;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 12px;
    border-radius: 50%;
    background-color: #fff;
    color: var(--arrow-normal-color, #1e293b);
    fill: var(--arrow-normal-color, #1e293b);
    font-size: var(--arrow-size, 16px); line-height: 1;
    box-shadow: 0 4px 14px -4px rgba(15, 23, 42, .3);
    cursor: pointer; user-select: none;
    transition: color .2s, background-color .2s, opacity .2s;
}
.spr-carousel__arrow i, .spr-carousel__arrow .spr-svg-icon { width: 1em; height: 1em; font-size: inherit; text-align: center; }
.spr-carousel__arrow:hover { color: var(--arrow-hover-color, var(--spr-global-color-accent, #10b981)); fill: var(--arrow-hover-color, var(--spr-global-color-accent, #10b981)); }
.spr-carousel__arrow.swiper-button-disabled { opacity: .35; cursor: default; }
.spr-carousel__arrow--prev {
    left: calc(var(--arrow-prev-left-align, 0%) + var(--arrow-prev-left-position, 0px) + var(--spr-arrow-inset, 12px));
    top: calc(var(--arrow-prev-top-align, 50%) + var(--arrow-prev-top-position, 0px));
    transform: translate(var(--arrow-prev-translate-x, 0px), var(--arrow-prev-translate-y, -50%));
}
.spr-carousel__arrow--next {
    right: calc(var(--arrow-next-right-align, 0%) + var(--arrow-next-right-position, 0px) + var(--spr-arrow-inset, 12px));
    top: calc(var(--arrow-next-top-align, 50%) + var(--arrow-next-top-position, 0px));
    transform: translate(var(--arrow-next-translate-x, 0%), var(--arrow-next-translate-y, -50%));
}
.spr-arrows-position-outside .spr-carousel__stage { padding: 0 calc(var(--arrow-size, 16px) + 40px); }
.spr-arrows-position-outside .spr-carousel { --spr-arrow-inset: 0px; }

/* Pagination: below the slides (Space From Slides > Outside) or over
   them; Custom Position places it anywhere. */
/* Scoped to .spr-carousel so Swiper's own .swiper-pagination (absolute,
   10px off the bottom) never wins. */
.spr-carousel .spr-carousel__pagination {
    position: relative; z-index: 5;
    top: auto; right: auto; bottom: auto; left: auto; width: auto; transform: none;
    display: flex; align-items: center; justify-content: center; flex-wrap: wrap;
    margin-top: var(--swiper-pagination-spacing, 20px);
    padding: 4px 0;
    line-height: 1.2;
}
.spr-pagination-position-inside .spr-carousel .spr-carousel__pagination { position: absolute; left: 0; right: 0; bottom: var(--swiper-pagination-spacing, 14px); margin: 0; }
.spr-carousel .swiper-pagination-bullet {
    display: inline-block;
    width: var(--swiper-pagination-size, 8px); height: var(--swiper-pagination-size, 8px);
    margin: var(--swiper-pagination-bullet-vertical-gap, 0) var(--swiper-pagination-bullet-horizontal-gap, 4px);
    border-radius: 50%;
    background: var(--dots-normal-color, #cbd5e1);
    opacity: 1; cursor: pointer;
    transition: background-color .2s, transform .2s;
}
.spr-carousel .swiper-pagination-bullet:hover,
.spr-carousel .swiper-pagination-bullet-active { background: var(--dots-hover-color, var(--spr-global-color-accent, #10b981)); }
.spr-carousel .swiper-pagination-fraction { color: var(--fraction-color, #475569); font-size: 14px; font-weight: 600; }
.spr-pagination-type-progressbar .spr-carousel .spr-carousel__pagination {
    display: block; height: var(--swiper-pagination-size, 4px); overflow: hidden;
    border-radius: 999px; background: var(--progressbar-normal-color, #e2e8f0);
}
.spr-carousel .swiper-pagination-progressbar-fill {
    position: absolute; left: 0; top: 0; width: 100%; height: 100%;
    background: var(--progressbar-hover-color, var(--spr-global-color-accent, #10b981));
    transform: scale(0); transform-origin: left top;
}
.spr-dots-custom-yes.spr-pagination-type-bullets .spr-carousel .spr-carousel__pagination,
.spr-fraction-custom-yes.spr-pagination-type-fraction .spr-carousel .spr-carousel__pagination {
    position: absolute; right: auto; bottom: auto; margin: 0;
}
.spr-dots-custom-yes.spr-pagination-type-bullets .spr-carousel .spr-carousel__pagination {
    left: calc(var(--dots-horizontal-position, 50%) + var(--dots-horizontal-offset, 0px));
    top: calc(var(--dots-vertical-position, 100%) + var(--dots-vertical-offset, 0px));
    transform: translate(var(--dots-horizontal-transform, -50%), var(--dots-vertical-transform, -100%));
}
.spr-fraction-custom-yes.spr-pagination-type-fraction .spr-carousel .spr-carousel__pagination {
    left: calc(var(--fraction-horizontal-position, 50%) + var(--fraction-horizontal-offset, 0px));
    top: calc(var(--fraction-vertical-position, 100%) + var(--fraction-vertical-offset, 0px));
    transform: translate(var(--fraction-horizontal-transform, -50%), var(--fraction-vertical-transform, -100%));
}

/* Editor: arrows and dots stay clickable over the locked preview. */
.spr-editing .spr-widget--menu-carousel .spr-carousel__arrow,
.spr-editing .spr-widget--menu-carousel .swiper-pagination-bullet { pointer-events: auto !important; }
.spr-editing .spr-widget--menu-carousel .spr-carousel__arrow * { pointer-events: none !important; }

/* ---------------------------------------------------------
   Featured Product (spr-product)
   Markup: views/widgets/product.php. Image beside the details (Image
   Position on the widget: spr-product--image-left|right|top), stacked on
   phones. Tags, macros and allergens reuse the menu card's styles.
   --------------------------------------------------------- */
.spr-product { display: flex; align-items: center; gap: 40px; width: 100%; }
.spr-product__media { flex: 0 0 var(--spr-product-media, 50%); max-width: var(--spr-product-media, 50%); min-width: 0; }
.spr-product--image-right .spr-product { flex-direction: row-reverse; }
.spr-product--image-top .spr-product { flex-direction: column; align-items: stretch; }
.spr-product--image-top .spr-product__media { flex-basis: auto; max-width: 100%; }
@media (max-width: 767px) {
    .spr-product { flex-direction: column !important; align-items: stretch !important; }
    .spr-product__media { flex-basis: auto; max-width: 100%; }
}
.spr-product__image { position: relative; overflow: hidden; padding-bottom: calc(.8 * 100%); border-radius: 16px; background: #f1f5f9; }
.spr-product__img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; display: block; transition: opacity .2s; }
.spr-product__badge {
    position: absolute; top: 16px; left: 16px; z-index: 2;
    padding: .5em 1em; border-radius: 999px;
    background-color: var(--spr-menu-badge-bg, var(--spr-global-color-accent, #10b981)); color: #fff;
    font-size: 12px; font-weight: 600; line-height: 1; letter-spacing: .02em; text-transform: uppercase;
}
.spr-product__thumbs { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.spr-product__thumb { width: 64px; height: 64px; padding: 0; overflow: hidden; border: 2px solid transparent; border-radius: 10px; background: #f1f5f9; cursor: pointer; transition: border-color .2s; }
.spr-product__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.spr-product__thumb.is-on, .spr-product__thumb:hover { border-color: var(--spr-global-color-accent, #10b981); }
.spr-product__info { flex: 1 1 auto; min-width: 0; }
.spr-product__title {
    margin: 0 0 12px;
    color: var(--spr-global-color-primary, #0f172a);
    font-family: var(--spr-global-typography-primary-font-family, inherit);
    font-size: 32px; font-weight: 600; line-height: 1.2;
}
.spr-product__meta { margin-bottom: 14px; }
.spr-product__price { margin-bottom: 16px; color: var(--spr-global-color-accent, #10b981); font-size: 24px; font-weight: 700; line-height: 1.2; }
.spr-product__price del { margin-left: 8px; color: #94a3b8; font-size: .7em; font-weight: 500; }
.spr-product__desc { margin-bottom: 20px; color: var(--spr-global-color-text, #475569); font-size: 15px; line-height: 1.65; }
.spr-product__macros { grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); max-width: 420px; margin-bottom: 16px; }
.spr-product__allergens { margin-bottom: 20px; }
.spr-product__action { display: flex; flex-direction: column; align-items: flex-start; }

/* Add to cart on the page */
.spr-product__order { display: flex; flex-direction: column; gap: 14px; padding-top: 4px; }
.spr-product__field { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.spr-product__label { color: #64748b; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.spr-product__date { max-width: 260px; height: 42px; padding: 0 12px; border: 1px solid #d5d8dc; border-radius: 10px; background: #fff; color: #0f172a; font: inherit; font-size: 15px; }
.spr-product__portions { display: flex; flex-direction: column; gap: 8px; }
.spr-product__portion { display: flex; align-items: center; justify-content: space-between; gap: 16px; max-width: 420px; color: #0f172a; font-size: 15px; }
.spr-qty { display: inline-flex; align-items: center; flex: 0 0 auto; border: 1px solid #d5d8dc; border-radius: 10px; background: #fff; overflow: hidden; }
.spr-qty__b { width: 38px; height: 40px; padding: 0; border: 0; background: none; color: inherit; font-size: 18px; line-height: 1; cursor: pointer; }
.spr-qty__b:hover { background: rgba(15, 23, 42, .05); }
.spr-qty__n { width: 44px; height: 40px; padding: 0; border: 0; background: none; color: inherit; font: inherit; font-weight: 600; text-align: center; -moz-appearance: textfield; }
.spr-qty__n::-webkit-outer-spin-button, .spr-qty__n::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.spr-product__note { margin: 0; color: #64748b; font-size: 14px; }
.spr-product__alert { color: #b91c1c; }
.spr-product__button.is-busy { opacity: .7; pointer-events: none; }

.spr-editing .spr-widget--product * { pointer-events: none !important; }
.spr-editing .spr-widget--product { min-height: 40px; }
.spr-editing .spr-widget--product.spr-is-loading { opacity: .6; transition: opacity .2s; }

/* ---------------------------------------------------------
   Plans (spr-plans)
   Markup: views/widgets/plans.php. Elementor's Price Table, in our card:
   header, pricing, details, footer button, ribbon. The button sits at the
   card's foot so a row of plans lines up.
   --------------------------------------------------------- */
.spr-plans {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: 30px; row-gap: 30px;
    align-items: stretch;
}
@media (max-width: 1024px) { .spr-plans { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .spr-plans { grid-template-columns: minmax(0, 1fr); } }
.spr-plan {
    position: relative;
    display: flex; flex-direction: column;
    min-width: 0; overflow: hidden;
    background-color: #fff;
    border: 1px solid #e7eaee; border-radius: 16px;
    transition: box-shadow .25s, transform .25s;
}
.spr-plans--shadow-yes .spr-plan { box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -10px rgba(15, 23, 42, .16); }
.spr-plans--shadow-yes .spr-plan:hover { box-shadow: 0 2px 4px rgba(15, 23, 42, .05), 0 18px 36px -14px rgba(15, 23, 42, .24); }
.spr-plan.is-featured { border-color: var(--spr-global-color-accent, #10b981); border-width: 2px; }
.spr-plan__image { position: relative; overflow: hidden; padding-bottom: calc(.56 * 100%); background: #f1f5f9; }
.spr-plan__image img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; display: block; }
.spr-plan__body { display: flex; flex-direction: column; flex: 1 1 auto; padding: 28px 24px; text-align: center; }
.spr-plan__title {
    margin: 0 0 8px;
    color: var(--spr-global-color-primary, #0f172a);
    font-family: var(--spr-global-typography-primary-font-family, inherit);
    font-size: 22px; font-weight: 600; line-height: 1.25;
}
.spr-plan__desc { color: var(--spr-global-color-text, #64748b); font-size: 14px; line-height: 1.6; }
.spr-plan__pricing { margin: 20px 0 16px; }
.spr-plan__prefix { margin-bottom: 4px; color: #64748b; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.spr-plan__amount { display: block; }
.spr-plan__amount > * { display: inline-block; vertical-align: baseline; margin-right: 4px; }
.spr-plan__price { color: var(--spr-global-color-accent, #10b981); font-size: 36px; font-weight: 700; line-height: 1.1; }
.spr-plan__period, .spr-plan__total { color: #64748b; font-size: 14px; }
.spr-plan__total { margin-top: 4px; }
.spr-plan__original { color: #94a3b8; font-size: 16px; }
.spr-plan__details { margin-bottom: 16px; color: #334155; font-size: 14px; font-weight: 600; }
.spr-plan__action { display: flex; flex-direction: column; align-items: stretch; margin-top: auto; padding-top: 8px; }
.spr-plan__ribbon {
    position: absolute; top: 0; right: 0; z-index: 2;
    margin: 14px;
    padding: 6px 12px; border-radius: 999px;
    background-color: var(--spr-global-color-accent, #10b981); color: #fff;
    font-size: 12px; font-weight: 700; line-height: 1; letter-spacing: .04em; text-transform: uppercase;
}
.spr-plans--ribbon-left .spr-plan__ribbon { right: auto; left: 0; }

.spr-editing .spr-widget--plans * { pointer-events: none !important; }
.spr-editing .spr-widget--plans { min-height: 40px; }
.spr-editing .spr-widget--plans.spr-is-loading { opacity: .6; transition: opacity .2s; }

/* Order Options (spr-order-options): Plans' cards (above), with a subtitle. */
.spr-plan__subtitle { margin-bottom: 10px; color: var(--spr-global-color-accent, #10b981); font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.spr-plans--options .spr-plan__action { padding-top: 20px; }
.spr-editing .spr-widget--order-options * { pointer-events: none !important; }
.spr-editing .spr-widget--order-options { min-height: 40px; }
.spr-editing .spr-widget--order-options.spr-is-loading { opacity: .6; transition: opacity .2s; }
/* Order Options in the editor: once selected, a card's texts can be
   typed on (double-click), like the Heading and Text Editor widgets. */
.spr-editing .spr-widget--order-options.gjs-selected [data-spr-edit] { pointer-events: auto !important; cursor: text; border-radius: 3px; }
.spr-editing .spr-widget--order-options.gjs-selected [data-spr-edit]:hover { outline: 1px dashed #93c5fd; outline-offset: 2px; }
.spr-editing [data-spr-edit].is-editing { outline: 2px solid #3b82f6 !important; outline-offset: 2px; background: rgba(59, 130, 246, .06); }

/* ---------------------------------------------------------
   Meal Categories (spr-categories)
   Markup: views/widgets/categories.php. Tiles: the category's image on its
   own color (a circle until Style > Image > Border Radius says otherwise),
   then its name.
   The carousel is Product Carousel's (.spr-carousel, above).
   --------------------------------------------------------- */
.spr-cats__grid { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); column-gap: 20px; row-gap: 24px; }
@media (max-width: 1024px) { .spr-cats__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 767px) { .spr-cats__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.spr-cat { display: flex; flex-direction: column; align-items: center; text-align: center; color: inherit; text-decoration: none; }
.spr-cat:hover { text-decoration: none; }
.spr-cat__img {
    position: relative; display: grid; place-items: center;
    width: 100%; aspect-ratio: 1 / 1; overflow: hidden;
    border-radius: 50%;
    background-color: #f1f5f9;
    transition: transform .25s, box-shadow .25s;
}
.spr-cats--color-yes .spr-cat__img { background-color: var(--spr-cat-bg, #f1f5f9); }
.spr-cat__img img { width: 100%; height: 100%; max-width: none; object-fit: cover; display: block; transition: transform .35s; }
.spr-cat__initial { color: #334155; font-size: 32px; font-weight: 700; line-height: 1; }
.spr-cats--hover-lift .spr-cat:hover .spr-cat__img { transform: translateY(-3px); box-shadow: 0 12px 24px -12px rgba(15, 23, 42, .35); }
.spr-cats--hover-zoom .spr-cat:hover .spr-cat__img img { transform: scale(1.08); }
.spr-cat__name {
    display: block; margin: 12px 0 0;
    color: var(--spr-global-color-secondary, #0f172a);
    font-family: var(--spr-global-typography-accent-font-family, inherit);
    font-size: 15px; font-weight: 600; line-height: 1.3;
    transition: color .2s;
}
.spr-cat:hover .spr-cat__name { color: var(--spr-global-color-accent, #10b981); }
.spr-cat:focus-visible { outline: 2px solid var(--spr-global-color-accent, #10b981); outline-offset: 4px; border-radius: 8px; }

.spr-editing .spr-widget--categories * { pointer-events: none !important; }
.spr-editing .spr-widget--categories .spr-carousel__arrow,
.spr-editing .spr-widget--categories .swiper-pagination-bullet { pointer-events: auto !important; }
.spr-editing .spr-widget--categories { min-height: 40px; }
.spr-editing .spr-widget--categories.spr-is-loading { opacity: .6; transition: opacity .2s; }

/* ---------------------------------------------------------
   Delivery Check (spr-delivery)
   Markup: views/widgets/delivery.php; runtime: page-blocks.js
   (initDelivery). The legacy Zipcodes Search form card (its photo is an
   Image widget beside it, from the block's two-column layout); popup.
   --------------------------------------------------------- */
.spr-dc { display: flex; overflow: hidden; background-color: #fff; border-radius: 16px; }
.spr-dc--shadow-yes .spr-dc { box-shadow: 0 1px 2px rgba(15, 23, 42, .05), 0 18px 40px -18px rgba(15, 23, 42, .28); }
.spr-dc__body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 16px; padding: 48px 44px; }
@media (max-width: 767px) { .spr-dc__body { padding: 28px 22px; } }
.spr-dc__title { margin: 0; color: var(--spr-global-color-primary, #0f172a); font-family: var(--spr-global-typography-primary-font-family, inherit); font-size: 32px; font-weight: 700; line-height: 1.15; }
.spr-dc__text { color: var(--spr-global-color-text, #475569); font-size: 15px; line-height: 1.6; }
.spr-dc__fields { display: flex; flex-direction: column; gap: 12px; }
.spr-dc__field { display: flex; flex-direction: column; gap: 6px; margin: 0; }
.spr-dc__label { color: #334155; font-size: 13px; font-weight: 600; }
.spr-dc__input {
    width: 100%; height: 46px; padding: 0 14px;
    border: 1px solid #d5d8dc; border-radius: 10px; background: #fff; color: #0f172a;
    font: inherit; font-size: 15px;
}
.spr-dc__input:focus { outline: 0; border-color: var(--spr-global-color-accent, #10b981); box-shadow: 0 0 0 3px rgba(16, 185, 129, .18); }
.spr-dc__step { display: flex; flex-direction: column; gap: 16px; margin: 0; }
.spr-dc__step[hidden], .spr-dc__result[hidden], .spr-dc__pickups[hidden], .spr-dc__intro[hidden] { display: none !important; }
.spr-dc__action { display: flex; flex-direction: column; align-items: stretch; }
.spr-dc__button.is-busy { opacity: .7; }
.spr-dc__result { display: flex; flex-direction: column; gap: 8px; padding: 16px 18px; border-radius: 12px; }
.spr-dc__result--ok { background-color: #ecfdf5; color: #065f46; }
.spr-dc__result--no { background-color: #fff7ed; color: #9a3412; }
.spr-dc__result .spr-dc__text { color: inherit; }
.spr-dc__result-head { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.spr-dc__days { display: flex; flex-wrap: wrap; gap: 8px; }
.spr-dc__day { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; background: rgba(255, 255, 255, .7); font-size: 13px; }
.spr-dc__pickups { display: flex; flex-direction: column; gap: 8px; max-height: 260px; overflow-y: auto; }
.spr-dc__pickup { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid #e7eaee; border-radius: 12px; }
.spr-dc__pickup-info { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; font-size: 13px; color: #475569; }
.spr-dc__pickup-name { color: #0f172a; font-size: 15px; }
.spr-dc__pickup-btn { flex: 0 0 auto; padding: 8px 14px; font-size: 13px; }
.spr-dc__error { margin: 0; color: #b91c1c; font-size: 14px; }
.spr-dc__note { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; padding: 8px 12px; border-radius: 8px; background: #eff6ff; color: #1d4ed8; font-size: 13px; }
/* Popup */
.spr-dc-pop { position: fixed; inset: 0; z-index: 10050; display: grid; place-items: center; padding: 16px; }
.spr-dc-pop[hidden] { display: none; }
.spr-dc-pop__backdrop { position: absolute; inset: 0; background: rgba(15, 23, 42, .55); }
.spr-dc-pop__box { position: relative; width: var(--spr-dc-pop-w, 560px); max-width: 100%; max-height: calc(100vh - 32px); overflow-y: auto; border-radius: 16px; }
/* The photo + form section as a popup: a white sheet around it. */
.spr-dc-pop--layout .spr-dc-pop__box { width: var(--spr-dc-pop-w, 960px); padding: 24px; background: #fff; }
.spr-dc-pop--layout .spr-dc { box-shadow: none; }
.spr-dc-pop__close {
    position: absolute; top: 12px; right: 12px; z-index: 2;
    width: 38px; height: 38px; border: 0; border-radius: 50%;
    background: #f1f5f9; color: #0f172a; font-size: 22px; line-height: 1; cursor: pointer;
    transition: transform .3s, background-color .2s;
}
.spr-dc-pop__close:hover { background: #e2e8f0; transform: rotate(90deg); }
.spr-dc-pop .spr-dc { box-shadow: none; }
html.spr-dc-open { overflow: hidden; }
/* The popup's photo + form section stays out of the page until it's in the
   popup (PageBuilderRenderer marks it; page-blocks.js moves it). */
.spr-dc-layout--popup:not(.spr-dc-pop__box > *) { display: none !important; }
/* Editor: the note sits over the whole section that pops up. */
.spr-editing [data-spr-popup-note] { position: relative; margin-top: 48px; outline: 2px dashed #93c5fd; outline-offset: 6px; }
/* ::before is the Container's overlay layer: undo its inset / opacity / blend. */
.spr-editing [data-spr-popup-note]::before {
    content: attr(data-spr-popup-note) !important;
    position: absolute; inset: auto -6px calc(100% + 10px) -6px; height: auto;
    padding: 8px 12px; border-radius: 8px; background: #eff6ff; color: #1d4ed8;
    opacity: 1; mix-blend-mode: normal; z-index: 2;
    font-size: 13px; line-height: 1.3; pointer-events: none;
}

.spr-editing .spr-widget--delivery * { pointer-events: none !important; }
.spr-editing .spr-widget--delivery { min-height: 40px; }
.spr-editing .spr-widget--delivery.spr-is-loading { opacity: .6; transition: opacity .2s; }

/* ---------------------------------------------------------
   Pickup Locations (spr-pickups)
   Markup: views/widgets/pickups.php. Grid of cards (photo on top) or a
   list (photo beside), from Layout (spr-pk--grid|list on the widget).
   --------------------------------------------------------- */
.spr-pk__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 24px; row-gap: 24px; }
@media (max-width: 1024px) { .spr-pk__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .spr-pk__grid { grid-template-columns: minmax(0, 1fr); } }
.spr-pk--list .spr-pk__grid { grid-template-columns: minmax(0, 1fr) !important; }
.spr-pk { display: flex; flex-direction: column; min-width: 0; overflow: hidden; background-color: #fff; border: 1px solid #e7eaee; border-radius: 16px; }
.spr-pk--shadow-yes .spr-pk { box-shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 8px 24px -12px rgba(15, 23, 42, .18); }
.spr-pk--list .spr-pk { flex-direction: row; }
.spr-pk__media { flex: 0 0 auto; }
.spr-pk--list .spr-pk__media { flex: 0 0 34%; }
@media (max-width: 767px) { .spr-pk--list .spr-pk { flex-direction: column; } .spr-pk--list .spr-pk__media { flex-basis: auto !important; } }
.spr-pk__image { position: relative; overflow: hidden; padding-bottom: calc(.56 * 100%); background: #f1f5f9; }
.spr-pk--list .spr-pk__image { height: 100%; min-height: 160px; padding-bottom: 0; }
.spr-pk__image img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; display: block; }
.spr-pk__body { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; padding: 22px 22px 24px; }
.spr-pk__name { margin: 0 0 12px; color: var(--spr-global-color-primary, #0f172a); font-family: var(--spr-global-typography-primary-font-family, inherit); font-size: 20px; font-weight: 600; line-height: 1.25; }
.spr-pk__lines { display: flex; flex-direction: column; gap: 8px; margin-bottom: 18px; }
.spr-pk__line { display: flex; align-items: flex-start; gap: 10px; color: var(--spr-global-color-text, #475569); font-size: 14px; line-height: 1.5; text-align: left; }
.spr-pk__line .spr-pk__ic { flex: 0 0 auto; width: 1.15em; margin-top: .2em; color: var(--spr-global-color-accent, #10b981); fill: currentColor; font-size: 14px; text-align: center; }
.spr-pk__line img.spr-pk__ic { height: 1.15em; object-fit: contain; }
.spr-pk__action { display: flex; flex-direction: column; align-items: stretch; margin-top: auto; }

.spr-editing .spr-widget--pickups * { pointer-events: none !important; }
.spr-editing .spr-widget--pickups { min-height: 40px; }
.spr-editing .spr-widget--pickups.spr-is-loading { opacity: .6; transition: opacity .2s; }

/* Google Maps (spr-maps): Google's embed for an address, Elementor's
   300px default height (Content > Height writes over it). */
.spr-widget--maps iframe { display: block; width: 100%; height: 300px; border: 0; max-width: 100%; }
.spr-editing .spr-widget--maps iframe { pointer-events: none; }

/* ---------------------------------------------------------
   Kitchen Selector (spr-kitchens)
   Markup: views/widgets/kitchens.php. Label + dropdown or pills, centred
   by default (Alignment), label beside or above (spr-ks--label-*).
   --------------------------------------------------------- */
.spr-ks { display: flex; flex-wrap: wrap; align-items: center; justify-content: var(--spr-ks-align, center); gap: 10px; }
.spr-ks--label-stacked .spr-ks { flex-direction: column; justify-content: flex-start; align-items: var(--spr-ks-align, center); }
.spr-ks__label { margin: 0; color: var(--spr-global-color-text, #334155); font-size: 14px; font-weight: 600; }
.spr-ks__select {
    min-width: 200px; height: 42px; padding: 0 36px 0 14px;
    border: 1px solid #d5d8dc; border-radius: 10px; background-color: #fff; color: #0f172a;
    font: inherit; font-size: 15px; cursor: pointer;
}
.spr-ks__select:focus { outline: 0; border-color: var(--spr-global-color-accent, #10b981); box-shadow: 0 0 0 3px rgba(16, 185, 129, .18); }
.spr-ks__pills { display: flex; flex-wrap: wrap; justify-content: var(--spr-ks-align, center); gap: 8px; }
.spr-ks__pill {
    padding: 9px 16px; border: 1px solid #d5d8dc; border-radius: 999px; background-color: #fff; color: #334155;
    font: inherit; font-size: 14px; font-weight: 600; line-height: 1.2; cursor: pointer;
    transition: background-color .2s, color .2s, border-color .2s;
}
.spr-ks__pill:hover { background-color: #f1f5f9; }
.spr-ks__pill[aria-pressed="true"] { border-color: transparent; background-color: var(--spr-global-color-accent, #10b981); color: #fff; cursor: default; }

.spr-editing .spr-widget--kitchens * { pointer-events: none !important; }
.spr-editing .spr-widget--kitchens { min-height: 40px; }
.spr-editing .spr-widget--kitchens.spr-is-loading { opacity: .6; transition: opacity .2s; }

/* ---------------------------------------------------------
   Accordion (spr-n-accordion)
   Elementor's Nested Accordion (widget-nested-accordion.css), classes
   mapped: the widget is the .e-n-accordion, <details .spr-nacc__item> its
   items, each a <summary .spr-nacc__title> and the item's Container.
   page-blocks.js animates opening and closing.
   --------------------------------------------------------- */
.spr-widget--n-accordion {
    --spr-nacc-title-font-size: 20px; --spr-nacc-title-flex-grow: initial; --spr-nacc-title-justify-content: initial;
    --spr-nacc-title-icon-order: -1; --spr-nacc-border-width: 1px; --spr-nacc-border-color: #d5d8dc; --spr-nacc-border-style: solid;
    --spr-nacc-item-title-flex-grow: initial; --spr-nacc-item-title-space-between: 0px; --spr-nacc-item-title-distance-from-content: 0px;
    --spr-nacc-padding: 10px; --spr-nacc-border-radius: 0px; --spr-nacc-icon-size: 15px;
    --spr-nacc-title-normal-color: #1f2124; --spr-nacc-title-hover-color: #1f2124; --spr-nacc-title-active-color: #1f2124;
    --spr-nacc-icon-normal-color: var(--spr-nacc-title-normal-color); --spr-nacc-icon-hover-color: var(--spr-nacc-title-hover-color);
    --spr-nacc-icon-active-color: var(--spr-nacc-title-active-color); --spr-nacc-icon-gap: 0 10px;
    width: 100%;
}
.spr-widget--n-accordion > .spr-nacc__item > summary::-webkit-details-marker { display: none; }
.spr-nacc__item { display: flex; flex-direction: column; position: relative; }
.spr-nacc__item:not(:last-of-type) { margin-block-end: var(--spr-nacc-item-title-space-between); }
/* The item's Container: Elementor's container padding (10px) and the
   accordion's border, both weaker than the Container's own settings. */
:where(.spr-widget--n-accordion > .spr-nacc__item > .spr-container) {
    --padding-top: 10px; --padding-right: 10px; --padding-bottom: 10px; --padding-left: 10px;
    border: var(--spr-nacc-border-width) var(--spr-nacc-border-style) var(--spr-nacc-border-color);
}
.spr-nacc__title {
    align-items: center; border-color: var(--spr-nacc-border-color); border-radius: var(--spr-nacc-border-radius);
    border-style: var(--spr-nacc-border-style); border-width: var(--spr-nacc-border-width); color: var(--spr-nacc-title-normal-color);
    cursor: pointer; display: flex; flex-direction: row; flex-grow: var(--spr-nacc-title-flex-grow); gap: var(--spr-nacc-icon-gap);
    justify-content: var(--spr-nacc-title-justify-content); list-style: none; padding: var(--spr-nacc-padding);
}
.spr-nacc__header { display: flex; flex-grow: var(--spr-nacc-title-flex-grow); }
.spr-nacc__header h1, .spr-nacc__header h2, .spr-nacc__header h3, .spr-nacc__header h4, .spr-nacc__header h5, .spr-nacc__header h6, .spr-nacc__header p { margin-block-end: 0; margin-block-start: 0; }
.spr-nacc__text { align-items: center; font-size: var(--spr-nacc-title-font-size); color: inherit; }
.spr-nacc__icon { align-items: center; display: flex; flex-direction: row; order: var(--spr-nacc-title-icon-order); position: relative; width: fit-content; }
.spr-nacc__icon span { height: var(--spr-nacc-icon-size); width: auto; }
.spr-nacc__icon span > i { color: var(--spr-nacc-icon-normal-color); font-size: var(--spr-nacc-icon-size); }
.spr-nacc__icon span > svg, .spr-nacc__icon span > .spr-svg-icon { fill: var(--spr-nacc-icon-normal-color); height: var(--spr-nacc-icon-size); }
.spr-nacc__title > span { cursor: pointer; }
.spr-nacc__item[open] > .spr-nacc__title { color: var(--spr-nacc-title-active-color); margin-block-end: var(--spr-nacc-item-title-distance-from-content); }
.spr-nacc__item .spr-nacc__icon .spr-nacc__opened { display: none; }
.spr-nacc__item .spr-nacc__icon .spr-nacc__closed { display: flex; }
.spr-nacc__item[open] > .spr-nacc__title .spr-nacc__icon .spr-nacc__opened { display: flex; }
.spr-nacc__item[open] > .spr-nacc__title .spr-nacc__icon .spr-nacc__closed { display: none; }
.spr-nacc__item[open] > .spr-nacc__title .spr-nacc__icon span > i { color: var(--spr-nacc-icon-active-color); }
.spr-nacc__item[open] > .spr-nacc__title .spr-nacc__icon span > svg { fill: var(--spr-nacc-icon-active-color); }
.spr-nacc__item:not([open]):hover > .spr-nacc__title { color: var(--spr-nacc-title-hover-color); }
.spr-nacc__item:not([open]):hover > .spr-nacc__title .spr-nacc__icon span > i { color: var(--spr-nacc-icon-hover-color); }
.spr-nacc__item:not([open]):hover > .spr-nacc__title .spr-nacc__icon span > svg { fill: var(--spr-nacc-icon-hover-color); }
.spr-nacc__text.is-editing { outline: 1px dashed currentColor; outline-offset: 2px; cursor: text; }

/* ---------------------------------------------------------
   Form (spr-form)
   Elementor Pro's Form markup (classes mapped: .spr-form__fields / __group /
   __label / __field…), in the design system's field and button style.
   Columns are Elementor's: .spr-col-N, .spr-md-N (tablet), .spr-sm-N
   (mobile). page-blocks.js validates, steps and sends it.
   --------------------------------------------------------- */
.spr-form { margin: 0; }
.spr-form__fields { display: flex; flex-wrap: wrap; margin-left: -5px; margin-right: -5px; }
.spr-form__group { display: flex; flex-wrap: wrap; align-items: center; box-sizing: border-box; width: 100%; padding: 0 5px; margin-bottom: 10px; }
.spr-form__group--submit { align-items: flex-end; margin-bottom: 0; }
.spr-form__group--hidden, .spr-form__group--honeypot { display: none !important; }
.spr-form__group--html { display: block; }
.spr-labels-above .spr-form__group > .spr-form__label,
.spr-labels-above .spr-form__group > .spr-form__field,
.spr-labels-above .spr-form__group > .spr-form__select,
.spr-labels-above .spr-form__group > .spr-form__subgroup { flex-basis: 100%; max-width: 100%; }
.spr-form__label { display: block; margin: 0 0 6px; padding: 0; color: #334155; font-size: 13px; font-weight: 600; line-height: 1.3; cursor: default; }
.spr-mark-required .spr-form__label::after { content: '*'; margin-left: 3px; color: #dc2626; }
.spr-form__field.spr-field, .spr-form__select select {
    box-sizing: border-box; width: 100%; max-width: 100%; min-height: 46px; margin: 0; padding: 10px 14px;
    border: 1px solid #d5d8dc; border-radius: 10px; background-color: #fff; color: #0f172a;
    font: inherit; font-size: 15px; line-height: 1.4; vertical-align: middle;
    transition: border-color .15s, box-shadow .15s;
}
.spr-form textarea.spr-form__field { min-height: 0; resize: vertical; }
.spr-form__field.spr-field::placeholder { color: inherit; opacity: .55; }
.spr-form__field.spr-field:focus, .spr-form__select select:focus { outline: 0; border-color: var(--spr-global-color-accent, #10b981); box-shadow: 0 0 0 3px rgba(16, 185, 129, .18); }
.spr-form__field.spr-size-xs, .spr-form__select.spr-size-xs select { min-height: 33px; padding: 4px 12px; font-size: 13px; border-radius: 8px; }
.spr-form__field.spr-size-md, .spr-form__select.spr-size-md select { min-height: 50px; padding: 12px 16px; font-size: 16px; }
.spr-form__field.spr-size-lg, .spr-form__select.spr-size-lg select { min-height: 56px; padding: 14px 18px; font-size: 17px; }
.spr-form__field.spr-size-xl, .spr-form__select.spr-size-xl select { min-height: 64px; padding: 16px 20px; font-size: 19px; }
.spr-form__select { position: relative; display: flex; width: 100%; padding: 0; border: 0; background: none; }
.spr-form__select select { appearance: none; -webkit-appearance: none; padding-right: 38px; }
.spr-form__select::before { content: ''; position: absolute; right: 16px; top: 50%; width: 8px; height: 8px; margin-top: -6px; border: solid currentColor; border-width: 0 2px 2px 0; transform: rotate(45deg); color: #64748b; pointer-events: none; }
.spr-form__group--select-multiple .spr-form__select::before { content: none; }
.spr-form__group--select-multiple select { padding-right: 14px; }
.spr-form__subgroup { display: flex; flex-direction: column; gap: 8px; }
.spr-form__subgroup.spr-subgroup-inline { flex-direction: row; flex-wrap: wrap; gap: 8px 18px; }
.spr-form__option { display: inline-flex; align-items: center; gap: 8px; color: #334155; font-size: 15px; }
.spr-form__option input { width: 18px; height: 18px; margin: 0; accent-color: var(--spr-global-color-accent, #10b981); }
.spr-form__option label { margin: 0; font-weight: 400; cursor: pointer; }
.spr-form__upload.spr-field { padding: 9px 12px; }
.spr-form__hp { position: absolute !important; left: -9999px !important; }
.spr-form__recaptcha { min-height: 78px; }
.spr-editing .spr-form__recaptcha { display: flex; align-items: center; justify-content: center; width: 304px; max-width: 100%; border: 1px dashed #cbd5e1; border-radius: 6px; color: #64748b; font-size: 13px; }
.spr-editing .spr-form__recaptcha::before { content: attr(data-label); }
/* The captcha (no reCAPTCHA keys): image, another-code button, the field. */
.spr-form__captcha { display: flex; flex-wrap: wrap; align-items: stretch; gap: 10px; width: 100%; }
.spr-form__captcha-code { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 2px; padding: 3px; border: 1px solid #d5d8dc; border-radius: 10px; background: #f8fafc; }
.spr-form__captcha-img { display: block; width: 150px; height: 44px; border-radius: 7px; background: #f8fafc; }
.spr-form__captcha-new { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0; border: 0; border-radius: 7px; background: transparent; color: #64748b; cursor: pointer; transition: background .15s, color .15s; }
.spr-form__captcha-new:hover, .spr-form__captcha-new:focus-visible { background: #e2e8f0; color: #0f172a; }
.spr-form__captcha-new svg { width: 16px; height: 16px; }
.spr-form__captcha-new.is-spinning svg { animation: spr-spin .6s linear; }
.spr-form__captcha .spr-form__captcha-input { flex: 1 1 160px; width: auto; min-width: 0; letter-spacing: 3px; text-transform: uppercase; font-weight: 600; }
.spr-form__captcha .spr-form__captcha-input::placeholder { letter-spacing: normal; text-transform: none; font-weight: 400; }
.spr-form__buttons { gap: 10px; }
.spr-form .spr-form__buttons .spr-btn { flex: 1 1 auto; }
.spr-form__group--submit.spr-col-100 .spr-btn, .spr-form__group--submit:not([class*="spr-col-"]) .spr-btn { flex-basis: 100%; }
.spr-form .spr-btn.spr-size-xs { padding: 8px 16px; font-size: 13px; }
.spr-form .spr-btn.spr-size-md { padding: 15px 30px; font-size: 16px; }
.spr-form .spr-btn.spr-size-lg { padding: 18px 36px; font-size: 17px; }
.spr-form .spr-btn.spr-size-xl { padding: 22px 44px; font-size: 19px; }
/* Sending: a spinner in the button, no second click (page-blocks.js busy()). */
.spr-btn.is-busy { opacity: .85; pointer-events: none; cursor: progress; }
.spr-btn-spinner { display: inline-block; flex: 0 0 auto; width: 1em; height: 1em; margin-right: .5em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spr-spin .7s linear infinite; vertical-align: -.15em; }
@keyframes spr-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spr-btn-spinner { animation-duration: 2s; } }
.spr-form__prev.spr-btn { background-color: #64748b; }
/* Buttons › Step Buttons: Side by side — Previous and Next share the row. */
.spr-form__buttons--inline { flex-wrap: nowrap; }
.spr-form .spr-form__buttons--inline .spr-btn { flex: 1 1 0; min-width: 0; }
.spr-form__help { display: block; width: 100%; margin-top: 4px; color: #dc2626; font-size: 13px; }
.spr-form__group.is-invalid .spr-form__field.spr-field { border-color: #dc2626; }
.spr-form__message { box-sizing: border-box; width: calc(100% - 10px); margin: 0 5px 14px; padding: 12px 14px; border-radius: 10px; font-size: 14px; }
form[data-spr-msg="after"] .spr-form__message { margin: 14px 5px 0; }
/* Above the form: floats over its top (no layout shift), fades in and out. */
form.spr-form { position: relative; }
.spr-form__message--float { position: absolute; z-index: 5; top: 0; left: 5px; right: 5px; width: auto; margin: 0; display: flex; align-items: flex-start; gap: 10px;
  box-shadow: 0 10px 30px -8px rgba(15, 23, 42, .25), 0 0 0 1px rgba(15, 23, 42, .06); animation: spr-msg-in .22s ease-out; transition: opacity .25s, transform .25s; }
.spr-form__message--float > span { flex: 1 1 auto; }
.spr-form__message--float.is-leaving { opacity: 0; transform: translateY(-6px); }
.spr-form__message-x { flex: 0 0 auto; margin: -4px -6px -4px 0; padding: 0 6px; border: 0; background: none; color: inherit; font-size: 20px; line-height: 1; opacity: .6; cursor: pointer; }
.spr-form__message-x:hover { opacity: 1; }
.spr-form__message-x::before { content: '\00d7'; }
@keyframes spr-msg-in { from { opacity: 0; transform: translateY(-6px); } }
.spr-form__message--success { background-color: #ecfdf5; color: #065f46; }
.spr-form__message--danger { background-color: #fef2f2; color: #991b1b; }
/* Columns (Elementor's .elementor-col-N / -md- / -sm-). */
.spr-form__group.spr-col-20 { width: 20%; } .spr-form__group.spr-col-25 { width: 25%; } .spr-form__group.spr-col-30 { width: 30%; }
.spr-form__group.spr-col-33 { width: 33.333%; } .spr-form__group.spr-col-40 { width: 40%; } .spr-form__group.spr-col-50 { width: 50%; }
.spr-form__group.spr-col-60 { width: 60%; } .spr-form__group.spr-col-66 { width: 66.666%; } .spr-form__group.spr-col-70 { width: 70%; }
.spr-form__group.spr-col-75 { width: 75%; } .spr-form__group.spr-col-80 { width: 80%; } .spr-form__group.spr-col-100 { width: 100%; }
@media (max-width: 1024px) {
    .spr-form__group.spr-md-20 { width: 20%; } .spr-form__group.spr-md-25 { width: 25%; } .spr-form__group.spr-md-30 { width: 30%; }
    .spr-form__group.spr-md-33 { width: 33.333%; } .spr-form__group.spr-md-40 { width: 40%; } .spr-form__group.spr-md-50 { width: 50%; }
    .spr-form__group.spr-md-60 { width: 60%; } .spr-form__group.spr-md-66 { width: 66.666%; } .spr-form__group.spr-md-70 { width: 70%; }
    .spr-form__group.spr-md-75 { width: 75%; } .spr-form__group.spr-md-80 { width: 80%; } .spr-form__group.spr-md-100 { width: 100%; }
}
@media (max-width: 767px) {
    .spr-form__group.spr-sm-20 { width: 20%; } .spr-form__group.spr-sm-25 { width: 25%; } .spr-form__group.spr-sm-30 { width: 30%; }
    .spr-form__group.spr-sm-33 { width: 33.333%; } .spr-form__group.spr-sm-40 { width: 40%; } .spr-form__group.spr-sm-50 { width: 50%; }
    .spr-form__group.spr-sm-60 { width: 60%; } .spr-form__group.spr-sm-66 { width: 66.666%; } .spr-form__group.spr-sm-70 { width: 70%; }
    .spr-form__group.spr-sm-75 { width: 75%; } .spr-form__group.spr-sm-80 { width: 80%; } .spr-form__group.spr-sm-100 { width: 100%; }
}
/* Steps (Elementor Pro's e-form__step / __indicators). */
.spr-widget--form {
    --spr-form-steps-indicators-spacing: 20px; --spr-form-steps-indicator-padding: 30px;
    --spr-form-steps-indicator-inactive-primary-color: #94a3b8; --spr-form-steps-indicator-inactive-secondary-color: #fff;
    --spr-form-steps-indicator-active-primary-color: var(--spr-global-color-accent, #10b981); --spr-form-steps-indicator-active-secondary-color: #fff;
    --spr-form-steps-indicator-completed-primary-color: var(--spr-global-color-accent, #10b981); --spr-form-steps-indicator-completed-secondary-color: #fff;
    --spr-form-steps-divider-width: 1px; --spr-form-steps-divider-gap: 10px;
    --spr-form-steps-indicator-progress-color: #fff; --spr-form-steps-indicator-progress-background-color: #e2e8f0;
    --spr-form-steps-indicator-progress-height: 20px; --spr-form-steps-indicator-progress-meter-color: var(--spr-global-color-accent, #10b981);
    --spr-form-steps-indicator-progress-border-radius: 999px; --spr-form-steps-indicator-icon-size: 15px;
}
.spr-form__step { display: flex; flex-wrap: wrap; width: 100%; }
.spr-form__step[hidden] { display: none !important; }
.spr-form__indicators { display: flex; flex-wrap: nowrap; align-items: center; justify-content: space-between; gap: var(--spr-form-steps-divider-gap); width: 100%; margin: 0 5px var(--spr-form-steps-indicators-spacing); font-size: 13px; }
.spr-form__indicator { display: flex; flex-direction: column; align-items: center; gap: 6px; flex: 0 0 auto; color: var(--spr-form-steps-indicator-inactive-primary-color); }
.spr-form__indicator-icon { display: inline-flex; align-items: center; justify-content: center; width: var(--spr-form-steps-indicator-padding); height: var(--spr-form-steps-indicator-padding); padding: 0; border: 1px solid currentColor; border-radius: 50%; color: var(--spr-form-steps-indicator-inactive-primary-color); background: var(--spr-form-steps-indicator-inactive-secondary-color); font-size: var(--spr-form-steps-indicator-icon-size); }
.spr-form__indicators--shape-square .spr-form__indicator-icon { border-radius: 0; }
.spr-form__indicators--shape-rounded .spr-form__indicator-icon { border-radius: 6px; }
.spr-form__indicators--shape-none .spr-form__indicator-icon { border: 0; }
.spr-form__indicator.is-active, .spr-form__indicator.is-active .spr-form__indicator-label { color: var(--spr-form-steps-indicator-active-primary-color); }
.spr-form__indicator.is-active .spr-form__indicator-icon { color: var(--spr-form-steps-indicator-active-secondary-color); background: var(--spr-form-steps-indicator-active-primary-color); border-color: var(--spr-form-steps-indicator-active-primary-color); }
.spr-form__indicator.is-done .spr-form__indicator-icon { color: var(--spr-form-steps-indicator-completed-secondary-color); background: var(--spr-form-steps-indicator-completed-primary-color); border-color: var(--spr-form-steps-indicator-completed-primary-color); }
.spr-form__indicator.is-done { color: var(--spr-form-steps-indicator-completed-primary-color); }
.spr-form__separator { flex: 1 1 auto; height: var(--spr-form-steps-divider-width); background: var(--spr-form-steps-indicator-inactive-primary-color); }
.spr-form__progress { width: 100%; height: var(--spr-form-steps-indicator-progress-height); border-radius: var(--spr-form-steps-indicator-progress-border-radius); background: var(--spr-form-steps-indicator-progress-background-color); overflow: hidden; }
.spr-form__meter { height: 100%; min-width: fit-content; padding: 0 8px; box-sizing: border-box; border-radius: inherit; background: var(--spr-form-steps-indicator-progress-meter-color); color: var(--spr-form-steps-indicator-progress-color); font-size: 12px; line-height: var(--spr-form-steps-indicator-progress-height); text-align: right; transition: width .3s; }

/* ---------------------------------------------------------
   Macro Calculator (spr-macros)
   The legacy module's calculator; page-blocks.js (initMacros) works out
   and draws the results (SVG rings).
   --------------------------------------------------------- */
.spr-mc { --spr-mc-protein: #00c6a7; --spr-mc-carbs: #ff7eb9; --spr-mc-fat: #8635ff;
    --spr-mc-fill: var(--spr-global-color-accent, #10b981); --spr-mc-track: #e2e8f0; --spr-mc-track-h: 6px; --spr-mc-track-r: 999px;
    --spr-mc-thumb: 20px; --spr-mc-thumb-c: var(--spr-mc-fill); --spr-mc-thumb-b: #fff;
    display: flex; flex-wrap: wrap; gap: 24px; align-items: stretch; }
.spr-mc__box { flex: var(--spr-mc-box-flex, 1 1 340px); min-width: 0; padding: 28px; border-radius: 16px; background-color: #fff; box-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 8px 24px -12px rgba(15, 23, 42, .12); }
.spr-mc__box[hidden] { display: none !important; }
/* Layout › Calculator Width (side by side): the calculator's share; the
   results take the rest. Set per direction (genschema's Direction). */
.spr-mc__calc { flex: var(--spr-mc-calc-flex, 1 1 340px); max-width: var(--spr-mc-calc-max, none); }
.spr-mc__title { margin: 0 0 6px; color: var(--spr-global-color-primary, #0f172a); font-size: 24px; font-weight: 700; line-height: 1.25; }
.spr-mc__desc { margin: 0 0 18px; color: var(--spr-global-color-text, #475569); font-size: 15px; }
.spr-mc__seg { display: flex; gap: 0; margin: 0 0 12px; padding: 3px; border-radius: 10px; background-color: #f1f5f9; }
.spr-mc__seg button { flex: 1 1 0; min-width: 0; padding: 9px 6px; border: 0 solid transparent; border-radius: 8px; background: none; color: #334155; font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; transition: background-color .15s, color .15s; }
.spr-mc__seg button.is-on { background-color: var(--spr-global-color-accent, #10b981); color: #fff; }
.spr-mc__slider { margin: 4px 0 12px; }
.spr-mc__label { display: block; margin: 0 0 6px; color: #334155; font-size: 14px; }
/* The sliders, drawn by us so every part is stylable: the filled part up
   to the handle (--spr-mc-p, set by page-blocks.js), the rest of the track,
   the handle. */
.spr-mc__range { --spr-mc-p: 50%; -webkit-appearance: none; appearance: none; display: block; width: 100%; height: max(var(--spr-mc-thumb), var(--spr-mc-track-h)); margin: 0; padding: 0; background: transparent; cursor: pointer; }
.spr-mc__range:focus { outline: 0; }
.spr-mc__range:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 4px rgba(16, 185, 129, .25); }
.spr-mc__range::-webkit-slider-runnable-track { height: var(--spr-mc-track-h); border-radius: var(--spr-mc-track-r); background: linear-gradient(to right, var(--spr-mc-fill) 0 var(--spr-mc-p), var(--spr-mc-track) var(--spr-mc-p) 100%); }
.spr-mc__range::-moz-range-track { height: var(--spr-mc-track-h); border-radius: var(--spr-mc-track-r); background: var(--spr-mc-track); }
.spr-mc__range::-moz-range-progress { height: var(--spr-mc-track-h); border-radius: var(--spr-mc-track-r); background: var(--spr-mc-fill); }
.spr-mc__range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; box-sizing: border-box; width: var(--spr-mc-thumb); height: var(--spr-mc-thumb); margin-top: calc((var(--spr-mc-track-h) - var(--spr-mc-thumb)) / 2); border: 2px solid var(--spr-mc-thumb-b); border-radius: 50%; background: var(--spr-mc-thumb-c); box-shadow: 0 1px 3px rgba(15, 23, 42, .3); }
.spr-mc__range::-moz-range-thumb { box-sizing: border-box; width: var(--spr-mc-thumb); height: var(--spr-mc-thumb); border: 2px solid var(--spr-mc-thumb-b); border-radius: 50%; background: var(--spr-mc-thumb-c); box-shadow: 0 1px 3px rgba(15, 23, 42, .3); }
.spr-mc__button.spr-btn { width: 100%; margin-top: 8px; }
.spr-mc__email { display: flex; flex-direction: column; margin: 8px 0 0; }
.spr-mc__input { box-sizing: border-box; width: 100%; height: 46px; padding: 0 14px; border: 1px solid #d5d8dc; border-radius: 10px; background: #fff; color: #0f172a; font: inherit; font-size: 15px; }
.spr-mc__input:focus { outline: 0; border-color: var(--spr-global-color-accent, #10b981); box-shadow: 0 0 0 3px rgba(16, 185, 129, .18); }
.spr-mc__msg { margin: 8px 0 0; color: #dc2626; font-size: 13px; }
.spr-mc__results { text-align: center; }
.spr-mc__results-title { margin-bottom: 14px; font-size: 20px; }
.spr-mc__ring, .spr-mc__split { display: block; width: 180px; max-width: 100%; height: auto; margin: 0 auto; transform: rotate(-90deg); }
.spr-mc__ring text { transform: rotate(90deg); transform-origin: 60px 60px; text-anchor: middle; fill: #334155; }
.spr-mc__ring-label { font-size: 9px; font-weight: 600; }
.spr-mc__ring-cal { font-size: 22px; font-weight: 700; }
.spr-mc__ring circle, .spr-mc__split circle { fill: none; stroke-width: 10; transition: stroke-dasharray .6s ease, stroke-dashoffset .6s ease; }
.spr-mc__ring-track { stroke: #eef2f6; }
.spr-mc__ring-value { stroke: var(--spr-global-color-accent, #10b981); stroke-linecap: round; }
.spr-mc__split { width: 140px; margin-top: 20px; }
.spr-mc__split-carbs { stroke: var(--spr-mc-carbs); } .spr-mc__split-fat { stroke: var(--spr-mc-fat); } .spr-mc__split-protein { stroke: var(--spr-mc-protein); }
.spr-mc__cards { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 20px; }
.spr-mc__card { display: flex; flex: 1 1 90px; max-width: 140px; flex-direction: column; align-items: center; gap: 4px; padding: 16px 10px; border-radius: 12px; background-color: #f8fafc; }
.spr-mc__card svg { width: 30px; height: 30px; margin-bottom: 4px; }
.spr-mc__card--protein svg { color: var(--spr-mc-protein); } .spr-mc__card--carbs svg { color: var(--spr-mc-carbs); } .spr-mc__card--fat svg { color: var(--spr-mc-fat); }
.spr-mc__card-value { color: #0f172a; font-size: 20px; font-weight: 700; }
.spr-mc__card-label { color: #64748b; font-size: 13px; }
.spr-mc__legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px; margin: 12px 0 0; padding: 0; list-style: none; color: #475569; font-size: 13px; }
.spr-mc__legend li::before { content: ''; display: inline-block; width: 10px; height: 10px; margin-right: 6px; border-radius: 50%; vertical-align: -1px; }
.spr-mc__legend--carbs::before { background: var(--spr-mc-carbs); } .spr-mc__legend--fat::before { background: var(--spr-mc-fat); } .spr-mc__legend--protein::before { background: var(--spr-mc-protein); }
.spr-mc__summary { margin: 18px 0 0; color: #475569; font-size: 14px; }
.spr-editing .spr-widget--macros * { pointer-events: none; }


/* ==========================================================================
   Testimonial / Testimonial Carousel / Reviews (Elementor's), and the
   Trustpilot / Instagram Feed widgets.
   The first part is Elementor's own CSS for these widgets (widget-
   testimonial, widget-testimonial-carousel, widget-reviews, the carousel
   base and star rating), converted to our classes; our carousel
   (.spr-carousel) carries the slides.
   ========================================================================== */

.spr-testimonial-wrapper{overflow:hidden;text-align:center}
.spr-testimonial-wrapper .spr-testimonial-content{font-size:1.3em;margin-bottom:20px}
.spr-testimonial-wrapper .spr-testimonial-name{display:block;line-height:1.5}
.spr-testimonial-wrapper .spr-testimonial-job{display:block;font-size:.85em}
.spr-testimonial-wrapper .spr-testimonial-meta{line-height:1;width:100%}
.spr-testimonial-wrapper .spr-testimonial-meta-inner{display:inline-block}
.spr-testimonial-wrapper .spr-testimonial-meta .spr-testimonial-details,.spr-testimonial-wrapper .spr-testimonial-meta .spr-testimonial-image{display:table-cell;vertical-align:middle}
.spr-testimonial-wrapper .spr-testimonial-meta .spr-testimonial-image img{border-radius:50%;height:60px;max-width:none;-o-object-fit:cover;object-fit:cover;width:60px}
.spr-testimonial-wrapper .spr-testimonial-meta.spr-testimonial-image-position-aside .spr-testimonial-image{padding-inline-end:15px}
.spr-testimonial-wrapper .spr-testimonial-meta.spr-testimonial-image-position-aside .spr-testimonial-details{text-align:start}
.spr-testimonial-wrapper .spr-testimonial-meta.spr-testimonial-image-position-top .spr-testimonial-details,.spr-testimonial-wrapper .spr-testimonial-meta.spr-testimonial-image-position-top .spr-testimonial-image{display:block}
.spr-testimonial-wrapper .spr-testimonial-meta.spr-testimonial-image-position-top .spr-testimonial-image{margin-bottom:20px}

.spr-testimonial__image{flex-shrink:0}
.spr-testimonial__image img{border-radius:999px;box-sizing:content-box;-o-object-fit:cover;object-fit:cover}
.spr-testimonial__footer,.spr-testimonial__header{display:flex}
.spr-testimonial__footer cite,.spr-testimonial__header cite{display:flex;flex-direction:column;font-size:14px;font-style:normal;line-height:1.5}
.spr-testimonial__name{font-weight:700}
.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--layout-image_inline .spr-testimonial__footer{align-items:center}
.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-start:20px}
.spr-testimonial--layout-image_above.spr-testimonial--align-right .spr-testimonial__footer,.spr-testimonial--layout-image_inline.spr-testimonial--align-right .spr-testimonial__footer{flex-direction:row-reverse}
.spr-testimonial--layout-image_above.spr-testimonial--align-right .spr-testimonial__image+cite,.spr-testimonial--layout-image_inline.spr-testimonial--align-right .spr-testimonial__image+cite{margin-inline-end:20px;margin-inline-start:0}
.spr-testimonial--layout-image_above.spr-testimonial--align-left .spr-testimonial__footer,.spr-testimonial--layout-image_inline.spr-testimonial--align-left .spr-testimonial__footer{flex-direction:row}
.spr-testimonial--layout-image_above.spr-testimonial--align-left .spr-testimonial__image+cite,.spr-testimonial--layout-image_inline.spr-testimonial--align-left .spr-testimonial__image+cite{margin-inline-end:0;margin-inline-start:20px}
.spr-testimonial--layout-image_inline .spr-testimonial__footer{margin-top:25px}
.spr-testimonial--layout-image_above .spr-testimonial{display:flex;flex-direction:column-reverse}
.spr-testimonial--layout-image_above .spr-testimonial__footer{margin-bottom:25px}
.spr-testimonial--layout-image_stacked .spr-testimonial__footer{flex-wrap:wrap;margin-top:25px}
.spr-testimonial--layout-image_stacked .spr-testimonial cite,.spr-testimonial--layout-image_stacked .spr-testimonial__image{margin-top:15px;width:100%}
.spr-testimonial--layout-image_left .spr-testimonial,.spr-testimonial--layout-image_right .spr-testimonial{align-items:stretch;display:flex}
.spr-testimonial--layout-image_left .spr-testimonial__footer,.spr-testimonial--layout-image_right .spr-testimonial__footer{flex-direction:column;flex-shrink:0;text-align:center}
.spr-testimonial--layout-image_left .spr-testimonial__image+cite,.spr-testimonial--layout-image_right .spr-testimonial__image+cite{margin-top:15px}
.spr-testimonial--layout-image_left.spr-testimonial--align-center .spr-testimonial__footer,.spr-testimonial--layout-image_right.spr-testimonial--align-center .spr-testimonial__footer{justify-content:flex-start}
.spr-testimonial--layout-image_left .spr-testimonial{flex-direction:row-reverse}
.spr-testimonial--layout-image_left .spr-testimonial__footer{padding-inline-end:20px}
.spr-testimonial--layout-image_right .spr-testimonial{flex-direction:row}
.spr-testimonial--layout-image_right .spr-testimonial__footer{padding-inline-start:20px}
.spr-testimonial--align-right .spr-testimonial{text-align:right}
.spr-testimonial--align-right.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--align-right.spr-testimonial--layout-image_inline .spr-testimonial__footer{flex-direction:row-reverse;justify-content:end}
.spr-testimonial--align-right.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--align-right.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-end:20px;margin-inline-start:0}
.spr-testimonial--align-left .spr-testimonial{text-align:left}
.spr-testimonial--align-left.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--align-left.spr-testimonial--layout-image_inline .spr-testimonial__footer{flex-direction:row;justify-content:start}
.spr-testimonial--align-left.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--align-left.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-end:0;margin-inline-start:20px}
.spr-testimonial--align-center .spr-testimonial{text-align:center}
.spr-testimonial--align-center.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--align-center.spr-testimonial--layout-image_inline .spr-testimonial__footer{justify-content:center}
.spr-testimonial--align-center.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{text-align:start}
.spr-testimonial--skin-default.spr-testimonial--layout-image_above .spr-testimonial__cite,.spr-testimonial--skin-default.spr-testimonial--layout-image_left .spr-testimonial__cite,.spr-testimonial--skin-default.spr-testimonial--layout-image_right .spr-testimonial__cite{display:flex;flex-direction:column;margin-top:25px;width:100%}
.spr-testimonial--skin-bubble .spr-testimonial__content{background-color:#f9fafa;padding:20px;position:relative}
.spr-testimonial--skin-bubble .spr-testimonial__content:after{background-color:#f9fafa;border-width:0;box-sizing:content-box;content:"";display:block;height:14px;position:absolute;transform:scaleX(.75) rotate(45deg);width:14px}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_above .spr-testimonial__content:after{bottom:calc(100% - 7px);transform:scaleX(.75) rotate(-135deg)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_above.spr-testimonial--align-center .spr-testimonial__content:after{left:50%;transform:translateX(-50%) scaleX(.75) rotate(-135deg)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_inline .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_stacked .spr-testimonial__content:after{top:calc(100% - 7px)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_inline.spr-testimonial--align-center .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_stacked.spr-testimonial--align-center .spr-testimonial__content:after{left:50%;transform:translateX(-50%) scaleX(.75) rotate(45deg)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_above.spr-testimonial--align-left .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_inline.spr-testimonial--align-left .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_stacked.spr-testimonial--align-left .spr-testimonial__content:after{left:calc(20px + 50px / 2)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_above.spr-testimonial--align-right .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_inline.spr-testimonial--align-right .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_stacked.spr-testimonial--align-right .spr-testimonial__content:after{right:calc(20px + 50px / 2)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_left .spr-testimonial__content:after{left:-8px;transform:scaleY(.75) rotate(135deg)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_right .spr-testimonial__content:after{right:-8px;transform:scaleY(.75) rotate(-45deg)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_left .spr-testimonial__content:after,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_right .spr-testimonial__content:after{top:calc(20px + 50px / 2)}
.spr-testimonial--skin-bubble.spr-testimonial--layout-image_left .spr-testimonial__footer,.spr-testimonial--skin-bubble.spr-testimonial--layout-image_right .spr-testimonial__footer{padding-top:20px}
@media (max-width:1024px){.spr-testimonial--tablet-align-right .spr-testimonial{text-align:right}.spr-testimonial--tablet-align-right.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--tablet-align-right.spr-testimonial--layout-image_inline .spr-testimonial__footer{flex-direction:row-reverse;justify-content:end}.spr-testimonial--tablet-align-right.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--tablet-align-right.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-end:20px;margin-inline-start:0}.spr-testimonial--tablet-align-left .spr-testimonial{text-align:left}.spr-testimonial--tablet-align-left.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--tablet-align-left.spr-testimonial--layout-image_inline .spr-testimonial__footer{flex-direction:row;justify-content:start}.spr-testimonial--tablet-align-left.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--tablet-align-left.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-end:0;margin-inline-start:20px}.spr-testimonial--tablet-align-center .spr-testimonial{text-align:center}.spr-testimonial--tablet-align-center.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--tablet-align-center.spr-testimonial--layout-image_inline .spr-testimonial__footer{justify-content:center}.spr-testimonial--tablet-align-center.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{text-align:start}}
@media (max-width:767px){.spr-testimonial--mobile-align-right .spr-testimonial{text-align:right}.spr-testimonial--mobile-align-right.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--mobile-align-right.spr-testimonial--layout-image_inline .spr-testimonial__footer{flex-direction:row-reverse;justify-content:end}.spr-testimonial--mobile-align-right.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--mobile-align-right.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-end:20px;margin-inline-start:0}.spr-testimonial--mobile-align-left .spr-testimonial{text-align:left}.spr-testimonial--mobile-align-left.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--mobile-align-left.spr-testimonial--layout-image_inline .spr-testimonial__footer{flex-direction:row;justify-content:start}.spr-testimonial--mobile-align-left.spr-testimonial--layout-image_above .spr-testimonial__image+cite,.spr-testimonial--mobile-align-left.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{margin-inline-end:0;margin-inline-start:20px}.spr-testimonial--mobile-align-center .spr-testimonial{text-align:center}.spr-testimonial--mobile-align-center.spr-testimonial--layout-image_above .spr-testimonial__footer,.spr-testimonial--mobile-align-center.spr-testimonial--layout-image_inline .spr-testimonial__footer{justify-content:center}.spr-testimonial--mobile-align-center.spr-testimonial--layout-image_inline .spr-testimonial__image+cite{text-align:start}}
.spr-widget--testimonial-carousel .swiper-slide{padding:20px}
.spr-widget--testimonial-carousel .spr-testimonial__text{font-size:1.3em;font-style:italic;line-height:1.5}
.spr-widget--testimonial-carousel .spr-testimonial__image img{height:50px;width:50px}

.spr-widget--reviews .swiper-slide{background-color:#fff;border:1px solid #e1e8ed;border-radius:5px;padding:0}
.spr-widget--reviews .spr-testimonial__text{font-size:14px;line-height:20px}
.spr-widget--reviews .spr-testimonial__name{color:#1c2022}
.spr-widget--reviews .spr-testimonial__title{color:#697882;font-family:inherit;font-size:12.5px;font-weight:400}
.spr-widget--reviews .spr-testimonial__image{display:flex}
.spr-widget--reviews .spr-testimonial__image img{height:36px;width:36px}
.spr-widget--reviews .spr-testimonial__icon{font-size:17px;margin-inline-start:auto}
.spr-widget--reviews .spr-testimonial__icon .fa+.fa{margin-inline-start:.15em}
.spr-widget--reviews .spr-testimonial__icon.spr-icon{color:var(--spr-testimonial-icon-color)}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-android{--spr-testimonial-icon-color:#a4c639}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-apple{--spr-testimonial-icon-color:#999}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-behance{--spr-testimonial-icon-color:#1769ff}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-bitbucket{--spr-testimonial-icon-color:#205081}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-codepen{--spr-testimonial-icon-color:#000}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-delicious{--spr-testimonial-icon-color:#39f}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-digg{--spr-testimonial-icon-color:#005be2}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-dribbble{--spr-testimonial-icon-color:#ea4c89}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-envelope{--spr-testimonial-icon-color:#ea4335}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-facebook{--spr-testimonial-icon-color:#3b5998}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-flickr{--spr-testimonial-icon-color:#0063dc}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-foursquare{--spr-testimonial-icon-color:#2d5be3}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-github{--spr-testimonial-icon-color:#333}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-google-plus{--spr-testimonial-icon-color:#dd4b39}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-houzz{--spr-testimonial-icon-color:#7ac142}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-instagram{--spr-testimonial-icon-color:#262626}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-jsfiddle{--spr-testimonial-icon-color:#487aa2}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-linkedin{--spr-testimonial-icon-color:#0077b5}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-medium{--spr-testimonial-icon-color:#00ab6b}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-meetup{--spr-testimonial-icon-color:#ec1c40}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-mixcloud{--spr-testimonial-icon-color:#273a4b}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-odnoklassniki{--spr-testimonial-icon-color:#f4731c}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-pinterest{--spr-testimonial-icon-color:#bd081c}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-product-hunt{--spr-testimonial-icon-color:#da552f}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-reddit{--spr-testimonial-icon-color:#ff4500}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-rss{--spr-testimonial-icon-color:#f26522}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-shopping-cart{--spr-testimonial-icon-color:#4caf50}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-skype{--spr-testimonial-icon-color:#00aff0}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-slideshare{--spr-testimonial-icon-color:#0077b5}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-snapchat{--spr-testimonial-icon-color:#fffc00}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-soundcloud{--spr-testimonial-icon-color:#f80}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-spotify{--spr-testimonial-icon-color:#2ebd59}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-stack-overflow{--spr-testimonial-icon-color:#fe7a15}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-steam{--spr-testimonial-icon-color:#00adee}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-stumbleupon{--spr-testimonial-icon-color:#eb4924}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-telegram{--spr-testimonial-icon-color:#2ca5e0}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-thumb-tack,.spr-widget--reviews .spr-testimonial__icon.spr-icon-thumbtack{--spr-testimonial-icon-color:#1aa1d8}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-threads{--spr-testimonial-icon-color:#000}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-tripadvisor{--spr-testimonial-icon-color:#589442}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-tumblr{--spr-testimonial-icon-color:#35465c}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-twitch{--spr-testimonial-icon-color:#6441a5}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-twitter{--spr-testimonial-icon-color:#1da1f2}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-vimeo{--spr-testimonial-icon-color:#1ab7ea}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-vk{--spr-testimonial-icon-color:#45668e}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-weibo{--spr-testimonial-icon-color:#dd2430}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-weixin{--spr-testimonial-icon-color:#31a918}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-whatsapp{--spr-testimonial-icon-color:#25d366}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-wordpress{--spr-testimonial-icon-color:#21759b}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-x{--spr-testimonial-icon-color:#000}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-xing{--spr-testimonial-icon-color:#026466}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-yelp{--spr-testimonial-icon-color:#af0606}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-youtube{--spr-testimonial-icon-color:#cd201f}
.spr-widget--reviews .spr-testimonial__icon.spr-icon-500px{--spr-testimonial-icon-color:#0099e5}
.spr-widget--reviews .spr-testimonial__icon.spr-icon svg{fill:var(--spr-testimonial-icon-color)}
.spr-widget--reviews .spr-testimonial__header{display:flex;padding-block-end:6px;padding-block-start:15px}
.spr-widget--reviews .spr-testimonial__image+cite{margin-inline-start:9px}
.spr-widget--reviews .spr-testimonial__separator{border-block-end:1px solid #e1e8ed;border-block-start:0 none;height:0;margin:0 auto}
.spr-widget--reviews .spr-testimonial__content{padding-block-end:15px;padding-block-start:6px}
.spr-widget--reviews .spr-testimonial__content,.spr-widget--reviews .spr-testimonial__header{padding-inline-end:15px;padding-inline-start:15px}
.spr-widget--reviews.spr-review--has-separator .spr-testimonial__header{border-block-end:1px solid #e1e8ed}
.spr-widget--reviews .spr-arrows-yes .spr-carousel__swiper,.spr-widget--testimonial-carousel .spr-arrows-yes .spr-carousel__swiper{width:calc(95% - 40px)}
.spr-widget--reviews .spr-carousel__swiper,.spr-widget--testimonial-carousel .spr-carousel__swiper{width:95%}
.spr-widget--reviews .swiper-wrapper,.spr-widget--testimonial-carousel .swiper-wrapper{align-items:stretch;display:flex}
.spr-widget--reviews .swiper-slide,.spr-widget--testimonial-carousel .swiper-slide{height:auto}
.spr-widget--reviews.spr-pagination-type-bullets .swiper,.spr-widget--reviews.spr-pagination-type-bullets .swiper-container,.spr-widget--reviews.spr-pagination-type-fraction .swiper,.spr-widget--reviews.spr-pagination-type-fraction .swiper-container,.spr-widget--testimonial-carousel.spr-pagination-type-bullets .swiper,.spr-widget--testimonial-carousel.spr-pagination-type-bullets .swiper-container,.spr-widget--testimonial-carousel.spr-pagination-type-fraction .swiper,.spr-widget--testimonial-carousel.spr-pagination-type-fraction .swiper-container{padding-bottom:40px}
.spr-widget--reviews .spr-carousel__arrow-prev,.spr-widget--reviews .swiper-container-rtl .spr-carousel__arrow-next,.spr-widget--reviews .swiper-rtl .spr-carousel__arrow-next,.spr-widget--testimonial-carousel .spr-carousel__arrow-prev,.spr-widget--testimonial-carousel .swiper-container-rtl .spr-carousel__arrow-next,.spr-widget--testimonial-carousel .swiper-rtl .spr-carousel__arrow-next{left:0;right:unset}
.spr-widget--reviews .spr-carousel__arrow-next,.spr-widget--reviews .swiper-container-rtl .spr-carousel__arrow-prev,.spr-widget--reviews .swiper-rtl .spr-carousel__arrow-prev,.spr-widget--testimonial-carousel .spr-carousel__arrow-next,.spr-widget--testimonial-carousel .swiper-container-rtl .spr-carousel__arrow-prev,.spr-widget--testimonial-carousel .swiper-rtl .spr-carousel__arrow-prev{left:unset;right:0}
.spr-widget--reviews.spr-pagination-type-bullets .spr-carousel__arrow-next,.spr-widget--reviews.spr-pagination-type-bullets .spr-carousel__arrow-prev,.spr-widget--testimonial-carousel.spr-pagination-type-bullets .spr-carousel__arrow-next,.spr-widget--testimonial-carousel.spr-pagination-type-bullets .spr-carousel__arrow-prev{top:calc(50% - 40px / 2)}
.spr-star-rating i{cursor:default;display:inline-block;font-style:normal;position:relative}
.spr-star-rating i:before{color:#f0ad4e;content:"\e934";display:block;font-family:inherit;font-size:inherit;left:0;overflow:hidden;position:absolute;top:0}
.spr-star-rating .spr-star-empty:before{content:none}
.spr-star-rating .spr-star-1:before{width:10%}
.spr-star-rating .spr-star-2:before{width:20%}
.spr-star-rating .spr-star-3:before{width:30%}
.spr-star-rating .spr-star-4:before{width:40%}
.spr-star-rating .spr-star-5:before{width:50%}
.spr-star-rating .spr-star-6:before{width:60%}
.spr-star-rating .spr-star-7:before{width:70%}
.spr-star-rating .spr-star-8:before{width:80%}
.spr-star-rating .spr-star-9:before{width:90%}
.last-star{letter-spacing:0}
.spr--star-style-star_unicode .spr-star-rating{font-family:Arial,Helvetica,sans-serif}
.spr--star-style-star_unicode .spr-star-rating i:not(.spr-star-empty):before{content:"★"}

/* Elementor's carousel base (widget-carousel-module-base): a slide clips
   its content to its corners and takes a border width as a solid border.
   Low specificity, as it loads before the widgets' own CSS in Elementor. */
:where(.spr-widget--testimonial-carousel, .spr-widget--reviews) .swiper-slide { border-style: solid; border-width: 0; overflow: hidden;
  transition-duration: .5s; transition-property: border, background, transform; }
/* Elementor's carousel look for these two (not Product Carousel's): plain
   chevrons beside a 95%-wide track, black dots at 20%. */
.spr-widget--testimonial-carousel, .spr-widget--reviews { --swiper-slides-to-display: 1; --swiper-slides-gap: 10px; }
.spr-widget--testimonial-carousel .spr-carousel .spr-carousel__swiper, .spr-widget--reviews .spr-carousel .spr-carousel__swiper { margin-left: auto; margin-right: auto; }
.spr-widget--testimonial-carousel .spr-carousel__arrow, .spr-widget--reviews .spr-carousel__arrow {
  padding: 0; border-radius: 0; background: none; box-shadow: none; font-size: 20px; color: hsla(0, 0%, 93%, .9); fill: currentColor; }
.spr-widget--testimonial-carousel .spr-carousel__arrow:hover, .spr-widget--reviews .spr-carousel__arrow:hover { color: hsla(0, 0%, 93%, .9); opacity: .8; }
.spr-widget--testimonial-carousel .spr-carousel__arrow--prev, .spr-widget--reviews .spr-carousel__arrow--prev { left: 0; }
.spr-widget--testimonial-carousel .spr-carousel__arrow--next, .spr-widget--reviews .spr-carousel__arrow--next { right: 0; }
.spr-widget--testimonial-carousel .spr-carousel .swiper-pagination-bullet, .spr-widget--reviews .spr-carousel .swiper-pagination-bullet {
  width: 6px; height: 6px; margin: 0 6px; background: #000; opacity: .2; }
.spr-widget--testimonial-carousel .spr-carousel .swiper-pagination-bullet-active, .spr-widget--reviews .spr-carousel .swiper-pagination-bullet-active { opacity: 1; }
/* Elementor keeps 40px under the track for its dots (inside the track);
   ours sit below it, so the track keeps none. */
.spr-widget--testimonial-carousel .spr-carousel .spr-carousel__swiper, .spr-widget--reviews .spr-carousel .spr-carousel__swiper { padding-bottom: 0; }
.spr-widget--testimonial-carousel .spr-carousel .spr-carousel__pagination, .spr-widget--reviews .spr-carousel .spr-carousel__pagination { margin-top: 12px; }
.spr-widget--reviews a.spr-testimonial__header { color: inherit; text-decoration: none; }
.spr-widget--reviews .spr-testimonial__icon i { display: block; }
/* Elementor's slide image is an inline <img>: Image Stacked centres it with
   the text (themes make images blocks). */
:is(.spr-widget--testimonial-carousel, .spr-widget--reviews) .spr-testimonial__image img { display: inline-block; vertical-align: middle; max-width: none; }
.spr-editing .spr-widget--testimonial-carousel .spr-carousel__arrow, .spr-editing .spr-widget--reviews .spr-carousel__arrow,
.spr-editing .spr-widget--testimonial-carousel .spr-carousel__arrow *, .spr-editing .spr-widget--reviews .spr-carousel__arrow * { pointer-events: none !important; }
/* Stars: Font Awesome's (Elementor uses its eicons font; we don't ship it),
   or the ★ character. The full star is drawn over the unmarked one. */
.spr--star-style-star_fontawesome .spr-star-rating { font-family: "Font Awesome 5 Free"; }
.spr--star-style-star_fontawesome .spr-star-rating i::after { content: "\f005"; font-weight: 900; }
.spr--star-style-star_fontawesome .spr-star-rating--outline i::after { font-weight: 400; }
.spr--star-style-star_fontawesome .spr-star-rating i::before { content: "\f005"; font-weight: 900; }
.spr-star-rating i { line-height: 1; }
.spr-star-rating i:not(:last-of-type) { margin-inline-end: 2px; }
.spr--star-style-star_fontawesome .spr-star-rating i.spr-star-empty::before { content: none; }
.spr-testimonial__cite .spr-star-rating { font-size: 12px; margin: 2px 0; }

/* Trustpilot: the TrustBox fills its box. */
.spr-tp { width: 100%; }
.spr-tp .trustpilot-widget { min-height: 20px; }

/* Instagram Feed: a grid of square (or chosen-ratio) posts. */
.spr-ig__grid { display: grid; grid-template-columns: repeat(var(--spr-ig-columns, 3), minmax(0, 1fr)); gap: var(--spr-ig-gap, 4px); }
.spr-ig__post { display: block; color: inherit; text-decoration: none; min-width: 0; }
.spr-ig__item { position: relative; display: block; overflow: hidden; aspect-ratio: var(--spr-ig-ratio, 1 / 1); background: #f1f5f9; }
.spr-ig__item img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.spr-ig--zoom-yes .spr-ig__post:hover .spr-ig__item img { transform: scale(1.06); }
.spr-ig__badge { position: absolute; top: 8px; right: 8px; color: #fff; font-size: 14px; text-shadow: 0 1px 4px rgba(0, 0, 0, .5); }
.spr-ig__caption { font-size: 13px; line-height: 1.4; }
.spr-ig__caption--over { position: absolute; inset: 0; display: flex; align-items: flex-end; padding: 12px; color: #fff; background-color: rgba(0, 0, 0, .5);
  opacity: 0; transition: opacity .25s; overflow: hidden; }
.spr-ig__post:hover .spr-ig__caption--over, .spr-ig__post:focus-visible .spr-ig__caption--over { opacity: 1; }
.spr-ig__caption--below { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin-top: 6px; }
.spr-ig__foot { display: flex; justify-content: center; margin-top: 16px; }
.spr-ig__follow { display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; border-radius: 999px; color: #fff; text-decoration: none; font-weight: 600; font-size: 14px; }
.spr-ig__follow:hover { opacity: .9; color: #fff; }


/* ==========================================================================
   Blog: Posts, Posts Carousel and the post widgets (Post Title / Featured
   Image / Excerpt / Info / Content, Share Buttons, Post Navigation).
   First Elementor Pro's own CSS for them (widget-posts, widget-icon-list,
   widget-post-info, widget-share-buttons, widget-post-navigation),
   converted to our classes; then the base Elementor keeps in its frontend
   CSS (the grid) and ours (filter bar, search, editor notes).
   ========================================================================== */
.spr-post__thumbnail__link{transition:none}
.spr-posts__grid.spr-posts-masonry{align-items:flex-start}
.spr-posts__grid:not(.spr-posts-masonry){align-items:stretch}
.spr-posts__grid .spr-post{margin:0;padding:0}
.spr-posts__grid .spr-post__excerpt{flex-grow:var(--read-more-alignment,0)}
.spr-posts__grid .spr-post__thumbnail{overflow:hidden}
.spr-posts__grid .spr-post__thumbnail img{display:block;max-height:none;max-width:none;transition:filter .3s;width:100%}
.spr-posts__grid .spr-post__thumbnail__link{display:block;position:relative;width:100%}
.spr-posts__grid.spr-has-item-ratio .spr-post__thumbnail{bottom:0;left:0;right:0;top:0}
.spr-posts__grid.spr-has-item-ratio .spr-post__thumbnail img{height:auto;left:calc(50% + 1px);position:absolute;top:calc(50% + 1px);transform:scale(1.01) translate(-50%,-50%)}
.spr-posts__grid.spr-has-item-ratio .spr-post__thumbnail.spr-fit-height img{height:100%;width:auto}
.spr-posts .spr-post{flex-direction:column;transition-duration:.25s;transition-property:background,border,box-shadow}
.spr-posts .spr-post__title{font-size:18px;margin:0}
.spr-posts .spr-post__excerpt{margin-bottom:10px}
.spr-posts .spr-post__excerpt p{color:#777;font-size:14px;line-height:1.5em;margin:0}
.spr-posts .spr-post__text{display:var(--item-display,block);flex-direction:column;flex-grow:1}
.spr-posts .spr-post__meta-data{color:#adadad;font-size:12px;line-height:1.3em;margin-bottom:13px}
.spr-posts .spr-post__read-more{align-self:flex-start;font-size:12px;font-weight:700}
.spr-posts .spr-post__thumbnail{position:relative}
.spr-posts--skin-classic .spr-post{overflow:hidden}
.spr-posts--align-left .spr-post{text-align:left}
.spr-posts--align-right .spr-post{text-align:right}
.spr-posts--align-center .spr-post{text-align:center}
.spr-posts--thumbnail-top .spr-post__thumbnail__link{margin-bottom:20px}
.spr-posts--thumbnail-top .spr-post__text{width:100%}
.spr-posts--thumbnail-top.spr-posts--align-left .spr-post__thumbnail__link{margin-right:auto}
.spr-posts--thumbnail-top.spr-posts--align-right .spr-post__thumbnail__link{margin-left:auto}
.spr-posts--thumbnail-top.spr-posts--align-center .spr-post__thumbnail__link{margin-left:auto;margin-right:auto}
.spr-posts--thumbnail-left .spr-post,.spr-posts--thumbnail-right .spr-post{flex-direction:row}
.spr-posts--thumbnail-left .spr-post__thumbnail__link,.spr-posts--thumbnail-right .spr-post__thumbnail__link{flex-shrink:0;width:25%}
.spr-posts--thumbnail-left .spr-post__thumbnail__link{margin-right:20px;order:0}
.spr-posts--thumbnail-right .spr-post__thumbnail__link{margin-left:20px;order:5}
.spr-posts--thumbnail-none .spr-posts__grid .spr-post__thumbnail__link{display:none}
.spr-posts .spr-post{display:flex}
.spr-posts .spr-post__card{background-color:#fff;border:0 solid #69727d;border-radius:3px;display:flex;flex-direction:column;min-height:100%;overflow:hidden;position:relative;transition:all .25s;width:100%}
.spr-posts .spr-post__card .spr-post__thumbnail{position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d}
.spr-posts .spr-post__card .spr-post__thumbnail img{width:calc(100% + 1px)}
.spr-posts .spr-post__card .spr-post__text{margin-bottom:0;margin-top:20px;padding:0 30px}
.spr-posts .spr-post__card .spr-post__read-more{display:inline-block;margin-bottom:20px}
.spr-posts .spr-post__card .spr-post__meta-data{border-top:1px solid #eaeaea;margin-bottom:0;padding:15px 30px}
.spr-posts .spr-post__card .spr-post__meta-data span+span:before{margin:0 5px}
.spr-posts .spr-post__card .spr-post__title{font-size:21px}
.spr-posts .spr-post__card .spr-post__excerpt{line-height:1.7}
.spr-posts .spr-post__card .spr-post__excerpt,.spr-posts .spr-post__card .spr-post__title{margin-bottom:25px}
.spr-posts .spr-post__card .spr-post__badge{text-transform:uppercase}   /* Read more: sentence case in our default look */
.spr-posts .spr-post__badge{background:#69727d;border-radius:999px;color:#fff;font-size:12px;font-weight:400;line-height:1;margin:20px;padding:.6em 1.2em;position:absolute;top:0}
.spr-posts .spr-post__avatar{height:0;padding:0 30px;pointer-events:none;position:relative;top:-25px;width:100%}
.spr-posts .spr-post__avatar img{border-radius:50%;pointer-events:all;transform:translateY(-50%);width:60px}
.spr-posts .spr-posts--skin-cards:not(.spr-posts-masonry) .spr-post__meta-data,.spr-posts--thumbnail-top .spr-posts--skin-cards:not(.spr-posts-masonry) .spr-post__meta-data{margin-top:auto}
.spr-posts--thumbnail-none .spr-post__card .spr-post__avatar{height:auto;padding-top:0;position:static}
.spr-posts--thumbnail-none .spr-post__card .spr-post__avatar img.avatar{transform:translateY(0);vertical-align:bottom}
.spr-posts--show-avatar .spr-post__thumbnail__link{margin-bottom:25px}
.spr-posts__hover-gradient .spr-post__card .spr-post__thumbnail__link:after{background-image:linear-gradient(0deg,rgba(0,0,0,.35),transparent 75%);background-repeat:no-repeat;bottom:0;content:"";display:block;height:100%;opacity:1;position:absolute;transition:all .3s ease-out;width:100%}
.spr-posts__hover-gradient .spr-post__card:hover .spr-post__thumbnail__link:after{opacity:.5}
.spr-posts__hover-zoom-in .spr-post__card .spr-post__thumbnail.spr-fit-height img{height:100%}
.spr-posts__hover-zoom-in .spr-post__card .spr-post__thumbnail:not(.spr-fit-height) img{width:calc(100% + 1px)}
.spr-posts__hover-zoom-in .spr-post__card:hover .spr-post__thumbnail.spr-fit-height img{height:115%}
.spr-posts__hover-zoom-in .spr-post__card:hover .spr-post__thumbnail:not(.spr-fit-height) img{width:115%}
.spr-posts__hover-zoom-out .spr-post__card .spr-post__thumbnail.spr-fit-height img{height:115%}
.spr-posts__hover-zoom-out .spr-post__card .spr-post__thumbnail:not(.spr-fit-height) img{width:115%}
.spr-posts__hover-zoom-out .spr-post__card:hover .spr-post__thumbnail.spr-fit-height img{height:100%}
.spr-posts__hover-zoom-out .spr-post__card:hover .spr-post__thumbnail:not(.spr-fit-height) img{width:calc(100% + 1px)}
.spr-posts__hover-zoom-in .spr-post__thumbnail img,.spr-posts__hover-zoom-out .spr-post__thumbnail img{transition:filter .3s,height 1s cubic-bezier(0,.25,.07,1),width 1s cubic-bezier(0,.25,.07,1)}
.spr-posts--skin-full_content article{flex-direction:column;overflow:hidden}
.spr-posts--skin-full_content article .spr-post__thumbnail{padding-bottom:0}
.spr-widget .spr-icon-list-items.spr-inline-items{display:flex;flex-wrap:wrap;margin-left:-8px;margin-right:-8px}
.spr-widget .spr-icon-list-items.spr-inline-items .spr-inline-item{word-break:break-word}
.spr-widget .spr-icon-list-items.spr-inline-items .spr-icon-list-item{margin-left:8px;margin-right:8px}
.spr-widget .spr-icon-list-items.spr-inline-items .spr-icon-list-item:after{border-bottom:0;border-left-width:1px;border-right:0;border-top:0;border-style:solid;height:100%;left:auto;position:relative;right:auto;right:-8px;width:auto}
.spr-widget .spr-icon-list-items{list-style-type:none;margin:0;padding:0}
.spr-widget .spr-icon-list-item{margin:0;padding:0;position:relative}
.spr-widget .spr-icon-list-item:after{bottom:0;position:absolute;width:100%}
.spr-widget .spr-icon-list-item,.spr-widget .spr-icon-list-item a{align-items:var(--icon-vertical-align,center);display:flex;font-size:inherit}
.spr-widget .spr-icon-list-icon+.spr-icon-list-text{align-self:center;padding-inline-start:5px}
.spr-widget .spr-icon-list-icon{display:flex;position:relative;top:var(--spr-icon-vertical-offset,initial)}
.spr-widget .spr-icon-list-icon svg{height:var(--spr-icon-list-icon-size,1em);width:var(--spr-icon-list-icon-size,1em)}
.spr-widget .spr-icon-list-icon i{font-size:var(--spr-icon-list-icon-size);width:1.25em}
.spr-widget.spr-widget--post-info .spr-icon-list-icon{text-align:var(--spr-icon-list-icon-align)}
.spr-widget.spr-widget--post-info .spr-icon-list-icon svg{margin:var(--spr-icon-list-icon-margin,0 calc(var(--spr-icon-list-icon-size, 1em) * .25) 0 0)}
.spr-widget.spr-list-item-link-full_width a{width:100%}
.spr-widget.spr-align-center .spr-icon-list-item,.spr-widget.spr-align-center .spr-icon-list-item a{justify-content:center}
.spr-widget.spr-align-center .spr-icon-list-item:after{margin:auto}
.spr-widget.spr-align-center .spr-inline-items{justify-content:center}
.spr-widget.spr-align-left .spr-icon-list-item,.spr-widget.spr-align-left .spr-icon-list-item a{justify-content:flex-start;text-align:left}
.spr-widget.spr-align-left .spr-inline-items{justify-content:flex-start}
.spr-widget.spr-align-right .spr-icon-list-item,.spr-widget.spr-align-right .spr-icon-list-item a{justify-content:flex-end;text-align:right}
.spr-widget.spr-align-right .spr-icon-list-items{justify-content:flex-end}

.spr-post-info__terms-list{display:inline-block}
.spr-post-info .spr-icon-list-icon .spr-avatar{border-radius:100%}
.spr-icon-list-items .spr-icon-list-item .spr-icon-list-text{display:inline-block}
.spr-icon-list-items .spr-icon-list-item .spr-icon-list-text a,.spr-icon-list-items .spr-icon-list-item .spr-icon-list-text span{display:inline}

.spr-share--color-custom.spr-share--skin-flat .spr-share-btn,.spr-share--color-custom.spr-share--skin-gradient .spr-share-btn{background-color:var(--spr-share-primary-color,#ea4335)}
.spr-share--color-custom.spr-share--skin-flat .spr-share-btn__icon,.spr-share--color-custom.spr-share--skin-flat .spr-share-btn__text,.spr-share--color-custom.spr-share--skin-gradient .spr-share-btn__icon,.spr-share--color-custom.spr-share--skin-gradient .spr-share-btn__text{color:var(--spr-share-secondary-color,#fff)}
.spr-share--color-custom.spr-share--skin-flat .spr-share-btn__icon svg,.spr-share--color-custom.spr-share--skin-flat .spr-share-btn__text svg,.spr-share--color-custom.spr-share--skin-gradient .spr-share-btn__icon svg,.spr-share--color-custom.spr-share--skin-gradient .spr-share-btn__text svg{fill:var(--spr-share-secondary-color,#fff)}
.spr-share--color-custom.spr-share--skin-boxed .spr-share-btn,.spr-share--color-custom.spr-share--skin-framed .spr-share-btn,.spr-share--color-custom.spr-share--skin-minimal .spr-share-btn{border-color:var(--spr-share-primary-color,#ea4335);color:var(--spr-share-primary-color,#ea4335)}
.spr-share--color-custom.spr-share--skin-boxed .spr-share-btn__icon,.spr-share--color-custom.spr-share--skin-minimal .spr-share-btn__icon{background-color:var(--spr-share-primary-color,#ea4335);color:var(--spr-share-secondary-color,#fff)}
.spr-share--color-custom.spr-share--skin-boxed .spr-share-btn__icon svg,.spr-share--color-custom.spr-share--skin-minimal .spr-share-btn__icon svg{fill:var(--spr-share-secondary-color,#fff)}
.spr-share--color-custom.spr-share--skin-framed .spr-share-btn__icon{color:var(--spr-share-primary-color,#ea4335)}
.spr-share--color-custom.spr-share--skin-framed .spr-share-btn__icon svg{fill:var(--spr-share-primary-color,#ea4335)}
.spr-share--color-official .spr-share-btn:hover{filter:saturate(1.5) brightness(1.2)}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_digg,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_digg{background-color:#005be2}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_email,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_email{background-color:#ea4335}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_print,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_print{background-color:#aaa}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_facebook,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_facebook{background-color:#3b5998}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_google,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_google{background-color:#dd4b39}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_pocket,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_pocket{background-color:#ef3f56}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_linkedin,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_linkedin{background-color:#0077b5}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_odnoklassniki,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_odnoklassniki{background-color:#f4731c}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_pinterest,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_pinterest{background-color:#bd081c}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_reddit,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_reddit{background-color:#ff4500}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_skype,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_skype{background-color:#00aff0}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_slideshare,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_slideshare{background-color:#0077b5}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_snapchat,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_snapchat{background-color:#fffc00}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_stumbleupon,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_stumbleupon{background-color:#eb4924}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_mix,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_mix{background-color:#f3782b}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_tumblr,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_tumblr{background-color:#35465c}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_twitch,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_twitch{background-color:#6441a5}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_telegram,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_telegram{background-color:#2ca5e0}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_threads,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_threads{background-color:#000}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_twitter,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_twitter{background-color:#1da1f2}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_vimeo,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_vimeo{background-color:#1ab7ea}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_vk,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_vk{background-color:#45668e}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_whatsapp,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_whatsapp{background-color:#25d366}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_wordpress,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_wordpress{background-color:#21759b}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_x-twitter,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_x-twitter{background-color:#000}
.spr-share--color-official.spr-share--skin-flat .spr-share-btn_xing,.spr-share--color-official.spr-share--skin-gradient .spr-share-btn_xing{background-color:#026466}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_digg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_digg{color:#005be2}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_digg svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_digg svg{fill:#005be2}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_email,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_email{color:#ea4335}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_email svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_email svg{fill:#ea4335}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_print,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_print{color:#aaa}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_print svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_print svg{fill:#aaa}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_facebook,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_facebook{color:#3b5998}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_facebook svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_facebook svg{fill:#3b5998}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_google,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_google{color:#dd4b39}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_google svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_google svg{fill:#dd4b39}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_pocket,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_pocket{color:#ef3f56}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_pocket svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_pocket svg{fill:#ef3f56}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_linkedin,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_linkedin{color:#0077b5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_linkedin svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_linkedin svg{fill:#0077b5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_odnoklassniki,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_odnoklassniki{color:#f4731c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_odnoklassniki svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_odnoklassniki svg{fill:#f4731c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_pinterest,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_pinterest{color:#bd081c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_pinterest svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_pinterest svg{fill:#bd081c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_reddit,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_reddit{color:#ff4500}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_reddit svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_reddit svg{fill:#ff4500}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_skype,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_skype{color:#00aff0}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_skype svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_skype svg{fill:#00aff0}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_slideshare,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_slideshare{color:#0077b5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_slideshare svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_slideshare svg{fill:#0077b5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_snapchat,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_snapchat{color:#fffc00}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_snapchat svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_snapchat svg{fill:#fffc00}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_stumbleupon,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_stumbleupon{color:#eb4924}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_stumbleupon svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_stumbleupon svg{fill:#eb4924}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_mix,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_mix{color:#f3782b}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_mix svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_mix svg{fill:#f3782b}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_tumblr,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_tumblr{color:#35465c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_tumblr svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_tumblr svg{fill:#35465c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_twitch,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_twitch{color:#6441a5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_twitch svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_twitch svg{fill:#6441a5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_telegram,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_telegram{color:#2ca5e0}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_telegram svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_telegram svg{fill:#2ca5e0}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_threads,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_threads{color:#000}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_threads svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_threads svg{fill:#000}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_twitter,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_twitter{color:#1da1f2}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_twitter svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_twitter svg{fill:#1da1f2}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_vimeo,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_vimeo{color:#1ab7ea}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_vimeo svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_vimeo svg{fill:#1ab7ea}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_vk,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_vk{color:#45668e}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_vk svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_vk svg{fill:#45668e}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_whatsapp,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_whatsapp{color:#25d366}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_whatsapp svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_whatsapp svg{fill:#25d366}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_wordpress,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_wordpress{color:#21759b}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_wordpress svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_wordpress svg{fill:#21759b}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_x-twitter,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_x-twitter{color:#000}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_x-twitter svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_x-twitter svg{fill:#000}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_xing,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_xing{color:#026466}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_xing svg,.spr-share--color-official.spr-share--skin-framed .spr-share-btn_xing svg{fill:#026466}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_digg .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_digg .spr-share-btn__icon{background-color:#005be2}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_email .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_email .spr-share-btn__icon{background-color:#ea4335}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_print .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_print .spr-share-btn__icon{background-color:#aaa}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_facebook .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_facebook .spr-share-btn__icon{background-color:#3b5998}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_google .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_google .spr-share-btn__icon{background-color:#dd4b39}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_pocket .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_pocket .spr-share-btn__icon{background-color:#ef3f56}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_linkedin .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_linkedin .spr-share-btn__icon{background-color:#0077b5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_odnoklassniki .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_odnoklassniki .spr-share-btn__icon{background-color:#f4731c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_pinterest .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_pinterest .spr-share-btn__icon{background-color:#bd081c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_reddit .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_reddit .spr-share-btn__icon{background-color:#ff4500}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_skype .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_skype .spr-share-btn__icon{background-color:#00aff0}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_slideshare .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_slideshare .spr-share-btn__icon{background-color:#0077b5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_snapchat .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_snapchat .spr-share-btn__icon{background-color:#fffc00}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_stumbleupon .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_stumbleupon .spr-share-btn__icon{background-color:#eb4924}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_mix .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_mix .spr-share-btn__icon{background-color:#f3782b}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_tumblr .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_tumblr .spr-share-btn__icon{background-color:#35465c}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_twitch .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_twitch .spr-share-btn__icon{background-color:#6441a5}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_telegram .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_telegram .spr-share-btn__icon{background-color:#2ca5e0}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_threads .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_threads .spr-share-btn__icon{background-color:#000}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_twitter .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_twitter .spr-share-btn__icon{background-color:#1da1f2}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_vimeo .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_vimeo .spr-share-btn__icon{background-color:#1ab7ea}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_vk .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_vk .spr-share-btn__icon{background-color:#45668e}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_whatsapp .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_whatsapp .spr-share-btn__icon{background-color:#25d366}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_wordpress .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_wordpress .spr-share-btn__icon{background-color:#21759b}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_x-twitter .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_x-twitter .spr-share-btn__icon{background-color:#000}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn_xing .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn_xing .spr-share-btn__icon{background-color:#026466}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn .spr-share-btn__icon,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn .spr-share-btn__icon{color:var(--spr-share-icon-color,#fff)}
.spr-share--color-official.spr-share--skin-boxed .spr-share-btn .spr-share-btn__icon svg,.spr-share--color-official.spr-share--skin-minimal .spr-share-btn .spr-share-btn__icon svg{fill:var(--spr-share-icon-color,#fff)}
.spr-share--skin-boxed .spr-share-btn__icon,.spr-share--skin-framed .spr-share-btn__icon{margin-inline-start:-.2em}
.spr-share--skin-boxed .spr-share-btn,.spr-share--skin-framed .spr-share-btn{border-style:solid}
.spr-share--skin-gradient .spr-share-btn__text,.spr-share--skin-gradient.spr-share--view-icon .spr-share-btn__icon{background-image:linear-gradient(90deg,rgba(0,0,0,.12),transparent)}
.spr-share--skin-boxed .spr-share-btn__text,.spr-share--skin-gradient .spr-share-btn__text,.spr-share--skin-minimal .spr-share-btn__text{padding-inline-start:.9em}
.spr-share--skin-flat .spr-share-btn,.spr-share--skin-gradient .spr-share-btn{background-color:var(--spr-share-primary-color,#ea4335)}
.spr-share--skin-flat .spr-share-btn__icon,.spr-share--skin-flat .spr-share-btn__text,.spr-share--skin-gradient .spr-share-btn__icon,.spr-share--skin-gradient .spr-share-btn__text{color:var(--spr-share-secondary-color,#fff)}
.spr-share--skin-flat .spr-share-btn__icon svg,.spr-share--skin-flat .spr-share-btn__text svg,.spr-share--skin-gradient .spr-share-btn__icon svg,.spr-share--skin-gradient .spr-share-btn__text svg{fill:var(--spr-share-secondary-color,#fff)}
.spr-share--skin-minimal.spr-share--shape-rounded .spr-share-btn__icon{border-radius:.5em}
.spr-share--skin-minimal.spr-share--shape-circle .spr-share-btn__icon{border-radius:99.9em}
.spr-share--view-text .spr-share-btn__text{padding-inline-start:1em}
.spr-share--view-icon .spr-share-btn,.spr-share--view-text .spr-share-btn{justify-content:center}
.spr-share--view-icon .spr-share-btn__icon,.spr-share--view-icon .spr-share-btn__text,.spr-share--view-text .spr-share-btn__icon,.spr-share--view-text .spr-share-btn__text{flex-grow:1;justify-content:center}
.spr-share--shape-rounded .spr-share-btn{border-radius:.5em}
.spr-share--shape-circle .spr-share-btn{border-radius:99.9em}
.spr-share-btn{align-items:center;cursor:pointer;display:flex;font-size:10px;height:4.5em;justify-content:flex-start;overflow:hidden;transition-duration:.2s;transition-property:filter,background-color,border-color}
.spr-share-btn__icon,.spr-share-btn__text{transition-duration:.2s;transition-property:color,background-color}
.spr-share-btn__icon{align-items:center;align-self:stretch;display:flex;justify-content:center;position:relative;width:4.5em}
.spr-share-btn__icon i{font-size:var(--spr-share-icon-size,1.7em)}
.spr-share-btn__icon svg{height:var(--spr-share-icon-size,1.7em);width:var(--spr-share-icon-size,1.7em)}
.spr-share-btn__text{align-items:center;align-self:stretch;display:flex;flex-grow:1;font-size:1.5em;font-weight:100;padding-inline-end:1em}
.spr-share-btn__title{flex-shrink:0;font-weight:700}
.spr-widget--share-buttons{text-align:var(--alignment,inherit);-moz-text-align-last:var(--alignment,inherit);text-align-last:var(--alignment,inherit)}
.spr-post-nav-borders-yes .spr-post-nav__separator{background-color:#d5d8dc;height:100%;margin:0 auto;width:1px}
.spr-post-nav{display:flex;overflow:hidden}
.spr-post-nav .spr-post-nav__arrow-wrapper{color:#d5d8dc}
.spr-post-nav .spr-post-nav__arrow-wrapper.spr-post-nav__arrow-prev{font-size:30px;padding-inline-end:15px}
.spr-post-nav .spr-post-nav__arrow-wrapper.spr-post-nav__arrow-next{font-size:30px;padding-inline-start:15px}
.spr-post-nav .spr-post-nav__arrow-wrapper i{transform:translateY(-5%)}
.spr-post-nav .spr-post-nav__link__next,.spr-post-nav .spr-post-nav__link__prev{overflow:hidden}
.spr-post-nav .spr-post-nav__link a{align-items:center;display:flex;max-width:100%}
.spr-post-nav .spr-post-nav__next--label,.spr-post-nav .spr-post-nav__prev--label{font-size:.8em;text-transform:uppercase}
.spr-post-nav .spr-post-nav__next--title,.spr-post-nav .spr-post-nav__prev--title{font-size:.7em}
.spr-post-nav .spr-post-nav__next--label,.spr-post-nav .spr-post-nav__next--title,.spr-post-nav .spr-post-nav__prev--label,.spr-post-nav .spr-post-nav__prev--title{overflow:hidden;text-overflow:ellipsis}
.spr-post-nav span.spr-post-nav__link__next{text-align:end}
.spr-post-nav span.spr-post-nav__link__next,.spr-post-nav span.spr-post-nav__link__prev{display:flex;flex-direction:column}
.spr-post-nav .spr-post-nav__link{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:calc(50% - 1px / 2)}
.spr-post-nav .spr-post-nav__separator-wrapper{text-align:center}
.spr-post-nav .spr-post-nav__next{text-align:end}
.spr-post-nav .spr-post-nav__next a{justify-content:flex-end}

/* Elementor's grid (frontend.min.css): 3 / 2 / 1 columns by default. */
.spr-posts__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: var(--spr-grid-col-gap, 30px); row-gap: var(--spr-grid-row-gap, 35px); }
@media (max-width: 1024px) { .spr-posts__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .spr-posts__grid { grid-template-columns: minmax(0, 1fr); } }
.spr-posts__grid .spr-post { display: flex; min-width: 0; }
/* Item Ratio: the image fills its box (Elementor picks fit width / height by script). */
/* Pinned to the box (not Elementor's 50% + translate centring, which a hover
   zoom's transform would undo and shift the image). */
.spr-posts__grid.spr-has-item-ratio .spr-post__thumbnail img, .spr-posts--carousel.spr-has-item-ratio .spr-post__thumbnail img { position: absolute; inset: 0; left: 0; top: 0; width: 100%; height: 100%; object-fit: cover; transform: none; }
.spr-post__title a { color: inherit; text-decoration: none; }
.spr-posts-box.is-loading .spr-posts__grid { opacity: .5; transition: opacity .15s; }
.spr-posts__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 20px; margin-bottom: 24px; }
.spr-posts__bar .spr-filter { margin: 0; flex: 1 1 auto; }
.spr-posts__search { flex: 0 1 260px; margin: 0; }
.spr-posts__search input { width: 100%; height: 40px; padding: 0 14px; border: 1px solid #d5d8dc; border-radius: 8px; background: #fff; font: inherit; font-size: 14px; }
.spr-posts__nothing { padding: 30px 0; text-align: center; color: #64748b; }
.spr-posts__load-more { display: flex; justify-content: center; margin-top: var(--load-more-button-gap, 30px); }
.spr-posts__pagination { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 12px; margin-top: 30px; }
.spr-posts__pagination .page-numbers { text-decoration: none; }
.spr-posts__pagination .page-numbers.current { font-weight: 700; }
.spr-posts--carousel .spr-post { height: 100%; }
/* Share Buttons: auto width in a row (Columns: Auto) or N columns. */
.spr-share { display: flex; flex-wrap: wrap; column-gap: var(--spr-grid-col-gap, 10px); row-gap: var(--spr-grid-row-gap, 10px); }
.spr-share--align-center .spr-share { justify-content: center; }
.spr-share--align-right .spr-share { justify-content: flex-end; }
.spr-share--align-justify .spr-share__item { flex: 1 1 0; }
.spr-share-btn { text-decoration: none; }
.spr-share-cols-1 .spr-share { display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)); }
.spr-share-cols-2 .spr-share { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.spr-share-cols-3 .spr-share { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.spr-share-cols-4 .spr-share { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.spr-share-cols-5 .spr-share { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.spr-share-cols-6 .spr-share { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 1024px) {
.spr-share-cols-tablet-1 .spr-share { display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)); }
.spr-share-cols-tablet-2 .spr-share { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.spr-share-cols-tablet-3 .spr-share { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.spr-share-cols-tablet-4 .spr-share { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.spr-share-cols-tablet-5 .spr-share { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.spr-share-cols-tablet-6 .spr-share { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
.spr-share-cols-mobile-1 .spr-share { display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)); }
.spr-share-cols-mobile-2 .spr-share { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.spr-share-cols-mobile-3 .spr-share { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.spr-share-cols-mobile-4 .spr-share { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.spr-share-cols-mobile-5 .spr-share { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.spr-share-cols-mobile-6 .spr-share { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
}
.spr-post-nav a { color: inherit; text-decoration: none; }
.spr-icon-list-items { list-style: none; margin: 0; padding: 0; }
:is(.spr-widget--posts, .spr-widget--posts-carousel)::after { display: none; }   /* Elementor keeps the item ratio there for its script */
.spr-post-info .spr-icon-list-icon:has(.spr-avatar) { width: auto; }
.spr-post-info .spr-avatar { display: block; width: 24px; height: 24px; max-width: none; border-radius: 50%; object-fit: cover; margin-inline-end: 6px; }
/* Editor: which post a post widget is showing when it isn't on one. */
.spr-blog__sample { display: none; }
.spr-editing .spr-blog__sample { display: block; margin-bottom: 8px; padding: 6px 10px; border-radius: 6px; background: #eef2ff; color: #3730a3; font-size: 12px; }
/* Read by screen readers only (Elementor's .elementor-screen-only). */
.spr-sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }


/* ==========================================================================
   Blog: our default look (instead of Elementor's plain defaults).
   One block on purpose: delete it (and the 16:9 / "Read more →" defaults
   in genschema.js) to go back to Elementor's look. Selectors stay at the
   specificity of Elementor's own (two classes) and come after them, so
   they win over Elementor's base CSS and lose to anything set in the
   panel (the widget's {{WRAPPER}} rules load later). Colours follow the
   kit's Accent.
   ========================================================================== */
.spr-posts { --spr-blog-accent: var(--spr-global-color-accent, #10b981); --spr-blog-ink: var(--spr-global-color-primary, #0f172a); --spr-blog-muted: #64748b; }
/* Cards (both skins): white, rounded, soft shadow, lift on hover. */
.spr-posts .spr-post { background: #fff; border-radius: 16px; overflow: hidden; box-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 10px 28px -14px rgba(15, 23, 42, .22);
  transition: transform .25s ease, box-shadow .25s ease; }
.spr-posts .spr-post:hover { transform: translateY(-3px); box-shadow: 0 2px 4px rgba(15, 23, 42, .06), 0 18px 36px -16px rgba(15, 23, 42, .3); }
.spr-posts .spr-post__card { border: 0; border-radius: 0; background: transparent; box-shadow: none; min-height: 100%; }
.spr-posts--carousel .spr-post { box-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 6px 18px -10px rgba(15, 23, 42, .2); }
/* The slider clips at its edge: room for the cards' shadow and rounded
   corners (taken back by the margin, so the layout doesn't move). */
.spr-posts--carousel .spr-carousel .spr-carousel__swiper { padding: 6px 8px 22px; margin: -6px -8px -22px; }
.spr-posts--carousel .swiper-slide { height: auto; }
.spr-posts .spr-post__thumbnail__link { margin-bottom: 0; }
.spr-posts .spr-post__thumbnail { padding-bottom: 56.25%; }
/* The image link holds the Cards hover gradient (Elementor positions it only inside its grid; the carousel needs it too). */
.spr-posts .spr-post__thumbnail__link { position: relative; display: block; overflow: hidden; }
/* Masonry: images at their own height (no ratio box). */
.spr-posts-masonry .spr-post__thumbnail { padding-bottom: 0; }
/* Mosaic (the legacy Blog List's): wide cards span two columns; every image
   in a row has the same height (Image Height), so wide ones are wider. */
.spr-posts--mosaic { grid-auto-flow: row dense; }
/* (Above the Item Ratio control's padding: Mosaic replaces the ratio.) */
.spr-posts__grid.spr-posts--mosaic .spr-post .spr-post__thumbnail { padding-bottom: 0; height: var(--spr-mosaic-h, 260px); }
@media (min-width: 1025px) { .spr-posts--mosaic .spr-mosaic-wide { grid-column: span 2; } }
@media (min-width: 768px) and (max-width: 1024px) { .spr-posts--mosaic .spr-mosaic-wide-tablet { grid-column: span 2; } }
.spr-posts-masonry .spr-post__thumbnail img { position: static; width: 100%; height: auto; transform: none; }
/* Author avatar over the image's edge: a white ring. */
.spr-posts .spr-post__avatar img { width: 52px; height: 52px; object-fit: cover; border: 3px solid #fff; box-shadow: 0 4px 12px -4px rgba(15, 23, 42, .35); background: #fff; }
.spr-posts .spr-post__thumbnail img { transition: transform .5s ease; }
.spr-posts .spr-post:hover .spr-post__thumbnail img { transform: scale(1.04); }
.spr-posts .spr-post__text { padding: 18px 22px 0; }
.spr-posts--skin-classic .spr-post__text { padding-bottom: 22px; }
/* Image Left / Right: the picture beside the text, the card's full height. */
.spr-posts--thumbnail-left .spr-post__thumbnail__link, .spr-posts--thumbnail-right .spr-post__thumbnail__link { width: 40%; margin: 0; align-self: stretch; }
.spr-posts--thumbnail-left .spr-post__thumbnail, .spr-posts--thumbnail-right .spr-post__thumbnail { height: 100%; min-height: 160px; }
.spr-posts--thumbnail-left .spr-post__text, .spr-posts--thumbnail-right .spr-post__text { min-width: 0; padding-top: 22px; }
.spr-posts .spr-post__title { font-size: 19px; line-height: 1.3; font-weight: 700; color: var(--spr-blog-ink); margin: 0 0 8px; }
.spr-posts .spr-post__title a { transition: color .2s; }
.spr-posts .spr-post__title a:hover { color: var(--spr-blog-accent); }
.spr-posts .spr-post__meta-data { color: var(--spr-blog-muted); font-size: 13px; margin-bottom: 10px; }
.spr-posts .spr-post__meta-data span + span:before { margin: 0 6px; opacity: .6; }
.spr-posts .spr-post__excerpt p { color: #475569; font-size: 14.5px; line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.spr-posts .spr-post__excerpt { margin-bottom: 14px; }
.spr-posts .spr-post__read-more { color: var(--spr-blog-accent); font-size: 14px; font-weight: 600; text-transform: none; letter-spacing: 0; text-decoration: none; }
.spr-posts .spr-post__read-more:hover { text-decoration: underline; text-underline-offset: 3px; }
.spr-posts--skin-cards .spr-post__read-more { text-transform: none; letter-spacing: 0; }
/* Cards skin: badge as an accent pill, meta row under a hairline. */
.spr-posts .spr-post__badge { background: var(--spr-blog-accent); color: #fff; border-radius: 999px; padding: 5px 11px; font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; margin: 14px; }
.spr-posts .spr-post__avatar { padding: 0 22px; }
.spr-posts--skin-cards .spr-post__meta-data { border-top: 1px solid #eef2f6; padding: 12px 22px 16px; margin: 14px 0 0; }
.spr-posts--skin-cards .spr-post__text { padding-bottom: 0; }
/* Filter bar pills + search with an icon, one row. */
.spr-posts-box { --spr-blog-accent: var(--spr-global-color-accent, #10b981); }
.spr-posts-box .spr-filter { gap: 8px; }
.spr-posts-box .spr-filter__item { border-radius: 999px; padding: 8px 16px; border: 1px solid #e2e8f0; background: #fff; color: #334155; font-size: 14px; font-weight: 500; }
.spr-posts-box .spr-filter__item:hover { border-color: var(--spr-blog-accent); color: var(--spr-blog-accent); }
.spr-posts-box .spr-filter__item[aria-pressed="true"] { background: var(--spr-blog-accent); border-color: var(--spr-blog-accent); color: #fff; }
.spr-posts__search { position: relative; }
.spr-posts__search-icon { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: #94a3b8; pointer-events: none; }
.spr-posts-box .spr-posts__search input { padding-left: 38px; height: 42px; border-radius: 999px; border-color: #e2e8f0; }
.spr-posts-box .spr-posts__search input:focus { outline: none; border-color: var(--spr-blog-accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--spr-blog-accent) 18%, transparent); }
/* Pagination: rounded squares, the current page in the accent. */
.spr-posts-box .spr-posts__pagination { gap: 6px; }
.spr-posts-box .spr-posts__pagination .page-numbers { min-width: 38px; height: 38px; padding: 0 10px; display: inline-flex; align-items: center; justify-content: center; border-radius: 10px;
  border: 1px solid #e2e8f0; background: #fff; color: #334155; font-weight: 600; font-size: 14px; }
.spr-posts-box .spr-posts__pagination a.page-numbers:hover { border-color: var(--spr-blog-accent); color: var(--spr-blog-accent); }
.spr-posts-box .spr-posts__pagination .page-numbers.current { background: var(--spr-blog-accent); border-color: var(--spr-blog-accent); color: #fff; }
.spr-posts-box .spr-posts__pagination .page-numbers.dots { border: 0; background: none; min-width: 0; }
/* Post Title: a confident headline. */
.spr-widget--post-title .spr-heading { font-size: clamp(30px, 4.2vw, 46px); line-height: 1.12; font-weight: 800; letter-spacing: -.02em; color: var(--spr-global-color-primary, #0f172a); margin: 0; }
/* Featured Image: 16:9, rounded. */
.spr-widget--post-image img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-radius: 18px; display: block; }
/* Post Info: a quiet meta line; categories as accent pills. */
.spr-post-info .spr-icon-list-text { color: #64748b; font-size: 14px; }
.spr-post-info .spr-icon-list-icon i { color: var(--spr-global-color-accent, #10b981); font-size: 13px; }
.spr-post-info .spr-icon-list-item { margin-inline-end: 16px; }
.spr-post-info .spr-post-info__terms-item { display: inline-block; padding: 4px 11px; border-radius: 999px; background: color-mix(in srgb, var(--spr-global-color-accent, #10b981) 12%, #fff); color: var(--spr-global-color-accent, #10b981);
  font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.spr-post-info .spr-post-info__item--type-terms { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.spr-post-info .spr-post-info__terms-sep { display: none; }
/* Post Excerpt: the standfirst. */
.spr-widget--post-excerpt .spr-post-excerpt { font-size: 19px; line-height: 1.6; color: #475569; }
/* Post Content: a readable column of text. */
.spr-widget--post-content .spr-post-content { font-size: 17px; line-height: 1.75; color: #334155; }
.spr-widget--post-content .spr-post-content img { max-width: 100%; height: auto; border-radius: 12px; }
/* Post Navigation: two boxes, the titles readable. */
.spr-post-nav .spr-post-nav__separator-wrapper { display: none; }
.spr-widget--post-nav .spr-post-nav { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; border: 0; padding: 0; }
.spr-post-nav .spr-post-nav__link { width: auto; min-width: 0; }
.spr-post-nav .spr-post-nav__link a { display: flex; align-items: center; gap: 14px; height: 100%; padding: 16px 20px; border: 1px solid #e2e8f0; border-radius: 14px; background: #fff;
  transition: border-color .2s, box-shadow .2s; }
.spr-post-nav .spr-post-nav__link a:hover { border-color: var(--spr-global-color-accent, #10b981); box-shadow: 0 8px 22px -14px rgba(15, 23, 42, .35); }
.spr-post-nav .spr-post-nav__next a { justify-content: flex-end; text-align: right; }
.spr-post-nav .spr-post-nav__link__prev, .spr-post-nav .spr-post-nav__link__next { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.spr-post-nav .spr-post-nav__prev--label, .spr-post-nav .spr-post-nav__next--label { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--spr-global-color-accent, #10b981); }
.spr-post-nav .spr-post-nav__prev--title, .spr-post-nav .spr-post-nav__next--title { font-size: 16px; font-weight: 600; line-height: 1.35; color: #0f172a; text-transform: none; }
.spr-post-nav .spr-post-nav__arrow-wrapper { font-size: 18px; color: var(--spr-global-color-accent, #10b981); padding: 0; }
@media (max-width: 767px) { .spr-widget--post-nav .spr-post-nav { grid-template-columns: 1fr; } }


/* ==========================================================================
   Call to Action, Slides, Image Carousel, Icon Box, Image Box, Countdown,
   Alert, Gallery (the legacy hero / slider / logos / how-it-works /
   countdown / info bar / thumbnails modules). Elementor's own widget CSS
   converted to our classes, then what Elementor keeps in its frontend CSS
   or scripts (gallery layouts, ken burns, slide entrances).
   ========================================================================== */

.spr-widget--cta .spr-widget--container,.spr-widget--cta:not(:has(.spr-widget--container)){overflow:hidden}
.spr-cta{display:flex;overflow:hidden;position:relative;transition:.5s}
.spr-cta--skin-classic .spr-cta{flex-wrap:wrap}
.spr-cta--skin-classic .spr-cta__bg-wrapper{min-height:200px;position:relative;width:100%}
.spr-cta--skin-classic .spr-cta__content{background-color:#f9fafa;transition:all .4s;width:100%}
.spr-cta--skin-classic .spr-cta__content-item,.spr-cta--skin-classic .spr-cta__content-item .spr-icon{border-color:#3f444b;color:#3f444b;fill:#3f444b}
.spr-cta--skin-classic .spr-cta__button.spr-btn{border-color:#3f444b;color:#3f444b}
.spr-cta--skin-cover .spr-cta{display:block}
.spr-cta--skin-cover .spr-cta__bg-wrapper{bottom:0;left:0;position:absolute;right:0;top:0;transition:all .4s;width:100%}
.spr-cta--skin-cover .spr-cta__content{min-height:280px}
.spr-cta--skin-cover .spr-cta__button.spr-btn,.spr-cta--skin-cover .spr-cta__content-item,.spr-cta--skin-cover .spr-cta__content-item .spr-icon{border-color:#fff;color:#fff}
.spr-cta--layout-image-above .spr-cta,.spr-cta--layout-image-below .spr-cta{flex-wrap:wrap}
.spr-cta--layout-image-above .spr-cta__bg-wrapper,.spr-cta--layout-image-below .spr-cta__bg-wrapper{width:100%}
.spr-cta--layout-image-above .spr-cta{flex-direction:column}
.spr-cta--layout-image-below .spr-cta{flex-direction:column-reverse}
.spr-cta--layout-image-left .spr-cta,.spr-cta--layout-image-right .spr-cta{flex-wrap:nowrap}
.spr-cta--layout-image-left .spr-cta__bg-wrapper,.spr-cta--layout-image-right .spr-cta__bg-wrapper{min-width:50%;width:auto}
.spr-cta--layout-image-left .spr-cta__content,.spr-cta--layout-image-right .spr-cta__content{flex-grow:1}
.spr-cta--layout-image-left .spr-cta{flex-direction:row}
.spr-cta--layout-image-right .spr-cta{flex-direction:row-reverse}
.spr-cta__bg,.spr-cta__bg-overlay{bottom:0;left:0;position:absolute;right:0;top:0;transition:all .4s}
.spr-cta__bg-wrapper{overflow:hidden;z-index:1}
.spr-cta__bg{background-position:50%;background-size:cover;z-index:1}
.spr-cta__bg-overlay{z-index:2}
.spr-cta__button.spr-btn{align-self:center;background:transparent;border:2px solid #fff;cursor:pointer;margin-left:auto;margin-right:auto}
.spr-cta__button.spr-btn:hover{background:transparent;text-decoration:none}
.spr-cta__title{font-size:23px}
.spr-cta__content{align-content:center;align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;padding:35px;width:100%;z-index:1}
.spr-cta__content,.spr-cta__content-item{color:#fff;position:relative;transition:.5s}
.spr-cta__content-item{margin:0;width:100%}
.spr-cta__content-item:not(:last-child){margin-bottom:15px}
.spr-cta__content-item .spr-icon{color:#fff}
.spr-cta--valign-top .spr-cta__content{align-content:flex-start;align-items:flex-start}
.spr-cta--valign-middle .spr-cta__content{align-content:center;align-items:center}
.spr-cta--valign-bottom .spr-cta__content{align-content:flex-end;align-items:flex-end}
.spr-cta:hover .spr-cta__bg-overlay{background-color:rgba(0,0,0,.3)}
@media (max-width:1024px){.spr-cta{cursor:pointer}}
@media (max-width:1024px){.spr-cta--tablet-layout-image-above .spr-cta,.spr-cta--tablet-layout-image-below .spr-cta{flex-wrap:wrap}.spr-cta--tablet-layout-image-above .spr-cta__bg-wrapper,.spr-cta--tablet-layout-image-below .spr-cta__bg-wrapper{width:100%}.spr-cta--tablet-layout-image-above .spr-cta{flex-direction:column}.spr-cta--tablet-layout-image-below .spr-cta{flex-direction:column-reverse}.spr-cta--tablet-layout-image-left .spr-cta,.spr-cta--tablet-layout-image-right .spr-cta{flex-wrap:nowrap}.spr-cta--tablet-layout-image-left .spr-cta__bg-wrapper,.spr-cta--tablet-layout-image-right .spr-cta__bg-wrapper{min-width:50%;width:auto}.spr-cta--tablet-layout-image-left .spr-cta__content,.spr-cta--tablet-layout-image-right .spr-cta__content{flex-grow:1}.spr-cta--tablet-layout-image-left .spr-cta{flex-direction:row}.spr-cta--tablet-layout-image-right .spr-cta{flex-direction:row-reverse}}
@media (max-width:767px){.spr-cta--mobile-layout-image-above .spr-cta,.spr-cta--mobile-layout-image-below .spr-cta{flex-wrap:wrap}.spr-cta--mobile-layout-image-above .spr-cta__bg-wrapper,.spr-cta--mobile-layout-image-below .spr-cta__bg-wrapper{width:100%}.spr-cta--mobile-layout-image-above .spr-cta{flex-direction:column}.spr-cta--mobile-layout-image-below .spr-cta{flex-direction:column-reverse}.spr-cta--mobile-layout-image-left .spr-cta,.spr-cta--mobile-layout-image-right .spr-cta{flex-wrap:nowrap}.spr-cta--mobile-layout-image-left .spr-cta__bg-wrapper,.spr-cta--mobile-layout-image-right .spr-cta__bg-wrapper{min-width:50%;width:auto}.spr-cta--mobile-layout-image-left .spr-cta__content,.spr-cta--mobile-layout-image-right .spr-cta__content{flex-grow:1}.spr-cta--mobile-layout-image-left .spr-cta{flex-direction:row}.spr-cta--mobile-layout-image-right .spr-cta{flex-direction:row-reverse}}
.spr-ribbon{height:150px;left:auto;overflow:hidden;position:absolute;right:0;top:0;transform:rotate(90deg);width:150px;z-index:1}
.spr-ribbon-inner{background:#000;color:#fff;font-size:13px;font-weight:800;left:0;line-height:2;margin-top:35px;text-align:center;text-transform:uppercase;transform:translateY(-50%) translateX(-50%) translateX(35px) rotate(-45deg);width:200%}
.spr-ribbon.spr-ribbon-left{left:0;right:auto;transform:rotate(0)}
.spr-ribbon.spr-ribbon-right{left:auto;right:0;transform:rotate(90deg)}
.spr-bg-transform .spr-bg{will-change:transform}
.spr-bg-transform-zoom-in:hover .spr-bg,.spr-bg-transform-zoom-out .spr-bg{transform:scale(1.2)}
.spr-bg-transform-zoom-out:hover .spr-bg{transform:scale(1)}
.spr-bg-transform-move-left .spr-bg{transform:scale(1.2) translateX(8%)}
.spr-bg-transform-move-left:hover .spr-bg,.spr-bg-transform-move-right .spr-bg{transform:scale(1.2) translateX(-8%)}
.spr-bg-transform-move-right:hover .spr-bg{transform:scale(1.2) translateX(8%)}
.spr-bg-transform-move-up .spr-bg{transform:scale(1.2) translateY(8%)}
.spr-bg-transform-move-down .spr-bg,.spr-bg-transform-move-up:hover .spr-bg{transform:scale(1.2) translateY(-8%)}
.spr-bg-transform-move-down:hover .spr-bg{transform:scale(1.2) translateY(8%)}

.spr-slides .swiper-slide-bg{background-position:50%;background-repeat:no-repeat;background-size:cover;min-height:100%;min-width:100%}
.spr-slides .swiper-slide-inner{background-position:50%;background-repeat:no-repeat;bottom:0;left:0;margin:auto;padding:50px;position:absolute;right:0;top:0}
.spr-slides .swiper-slide-inner,.spr-slides .swiper-slide-inner:hover{color:#fff;display:flex}
.spr-slides .swiper-slide-inner .spr-background-overlay{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}
.spr-slides .swiper-slide-inner .spr-slide-content{position:relative;width:100%;z-index:1}
.spr-slides .swiper-slide-inner .spr-slide-heading{font-size:35px;font-weight:700;line-height:1}
.spr-slides .swiper-slide-inner .spr-slide-description{font-size:17px;line-height:1.4}
.spr-slides .swiper-slide-inner .spr-slide-description:not(:last-child),.spr-slides .swiper-slide-inner .spr-slide-heading:not(:last-child){margin-bottom:30px}
.spr-slides .swiper-slide-inner .spr-slide-button{background:transparent;border:2px solid #fff;color:#fff;display:inline-block}
.spr-slides .swiper-slide-inner .spr-slide-button,.spr-slides .swiper-slide-inner .spr-slide-button:hover{background:transparent;color:inherit;text-decoration:none}
.spr--v-position-top .swiper-slide-inner{align-items:flex-start}
.spr--v-position-bottom .swiper-slide-inner{align-items:flex-end}
.spr--v-position-middle .swiper-slide-inner{align-items:center}
.spr--h-position-left .swiper-slide-inner{justify-content:flex-start}
.spr--h-position-right .swiper-slide-inner{justify-content:flex-end}
.spr--h-position-center .swiper-slide-inner{justify-content:center}
body.rtl .spr-widget--slides .spr-carousel__arrow-next{left:10px;right:auto}
body.rtl .spr-widget--slides .spr-carousel__arrow-prev{left:auto;right:10px}
.spr-slides-wrapper div:not(.swiper-slide)>.swiper-slide-inner{display:none}
@media (max-width:767px){.spr-slides .swiper-slide-inner{padding:30px}.spr-slides .swiper-slide-inner .spr-slide-heading{font-size:23px;line-height:1;margin-bottom:15px}.spr-slides .swiper-slide-inner .spr-slide-description{font-size:13px;line-height:1.4;margin-bottom:15px}}

.spr-widget--image-carousel .swiper{position:static}
.spr-widget--image-carousel .swiper .swiper-slide figure{line-height:inherit}
.spr-widget--image-carousel .swiper-slide{text-align:center}
.spr-image-carousel-wrapper:not(.swiper-initialized) .swiper-slide{max-width:calc(100% / var(--e-image-carousel-slides-to-show, 3))}

.spr-widget--icon-box .spr-icon-box-wrapper{display:block;text-align:center}
.spr-widget--icon-box .spr-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-left:auto;margin-right:auto}
@media (min-width:768px){.spr-widget--icon-box.spr-vertical-align-top .spr-icon-box-wrapper{align-items:flex-start}.spr-widget--icon-box.spr-vertical-align-middle .spr-icon-box-wrapper{align-items:center}.spr-widget--icon-box.spr-vertical-align-bottom .spr-icon-box-wrapper{align-items:flex-end}}
.spr-widget--icon-box.spr-position-left .spr-icon-box-wrapper,.spr-widget--icon-box.spr-position-right .spr-icon-box-wrapper{display:flex}
.spr-widget--icon-box.spr-position-left .spr-icon-box-icon,.spr-widget--icon-box.spr-position-right .spr-icon-box-icon{display:inline-flex;flex:0 0 auto}
.spr-widget--icon-box.spr-position-right .spr-icon-box-wrapper{flex-direction:row-reverse;text-align:end}
.spr-widget--icon-box.spr-position-right .spr-icon-box-icon{margin-bottom:unset;margin-left:var(--icon-box-icon-margin,15px);margin-right:0}
.spr-widget--icon-box.spr-position-left .spr-icon-box-wrapper{flex-direction:row;text-align:start}
.spr-widget--icon-box.spr-position-left .spr-icon-box-icon{margin-bottom:unset;margin-left:0;margin-right:var(--icon-box-icon-margin,15px)}
.spr-widget--icon-box.spr-position-top .spr-icon-box-wrapper{display:block;flex-direction:unset;text-align:center}
.spr-widget--icon-box.spr-position-top .spr-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-left:auto;margin-right:auto}
@media (max-width:1024px){.spr-widget--icon-box.spr-tablet-position-left .spr-icon-box-wrapper,.spr-widget--icon-box.spr-tablet-position-right .spr-icon-box-wrapper{display:flex}.spr-widget--icon-box.spr-tablet-position-left .spr-icon-box-icon,.spr-widget--icon-box.spr-tablet-position-right .spr-icon-box-icon{display:inline-flex;flex:0 0 auto}.spr-widget--icon-box.spr-tablet-position-right .spr-icon-box-wrapper{flex-direction:row-reverse;text-align:end}.spr-widget--icon-box.spr-tablet-position-right .spr-icon-box-icon{margin-bottom:unset;margin-left:var(--icon-box-icon-margin,15px);margin-right:0}.spr-widget--icon-box.spr-tablet-position-left .spr-icon-box-wrapper{flex-direction:row;text-align:start}.spr-widget--icon-box.spr-tablet-position-left .spr-icon-box-icon{margin-bottom:unset;margin-left:0;margin-right:var(--icon-box-icon-margin,15px)}.spr-widget--icon-box.spr-tablet-position-top .spr-icon-box-wrapper{display:block;flex-direction:unset;text-align:center}.spr-widget--icon-box.spr-tablet-position-top .spr-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-left:auto;margin-right:auto}}
@media (max-width:767px){.spr-widget--icon-box.spr-mobile-position-left .spr-icon-box-wrapper,.spr-widget--icon-box.spr-mobile-position-right .spr-icon-box-wrapper{display:flex}.spr-widget--icon-box.spr-mobile-position-left .spr-icon-box-icon,.spr-widget--icon-box.spr-mobile-position-right .spr-icon-box-icon{display:inline-flex;flex:0 0 auto}.spr-widget--icon-box.spr-mobile-position-right .spr-icon-box-wrapper{flex-direction:row-reverse;text-align:end}.spr-widget--icon-box.spr-mobile-position-right .spr-icon-box-icon{margin-bottom:unset;margin-left:var(--icon-box-icon-margin,15px);margin-right:0}.spr-widget--icon-box.spr-mobile-position-left .spr-icon-box-wrapper{flex-direction:row;text-align:start}.spr-widget--icon-box.spr-mobile-position-left .spr-icon-box-icon{margin-bottom:unset;margin-left:0;margin-right:var(--icon-box-icon-margin,15px)}.spr-widget--icon-box.spr-mobile-position-top .spr-icon-box-wrapper{display:block;flex-direction:unset;text-align:center}.spr-widget--icon-box.spr-mobile-position-top .spr-icon-box-icon{margin-bottom:var(--icon-box-icon-margin,15px);margin-left:auto;margin-right:auto}.spr-widget--icon-box.spr-position-left .spr-icon-box-icon,.spr-widget--icon-box.spr-position-right .spr-icon-box-icon{display:block;flex:unset}}
.spr-widget--icon-box .spr-icon-box-title a{color:inherit}
.spr-widget--icon-box .spr-icon-box-content{flex-grow:1}
.spr-widget--icon-box .spr-icon-box-description{margin:0}

.spr-widget--image-box .spr-image-box-content{width:100%}
@media (min-width:768px){.spr-widget--image-box.spr-position-left .spr-image-box-wrapper,.spr-widget--image-box.spr-position-right .spr-image-box-wrapper{display:flex}.spr-widget--image-box.spr-position-right .spr-image-box-wrapper{flex-direction:row-reverse;text-align:end}.spr-widget--image-box.spr-position-left .spr-image-box-wrapper{flex-direction:row;text-align:start}.spr-widget--image-box.spr-position-top .spr-image-box-img{margin:auto}.spr-widget--image-box.spr-vertical-align-top .spr-image-box-wrapper{align-items:flex-start}.spr-widget--image-box.spr-vertical-align-middle .spr-image-box-wrapper{align-items:center}.spr-widget--image-box.spr-vertical-align-bottom .spr-image-box-wrapper{align-items:flex-end}}
@media (max-width:767px){.spr-widget--image-box .spr-image-box-img{margin-bottom:15px;margin-left:auto!important;margin-right:auto!important}}
.spr-widget--image-box .spr-image-box-img{display:inline-block}
.spr-widget--image-box .spr-image-box-title a{color:inherit}
.spr-widget--image-box .spr-image-box-wrapper{text-align:center}
.spr-widget--image-box .spr-image-box-description{margin:0}

.spr-widget--countdown .spr-countdown-expire--message{display:none;padding:20px;text-align:center}
.spr-widget--countdown .spr-countdown-wrapper{flex-direction:row}
.spr-widget--countdown .spr-countdown-item{color:#fff;padding:20px 0;text-align:center}
.spr-widget--countdown .spr-countdown-digits,.spr-widget--countdown .spr-countdown-label{line-height:1}
.spr-widget--countdown .spr-countdown-digits{font-size:69px}
.spr-widget--countdown .spr-countdown-label{font-size:19px}
.spr-widget--countdown.spr-countdown--label-block .spr-countdown-wrapper{display:flex;justify-content:center;margin-left:auto;margin-right:auto}
.spr-widget--countdown.spr-countdown--label-block .spr-countdown-digits,.spr-widget--countdown.spr-countdown--label-block .spr-countdown-label{display:block}
.spr-widget--countdown.spr-countdown--label-block .spr-countdown-item{flex-basis:0;flex-grow:1}
.spr-widget--countdown.spr-countdown--label-inline{text-align:center}
.spr-widget--countdown.spr-countdown--label-inline .spr-countdown-item{display:inline-block;padding-left:5px;padding-right:5px}

.spr-alert{border-left:5px solid transparent;padding:15px;position:relative;text-align:start}
.spr-alert .spr-alert-title{display:block;font-weight:700}
.spr-alert .spr-alert-description{font-size:13px}
.spr-alert button.spr-alert-dismiss{background:transparent;border:none;color:var(--dismiss-icon-normal-color,inherit);cursor:pointer;font-size:var(--dismiss-icon-size,20px);line-height:1;padding:3px;position:absolute;right:var(--dismiss-icon-horizontal-position,10px);top:var(--dismiss-icon-vertical-position,10px);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}
.spr-alert button.spr-alert-dismiss:hover{color:var(--dismiss-icon-hover-color,inherit)}
.spr-alert button.spr-alert-dismiss svg{height:var(--dismiss-icon-size,20px);width:var(--dismiss-icon-size,20px);fill:var(--dismiss-icon-normal-color,currentColor);transition-duration:var(--dismiss-icon-hover-transition-duration,.3s)}
.spr-alert button.spr-alert-dismiss svg:hover{fill:var(--dismiss-icon-hover-color,currentColor)}
.spr-alert-info .spr-alert{background-color:#d9edf7;border-color:#bcdff1;color:#31708f}
.spr-alert-success .spr-alert{background-color:#dff0d8;border-color:#cae6be;color:#3c763d}
.spr-alert-warning .spr-alert{background-color:#fcf8e3;border-color:#f9f0c3;color:#8a6d3b}
.spr-alert-danger .spr-alert{background-color:#f2dede;border-color:#e8c4c4;color:#a94442}
@media (max-width:767px){.spr-alert{padding:10px}.spr-alert button.spr-alert-dismiss{right:7px;top:7px}}

.spr-gallery__container{min-height:1px}
.spr-gallery-item{border:solid var(--image-border-width) var(--image-border-color);border-radius:var(--image-border-radius);display:block;overflow:hidden;position:relative;text-decoration:none}
.spr-gallery-item__content,.spr-gallery-item__overlay{height:100%;left:0;position:absolute;top:0;width:100%}
.spr-gallery-item__overlay{mix-blend-mode:var(--overlay-mix-blend-mode);transition-duration:var(--overlay-transition-duration);transition-property:mix-blend-mode,transform,opacity,background-color}
.spr-gallery-item__image.spr-eg-image{transition-duration:var(--image-transition-duration);transition-property:filter,transform}
.spr-gallery-item__content{align-items:center;display:flex;flex-direction:column;justify-content:var(--content-justify-content,center);padding:var(--content-padding);text-align:var(--content-text-align)}
.spr-gallery-item__content>div{transition-duration:var(--content-transition-duration)}
.spr-gallery-item__content.spr-gallery--sequenced-animation>div:nth-child(2){transition-delay:calc(var(--content-transition-delay) / 3)}
.spr-gallery-item__content.spr-gallery--sequenced-animation>div:nth-child(3){transition-delay:calc(var(--content-transition-delay) / 3 * 2)}
.spr-gallery-item__content.spr-gallery--sequenced-animation>div:nth-child(4){transition-delay:calc(var(--content-transition-delay) / 3 * 3)}
.spr-gallery-item__description{color:var(--description-text-color,#fff);width:100%}
.spr-gallery-item__title{color:var(--title-text-color,#fff);font-weight:700;width:100%}
.spr-gallery__titles-container{display:flex;flex-wrap:wrap;justify-content:var(--titles-container-justify-content,center);margin-bottom:20px}
.spr-gallery__titles-container:not(.e--pointer-framed) .spr-item:after,.spr-gallery__titles-container:not(.e--pointer-framed) .spr-item:before{background-color:var(--galleries-pointer-bg-color-hover)}
.spr-gallery__titles-container:not(.e--pointer-framed) .spr-item.spr-item-active:after,.spr-gallery__titles-container:not(.e--pointer-framed) .spr-item.spr-item-active:before{background-color:var(--galleries-pointer-bg-color-active)}
.spr-gallery__titles-container.e--pointer-framed .spr-item:before{border-color:var(--galleries-pointer-bg-color-hover);border-width:var(--galleries-pointer-border-width)}
.spr-gallery__titles-container.e--pointer-framed .spr-item:after{border-color:var(--galleries-pointer-bg-color-hover)}
.spr-gallery__titles-container.e--pointer-framed .spr-item.spr-item-active:after,.spr-gallery__titles-container.e--pointer-framed .spr-item.spr-item-active:before{border-color:var(--galleries-pointer-bg-color-active)}
.spr-gallery__titles-container.e--pointer-framed.e--animation-draw .spr-item:before{border-width:0 0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width)}
.spr-gallery__titles-container.e--pointer-framed.e--animation-draw .spr-item:after{border-width:var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0 0}
.spr-gallery__titles-container.e--pointer-framed.e--animation-corners .spr-item:before{border-width:var(--galleries-pointer-border-width) 0 0 var(--galleries-pointer-border-width)}
.spr-gallery__titles-container.e--pointer-framed.e--animation-corners .spr-item:after{border-width:0 var(--galleries-pointer-border-width) var(--galleries-pointer-border-width) 0}
.spr-gallery__titles-container .e--pointer-double-line .spr-item:after,.spr-gallery__titles-container .e--pointer-double-line .spr-item:before,.spr-gallery__titles-container .e--pointer-overline .spr-item:before,.spr-gallery__titles-container .e--pointer-underline .spr-item:after{height:var(--galleries-pointer-border-width)}
.spr-gallery-title{--space-between:10px;color:#6d7882;cursor:pointer;font-weight:500;padding:7px 14px;position:relative;transition:all .3s}
.spr-gallery-title--active{color:#495157}
.spr-gallery-title:not(:last-child){margin-inline-end:var(--space-between)}
.spr-gallery-item__title+.spr-gallery-item__description{margin-top:var(--description-margin-top)}
.spr-eg-item.spr-gallery-item{transition-property:all}
.spr-eg-item.spr-animated-content .spr-animated-item--enter-from-bottom,.spr-eg-item.spr-animated-content .spr-animated-item--enter-from-left,.spr-eg-item.spr-animated-content .spr-animated-item--enter-from-right,.spr-eg-item.spr-animated-content .spr-animated-item--enter-from-top,.spr-eg-item:focus .spr-gallery__item-overlay-bg,.spr-eg-item:focus .spr-gallery__item-overlay-content,.spr-eg-item:focus .spr-gallery__item-overlay-content__description,.spr-eg-item:focus .spr-gallery__item-overlay-content__title,.spr-eg-item:hover .spr-gallery__item-overlay-bg,.spr-eg-item:hover .spr-gallery__item-overlay-content,.spr-eg-item:hover .spr-gallery__item-overlay-content__description,.spr-eg-item:hover .spr-gallery__item-overlay-content__title{opacity:1}
a.spr-item.spr-gallery-title{color:var(--galleries-title-color-normal)}
a.spr-item.spr-gallery-title.spr-item-active,a.spr-item.spr-gallery-title.highlighted,a.spr-item.spr-gallery-title:focus,a.spr-item.spr-gallery-title:hover{color:var(--galleries-title-color-hover)}
a.spr-item.spr-gallery-title.spr-item-active{color:var(--gallery-title-color-active)}
.spr-container-inner>.spr-widget--gallery,.spr-container>.spr-widget--gallery{width:var(--container-widget-width);--flex-grow:var( --container-widget-flex-grow )}

/* Image Box: the image fits its box (Elementor relies on its global img max-width), no browser figure margins. */
:where(.spr-widget--image-box) .spr-image-box-img { margin-top: 0; margin-left: 0; margin-right: 0; }
.spr-widget--image-box .spr-image-box-img img { display: block; max-width: 100%; height: auto; }
.spr-widget--image-box.spr-position-top .spr-image-box-img { margin-left: auto; margin-right: auto; }
/* Slides: one full-width slide at a time; the slide is the frame. */
.spr-widget--slides { --swiper-slides-to-display: 1; --swiper-slides-gap: 0px; }
.spr-widget--slides .swiper-slide { position: relative; overflow: hidden; height: 400px; }
.spr-widget--slides .swiper-slide-bg { position: absolute; inset: 0; }
.spr-widget--slides .swiper-slide-inner { z-index: 1; text-decoration: none; }
.spr-widget--slides .swiper-slide-inner .spr-background-overlay { z-index: -1; }
.spr-widget--slides .swiper-slide-contents { position: relative; max-width: 66%; }
.spr--h-position-left .swiper-slide-inner { justify-content: flex-start; }
.spr--h-position-center .swiper-slide-inner { justify-content: center; }
.spr--h-position-right .swiper-slide-inner { justify-content: flex-end; }
.spr--v-position-top .swiper-slide-inner { align-items: flex-start; }
.spr--v-position-middle .swiper-slide-inner { align-items: center; }
.spr--v-position-bottom .swiper-slide-inner { align-items: flex-end; }
.spr-widget--slides .spr-slide-button { display: inline-block; margin-top: 20px; border: 2px solid #fff; background: transparent; color: #fff; }
.spr-widget--slides .spr-carousel__arrow, .spr-widget--image-carousel .spr-carousel__arrow { background: none; box-shadow: none; padding: 0; color: #fff; font-size: 25px; }
.spr-widget--image-carousel .spr-carousel__arrow { color: hsla(0, 0%, 93%, .9); }
.spr-pagination-position-inside .spr-carousel .spr-carousel__pagination { position: absolute; left: 0; right: 0; bottom: 14px; margin: 0; }
.spr-widget--slides .spr-carousel .swiper-pagination-bullet { background: #fff; opacity: .5; }
.spr-widget--slides .spr-carousel .swiper-pagination-bullet-active { opacity: 1; }
/* Ken Burns: the picture slowly zooms on the active slide. */
.spr-ken-burns { transition-property: transform; transition-duration: 10s; transition-timing-function: linear; }
.spr-ken-burns--out { transform: scale(1.3); }
.swiper-slide-active .spr-ken-burns--in { transform: scale(1.3); }
.swiper-slide-active .spr-ken-burns--out { transform: scale(1); }
/* Slides' Content Animation: the active slide's contents come in. */
@keyframes spr-fadeInUp { from { opacity: 0; transform: translateY(40px); } }
@keyframes spr-fadeInDown { from { opacity: 0; transform: translateY(-40px); } }
@keyframes spr-fadeInLeft { from { opacity: 0; transform: translateX(-40px); } }
@keyframes spr-fadeInRight { from { opacity: 0; transform: translateX(40px); } }
@keyframes spr-zoomIn { from { opacity: 0; transform: scale(.7); } }
[data-spr-animation="fadeInUp"] .swiper-slide-active .swiper-slide-contents { animation: spr-fadeInUp .8s both; }
[data-spr-animation="fadeInDown"] .swiper-slide-active .swiper-slide-contents { animation: spr-fadeInDown .8s both; }
[data-spr-animation="fadeInLeft"] .swiper-slide-active .swiper-slide-contents { animation: spr-fadeInLeft .8s both; }
[data-spr-animation="fadeInRight"] .swiper-slide-active .swiper-slide-contents { animation: spr-fadeInRight .8s both; }
[data-spr-animation="zoomIn"] .swiper-slide-active .swiper-slide-contents { animation: spr-zoomIn .8s both; }
/* Image Carousel: Elementor's 3 per view; the image fills its slide. */
.spr-widget--image-carousel { --swiper-slides-to-display: 3; --swiper-slides-gap: 20px; }
.spr-widget--image-carousel .swiper-slide-inner { margin: 0; text-align: center; }
.spr-widget--image-carousel .swiper-slide-image { display: inline-block; max-width: 100%; height: auto; vertical-align: middle; }
/* Gallery: grid (aspect ratio), masonry (natural heights) or justified rows. */
/* Defaults on the widget (the panel's Columns / Gap set the same variables there, and win). */
.spr-widget--gallery { --spr-eg-columns: 4; --spr-eg-gap: 10px; }
.spr-gallery__container { display: grid; grid-template-columns: repeat(var(--spr-eg-columns), minmax(0, 1fr)); gap: var(--spr-eg-gap); }
.spr-eg-item { position: relative; display: block; overflow: hidden; color: inherit; text-decoration: none; }
.spr-eg-item[hidden] { display: none; }
.spr-eg--grid .spr-eg-image { aspect-ratio: var(--spr-eg-ratio, 3 / 2); }
.spr-eg-image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .8s; }
.spr-eg--masonry { display: block; columns: var(--spr-eg-columns); column-gap: var(--spr-eg-gap); }
.spr-eg--masonry .spr-eg-item { break-inside: avoid; margin-bottom: var(--spr-eg-gap); }
.spr-eg--masonry .spr-eg-image img, .spr-eg--justified .spr-eg-image img { height: auto; }
.spr-eg--justified { display: flex; flex-wrap: wrap; }
.spr-eg--justified .spr-eg-item { flex: 1 1 auto; height: 200px; }
.spr-eg--justified .spr-eg-image, .spr-eg--justified .spr-eg-image img { height: 100%; }
.spr-eg--justified::after { content: ""; flex-grow: 999; }
.spr-gallery-item__overlay { position: absolute; inset: 0; background-color: rgba(0, 0, 0, .5); opacity: 0; transition: opacity .3s; }
.spr-eg-item:hover .spr-gallery-item__overlay { opacity: 1; }
.spr-gallery-item__content { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 20px; color: #fff; text-align: center; opacity: 0; transition: opacity .3s; }
.spr-eg-item:hover .spr-gallery-item__content { opacity: 1; }
.spr-eg--hover-grow .spr-eg-item:hover img { transform: scale(1.1); }
.spr-eg--hover-shrink-contained img { transform: scale(1.1); } .spr-eg--hover-shrink-contained .spr-eg-item:hover img { transform: scale(1); }
.spr-eg--hover-move-contained-left .spr-eg-item:hover img { transform: scale(1.2) translateX(-8%); }
.spr-eg--hover-move-contained-right .spr-eg-item:hover img { transform: scale(1.2) translateX(8%); }
.spr-eg--hover-move-contained-top .spr-eg-item:hover img { transform: scale(1.2) translateY(-8%); }
.spr-eg--hover-move-contained-bottom .spr-eg-item:hover img { transform: scale(1.2) translateY(8%); }
.spr-gallery__titles-container { display: flex; flex-wrap: wrap; gap: 6px 20px; margin-bottom: 20px; }
.spr-gallery--filter-align-center .spr-gallery__titles-container { justify-content: center; }
.spr-gallery--filter-align-right .spr-gallery__titles-container { justify-content: flex-end; }
.spr-gallery-title { padding: 6px 0; color: #475569; text-decoration: none; font-weight: 500; border-bottom: 2px solid transparent; }
.spr-gallery-title.spr-item-active, .spr-gallery-title:hover { color: var(--spr-global-color-accent, #10b981); border-bottom-color: currentColor; }
@media (max-width: 767px) { .spr-widget--gallery { --spr-eg-columns: 2; } }
/* Countdown: expired. */
.spr-countdown-wrapper[hidden] { display: none; }
/* Container › Background Video: behind the content, covering the box (16:9 embeds scaled to cover). */
[data-spr-bg-video] { position: relative; overflow: hidden; }
[data-spr-bg-video] > :not(.spr-bg-video) { position: relative; z-index: 1; }
.spr-bg-video { position: absolute; inset: 0; z-index: 0; overflow: hidden; pointer-events: none; background: center / cover no-repeat; }
.spr-bg-video__media { position: absolute; top: 50%; left: 50%; width: 100%; height: 100%; border: 0; transform: translate(-50%, -50%); object-fit: cover; }
iframe.spr-bg-video__media { width: max(100%, 177.78cqh); height: max(100%, 56.25cqw); }
.spr-bg-video { container-type: size; }
