/* ==========================================================================
   Etos - Landing 2 desktop hero (template-home2.php)

   Scope: everything here is DESKTOP ONLY (min-width: 768px). Below 768px the
   .lp2 block is hidden and the original mobile markup takes over, drawn by
   the theme's own responsive.css - the mobile view is untouched.

   Isolation: every desktop selector is a .lp2* class that no other stylesheet
   in this theme uses. Where the Contact Form 7 internals are shared with the
   old template, the rules below are scoped under .lp2 and this file is
   enqueued after 'style' and 'responsive', so it wins.

   Units: vw/vh throughout, as specified, each multiplied by --a11y-scale so
   the accessibility font stepper still moves them (the plugin only sets a
   percentage on <body>, which vw ignores completely).
   ========================================================================== */

/* --------------------------------------------------- accessibility scale -- */
.lp2 { --a11y-scale: 1; }
body.pojo-a11y-resize-font-120 .lp2 { --a11y-scale: 1.10; }
body.pojo-a11y-resize-font-130 .lp2 { --a11y-scale: 1.18; }
body.pojo-a11y-resize-font-140 .lp2 { --a11y-scale: 1.26; }
body.pojo-a11y-resize-font-150 .lp2 { --a11y-scale: 1.34; }
body.pojo-a11y-resize-font-160 .lp2 { --a11y-scale: 1.42; }
body.pojo-a11y-resize-font-170 .lp2 { --a11y-scale: 1.50; }
body.pojo-a11y-resize-font-180 .lp2 { --a11y-scale: 1.58; }
body.pojo-a11y-resize-font-190 .lp2 { --a11y-scale: 1.66; }
body.pojo-a11y-resize-font-200 .lp2 { --a11y-scale: 1.75; }

/* the plugin puts font-size:NN% on p/span/label and CF7 nests
   p > span > span, so those percentages multiply. Flatten inside .lp2 and let
   the explicit vw sizes below (times the scale) do the work. */
body[class*="pojo-a11y-resize-font-"] .lp2 :is(p, li, span, label, legend, blockquote, dd, dt) {
    font-size: inherit !important;
}
/* ...but the feature text is a <p> with a size of its own, so restate it at a
   higher class count than the flatten rule above (0,4,1) vs (0,2,2).
   Everything inside the form is restated by accessibility.css already, whose
   pins are (0,3,2) and also outrank the flatten. */
body[class*="pojo-a11y-resize-font-"] .lp2 .lp2__icon-list .lp2__text {
    font-size: calc(1.2vw * var(--a11y-scale)) !important;
    line-height: calc(1.3vw * var(--a11y-scale)) !important;
}
/* same for the two plates in the price / terms strip - they are <p> too */
body[class*="pojo-a11y-resize-font-"] .lp2 .lp2__boxes .lp2__box {
    font-size: calc(1.338vw * var(--a11y-scale)) !important;
    line-height: 1.222 !important;
}

/* mobile stays on the theme's own CSS - .lp2 simply does not exist there */
.lp2 { display: none; }

/* ...and .lp2m is the mirror of that: mobile-only, absent above 767px */
.lp2m { display: none; }


@media (min-width: 768px) {

/* ---------------------------------------------------------------- shell -- */
.lp2 {
    display: flex;
    direction: rtl;
    width: 100%;
    height: 100vh;
    position: relative;
    overflow: hidden;
    background: #A4BCE1;
}
.lp2 *,
.lp2 *::before,
.lp2 *::after { box-sizing: border-box; }

/* media on the right (first flex item in RTL), panel on the left */
.lp2__media {
    order: 1;
    width: 63vw;
    height: 100vh;
    position: relative;
    overflow: hidden;
}
.lp2__panel {
    order: 2;
    width: 37vw;
    height: 100vh;
    position: relative;
    overflow: hidden;
    background: #A4BCE1;
}

/* gold arc, top-left corner of the content side */
.lp2__vector {
    position: absolute;
    top: -4vh;
    left: -3.4vw;
    width: 9vw;
    height: auto;
    z-index: 1;
    pointer-events: none;
    user-select: none;
    z-index: 9;
}

/* content column: normal flow, so enlarged text pushes down instead of
   colliding the way the old absolutely positioned blocks did */
/* The colour seam is NOT a fixed gradient stop - it is the boundary between
   two real blocks, so it always lands exactly where the price strip and form
   begin, at any viewport aspect ratio. A gradient pinned to 61% only lined up
   on one screen shape. */
.lp2__inner {
    position: relative;
    z-index: 2;
    height: 100vh;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
}

/* 1 0 auto, never 1 1 auto: if this block is allowed to shrink, enlarged text
   overflows it and lands on top of the price strip below (measured at step 160+) */
.lp2__top {
    flex: 1 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    /* bottom padding must exceed the price strip's -2.1vw pull, or the strip
       is dragged onto the feature list once the text is enlarged */
    padding: 3.4vh 2vw calc(2.1vw + 2.5vh);
    background: #A4BCE1;
}

.lp2__bottom {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0 2vw 3.4vh;
    background: #541D3B;
}

/* ------------------------------------------------------------ wordmark -- */
.lp2__logo { flex: 0 0 auto; }
/* the wordmark is artwork, not text - it stays put when the accessibility
   stepper enlarges the copy (no var(--a11y-scale) here on purpose) */
.lp2__logo img {
    display: block;
    width: 19vw;
    max-width: 100%;
    height: auto;
}

/* ---------------------------------------------------------------- copy -- */
.lp2__lead {
    flex: 0 0 auto;
    /* min() so the gap compresses on short windows instead of overflowing */
    margin: min(5.5vh, 3.6vw) 0 0;
    max-width: 30vw;
    text-align: center;
    font-family: var(--font-family-AlmoniDLAAA-Regular, 'AlmoniDLAAA-Regular');
    color: #541d3a;
    font-size: calc(1.3vw * var(--a11y-scale));
    line-height: calc(1.5vw * var(--a11y-scale));
}

.lp2__icon-list {
    flex: 0 0 auto;
    list-style: none;
    margin: min(5vh, 3.3vw) 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    max-width: 30vw;
}
.lp2__item {
    display: flex;
    align-items: center;
}
.lp2__item > img {
    width: calc(1.54vw * var(--a11y-scale));
    max-width: calc(1.54vw * var(--a11y-scale));
    height: calc(1.54vw * var(--a11y-scale));
    margin-left: 0.75vw;
    margin-right: 0.75vw;
    flex: 0 0 auto;
}
.lp2__text {
    margin-bottom: 0 !important;
    color: #541d3a;
    font-family: var(--font-family-AlmoniDLAAA-Regular, 'AlmoniDLAAA-Regular');
    font-size: calc(1.2vw * var(--a11y-scale));
    line-height: calc(1.3vw * var(--a11y-scale));
}

/* --------------------------------------------------- price / terms strip -- */
/* Two real plates instead of box-text.png. Measured off that asset (2147x305):
   the white plate is 1007px of its width and the gold 1140px, the copy is
   Almoni Bold at ~110.5px with a 135px leading, and the colours are the
   artwork's own #fdf7f4 / #3f031c and #ae8658 / #fff.

   The plate height is built out of em, not a fixed vw: 2 lines of 1.222em plus
   0.158em top and bottom comes to 2.76em, which is exactly 305/110.5. That way
   only the font-size has to be restated when the strip changes width (tablet
   band below), and the strip still grows correctly under the a11y stepper.

   Still pulled up so it straddles the colour seam - -2.1vw puts ~58% of the
   strip in the blue and ~42% in the purple, as in the design. */
.lp2__boxes {
    flex: 0 0 auto;
    margin: -2.1vw 0 0;
    width: 26vw;
    max-width: 100%;
    display: flex;
    align-items: stretch;
}
.lp2__box {
    margin: 0 !important;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0.158em 0.4em;
    font-family: var(--font-family-AlmoniDLAAA-Bold, 'AlmoniDLAAA-Bold');
    font-weight: 400;
    font-size: calc(1.338vw * var(--a11y-scale));
    line-height: 1.222;
}
.lp2__box--light {
    flex: 0 0 46.9%;
    background: #fdf7f4;
    color: #3f031c;
}
.lp2__box--gold {
    flex: 0 0 53.1%;
    background: #ae8658;
    color: #fff;
}

/* ---------------------------------------------------------------- form -- */
/* The form is deliberately NOT restyled here. Every rule the old template
   uses for it - input, .submit-btn input, .wpcf7-checkbox, .form-top-text,
   .form-bottom-text, .form-end-text, .wpcf7-not-valid-tip,
   .wpcf7-response-output, #contactUs, .form-field-col, .pv-links - is global
   in style.css (never scoped to .form-order), so it already applies inside
   .lp2__form. The bootstrap row/col grid is still loaded too, and
   accessibility.css already scales all of those selectors.
   Only the container box is set here. */
.lp2__form {
    flex: 0 0 auto;
    margin: 2.6vh 0 0;
    width: 26vw;
    max-width: 100%;
}

/* style.css gives .form-end-text `position:relative; top:3vh`, which paints it
   27px below its flow position without reserving the space - measured overlap
   with the links underneath was 6px. Put it back in flow (which also lifts it)
   and give the links a real gap of their own. */
.lp2__form .form-end-text {
    position: static;
    top: auto;
}

/* Same trap on the CF7 response message: style.css gives it
   `position:relative; top:-3vh`, so when a validation error appears it is
   painted 27px higher than its flow position and lands on the terms line
   above it. Put it in flow with a gap of its own. */
.lp2__form .wpcf7-response-output {
    position: static;
    top: auto;
    margin: 1.2vh auto 0 !important;
}
.lp2__form .pv-links { margin-top: 2.8vh; }
.form-top-text {
    margin-bottom: 2vh;
    margin-top: 2vh;
}

/* ------------------------------------------ form under an enlarged font --
   Two things in the inherited form CSS only work at the design size, and
   both were measured breaking on this template:

   1. .wpcf7-not-valid-tip is position:absolute, centred ON the input. At the
      design size it is 77px wide inside a 186px field, so it reads as a hint
      beside the placeholder. At step 200 it is 163px inside that same 186px
      field - it covers the placeholder completely. Put it in flow underneath
      the field instead.

   2. .submit-col is capped at max-width:28% (106px). The button label scales
      to 37.8px at step 200 and no longer fits, so it spills out of its box.
      Let the column size to its content and let the row wrap.

   Both are gated on the accessibility class, so the form at rest is still
   pixel-for-pixel the old template. */
body[class*="pojo-a11y-resize-font-"] .lp2__form .wpcf7-not-valid-tip {
    position: static;
    top: auto;
    left: auto;
    right: auto;
    transform: none;
    display: block;
    width: 100%;
    margin-top: 0.5vh;
    line-height: 1.35;
}
body[class*="pojo-a11y-resize-font-"] .lp2__form .checkbox-group {
    flex-wrap: wrap;
    gap: 1.2vh 0.5vw;
}
body[class*="pojo-a11y-resize-font-"] .lp2__form .check-col {
    flex: 1 1 60%;
    min-width: 0;
}
body[class*="pojo-a11y-resize-font-"] .lp2__form .submit-col {
    flex: 0 0 auto;
    width: auto;
    max-width: none;
}
body[class*="pojo-a11y-resize-font-"] .lp2__form .submit-btn input {
    width: auto;
    max-width: 100%;
    white-space: normal;
}
/* --------------------------------------------------------------- media -- */
/* title lockup over the slider - untouched asset, original placement */
.lp2__title {
    position: absolute;
    top: 8vh;
    right: 12vw;
    z-index: 3;
    pointer-events: none;
}
/* The original rule was width:37vw + height:14.5vh, which distorts this
   1494x272 asset - 1.34x vertically on a 1440x900 desktop and 1.44x on a
   portrait tablet. height:auto renders it at its true proportions at every
   size. It comes out slightly shorter than the old template on desktop
   (97px instead of 131px at 1440) but it is no longer squashed. */
.lp2__title img {
    display: block;
    width: 37vw;
    max-width: 37vw;
    height: auto;
}

.lp2-slider {
    position: absolute;
    inset: 0;
    overflow: hidden;
    cursor: grab;
    /* let the browser handle vertical scroll but give us the horizontal axis,
       otherwise a swipe is consumed as a page pan and never reaches the JS */
    touch-action: pan-y;
}
.lp2-slider.is-dragging { cursor: grabbing; }
.lp2-slider img { user-select: none; -webkit-user-drag: none; }
.lp2-slider__track { position: absolute; inset: 0; }
.lp2-slider__slide {
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity 600ms ease;
}
.lp2-slider__slide.is-active { opacity: 1; }
.lp2-slider__slide img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top right;
}

/* The button hugs its arrow instead of being a full-height strip. It used to
   be height:100%, so the two arrows were 900px-tall columns covering 28% of
   the slider width - and because the drag handler ignores anything inside a
   <button>, that whole area could not be swiped. */
.lp2-slider__nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    height: auto;
    width: auto;
    z-index: 4;
    display: block;
    padding: 0;
    border: 0;
    line-height: 0;
    background: transparent;
    cursor: pointer;
}
/* the arrow assets are square (262x262) - keep them square */
.lp2-slider__nav img {
    display: block;
    width: auto;
    min-width: 0;
    height: 11vh;
    aspect-ratio: 1 / 1;
    object-fit: contain;
}
.lp2-slider__nav--prev { left: 1.5vw; }
.lp2-slider__nav--next { right: 1.5vw; }
.lp2-slider__nav:focus-visible { outline: 3px solid #b18d60; outline-offset: -3px; }

@media (prefers-reduced-motion: reduce) {
    .lp2-slider__slide { transition: none; }
}

/* ------------------------------------------------------------ monogram -- */
/* the "S" straddles the seam between the panel and the slider */
.lp2__monogram {
    position: absolute;
    bottom: 0;
    left: 33.6vw;
    z-index: 6;
    pointer-events: none;
}
.lp2__monogram img {
    display: block;
    width: 10.5vw;
    height: 23vh;
    object-fit: contain;
    object-position: bottom center;
}

/* ------------------------------------------- enlarged type: release 100vh --
   A one-screen hero cannot stay one screen once the text is 1.75x. Rather
   than trapping the form in a nested scroller nobody notices, drop the fixed
   height while an accessibility size is active and let the page scroll
   normally. The slider is inset:0 so it simply fills the taller column. */
body[class*="pojo-a11y-resize-font-"] .lp2,
body[class*="pojo-a11y-resize-font-"] .lp2__panel,
body[class*="pojo-a11y-resize-font-"] .lp2__media,
body[class*="pojo-a11y-resize-font-"] .lp2__inner {
    height: auto;
    min-height: 100vh;
}
body[class*="pojo-a11y-resize-font-"] .lp2__inner { overflow: visible; }
body[class*="pojo-a11y-resize-font-"] .lp2 { overflow: visible; }

/* ---------------------------------------------------------- wide/short -- */
@media (min-width: 768px) and (max-width: 1024px) {
    .lp2__panel { width: 42vw; }
    .lp2__media { width: 58vw; }
    .lp2__lead,
    .lp2__icon-list { max-width: 36vw; }
    .lp2__boxes,
    .lp2__form { width: 32vw; }
    /* the strip is 32vw here, so its type is 110.5/2147 of that */
    .lp2__box { font-size: calc(1.647vw * var(--a11y-scale)); }
    /* the form reaches 37vw in this band - keep the monogram clear of it */
    .lp2__monogram { left: 38.5vw; }
    .lp2__title { right: 8vw; }
    .lp2__title img { width: 42vw; max-width: 42vw; }
}

/* ------------------------------------------------- portrait tablets ------
   On a portrait screen the 100vh lock stretches the hero the full height of a
   very tall viewport: measured on an 820x1180 iPad the top block was 841px
   tall around only 141px of content, leaving a ~700px empty band in the
   panel. Let the section take its content height instead.

   .lp2__media keeps no height of its own - as a flex item it stretches to the
   panel, and the slider (inset:0) fills whatever that comes to. The min-height
   just stops the slider collapsing if the panel is ever unusually short.
   Placed after the enlarged-type rule above so it wins on both counts. */
@media (min-width: 768px) and (orientation: portrait) {
    .lp2,
    .lp2__panel,
    .lp2__media,
    .lp2__inner,
    body[class*="pojo-a11y-resize-font-"] .lp2,
    body[class*="pojo-a11y-resize-font-"] .lp2__panel,
    body[class*="pojo-a11y-resize-font-"] .lp2__media,
    body[class*="pojo-a11y-resize-font-"] .lp2__inner {
        height: auto;
        min-height: 0;
    }
    .lp2__inner { overflow: visible; }
    .lp2__media { min-height: 60vw; }
    /* vh-based artwork would be huge against a 1180px viewport */
    .lp2__monogram img { height: 16vw; }
    .lp2-slider__nav img { height: 7vw; }

    /* READABILITY FLOOR.
       The panel is only 42vw here - 344px on an 820px iPad - so the vw type
       collapses: measured 10.7px lead, 9.8px features, 7.0px inputs, 5.0px
       consent label and 5.0px small print. That is what makes the panel look
       stretched: ~136px of content floating in a 280px block.
       max() lifts them to a legible size in portrait only, so landscape and
       desktop keep the old template's sizes exactly. */
    .lp2__lead {
        font-size: max(15px, 1.3vw);
        line-height: 1.45;
    }
    .lp2__text {
        font-size: max(14px, 1.2vw);
        line-height: 1.2;
    }
    .lp2__item > img {
        width: max(9px, 1.54vw);
        max-width: max(9px, 1.54vw);
        height: max(9px, 1.54vw);
    }
    /* 1.647vw is 13.5px on an 820px iPad - the strip grows with the floor */
    .lp2__box {
        font-size: max(13px, 1.647vw);
        line-height: 1.222;
    }
    .lp2__form .form-top-text {
        font-size: max(15px, 1.1vw);
        line-height: 1.25;
    }
    .lp2__form input:not([type="checkbox"]):not([type="submit"]) {
        font-size: max(14px, 0.85vw);
        line-height: 1.4;
        min-height: 0;
        padding: 0.7vh 1vw;
    }
    .lp2__form .submit-btn input,
    .lp2__form .wpcf7-submit {
        font-size: max(16px, 1.5vw);
        line-height: 1.25;
    }
    .lp2__form .wpcf7-checkbox .wpcf7-list-item-label {
        font-size: max(11px, 0.61vw);
        line-height: 1.35;
    }
    .lp2__form .wpcf7-checkbox input[type="checkbox"] {
        min-width: max(13px, 1.3vw);
        width: max(13px, 1.3vw);
        height: max(13px, 1.3vw);
    }
    .lp2__form .form-bottom-text {
        font-size: max(10px, 0.61vw);
        line-height: 1.35;
    }
    .lp2__form .form-end-text {
        font-size: max(11px, 0.9vw);
        line-height: 1.35;
    }
    .lp2__form .pv-link,
    .lp2__form .pv-links > span {
        font-size: max(12px, 0.8vw);
        line-height: 1.3;
    }
    .lp2__form .wpcf7-not-valid-tip {
        font-size: max(11px, 0.8vw);
    }
    .lp2__form .wpcf7-response-output {
        font-size: max(12px, 0.9vw);
    }
}

/* short laptops: give the column room to breathe rather than clipping */
@media (min-width: 768px) and (max-height: 720px) {
    .lp2__inner { padding-top: 2vh; }
    .lp2__lead { margin-top: 5.2vh; }
    .lp2__icon-list { margin-top: 2.2vh; }
    .lp2__boxes { margin-top: -4.2vh; }
    .lp2__form { margin-top: 2.8vh; }
}

/* ------------------------------------------- accessibility contrast modes -- */
body.pojo-a11y-high-contrast .lp2,
body.pojo-a11y-negative-contrast .lp2,
body.pojo-a11y-high-contrast .lp2__panel,
body.pojo-a11y-negative-contrast .lp2__panel {
    background: #000 !important;
}
body.pojo-a11y-high-contrast .lp2__vector,
body.pojo-a11y-negative-contrast .lp2__vector { opacity: 0.45 !important; }

/* Solid black panels, no outlines and NO extra padding.
   The padding that used to be here made the contrast modes 27px taller than
   the default (measured at 1440x720: 733px vs 706px), which was enough to
   push the panel past 100vh and produce a scrollbar that is not there
   normally. The surrounding blocks are already black, so the padding bought
   nothing visually - contrast now has identical geometry to the default. */
/* .lp2__box is deliberately NOT in this list - the two plates are told apart
   by their fill, and once every fill is black they need an outline instead.
   See the contrast section at the foot of this file. */
body.pojo-a11y-high-contrast .lp2 :is(.lp2__lead, .lp2__icon-list, .lp2__form),
body.pojo-a11y-negative-contrast .lp2 :is(.lp2__lead, .lp2__icon-list, .lp2__form) {
    background: #000 !important;
    border: 0 !important;
}
body.pojo-a11y-high-contrast .lp2 :is(.lp2__lead, .lp2__text, .lp2__box, .pv-links, .pv-link),
body.pojo-a11y-negative-contrast .lp2 :is(.lp2__lead, .lp2__text, .lp2__box, .pv-links, .pv-link),
body.pojo-a11y-high-contrast .lp2__form :is(p, span, label, a),
body.pojo-a11y-negative-contrast .lp2__form :is(p, span, label, a) {
    background: transparent !important;
    color: #fff !important;
}
body.pojo-a11y-high-contrast .lp2__form input:not([type="checkbox"]),
body.pojo-a11y-negative-contrast .lp2__form input:not([type="checkbox"]) {
    background: #000 !important;
    color: #fff !important;
    border: 1px solid #fff !important;
}
/* transparent PNG/WebP artwork must not get a plate behind it. The negative
   contrast rule is body.NN *:not(#pojo-a11y-toolbar) = (1,1,1), so matching
   the :not() is the only way to outrank it. */
body.pojo-a11y-high-contrast .lp2 img:not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2 img:not(#pojo-a11y-toolbar),
body.pojo-a11y-light-background .lp2 img:not(#pojo-a11y-toolbar) {
    background: transparent !important;
}
/* ...and their wrappers. The plugin paints EVERY element, so the divs around
   the artwork were drawing a solid plate behind it - that is the black box
   behind the title lockup, the wordmark, the price strip and the monogram. */
body.pojo-a11y-high-contrast .lp2 :is(.lp2__title, .lp2__logo, .lp2__boxes, .lp2__monogram, .lp2-slider__nav, .lp2-slider__slide, .lp2-slider__track):not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2 :is(.lp2__title, .lp2__logo, .lp2__boxes, .lp2__monogram, .lp2-slider__nav, .lp2-slider__slide, .lp2-slider__track):not(#pojo-a11y-toolbar),
body.pojo-a11y-light-background .lp2 :is(.lp2__title, .lp2__logo, .lp2__boxes, .lp2__monogram, .lp2-slider__nav, .lp2-slider__slide, .lp2-slider__track):not(#pojo-a11y-toolbar) {
    background: transparent !important;
}

} /* end min-width:768px */


/* ==========================================================================
   MOBILE (max-width: 767px) - .lp2m

   Rebuild of the bottom half of the mobile landing page. It used to be two
   composited artwork files, mobile-bg-middle.webp and mobile-bg-end.webp,
   with the live form sandwiched between them. Everything they contained is a
   real element here: the feature list, the ETOS wordmark, the form heading and
   small print (both come from the Contact Form 7 markup itself - the theme
   hides them on mobile because they used to be baked into the artwork), the
   Rotshtein logo and the diamond rule.

   Geometry: every size below is the measured position in the original
   843px-wide artwork converted to vw (1 artwork px = 0.11862vw), so the block
   renders at the same proportions the images did at any viewport width - the
   images were width:100% too. Type sizes were solved from the glyph widths of
   AlmoniDLAAA against the ink measured in the artwork.

   Isolation: .lp2m* is used by no other stylesheet, this file is only enqueued
   on template-home2.php (see etos_home2_assets), and the two rules that reach
   outside it - the un-hidden form texts and the form's gutters - are both
   scoped under .lp2m. The hero (.mobile-view) and the description / slider
   block (.bg-541d3a) above it are untouched.
   ========================================================================== */

@media (max-width: 767px) {

/* --------------------------------------------------- accessibility scale -- */
.lp2m { --a11y-scale: 1; }
body.pojo-a11y-resize-font-120 .lp2m { --a11y-scale: 1.10; }
body.pojo-a11y-resize-font-130 .lp2m { --a11y-scale: 1.18; }
body.pojo-a11y-resize-font-140 .lp2m { --a11y-scale: 1.26; }
body.pojo-a11y-resize-font-150 .lp2m { --a11y-scale: 1.34; }
body.pojo-a11y-resize-font-160 .lp2m { --a11y-scale: 1.42; }
body.pojo-a11y-resize-font-170 .lp2m { --a11y-scale: 1.50; }
body.pojo-a11y-resize-font-180 .lp2m { --a11y-scale: 1.58; }
body.pojo-a11y-resize-font-190 .lp2m { --a11y-scale: 1.66; }
body.pojo-a11y-resize-font-200 .lp2m { --a11y-scale: 1.75; }

/* Same trap as the desktop block: the plugin writes font-size:NN% onto every
   p/span/label and CF7 nests p > span > span, so the percentages multiply.
   Flatten inside .lp2m and let the explicit vw sizes (times the scale) below
   do the work. accessibility.css pins the form controls at (0,3,2), which
   still outranks this (0,2,2), so the inputs keep their own treatment. */
body[class*="pojo-a11y-resize-font-"] .lp2m :is(p, li, span, label, legend, blockquote, dd, dt) {
    font-size: inherit !important;
}
/* ...but these four are <p> with a size of their own, so each is restated at a
   higher class count than the flatten rule above - (0,3,1) vs (0,2,2). */
body[class*="pojo-a11y-resize-font-"] .lp2m .lp2m__text {
    font-size: calc(3.94vw * var(--a11y-scale)) !important;
    line-height: 1.05 !important;
}
body[class*="pojo-a11y-resize-font-"] .lp2m .lp2m__note {
    font-size: calc(4.82vw * var(--a11y-scale)) !important;
    line-height: 1.1 !important;
}
/* The two form texts need MORE than that: accessibility.css already pins them
   at (0,3,2), and it pins them to the desktop values - .form-top-text is
   1.1vw with no mobile floor, which computes to 4.1px on a phone. Restating
   at (0,4,2) puts the mobile sizes back. The px floors only exist inside this
   gate, so the page at rest is unchanged. */
html body[class*="pojo-a11y-resize-font-"] .lp2m .wpcf7 .form-top-text {
    font-size: calc(max(15px, 4.95vw) * var(--a11y-scale)) !important;
    line-height: 1.15 !important;
}
html body[class*="pojo-a11y-resize-font-"] .lp2m .wpcf7 .form-bottom-text {
    font-size: calc(max(12px, 3.2vw) * var(--a11y-scale)) !important;
    line-height: 1.3 !important;
}

/* ---------------------------------------------------------------- shell -- */
.lp2m {
    display: block;
    position: relative;
    width: 100%;
    overflow: hidden;
    direction: rtl;
}
.lp2m *,
.lp2m *::before,
.lp2m *::after { box-sizing: border-box; }

/* The E-T-O-S wordmark runs down the left edge and crosses the colour seam,
   exactly as it did in the artwork: 24.77vw wide, pulled 2.55vw off the left
   edge so the same sliver is cropped. Artwork, not type - it does not take
   var(--a11y-scale). */
.lp2m__vector {
    position: absolute;
    top: 0;
    left: -2.55vw;
    width: 24.77vw;
    height: auto;
    pointer-events: none;
    user-select: none;
}

/* ------------------------------------------------------------- features -- */
/* the left gutter is the wordmark's lane - 27vw clears its 24.77vw box, and it
   is also what pushes both rows right of centre, exactly as in the artwork */
.lp2m__features {
    background: #5d2342;
    padding: 8.4vw 4.75vw 10.85vw 27vw;
}
.lp2m__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    column-gap: 10.7vw;
    row-gap: 0;
}
.lp2m__item,
.lp2m__sep {
    display: flex;
    align-items: center;
}
.lp2m__text {
    margin: 0 !important;
    text-align: center;
    color: #a3bce3;
    font-family: var(--font-family-AlmoniDLAAA-Regular, 'AlmoniDLAAA-Regular');
    font-size: calc(3.94vw * var(--a11y-scale));
    line-height: 1.05;
}
/* the gold ring between the features - the same asset the desktop list uses */
.lp2m__sep img {
    display: block;
    width: calc(6.7vw * var(--a11y-scale));
    height: auto;
}
/* Forces the wrap after the second feature, so the rows read
   "חדר כושר בבניין O בית חכם מלא" / "O בקרבת הרכבת הקלה O" the way the artwork
   did, whatever the text measures. It carries the row gap itself, which is why
   row-gap above is 0 - an empty 100% line would otherwise be gapped twice. */
.lp2m__break {
    width: 100%;
    height: 7vw;
    margin: 0;
}

/* THE ROW MODEL ONLY WORKS AT THE DESIGN SIZE.
   The copy and the rings take var(--a11y-scale), the 10.7vw gutters and the
   27vw left lane do not - so from about step 140 the first row no longer fits
   and items spill one per line in whatever order they happen to land, with the
   forced break stranding a lone ring on a row of its own. Measured at step
   200: row one needs 295px inside a 256px lane.

   Stack them instead. The rings stay - in a column they read as the divider
   between one feature and the next, which is what they already are across a
   row. Only the forced break goes, since a column needs no break. */
body[class*="pojo-a11y-resize-font-"] .lp2m__list {
    flex-direction: column;
    align-items: center;
    row-gap: calc(2.5vw * var(--a11y-scale));
}
body[class*="pojo-a11y-resize-font-"] .lp2m__break {
    display: none;
}
/* the trailing ring closes the second row at the design size, but stacked it
   has nothing after it and would just dangle under the last feature */
body[class*="pojo-a11y-resize-font-"] .lp2m__list > .lp2m__sep:last-child {
    display: none;
}

/* THE SUBMIT BUTTON IS CLIPPED ONCE THE LABEL SCALES.
   responsive.css caps it at max-width:31vw (116px) and bootstrap's .flex-nowrap
   keeps it on one line with the consent label, which takes 238px of the 333px
   row. accessibility.css scales the label to 31.5px at step 200 - measured
   112px of text inside a 93px input, and an <input> cannot wrap, so "חזור אליי"
   comes out as "חזור א". Let the row wrap and the button size to its label.
   .flex-nowrap is an !important utility, so flex-wrap has to be one too. */
body[class*="pojo-a11y-resize-font-"] .lp2m .checkbox-group {
    flex-wrap: wrap !important;
    gap: 3.2vw 2.7vw;
}
body[class*="pojo-a11y-resize-font-"] .lp2m .check-col {
    flex: 1 1 100%;
    min-width: 0;
}
body[class*="pojo-a11y-resize-font-"] .lp2m .submit-col {
    flex: 0 0 auto;
    width: auto;
    max-width: none;
}
body[class*="pojo-a11y-resize-font-"] .lp2m .submit-btn input {
    width: auto;
    max-width: 100%;
    white-space: normal;
    padding: 0.3em 1em;
    line-height: 1.25;
}

/* -------------------------------------------------------------- contact -- */
.lp2m__contact {
    background: #a3bce3;
    padding: 7.95vw 5.57vw 20.25vw;
}

/* responsive.css hides these three on mobile because the artwork carried the
   words. Two of them are wanted back - and only inside .lp2m, so the original
   template keeps its own behaviour. .form-end-text stays hidden: it has to sit
   under the logo and the rule, which are outside the form, so it is reprinted
   as .lp2m__note below. */
.lp2m .form-top-text,
.lp2m .form-bottom-text {
    display: block;
}
.lp2m .form-top-text {
    margin: 0 0 6.4vw;
    text-align: right;
    color: #5d2342;
    font-family: var(--font-family-AlmoniDLAAA-Bold, 'AlmoniDLAAA-Bold');
    font-weight: var(--font-weight-bold, 700);
    font-size: calc(4.95vw * var(--a11y-scale));
    line-height: 1.15;
}
/* The artwork drew this line at 2.36vw - 8.85px on a 375 phone, which is what
   the flattened JPG had but is too small to read as live text. Lifted to
   3.2vw (12px at 375) with a looser leading; still visibly small print against
   the 14px links and the 18px note above and below it. */
.lp2m .form-bottom-text {
    margin: 5.6vw 0 0;
    text-align: right;
    color: #5d2342;
    font-family: var(--font-family-AlmoniDLAAA-Regular, 'AlmoniDLAAA-Regular');
    font-size: calc(3.2vw * var(--a11y-scale));
    line-height: 1.3;
}

/* the padding and the blue plate now belong to .lp2m__contact */
.lp2m .mob-form-order {
    padding: 0;
    background: transparent;
}
/* bootstrap's row gutters inset the small print by 12px, which broke its
   alignment with the heading and the rule. The field columns are already
   padding:0 !important in style.css - this just finishes the job. */
.lp2m .mob-form-order #contactUs > * {
    padding-left: 0;
    padding-right: 0;
}

/* style.css sizes these links at 0.8vw, which is 3px on a phone - they render
   as two hairlines under the small print. responsive.css does carry a 14px
   mobile rule, but this block should not depend on that file, so the size is
   restated here in vw like everything else around it (3.73vw = 14px at 375).
   The colour is #fff there too, which was written for the purple panel - on
   this sky-blue plate that is ~1.6:1, so they take the same purple as the rest
   of the copy in the block. */
.lp2m .pv-links {
    margin-top: calc(6.4vw * var(--a11y-scale));
    column-gap: 2.7vw;
    margin-bottom: calc(6.4vw * var(--a11y-scale));
}
.lp2m .pv-link,
.lp2m .pv-links > span {
    color: #5d2342;
    font-family: var(--font-family-AlmoniDLAAA-Regular, 'AlmoniDLAAA-Regular');
    font-size: calc(3.73vw * var(--a11y-scale));
    line-height: 1.2;
}
.lp2m .pv-link:hover,
.lp2m .pv-link:focus-visible { color: #3d1129; }

/* --------------------------------------------------- logo / rule / note -- */
.lp2m__logo img,
.lp2m__divider img {
    display: block;
    height: auto;
    margin-left: auto;
    margin-right: auto;
}
/* The four gaps down this tail - small print / links / logo / rule / note -
   are set so the VISUAL gap is an even ~24px at 375. They do not match the
   margins one for one, because both PNGs carry transparent padding of their
   own: 15.1px under the links before the logo's ink starts, 15.5px + 5.0px
   between the logo's ink and the rule's, and 5.0px after the rule. Each one is
   scaled by the a11y stepper so the tail opens up as the copy grows instead of
   packing tighter. */
.lp2m__logo img { width: 55.9vw; margin-top: calc(2.4vw * var(--a11y-scale)); margin-bottom: calc(2.4vw * var(--a11y-scale)); }
/* the rule is wider than the text column - it ran edge to edge in the artwork,
   so it breaks out of .lp2m__contact's padding and centres on the viewport */
.lp2m__divider {
    margin-top: calc(1vw * var(--a11y-scale));
    margin-left: -5.57vw;
    margin-right: -5.57vw;
}
.lp2m__divider img { width: 92.9vw; }
.lp2m__note {
    margin: calc(5.1vw * var(--a11y-scale)) 0;
    text-align: center;
    color: #5d2342;
    font-family: var(--font-family-AlmoniDLAAA-Regular, 'AlmoniDLAAA-Regular');
    font-size: calc(4.82vw * var(--a11y-scale));
    line-height: 1.1;
}

/* ------------------------------------------- accessibility contrast modes --
   Mirrors what responsive.css does for the original mobile blocks: the plugin
   paints `background:#808080` onto every element, which puts a grey plate
   behind each transparent PNG and behind the divs wrapping them. The
   `:not(#pojo-a11y-toolbar)` is required to out-specify the plugin's own
   `body.NN *:not(#pojo-a11y-toolbar)` rule at (1,1,1). */
body.pojo-a11y-high-contrast .lp2m :is(img, .lp2m__logo, .lp2m__divider, .lp2m__sep):not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2m :is(img, .lp2m__logo, .lp2m__divider, .lp2m__sep):not(#pojo-a11y-toolbar),
body.pojo-a11y-light-background .lp2m :is(img, .lp2m__logo, .lp2m__divider, .lp2m__sep):not(#pojo-a11y-toolbar) {
    background: transparent !important;
}
/* the purple band and the blue plate are the design, not decoration - in the
   two inverting modes they go black so the copy stays legible on them */
body.pojo-a11y-high-contrast .lp2m :is(.lp2m__features, .lp2m__contact),
body.pojo-a11y-negative-contrast .lp2m :is(.lp2m__features, .lp2m__contact) {
    background: #000 !important;
}
body.pojo-a11y-high-contrast .lp2m :is(.lp2m__text, .lp2m__note, .form-top-text, .form-bottom-text, .pv-links, .pv-link),
body.pojo-a11y-negative-contrast .lp2m :is(.lp2m__text, .lp2m__note, .form-top-text, .form-bottom-text, .pv-links, .pv-link) {
    background: transparent !important;
    color: #fff !important;
}
/* the wordmark is a solid gold shape - knock it back so it cannot compete with
   the text once the palette is inverted */
body.pojo-a11y-high-contrast .lp2m__vector,
body.pojo-a11y-negative-contrast .lp2m__vector { opacity: 0.45 !important; }

} /* end max-width:767px */


/* ==========================================================================
   CONTRAST MODES - artwork and form controls

   Outside both media queries on purpose: .lp2 is display:none below 768px and
   .lp2m is display:none above it, so each set only ever paints on its own
   breakpoint and the selectors stay short.

   Every rule carries :not(#pojo-a11y-toolbar). The plugin's own paint rule is
   `body.pojo-a11y-<mode> *:not(#pojo-a11y-toolbar)`, which scores (1,1,1) -
   an !important alone does not beat it, matching the :id in the :not() is what
   lifts these above it.
   ========================================================================== */

/* --- solid marks on transparency need a card to sit on -------------------
   The ETOS wordmark and the Rotshtein logo are one-colour shapes. The two
   inverting modes paint everything behind them black, which is very close to
   the marks' own colour, so they read as an empty gap. White plate instead. */
body.pojo-a11y-high-contrast .lp2 .lp2__logo img:not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2 .lp2__logo img:not(#pojo-a11y-toolbar),
body.pojo-a11y-high-contrast .lp2m .lp2m__logo img:not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2m .lp2m__logo img:not(#pojo-a11y-toolbar) {
    background: #fff !important;
}

/* --- the price / terms plates ---------------------------------------------
   The white plate and the gold plate are only told apart by their fill. Every
   mode flattens both fills to the same colour, so the strip becomes one blank
   bar - an outline is what keeps it readable as two boxes. White on the
   inverting modes, black on the light one.

   .mob-wrapper > p is the same pair of plates in the mobile block above the
   slider (white/#5d2342 and #b18d60/white in responsive.css), so it takes the
   same treatment. Everything here is box-sizing:border-box, so the outline
   costs no width. */
body.pojo-a11y-high-contrast .lp2 .lp2__box:not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2 .lp2__box:not(#pojo-a11y-toolbar),
body.pojo-a11y-high-contrast .bg-541d3a .mob-wrapper > p:not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .bg-541d3a .mob-wrapper > p:not(#pojo-a11y-toolbar) {
    background: #000 !important;
    border: 1px solid #fff !important;
    /* responsive.css pins .mob-wrapper p:first-child to rgb(93,35,66) with an
       !important of its own, and high-contrast does not override it - measured
       1.78:1 purple on black. The colour has to be restated here. */
    color: #fff !important;
}
body.pojo-a11y-light-background .lp2 .lp2__box:not(#pojo-a11y-toolbar),
body.pojo-a11y-light-background .bg-541d3a .mob-wrapper > p:not(#pojo-a11y-toolbar) {
    border: 1px solid #000 !important;
}

/* --- form fields ----------------------------------------------------------
   The theme paints the inputs white with #5b2440 text and a #561c3b checkbox
   border, all of which sit on the plugin's black plate at roughly no contrast.
   ::placeholder is pinned separately because responsive.css sets it to
   #5d2440 with !important of its own. */
body.pojo-a11y-high-contrast .lp2m input:not([type="checkbox"]):not([type="submit"]):not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2m input:not([type="checkbox"]):not([type="submit"]):not(#pojo-a11y-toolbar) {
    background: #000 !important;
    color: #fff !important;
    border: 1px solid #fff !important;
}
body.pojo-a11y-high-contrast .lp2m input::placeholder,
body.pojo-a11y-negative-contrast .lp2m input::placeholder {
    color: #fff !important;
    opacity: 1 !important;
}
body.pojo-a11y-high-contrast .lp2m input[type="checkbox"]:not(#pojo-a11y-toolbar),
body.pojo-a11y-negative-contrast .lp2m input[type="checkbox"]:not(#pojo-a11y-toolbar) {
    background: #000 !important;
    border: 1px solid #fff !important;
}

/* --- mobile slider arrows -------------------------------------------------
   Light artwork on a transparent button. That is fine on the two dark modes,
   but light-background turns the page white and the arrows vanish into it, so
   there the button gets a black plate to sit the arrow on. */
body.pojo-a11y-light-background .bg-541d3a .slick-arrow-custom:not(#pojo-a11y-toolbar) {
    background: #000 !important;
    border-radius: 50%;
}

#pojo-a11y-toolbar .pojo-a11y-toolbar-overlay ul.pojo-a11y-toolbar-items li.pojo-a11y-toolbar-item a svg {
padding-left: 6px;
padding-right: 0 !important;
}

#pojo-a11y-toolbar .pojo-a11y-toolbar-overlay ul.pojo-a11y-toolbar-items li.pojo-a11y-toolbar-item a .pojo-a11y-toolbar-text {

    font-weight: 500;
    font-family: heebo;
}