/* ==========================================================================
   Submarine Max Pro — landing page
   Two independent Figma canvases (desktop 1728x15162, mobile 440x11658).
   Coordinates below are taken verbatim from Figma; nothing here is eyeballed.
   ========================================================================== */

/* ---------- Fonts (the exact families used in the design) ---------- */
/* ---------- Stage / canvas ---------------------------------------------
   The canvas is rendered at its intrinsic Figma size and scaled to the
   viewport. transform-origin is top-left because Figma coordinates are
   measured from the left edge even in an RTL design.
   --------------------------------------------------------------------- */
.svl-root {
	background: #fff;
	overflow-x: hidden;
	width: 100%;
}

/* Reveal-when-ready (10/2026). The webfonts land a second or two after first
   paint on a live network, and the two MEASURED blocks (the questions, the
   thank-you paragraph) re-measure taller in the real face than in the fallback,
   which makes the page grow and the content below the fold jump once. Keep the
   page hidden until the fonts are in and the final fit() has run (front.js adds
   .svl-ready), so that one-time growth happens off-screen.
   Safety net: the keyframe reveals the page by itself after 3s even if the
   script never runs, so a font that never resolves — or JS that is off — can
   never leave the page blank. */
.svl-root { opacity: 0; }
.svl-root.svl-ready { opacity: 1; transition: opacity 0.3s ease; }
.svl-root:not(.svl-ready) { animation: svl-reveal-fallback 0.01s linear 3s forwards; }
@keyframes svl-reveal-fallback { to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
	.svl-root.svl-ready { transition: none; }
}

/* Headings carry the page s outline for a screen reader and for Google, but
   the design decides how they look. Every heading here is an absolutely
   positioned node whose font is set by its own rule, so the UA defaults —
   margin, size, weight — would only move things. Reset them once, here, and
   promoting a <p> to an <h2> costs nothing visually. */
/* :where(), NOT :is(). This rule has to beat the browser's defaults for a
   heading and lose to every rule in this file that styles one. :is() takes
   the specificity of its argument, which made this (0,1,1) — higher than
   `.d-s9__title` at (0,1,0) — so promoting a <p> to an <h2> silently threw
   away that title's size, weight and colour and left it inheriting the
   theme's body text. Every one of the thirty headings on the page went that
   way at once. :where() contributes nothing, so a UA default loses to it and
   a design rule beats it. */
.svl-root :where( h1, h2, h3, h4, h5, h6 ) {
	margin: 0;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
	color: inherit;
}

/* The FAQ question is a button inside its own heading. The heading is only a
   landmark — the button keeps the whole width and all of the styling. */
.svl-faq__head { margin: 0; font: inherit; display: block; }

.svl-stage {
	position: relative;
	width: 100%;
	overflow: hidden;
	/* Height is set by JS to designH * scale, since a transform does not
	   contribute to layout. */
}

/* The canvas is anchored explicitly rather than left in flow: it is wider than
   its stage, and in an RTL context an over-wide box overflows to the LEFT, which
   would push the whole design off-screen. Its own direction is LTR because Figma
   coordinates are measured from the left edge in every design, RTL included —
   the text nodes carry their own dir="rtl". */
.svl-canvas {
	position: absolute;
	left: 0;
	top: 0;
	direction: ltr;
	transform-origin: top left;
	background: #fff;
	/* Set by JS: transform: scale(n), and left, to centre it once the scale caps. */
}

/* Past the scale cap the canvas is narrower than the window, which would leave a
   white strip down each side wherever a section is not white. Only the full-bleed
   background bands need to cover them — everything between those bands is white in
   the design already — so those bands are widened by exactly the shortfall.
   --svl-bleed-x is 1 until the cap bites, which makes this rule a no-op below it. */
/* Scoped to .svl-stage purely for specificity: a bare .svl-bleed--c ties with the
   band's own .m-band-top rule, which is declared later in this file and therefore
   won its transform back — the two centred bands then sat inside the canvas and
   left a white strip down each side of the page at every width past the cap. */
.svl-stage .svl-bleed { transform: scaleX( var( --svl-bleed-x, 1 ) ); }
/* Bands that already carry a transform have to keep it; scaleX alone would drop
   the centring translate and shove the band half its width to the right. */
.svl-stage .svl-bleed--c { transform: translateX( -50% ) scaleX( var( --svl-bleed-x, 1 ) ); }

/* Only elements with NOTHING inside them may be tagged .svl-bleed. scaleX on a
   box that holds copy stretches the copy with it — tagging the hero <section>
   was the first attempt and it drew the headline 1.7x too wide on a tablet.
   The hero therefore gets two empty stand-ins behind it instead. The bar's
   second gradient layer is the seam fix: the first layer repaints the real
   1728/440px ramp over the middle, and the half-and-half underneath extends the
   ramp's own end colour into each gutter, so the join is invisible. */

/* The hero photo is anchored to the LEFT of the canvas and cannot be widened
   (it is masked, and the section clips it), so the left gutter meets the photo
   rather than the section colour. Sampled down the photo's own left edge it runs
   #2A2828…#301D1E…#291B1B, so the gutter carries #2c2122 instead of the flat
   #212121 and the join stops reading as an edge. The right gutter meets the flat
   colour and keeps it. */

.svl-stage--mobile { display: none; }

@media (max-width: 900px) {
	.svl-stage--desktop { display: none; }
	.svl-stage--mobile  { display: block; }
}

/* Editor preview forces a single canvas regardless of viewport. */
.svl-root--force-desktop .svl-stage--desktop { display: block !important; }
.svl-root--force-desktop .svl-stage--mobile  { display: none !important; }
.svl-root--force-mobile  .svl-stage--mobile  { display: block !important; }
.svl-root--force-mobile  .svl-stage--desktop { display: none !important; }

/* ---------- Canvas reset -----------------------------------------------
   Every position in this file is an absolute Figma coordinate, so the browser's
   default margins must go: a <p> carries margin-block 1em and an <h1> 0.67em,
   which pushes each text node down by exactly its own font size and silently
   breaks every measurement. border-box keeps a bordered element (the glass pill)
   at its Figma width instead of growing by the border.
   --------------------------------------------------------------------- */
:is(.svl-canvas,.svl-hero-canvas) *,
:is(.svl-canvas,.svl-hero-canvas) *::before,
:is(.svl-canvas,.svl-hero-canvas) *::after {
	box-sizing: border-box;
}

:is(.svl-canvas,.svl-hero-canvas) p,
:is(.svl-canvas,.svl-hero-canvas) h1,
:is(.svl-canvas,.svl-hero-canvas) h2,
:is(.svl-canvas,.svl-hero-canvas) h3,
:is(.svl-canvas,.svl-hero-canvas) h4,
:is(.svl-canvas,.svl-hero-canvas) h5,
:is(.svl-canvas,.svl-hero-canvas) h6,
:is(.svl-canvas,.svl-hero-canvas) ul,
:is(.svl-canvas,.svl-hero-canvas) ol,
:is(.svl-canvas,.svl-hero-canvas) li,
:is(.svl-canvas,.svl-hero-canvas) figure,
:is(.svl-canvas,.svl-hero-canvas) blockquote {
	margin: 0;
	padding: 0;
	/* NB: do not neutralise font-weight here. A element+class selector outranks the
	   single-class rules below, so anything set in this block wins over the
	   per-node values taken from Figma. Weights are declared per element. */
}

/* Typographic baseline. These are set on the canvas itself (inherited, and easy
   for the per-node rules to override) purely to stop the active theme's own
   typography from leaking in — a stray letter-spacing changes where every line
   wraps, which is exactly the kind of drift this file exists to prevent. */
.svl-canvas {
	letter-spacing: normal;
	word-spacing: normal;
	font-style: normal;
	font-variant: normal;
	text-transform: none;
	text-decoration: none;
	text-indent: 0;
	font-kerning: auto;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
:is(.svl-canvas,.svl-hero-canvas) * {
	letter-spacing: inherit;
	word-spacing: inherit;
}

/* ---------- Primitives used by the templates ---------- */
.svl-abs { position: absolute; }

:is(.svl-canvas,.svl-hero-canvas) img { display: block; max-width: none; }

/* Text nodes: Figma centres text inside a fixed-width box. */
.svl-txt {
	position: absolute;
	margin: 0;
	padding: 0;
	text-align: center;
	white-space: pre-wrap;
	word-break: break-word;
}

/* ==========================================================================
   DESKTOP — 1728 x 15162
   ========================================================================== */

/* --- Section 1: Hero (Figma 75:3, 1728x1182) --- */
/* The root frame is white; the hero is a dark block sitting on it (Figma 75:3). */

/* Top bar (75:18) */

/* Top bar text (75:16) — Gveret Levin 30px */

/* Masked background photo (82:93 / 75:8) */

/* Decorative glows (75:90 / 82:91) — exported SVGs carry their own blur */

/* Headline (75:19) — gradient-filled text */

/* Sub-headline (75:20) */

/* Product badge plate (75:27) — rotated -2deg */

/* Product badge text (75:25) */

/* Tagline (75:28) */

/* Device shot (75:30) */

/* Glass pill (75:31) */

/* Glass pill text (75:33) */

/* Body copy (75:35) */

/* ==========================================================================
   Forms (shared shell; each instance is positioned by its section rule)
   ========================================================================== */
.svl-form { margin: 0; }

.svl-hp {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

.svl-form-error {
	color: #ff383c;
	font-family: 'Tel Aviv Modernist', sans-serif;
	font-size: 16px;
	margin: 0 0 8px;
	text-align: center;
}

.svl-field input {
	width: 100%;
	height: 100%;
	box-sizing: border-box;
	background: transparent;
	border: 0;
	outline: 0;
	font-family: 'Tel Aviv Modernist', sans-serif;
	color: #fff;
	text-align: center;
}
.svl-field input::placeholder { color: rgba(255, 255, 255, 0.85); opacity: 1; }

.svl-field button {
	width: 100%;
	height: 100%;
	box-sizing: border-box;
	border: 0;
	cursor: pointer;
	font-family: 'Tel Aviv Modernist', sans-serif;
	color: #fff;
	background: transparent;
}

/* ==========================================================================
   Reduced motion
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	.svl-canvas *,
	.svl-canvas *::before,
	.svl-canvas *::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
	}
}

/* --- Section 2: FDA band + video + CTA ring (Figma 94:2 … 94:18) --- */

/* Gradient band behind the video (94:2). The SVG carries its own blur/falloff. */

/* Video plate (94:5) */

/* Play button circle (94:6) */

/* Play triangle (94:7) — Figma rotates it 90deg inside a 69x72 box. */

/* FDA approval copy (94:11) */

/* CTA rings (94:15 outer, 94:16 inner) */

/* CTA label (94:17) */

/* Arrow icon inside the CTA ring (94:18) */

/* --- Section 3: "אז מה זה בעצם הצוללת?" (94:25, 94:27, 94:29) --- */

/* Section heading with a black→grey→black gradient fill (94:25) */

/* Product line (94:27) — Brutalist Light on the white background */

/* Body copy (94:29) */

/* --- Shared: frosted-glass plate (used by the hero pill and every label pill) --- */

/* Label sitting on a glass plate — Modernist 25px, never wraps. */

/* --- Section 4: mechanism (94:37, 94:26, glass pills, 94:43) --- */

/* "הצוללת עובדת על ידי מנגנון חכם" (94:37) */

/* Mechanism photo (94:26) — Figma crops it inside a shorter frame. */

/* The five callout plates (94:40, 94:31, 94:38, 94:35, 94:33) */

/* Their labels (94:41, 94:32, 94:39, 94:36, 94:34) */

/* "וכל זה קורה כי…" (94:43) */

/* --- Section 5: "סוגי הטיפולים" (94:44, 94:45) --- */

/* Oversized watermark headline with a near-transparent gradient fill (94:44) */

/* Sub-headline over the watermark (94:45) */

/* --- Section 7: "טכנולוגיה אחת / 5 אורכי גל / 7 סוגי טיפולים" (103:99) --- */

/* --- Section 6: six wavelength cards (94:49 … 94:82) ------------------------
   Two columns of three. Titles and bodies are right-anchored (translateX(-100%)
   off a calc'd left edge) exactly as Figma emits them for this RTL block.
   --------------------------------------------------------------------------- */

/* Glow ring behind the dot; the SVG carries the blur, hence the big negative inset. */

/* Right-hand anchor for each column. */

/* Section 7 body copy (103:100) */

/* --- Section 8: audience band + lead form 1 (103:91 … 105:112) --- */

/* Figma has this band at left 3 / width 1728, i.e. 3px short of the canvas on the
   left and 3px past it on the right. The right side is covered either way; the
   left one showed as a white hairline down the page edge at every width. Same
   right edge, left edge closed. */

/* Right-anchored headings on the band (103:92, 103:93, 103:94) */

/* Four logo placeholders (103:95 … 103:98) */

/* --- Lead form, instance 1 (103:101 … 105:111) ------------------------------
   The form element itself is left unpositioned so its fields resolve against the
   canvas and can carry their literal Figma coordinates.
   --------------------------------------------------------------------------- */

/* Form heading (182:15) */

/* Field shells */
.svl-form .svl-field { position: absolute; }
.svl-form .svl-field input,
.svl-form .svl-field button {
	border-radius: 9px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 23px;
	line-height: normal;
	color: #000;
	text-align: right;
	backdrop-filter: blur( 20px );
	-webkit-backdrop-filter: blur( 20px );
	background: #e9e9e9;
}
.svl-form .svl-field input::placeholder { color: #000; opacity: 1; }
.svl-form .svl-field--submit button {
	text-align: center;
	/* Inherited from the other project s palette. Svetlana s button is the pink
	   gradient Figma states on 602:115. */
	background: linear-gradient( to right, #bf6f81, #ffb3c4 );
	cursor: pointer;
}

/* Instance 1 field geometry (103:103, 103:105, 103:104, 103:110) */
/* Inherited from the other project, where these coordinates pointed at a
   canvas this plugin does not have. Re-aimed: desktop sits inside the
   section-11 frame so its tops are in-frame; mobile is on the page. */
.d-s11 .svl-form--1 .svl-field--name   { left: 861px; top: 756px; width: 354px; height: 78px; }
.d-s11 .svl-form--1 .svl-field--phone  { left: 485px; top: 756px; width: 340px; height: 78px; }
.d-s11 .svl-form--1 .svl-field--years  { left: 485px; top: 853px; width: 730px; height: 78px; }
.d-s11 .svl-form--1 .svl-field--submit { left: 489px; top: 965px; width: 730px; height: 63px; }
/* Mobile stacks them, and Figma puts the phone above the name. */
.m-s11 .svl-form--1 .svl-field--phone  { left: 37px; top: 13211px; width: 354px; height: 78px; }
.m-s11 .svl-form--1 .svl-field--name   { left: 37px; top: 13308px; width: 354px; height: 78px; }
.m-s11 .svl-form--1 .svl-field--years  { left: 37px; top: 13405px; width: 354px; height: 78px; }
.m-s11 .svl-form--1 .svl-field--submit { left: 37px; top: 13502px; width: 359px; height: 63px; }

/* The placeholder sits where Figma's label sits: pad by the gap between the
   field's right edge and the label's right edge. */
.svl-form--1 .svl-field--name  input { padding-right: 25px; }
.svl-form--1 .svl-field--phone input { padding-right: 23px; }
.svl-form--1 .svl-field--years input { padding-right: 25px; }

/* --- Section 9 heading (105:112) --- */

/* Hero-area form heading (182:13) */

/* --- Section 9: seven differentiator rows (105:113 … 105:157) --- */

/* Row geometry, straight from each node's own left/top. */

/* Vertical divider running down the row stack (105:125) */

/* --- Section 10: video still (106:160) --- */

/* --- Section 11: "מי עומד מאחורי הטכנולוגיה" + lead form 2 (106:163 … 106:177) --- */

.svl-form--2 .svl-field--name   { left: 860px; top: 8706px; width: 354px; height: 78px; }
.svl-form--2 .svl-field--phone  { left: 484px; top: 8706px; width: 340px; height: 78px; }
.svl-form--2 .svl-field--years  { left: 484px; top: 8803px; width: 730px; height: 78px; }
.svl-form--2 .svl-field--submit { left: 488px; top: 8915px; width: 730px; height: 63px; }
.svl-form--2 .svl-field--name  input { padding-right: 25px; }
.svl-form--2 .svl-field--phone input { padding-right: 23px; }
.svl-form--2 .svl-field--years input { padding-right: 25px; }
/* Figma centres the button label 11px right of the button's own centre. */
.svl-form--2 .svl-field--submit button { padding-left: 22px; }

/* --- Section 16/17: bottom band, closing CTA + lead form 3 (112:227 … 112:242) --- */

/* Figma gives this third panel no heading at all (112:234 holds only the four
   fields), so it reserves 76px above them where panels 1 and 2 reserve 135px.
   The site does carry a heading here, and at the shared 385px width it wrapped
   to two lines and ran 38px into the name and phone fields. One line at 700px
   fits the 76px Figma left, and the panel geometry stays untouched. */

.svl-form--3 .svl-field--name   { left: 873px; top: 14849px; width: 354px; height: 78px; }
.svl-form--3 .svl-field--phone  { left: 497px; top: 14849px; width: 340px; height: 78px; }
.svl-form--3 .svl-field--years  { left: 497px; top: 14946px; width: 730px; height: 78px; }
.svl-form--3 .svl-field--submit { left: 501px; top: 15058px; width: 730px; height: 63px; }
.svl-form--3 .svl-field--name  input { padding-right: 25px; }
.svl-form--3 .svl-field--phone input { padding-right: 23px; }
.svl-form--3 .svl-field--years input { padding-right: 25px; }
.svl-form--3 .svl-field--submit button { padding-left: 22px; }

/* --- Section 12: client photo wall (108:179 … 108:184) --- */

/* The five cards Figma pins at 59 / 391 / 723 / 1056 / 1389 — a 252px card on a
   332px pitch — are now driven by the shared carousel further down this file.
   Their geometry is preserved there as the card size and the 80px gap. */

/* --- Section 13: long testimonial (108:185 … 108:194) --- */

/* Figma puts `opacity-30` on this image — it is a backdrop behind the letter,
   not a portrait. Never transcribed, so the photo was competing with the copy
   laid over it. Same omission as the pricing watermark. */

/* --- Section 14: four benefit cards + photo (112:198 … 75:10) --- */

/* --- Section 15: WhatsApp screenshots (112:219 … 112:226) --- */

/* The five before/after shots Figma pins at 81 / 337 / 685 / 1132 / 1383 — heights
   194-199, widths 199 / 291 / 390 / 194 / 291, a consistent 57px apart. Each box
   matches its own photo's aspect (1:1, 3:2, 2:1, 1:1, 3:2). They are driven by the
   shared carousel further down this file, which keeps that rule: a fixed-height
   slot with the image at its natural width inside it. */

/* --- Section 16: pricing copy (106:162, 112:228 … 112:231) --- */
/* The watermark is a backdrop, not a picture — at full strength the white
   laurel competed with the copy sitting on top of it. 20%. The mobile carried
   0.3 from the frame; both are on the same value now so the section reads the
   same on either canvas. */

/* ==========================================================================
   MOBILE — 440 x 11658 (Figma node 133:465)
   A different layout, not a scaled desktop: its own coordinates throughout.
   ========================================================================== */

/* Hero block (133:466) — note this one is pure black, unlike the desktop's #212121. */

/* Background photo — mobile drops the desktop's mask and just scrims it. */

/* Glass pill + copy below the hero block (133:475 … 133:477) */

/* Section 2 — band, video, FDA, CTA ring (133:478 … 133:312) */

/* Figma insets the mark by 6.7% each side and 25% off the bottom. Expressed as
   width/height rather than left+right+top+bottom with width:auto — the auto
   form did not resolve against the rotated parent and the image rendered at
   its natural 51x62 instead of the 24x20 the frame allows. */

/* Rotated node: these values come from Figma's own CSS, not from get_metadata,
   which reports a different origin for anything with a rotation. */

/* ==========================================================================
   QA fixes
   ========================================================================== */

/* A <form> here is an unpositioned box at the canvas origin (its fields carry the
   real coordinates), so anything rendered in normal flow inside it — the error
   message — landed on top of the hero. Pin each message above its own panel. */
.svl-form-error {
	position: absolute;
	width: 1005px;
	margin: 0;
	padding: 8px 0;
	border-radius: 8px;
	background: rgba(255, 56, 60, 0.12);
	color: #ff383c;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 22px;
	line-height: 28px;
	text-align: center;
}
.svl-stage--desktop .svl-form-error {
	left: calc(50% - 0.5px);
	transform: translateX(-50%);
}
.svl-stage--desktop .svl-form-error--1 { top: 6174px; }
.svl-stage--desktop .svl-form-error--2 { top: 9146px; }
.svl-stage--desktop .svl-form-error--3 { top: 15348px; }

.svl-stage--mobile .svl-form-error {
	left: 50%;
	transform: translateX(-50%);
	width: 403px;
	font-size: 15px;
	line-height: 20px;
}

/* Invalid field feedback */
.svl-field input.svl-invalid {
	outline: 2px solid #ff383c;
	outline-offset: -2px;
}

/* Click targets over the round CTAs — kept as a transparent overlay so the
   composition of ring + label + arrow is untouched. */

/* Video facade: the whole plate is the button, and the play mark rides above it. */

/* Sibling combinator, not descendant. Figma composes the ring and the mark as
   their own canvas nodes, so they sit NEXT TO the plate rather than inside it —
   the descendant form matched nothing and the play button stayed on top of the
   running video. They are printed after the plate, so `~` reaches them. */

/* --- Mobile sections 3-7 (133:299 … 133:372) --- */

 
 
 
 
 
 

/* --- Mobile sections 8-17 (133:362 … 148:522) --- */

   /* see .d-aud-logo */

   

.svl-stage--mobile .svl-form .svl-field input,
.svl-stage--mobile .svl-form .svl-field button { font-size:14px; }
.svl-form--m1 .svl-field--name   { left:50px; top:3948px; width:343px; height:59px; }
.svl-form--m1 .svl-field--phone  { left:50px; top:4025px; width:343px; height:59px; }
.svl-form--m1 .svl-field--years  { left:50px; top:4102px; width:343px; height:59px; }
.svl-form--m1 .svl-field--submit { left:51px; top:4188px; width:342px; height:49px; }
.svl-form--m2 .svl-field--name   { left:50px; top:6089px; width:343px; height:59px; }
.svl-form--m2 .svl-field--phone  { left:50px; top:6166px; width:343px; height:59px; }
.svl-form--m2 .svl-field--years  { left:50px; top:6243px; width:343px; height:59px; }
.svl-form--m2 .svl-field--submit { left:51px; top:6329px; width:342px; height:49px; }
.svl-form--m3 .svl-field--name   { left:45px; top:11812px; width:343px; height:59px; }
.svl-form--m3 .svl-field--phone  { left:45px; top:11889px; width:343px; height:59px; }
.svl-form--m3 .svl-field--years  { left:45px; top:11966px; width:343px; height:59px; }
.svl-form--m3 .svl-field--submit { left:46px; top:12052px; width:342px; height:49px; }
.svl-stage--mobile .svl-field--name input,
.svl-stage--mobile .svl-field--phone input,
.svl-stage--mobile .svl-field--years input { padding-right: 24px; }
.svl-stage--mobile .svl-form-error--m1 { top:4480px; }
.svl-stage--mobile .svl-form-error--m2 { top:6621px; }
.svl-stage--mobile .svl-form-error--m3 { top:12344px; }

/* 133:409. Three values were wrong here: the centre (Figma anchors this at
   calc(50% - 11px), matching the photo below it, not at 50% — the heading sat
   11px right of the image it titles), the size (20px, not 19), and the leading
   (Figma says leading-[normal], which is ~24px at 20px, not 25). Width is the
   contained form of Figma's 1314px box; the centre is what positions the text. */

/* 133:408. The child <p> carries leading-[35px]; 21px came from the container's
   leading-[0]. Fourteen pixels a line too tight over the whole paragraph. */

/* 35px, not 21. Node 133:439 carries leading-[0] and its children carry
   leading-[35px] — the same value the desktop letter uses, even though the type
   is 17px here rather than 25. That wide leading is what the section is drawn
   around: at 21 the letter ended 477px above the photo and left a black void,
   at 35 it runs to 8046 and the photo starts at 8033. */

 
 
 
 

/* THE WHITE STRIP DOWN THE LEFT OF THE CLOSING SECTION.
   Every band SVG carries 30px of transparent padding around its artwork for the
   drop shadow: m-band-bottom.svg is a 501.068-wide viewBox whose path runs
   x=30…471.068. The element is the artwork's width (441.068), so the image has
   to be pulled 30px left for the paint to land on the element's edge.
   This rule carried the DESKTOP percentage, -1.69%, which is 30px of 1775 but
   only 7.45px of 441 — so the artwork started 22px inside the canvas and left a
   22px strip of bare white page down the left of the whole section, right where
   the closing copy sits. That is the "it's cut" that was reported four times.
   Percentages cannot be shared between the canvases here; the padding is an
   absolute 30px in every file, so the offset is written in px.
   Only the LEFT gap showed: the <img> is a replaced element with width:auto, so
   it renders at its intrinsic 501px and ignores the right inset entirely, which
   pushed the artwork's right edge past the canvas and covered that side.
   d-band-top (-1.74% of 1728.857), d-band-bottom (-1.69% of 1774.999) and
   m-band-top (-6.73% of 445.436) all already resolve to -30px. This was the one
   that did not. */

/* ==========================================================================
   MOBILE — finishing pass
   Three categories, each verified against the mobile frame's own Figma data
   before it was changed. Nothing here moves a composition; the coordinates
   above are still the source of truth.
   ========================================================================== */

/* --- 1. Opacity the first pass dropped ---------------------------------
   Two nodes in the mobile frame carry an opacity that never made it into the
   CSS, which is why both read as broken rather than as the background art
   they are. Figma is explicit about both. */

/* 133:436 — the EMP-TECH mark is a watermark that bleeds off the left edge on
   purpose (the desktop frame does the same at left:-1132/w:1650). At full
   opacity it competed with the pricing copy in front of it. The frame carries
   30%; both canvases are on 20% so the section reads the same either way. The
   inner image is sized exactly as Figma sizes it and clipped by the box. */

/* 133:438 — the testimonial's background texture sits at 60%. */

/* --- 2. Frame containment for oversized text boxes ---------------------
   Thirteen text nodes were drawn in boxes far wider than their own copy —
   m-ben-kicker is 1314px wide around 208px of text. Figma does not care; a
   browser does, because the box still takes pointer events and still reports
   a bounding rect that leaves the 440px frame, which makes the layout
   unmeasurable and blocks taps on whatever sits under it.

   Narrowing is safe here and was checked before it was applied: every one of
   these nodes breaks its lines on hard <br> (SVL_Render::text converts the
   Figma newlines), not on soft wrap, so no line can re-wrap. The anchor is
   preserved in every case — a centred box keeps its centre, a
   translateX(-100%) box keeps its right edge — so the text renders at exactly
   the same coordinates. Widths below are the measured ink width plus ~10%
   headroom for font-loading variance. */
   /* ink 208 */
   /* ink 260 */
   /* ink 130 */
/* 230, not 200: the widest line is 186px, not the 174px the widest bidi
   fragment reports — the Hebrew line "5 אורכי גל שונים" splits into separate
   runs for the digit and the words, and only their sum is the real line. */

/* Same defect, worse: the hero headline runs 421px of ink and clears each edge
   by 9.3px — the tightest line on the canvas. 18.5px brings it to ~390. */

/* Figma sets this at 17px inside a 1039px box, so on the 440px frame the first
   hard-broken line measures 405px of ink and sits 12px from each screen edge —
   Figma's own render of the mobile frame has it touching both edges, which is
   what "the words are cut above the form" was. The line cannot be narrowed
   (the break is a hard newline in the copy; a narrower box would wrap it into a
   ragged third line), so the type comes down instead: 16px puts the ink at
   ~381px and the margin at ~29px, in line with every other block on this canvas. */

   /* ink 276, 3 hard-broken lines */
   /* ink 334 */
   /* widest ink of the four is 284 */
   /* ink 232 / 206 */

/* --- 3. The WhatsApp series -------------------------------------------
   Figma lays the five screenshots out as one continuous row: widths
   169 / 247 / 332 / 165 / 247 separated by gaps of 49 / 46 / 48 / 49, so the
   row measures 1352px inside a 440px frame. Two of them sit at left:-765 and
   left:-547 and never appeared at all.

   That is not a mistake in the design — it is a row that cannot fit, drawn on
   a canvas that has no edge. It is the shared carousel now; see `.m-wa` and
   `.svl-wall--fit` further down. */

/* Second batch of oversized text boxes, same method: measured widest LINE
   (bidi fragments summed, not the widest fragment), narrowed to that plus
   headroom, anchor preserved. All break on hard <br>, so none can re-wrap. */
   /* widest line 169 */
   /* 319 */
   /* 292 */
   /* 354 */
   /* 394 — 435 would have crossed the left edge */

/* Right-aligned but positioned from the left with no transform, so narrowing
   alone would drag the right edge inward. left moves by the same amount the
   width loses (447-365 = 82; -44 + 82 = 38) to pin the right edge at 403. */
   /* 329 */

/* The badge label was given a 795px box around ~200px of text, and the box is
   rotated -2deg, so its sweep reached far past the frame. The plate behind it
   is 283px; the label now matches it. Both stay centre-anchored, so the text
   does not move. */

/* --- "לקוחות שלנו משתפות" carousel, both canvases ----------------------
   One behaviour, two geometries, and it advances ONE card per step.

   Figma draws both rows bleeding past the frame — the mobile one runs -75 to
   482 in a 440 frame. On a canvas with no edge that is fine; in a browser it is
   a photo sliced in half. Stepping one card at a time normally makes that worse,
   because the window edge lands wherever the arithmetic leaves it.

   So the geometry is arranged to make a cut impossible rather than avoided:

     - each card carries HALF the design gap as a margin, so its slot is exactly
       one pitch wide (mobile 97 + 2x9 = 115, desktop 252 + 2x40 = 332);
     - the TRACK is given a width that is a whole number of those slots
       (3 x 115 = 345, 4 x 332 = 1328) and centred in the frame.

   Every scroll position is then a whole number of pitches, and the window is a
   whole number of slots — so the visible set is always N complete cards, at
   every step, for any number of photos. The cards land on exactly the same
   pixels the previous page-based version put them on: 56.5 and 240. */
.svl-wall { position: absolute; }
.svl-wall__track {
	display: flex;
	box-sizing: border-box;     /* the vertical padding below is inside height:100% */
	height: 100%;
	margin-inline: auto;        /* the track is narrower than the frame; centre it */
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: none;
}
.svl-wall__track::-webkit-scrollbar { display: none; }

.svl-wall-photo {
	position: relative;
	overflow: hidden;
	scroll-snap-align: start;
	transition: transform .45s cubic-bezier(.22,.61,.36,1), box-shadow .45s;
	will-change: transform;
}
.svl-wall-photo img { width: 100%; height: 100%; object-fit: cover; }

/* Inherited from the other project, where the row was a strip of client photos
   and lifting the middle one read as "this is the current card". Here the design
   draws a row of equal boxes, and the lift did what it says: it made the first
   mobile card 200x566 in a row of 186x534, sticking out past the row on three
   sides. The class is still set — front.js uses it — but it no longer moves
   anything. */
.svl-wall-photo--active { transform: none; box-shadow: none; }

/* The wall is TALLER than the card row, and the track carries the difference as
   vertical padding. A horizontal scroll container clips vertically too — CSS
   computes `overflow-y: visible` to `auto` the moment the other axis scrolls —
   so the lifted card was being sliced: 19.4px off its top and 7.5px off its
   bottom on the desktop, 10.8px off the top on the phone. That is the cut.

   The padding is the room the lift needs, the wall grows by twice it, and its
   `top` moves up by exactly one, so every card still lands on the pixel the
   design puts it on: 9321 = 9297 + 24, 6532 = 6518 + 14. The wall's centre is
   unchanged too, which keeps the arrows where they were.

   scroll-margin cancels the card's own margin, so `snap-align: start` lands on
   the slot edge — the same position front.js scrolls to. */
   /* 174 + 2x14 */
   /* 3 x 115 */

 /* 453 + 2x24 */
 /* 4 x 332 */

/* --- The before/after results row, same carousel ------------------------
   One difference from the client photos: those are five identical 252x453
   boxes, these are five DIFFERENT boxes, each matching its own photo's aspect
   (1:1, 3:2, 2:1, 1:1, 3:2). A before/after pair cannot be cropped to a common
   shape without losing half of what it is there to show.

   So the slot is uniform — which is what the one-card-per-step geometry needs —
   and the image sits inside it at a fixed height and its natural width. The
   design's own widths come back on their own, because Figma sized each box to
   its photo: at height 195 a 2:1 photo is 390 wide, which is exactly what node
   112:223 is drawn at. A photo uploaded later gets the same treatment with no
   code change, and `max-width` keeps an unusually wide one inside its slot.

   Slot = widest card + the design's gap: 390 + 57 desktop, 332 + 48 mobile.
   The phone shows one at a time — a 332px card in a 440px frame leaves no room
   for a second, and for before/after detail that is the right call anyway. */
.svl-wall--fit .svl-wall-photo {
	display: flex;
	align-items: center;
	justify-content: center;
	overflow: visible;         /* the radius belongs to the image, not the slot */
}
.svl-wall--fit .svl-wall-photo img {
	width: auto;
	height: 100%;
	max-width: 100%;
	object-fit: contain;
	border-radius: 15px;
}

   /* 165 + 2x12 */
    /* 1 x 380 */

  /* 195 + 2x14 */
   /* 3 x 447 */

.svl-wall__arrow {
	position: absolute;
	top: 50%;
	display: grid;
	place-items: center;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.92);
	color: #9f6739;
	box-shadow: 0 3px 10px rgba(0, 0, 0, 0.22);
	cursor: pointer;
	z-index: 4;
	transition: transform .2s, background .2s, opacity .25s;
}
/* Scoped to the canvas, not to one carousel — both rows on a given canvas want
   the same control size. */
.svl-stage--mobile .svl-wall__arrow { width: 34px; height: 34px; margin-top: -17px; }
.svl-stage--mobile .svl-wall__arrow svg { width: 18px; height: 18px; display: block; }
.svl-stage--mobile .svl-wall__arrow--prev { left: 2px; }
.svl-stage--mobile .svl-wall__arrow--next { right: 2px; }

.svl-stage--desktop .svl-wall__arrow { width: 62px; height: 62px; margin-top: -31px; }
.svl-stage--desktop .svl-wall__arrow svg { width: 32px; height: 32px; display: block; }
.svl-stage--desktop .svl-wall__arrow--prev { left: 6px; }
.svl-stage--desktop .svl-wall__arrow--next { right: 6px; }

/* The ring stays as drawn because that is what suits the row. The tap area does
   not: on a 320px phone the canvas shrinks the 34px ring to 24px, well under the
   44px floor. This grows the target to a true 44px on every handset and leaves
   the drawn ring alone — the same --svl-scale trick the form inputs use. */
.svl-stage--mobile .svl-wall__arrow::before {
	content: '';
	position: absolute;
	left: 50%;
	top: 50%;
	width: calc( 44px / var(--svl-scale, 1) );
	height: calc( 44px / var(--svl-scale, 1) );
	transform: translate(-50%, -50%);
}
.svl-wall__arrow:hover  { background: #fff; transform: scale(1.1); }
.svl-wall__arrow:active { transform: scale(0.94); }
/* An arrow with nowhere to go fades rather than disappearing, so the control
   does not jump around as the row is driven. */
.svl-wall__arrow[disabled] { opacity: 0.3; cursor: default; }
/* One page of cards means nothing to drive — hide the whole control set. */
.svl-wall--static .svl-wall__arrow,
.svl-wall--static .svl-wall__dots { display: none; }

.svl-wall__dots {
	position: absolute;
	left: 0;
	right: 0;
	display: flex;
	justify-content: center;
	gap: 6px;
}
/* Each row sets its own offset: the wall grew by its lift padding, so what was
   -18 and -34 is now -4 and -10. */

.svl-stage--desktop .svl-wall__dots { gap: 10px; }
.svl-wall__dots span {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: rgba(0, 0, 0, 0.22);
	cursor: pointer;
	transition: background .3s, width .3s;
}
.svl-stage--desktop .svl-wall__dots span { width: 10px; height: 10px; }
.svl-wall__dots span.is-on { width: 16px; border-radius: 3px; background: #9f6739; }
.svl-stage--desktop .svl-wall__dots span.is-on { width: 28px; border-radius: 5px; }

@media (prefers-reduced-motion: reduce) {
	.svl-wall__track { scroll-behavior: auto; }
	.svl-wall-photo, .svl-wall__arrow, .svl-wall__dots span { transition: none; }
	.svl-wall-photo--active { transform: none; }
}

/* --- Rendered-size floors -------------------------------------------
   The mobile canvas scales by viewport/440, so on a 360px phone every drawn
   size lands at 78% of itself. For most of the page that is the point — the
   composition scales as a whole. For two things it is a defect:

   1. A focused input under 16px makes iOS zoom the page, and the page then
      slides sideways. This is the horizontal slide reported on real handsets;
      it never appears in a desktop browser at a narrow window, which is why
      measuring the document width alone did not find it.
   2. A tap target under 44px is below the accessibility floor.

   --svl-scale is published by front.js on the stage. Dividing by it cancels the
   canvas transform for that property only, so these land at a true rendered
   size on every phone while everything around them stays as drawn. */
.svl-stage--mobile {
	--svl-scale: 1;
}
.svl-stage--mobile .svl-form .svl-field input {
	/* Drawn LARGER so the canvas transform lands it at exactly 16px rendered. */
	font-size: calc( 16px / var(--svl-scale) );
}

/* The button must NOT follow the inputs here, and used to.
   iOS zooms on focusing an input, select or textarea under 16px — never on a
   button, which cannot be focused into that state. So the button was paying the
   cost of a protection it never needed: dividing by the scale drew its label at
   17.6px on a 400px phone and 23.1px on a 320px one, and "אני רוצה לשמוע פרטים
   על ״הצוללת״" only stays on one line up to 16.5px in a 342px button. It broke
   to two lines below ~380px wide and spilled 8px out of the button by 320px —
   on the one control the whole page exists to get pressed.
   Capped at the design's own 16px, so it can still grow toward a true 16px on a
   wide phone but can never reach a size that wraps. */
.svl-stage--mobile .svl-form .svl-field button {
	font-size: 16px;
	font-size: min( calc( 16px / var(--svl-scale) ), 16px );
}
@supports not (font-size: calc(1px / 1)) {
	.svl-stage--mobile .svl-form .svl-field input,
	.svl-stage--mobile .svl-form .svl-field button { font-size: 16px; }
}

/* --- Audience band, rebuilt in CSS, both canvases (112:218 / 133:362) ---
   Neither exported SVG can render correctly inside an <img>. Each has three
   layers: a white base rect, the gradient WEDGE, and a white 30% rect carrying
   `backdrop-filter: blur(300px)`. That last one lives in a <foreignObject>,
   which SVG-in-<img> restricted mode drops — so both the wash and, more
   importantly, the 300px blur are lost. Without the blur the wedge stays a hard
   diagonal and the white base shows through above and below it: the band read
   as a sloping ramp with white triangles in the corners.

   A 300px blur over a 605px-tall shape erases that wedge completely. Figma's
   own render of both nodes is an even gradient, corner to corner, with no
   diagonal anywhere. These stops are sampled from that render rather than
   recomputed from the authored ones, because the blur mixes the white base in
   and no formula over `#9F6739 -> #CEC5BC -> #786452` reproduces the result.

   The 10px #9F6739 rules top and bottom are the SVG's own `mask` path. */

/* The mobile band is a 716px element pinned to the frame's right edge, so only
   its right 440px is ever on screen — element 38.55% to 100%. The sampled stops
   are mapped onto that span; the remainder holds the first colour and never
   renders. This is why the ramp looks so much gentler than the desktop's: the
   phone only ever sees the middle third of the same gradient. */

/* An empty logo slot is a #d9d9d9 placeholder in the frame — the designer had
   not received the client logos yet. On a live page four blank grey squares
   read as broken images, and they sit in the one section built to earn trust
   ("הן כבר עשו את זה"). A slot with no image is hidden; :has() means it comes
   back on its own the moment a logo is set in the editor, with no code change. */

/* --- Section 10 as a second video plate (106:160 / 133:464) ---------------
   Figma drew this one flat, with the poster carrying a screenshot of a player
   baked into it. It is a real plate now: the image is the poster and the link
   set in the editor plays in place, the same facade the hero plate uses.
   Figma has no play mark here to match, so the mark is centred in the box
   rather than placed by coordinate, and it only appears once a link exists —
   a play button over a plate that cannot play is worse than no button. */

.svl-play {
	position: absolute;
	left: 50%;
	top: 50%;
	width: 127px;
	height: 128px;
	margin: -64px 0 0 -63.5px;
	pointer-events: none;
	z-index: 2;
	transition: transform .25s cubic-bezier(.22,.61,.36,1);
}

/* Two classes, because `.d-still img` / `.m-still img` already claim every
   image in the box for the poster (100%/100%/cover) and would swallow these. */
.svl-play .svl-play__circle { position: absolute; inset: 0; width: 100%; height: 100%; }
.svl-play .svl-play__tri {
	position: absolute;
	left: 50%;
	top: 50%;
	/* The mark's own 62.35x51.75, as a share of the 127x128 ring — the same
	   proportion the hero plate draws. Rotated because the exported polygon
	   points up. */
	width: 49.1%;
	height: 40.4%;
	object-fit: fill;
	transform: translate(-50%, -50%) rotate(90deg);
}

.svl-video-playing .svl-play { display: none; }

/* --- {{ … }} accent runs -------------------------------------------------
   SVL_Render::inline() turns {{text}} into this span. It rides the same custom
   property as the accent heading control, so the editor's gold picker moves
   these runs with it, and falls back to the design's own #9f6739 when unset. */
.svl-accent { color: var( --svl-title-accent, #9f6739 ); }

/* Placeholder until the design is written in. */

/* ==========================================================================
   DESKTOP — 1728 x 15287 (Figma node 509:3)
   Every value below is a literal Figma coordinate.
   ========================================================================== */

/* --- Section 1: hero (502:6) --------------------------------------------- */
.d-hero {
	position: absolute;
	left: 0;
	top: 0;
	width: 1728px;
	height: 1194px;
	overflow: hidden;
	border-top-left-radius: 15px;
	background: #fff;
}
/* The photo is drawn at 113.38% and 46% opacity, both Figma's own numbers.
   Opacity sits on the wrapper rather than the img so the frame still clips. */
.d-hero__bg { position: absolute; inset: 0; opacity: 0.46; overflow: hidden; pointer-events: none; }
.d-hero__bg img { position: absolute; left: -0.02%; top: -0.02%; width: 113.38%; height: 100%; max-width: none; }

/* Dome behind the portrait (503:18). The 2000px top corners are what make the
   arch: at 586px wide the radius simply resolves to a half-round top. */
.d-hero__arch {
	position: absolute;
	left: 1016px;
	top: 311px;
	width: 586px;
	height: 708px;
	border-radius: 2000px 2000px 38px 38px;
	background: linear-gradient( 127.019deg, #f0a5b6 0%, #9e5c6b 79.314% );
	box-shadow: 0 10px 30px 0 rgba( 195, 160, 85, 0.3 ), inset 0 4px 30px 10px rgba( 0, 0, 0, 0.25 );
	pointer-events: none;
}

.d-hero__glass {
	position: absolute;
	left: 84px;              /* wraps the subheadline with even 30px padding (10/2026) */
	top: 550px;
	width: 742px;
	height: 130px;
	border-radius: 15px 0 15px 15px;
	background: linear-gradient( to right, rgba( 240, 165, 182, 0.45 ), rgba( 240, 165, 182, 0.12 ) );
	box-shadow: 0 6px 20px rgba( 158, 92, 107, 0.15 );
	backdrop-filter: blur( 10px );
	-webkit-backdrop-filter: blur( 10px );
}

.d-hero__photo { position: absolute; left: 836px; top: 188px; width: 829px; height: 829px; }
.d-hero__photo img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; }

/* Gold gradient type: the gradient is painted through the glyphs, so the text
   itself has to be transparent. A colour here would hide the gradient. */
/* 10/2026: the opening line was promoted from a handwritten accent to the
   page's real headline — Brutalist Bold like every section title, keeping the
   gold gradient. The thank-you page restores the handwritten look below. */
/* The HOOK — the small gold eyebrow line above the main headline. Restored to
   the original handwritten Gveret Levin look (Ariel: "הכותרת למעלה זה הוק"). */
.d-hero__gold {
	position: absolute;
	left: calc( 50% - 475px );
	top: 98px;               /* the hook's own place at the top, clear of the photo */
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 35px;
	line-height: normal;
	white-space: nowrap;
	background: linear-gradient( to right, #8c6e2e 0%, #c3a055 53.846%, #8c6e2e 100% );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* The SUBHEADLINE — the line under the main headline. Ariel asked to change its
   font and shrink it: Assistant (clean), smaller than the old 30px Brutalist.
   The bold half is whatever the editor wraps in ** markers. */
.d-hero__pill-text {
	position: absolute;
	right: 932px;
	top: 580px;
	width: 682px;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 25px;
	line-height: 1.4;
	color: var( --svl-title-dark, #000 );
	text-align: right;
}
.d-hero__pill-text strong { font-weight: 700; }

.d-hero__cta-plate { position: absolute; left: 271px; top: 766px; width: 536px; height: 70px; }
.d-hero__cta-plate img { display: block; width: 100%; height: 100%; }
.d-hero__cta-label {
	position: absolute;
	left: 332px;               /* where the arrow disc ends, in canvas coordinates */
	width: 475px;              /* to the plate's far edge */
	top: 787px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 26px;           /* 28 filled 91% of the strip and read as cramped */
	line-height: normal;
	color: #fff;
	text-align: center;
}
/* Figma mirrors the arrow and turns it 46.25deg. */
.d-hero__cta-arrow {
	position: absolute;
	left: 234px;
	top: 753px;
	width: 98.394px;
	height: 98.394px;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
}
.d-hero__cta-arrow span { display: block; width: 69.592px; height: 69.592px; transform: rotate( 46.25deg ) scaleY( -1 ); }
.d-hero__cta-arrow img { display: block; width: 100%; height: 100%; }

/* The MAIN HEADLINE — "כמה זמן עוד תדחי..." Ariel: "התת כותרת זה הכותרת ראשית".
   Big and bold, the dominant line in the hero, under the gold hook. */
.d-hero__body {
	position: absolute;
	left: calc( 50% - 57px );
	transform: translateX( -100% );
	top: 435px;              /* tightened: headline just above the subheadline box */
	width: 796px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 46px;
	line-height: 1.15;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: right;
}

/* One transparent hit area over the whole button: plate, label and arrow are
   three separate nodes in Figma and none of them is clickable on its own. */
.d-hero__hit { position: absolute; left: 234px; top: 753px; width: 573px; height: 98px; display: block; }

/* ==========================================================================
   MOBILE — 440 x 15040 (Figma node 679:247)
   Its own layout, not a scaled desktop.
   ========================================================================== */

.m-hero {
	position: absolute;
	left: 0;
	top: 0;
	width: 440px;
	height: 1023px;
	overflow: hidden;
	border-top-left-radius: 15px;
	background: #fff;
}
.m-hero__bg { position: absolute; inset: 0; opacity: 0.46; overflow: hidden; pointer-events: none; }
.m-hero__bg img { position: absolute; left: -0.07%; top: -0.02%; width: 336.01%; height: 100%; max-width: none; }

.m-hero__gold {
	position: absolute;
	left: calc( 50% + 0.5px );
	transform: translateX( -50% );
	/* Figma sets this line at 17px in a 257px box (node 678:233), which leaves
	   the page opening on a line SMALLER than the paragraph under it at 20px.
	   Asked for it to lead instead, so: 24px, a fifth larger than the body.
	   The box widens to 360 to hold it on two lines and the whole block moves
	   up 15px into the empty space above it — at 24px in the old position the
	   second line ran into the paragraph. Ink now sits 21..80 with the
	   paragraph starting at 93. Desktop is untouched: its 35px heading is
	   already well clear of its 26px body. */
	top: 12px;               /* the hook's own place at the top */
	width: 380px;
	/* HOOK — restored to the small gold handwriting eyebrow. */
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 23px;
	line-height: 1.15;
	text-align: center;
	background: linear-gradient( to right, #8c6e2e 0%, #c3a055 53.846%, #8c6e2e 100% );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.m-hero__body {
	position: absolute;
	left: calc( 50% - 0.5px );
	transform: translateX( -50% );
	top: 175px;              /* tightened: headline just above the subheadline box */
	width: 403px;
	/* MAIN HEADLINE — big and bold under the hook. */
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 26px;
	line-height: 1.2;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}
.m-hero__glass {
	position: absolute;
	left: 18px;
	top: 266px;
	width: 404px;
	height: 110px;          /* fitted, and clears the button below */
	border-radius: 15px 0 15px 15px;
	background: linear-gradient( to right, rgba( 240, 165, 182, 0.45 ), rgba( 240, 165, 182, 0.12 ) );
	box-shadow: 0 6px 20px rgba( 158, 92, 107, 0.15 );
	backdrop-filter: blur( 10px );
	-webkit-backdrop-filter: blur( 10px );
}
.m-hero__pill-text {
	position: absolute;
	left: 50%;
	transform: translateX( -50% );
	top: 286px;
	width: 380px;
	/* SUBHEADLINE on mobile: Assistant, slightly bigger to fill its box. */
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 17px;
	line-height: 1.4;
	color: var( --svl-title-dark, #000 );
	text-align: center;
}
.m-hero__pill-text strong { font-weight: 700; }

.m-hero__cta-plate { position: absolute; left: 46px; top: 384.29px; width: 354px; height: 47px; }
.m-hero__cta-plate img { display: block; width: 100%; height: 100%; }
.m-hero__cta-label {
	position: absolute;
	left: calc( 50% + 162px );
	transform: translateX( -100% );
	top: 398px;
	width: 286px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 18px;
	line-height: normal;
	color: #fff;
	text-align: right;
}
.m-hero__cta-arrow {
	position: absolute;
	left: 21.64px;
	top: 376px;
	width: 64.972px;
	height: 64.972px;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
}
.m-hero__cta-arrow span { display: block; width: 45.953px; height: 45.953px; transform: rotate( 46.25deg ) scaleY( -1 ); }
.m-hero__cta-arrow img { display: block; width: 100%; height: 100%; }

/* Figma clips the photo and its dome to a 400x473 window, which is what lets
   the portrait sit at -60 without spilling into the section beside it. */
.m-hero__photo-wrap { position: absolute; left: 20px; top: 449px; width: 400px; height: 473px; overflow: hidden; }
.m-hero__arch {
	position: absolute;
	left: 40px;
	top: 68px;
	width: 325px;
	height: 393px;
	border-radius: 2000px 2000px 38px 38px;
	background: linear-gradient( 126.995deg, #f0a5b6 0%, #9e5c6b 79.314% );
	box-shadow: 0 10px 30px 0 rgba( 195, 160, 85, 0.3 ), inset 0 4px 30px 10px rgba( 0, 0, 0, 0.25 );
}
.m-hero__photo { position: absolute; left: -60px; top: 0; width: 460px; height: 460px; }
.m-hero__photo img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; }

/* The button breathes with light rather than with size.
   It used to scale up and down, which on a plate this wide reads as a flicker —
   the whole shape jumps and the eye catches the edges moving. A glow says the
   same "press me" without anything changing position.
   drop-shadow, not box-shadow: the plate is an SVG with rounded ends, and
   box-shadow would halo the element's rectangle instead of the shape itself.
   Two shadows stacked — a tight bright one and a wide soft one — so the light
   falls off the way real light does instead of stopping at one hard radius.
   The colour is the plate's own gold (#e8bf69, the light stop of its gradient),
   so it reads as the button glowing rather than as a coloured ring behind it. */
@keyframes svl-cta-glow {
	from {
		filter: drop-shadow( 0 0 3px rgba( 232, 191, 105, 0.25 ) )
		        drop-shadow( 0 0 10px rgba( 232, 191, 105, 0.10 ) );
	}
	to {
		filter: drop-shadow( 0 0 8px rgba( 232, 191, 105, 0.70 ) )
		        drop-shadow( 0 0 26px rgba( 232, 191, 105, 0.35 ) );
	}
}
.d-hero__cta-plate,
.m-hero__cta-plate,
.m-s13__cta-plate {
	animation: svl-cta-glow 2.4s ease-in-out infinite alternate;
	/* The plate is behind the label and the arrow, which are later siblings, so
	   the stacking context a filter creates does not lift it over them. */
	will-change: filter;
}
/* Someone who asked their OS for less motion gets the button at its bright
   state, lit but still. */
@media ( prefers-reduced-motion: reduce ) {
	.d-hero__cta-plate,
	.m-hero__cta-plate,
	.m-s13__cta-plate {
		animation: none;
		filter: drop-shadow( 0 0 6px rgba( 232, 191, 105, 0.45 ) );
	}
}

.m-hero__hit { position: absolute; left: 21px; top: 376px; width: 379px; height: 65px; display: block; }

/* ==========================================================================
   Stage layout — a full-screen hero above a fixed-coordinate canvas
   ========================================================================== */

/* The hero owns the first screen. 100svh, not 100vh: on a phone the URL bar
   hides on scroll and vh follows it, which would resize the hero under the
   reader's thumb. svh is the small viewport height and stays put. */
.svl-hero-stage {
	position: relative;
	width: 100%;
	/* The taller of one screen and the hero's own drawn height — the same max()
	   JS writes. A flat 100vh was 194px short of the desktop hero, and
	   everything below it moved by that much the moment fit() ran. */
	height: 100vh;
	height: max( 100svh, var( --svl-hero-drawn, 100vh ) );
	overflow: hidden;
}
/* Scaled to COVER by fit(); whichever axis overflows is centred, so the crop
   falls evenly on both edges instead of eating one of them. */
.svl-hero-canvas {
	position: absolute;
	left: 0;
	/* Centred in whatever room the block has: zero when the hero is the taller
	   of the two, half the difference when the screen is. */
	top: calc( ( 100% - var( --svl-hero-drawn, 100% ) ) / 2 );
	direction: ltr;
	transform-origin: top left;
}

/* No clipping here. Figma puts the video band at y=1037 and its title at 1122,
   both ABOVE the hero s 1194 — so a stage that starts at the hero s end and
   hides its overflow cut the band s whole upper chevron off and swallowed the
   title completely. .svl-stage above already clips the canvas horizontally,
   which is what the hidden was there for. */
/* --- The page at its right size before a line of JS has run ---------------
   Everything below is what fit() computes, stated in CSS so the browser has it
   in its FIRST layout pass. Leaving it all to JS meant the design was laid out
   at full size and then moved: the browser scored that moment as a layout shift
   of 1.0000 on a phone — the entire document, under a reader who had already
   started scrolling.

   The scale is `min( 1, viewport / designWidth )`, and CSS can say that because
   a length over a length is a number: `calc( 100vw / ( w * 1px ) )`. The two
   design figures are printed unitless by stage() for exactly this.

   fit() still has the last word — it writes --svl-scale as an inline style,
   which beats this rule, and it knows the stage's real width where this only
   knows the window's. It simply no longer has the first word.

   No cap is needed on the heights: the scale is already capped at 1. An earlier
   version put `max-height` here to do that job and it clamped the height JS
   sets — the questions make the page 1,663px taller than the constant, and all
   of it was being thrown away. */
.svl-stage {
	--svl-scale: min( 1, calc( 100vw / ( var( --svl-design-w, 1 ) * 1px ) ) );
	--svl-hero-drawn: calc( var( --svl-hero-h, 0 ) * var( --svl-scale, 1 ) * 1px );
}
.svl-canvas,
.svl-hero-canvas {
	transform: scale( var( --svl-scale, 1 ) );
	left: calc( ( 100% - var( --svl-design-w, 1 ) * var( --svl-scale, 1 ) * 1px ) / 2 );
}
.svl-rest-stage {
	position: relative;
	width: 100%;
	height: calc( var( --svl-rest-h, 0 ) * var( --svl-scale, 1 ) * 1px );
}

/* Pulled up by exactly the hero's design height so every section below keeps
   Figma's own top value. Written by stage() as an inline style, because the
   number differs per canvas. */
.svl-rest {
	position: absolute;
	left: 0;
}

/* The hero's ground. #faf6f1 is the design's own cream, sampled off the export
   at the 46% opacity Figma draws it with, so the area around the contained
   canvas is the same colour as the area inside it. */
.svl-hero-stage { background: #faf6f1; }
.svl-hero-stage::before {
	content: '';
	position: absolute;
	inset: 0;
	background-image: var( --svl-hero-bg );
	background-size: cover;
	background-position: center;
	opacity: 0.46;
	pointer-events: none;
}
/* Drawn by the stage now — keeping it here too would double the opacity where
   the two overlap and darken the middle of the screen. */
.d-hero__bg,
.m-hero__bg { display: none; }
/* The hero's own plate must not hide the stage behind it. */
.d-hero,
.m-hero { background: transparent; }
/* ======================================================================
   Section 2 — "אף אחת לא בוחרת להישאר" (576:2)

   The frame is 1728x1351 at page y 3571, clipped to a 30px radius. Every
   `top` below is 3571 + the child's own top inside the frame, because this
   frame is position:absolute, so it is the containing block for everything
   inside it and the children below carry Figma's IN-FRAME tops — unlike the
   loose sections on the canvas, which carry page tops.
   ====================================================================== */
.d-s2 {
	position: absolute;
	left: 0;
	top: 4191px;
	width: 1728px;
	height: 1351px;
	overflow: hidden;
	border-radius: 30px;
}

/* Byte-identical export to the hero's background — same file, drawn at 50%
   here instead of 46%. The offsets are Figma's own. */
.d-s2__bg {
	position: absolute;
	inset: 0;
	opacity: 0.5;
	overflow: hidden;
	border-radius: 30px;
	pointer-events: none;
}
.d-s2__bg img {
	position: absolute;
	left: -0.02%;
	top: -0.02%;
	width: 113.38%;
	height: 100%;
	max-width: none;
}

.d-s2__title1,
.d-s2__title2 {
	position: absolute;
	left: 50%;
	transform: translateX( -50% );
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 37px;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}
.d-s2__title1 { top: 91px; }
.d-s2__title2 { top: 543px; }

.d-s2__body {
	position: absolute;
	left: 50%;
	transform: translateX( -50% );
	top: 183px;
	width: 792px;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
}
/* Figma sets one paragraph of this block in ExtraBold AND in #9e5c6b. The
   editor marks it with the same ** it uses everywhere else and this element
   supplies both halves, so nobody has to learn a second convention. */
.d-s2__body strong {
	font-weight: 800;
	color: var( --svl-title-accent-2, #9e5c6b );
}

/* --- the testimonials row -------------------------------------------------
   Figma draws four 283x534 placeholders at left 182 / 531 / 880 / 1257. The
   first three are a clean 349 pitch; the fourth is 28px out and one of the
   four sits 7px high. Those are placement slips in a placeholder row, not a
   rhythm — and the row was asked to hold as many photos as the client wants,
   which needs one pitch anyway. So: pitch 349, taken from the design's own
   spacing, and the row starts exactly where Figma starts it.

   The geometry that keeps a card from ever being sliced is the shared one:
   each card carries half the gap (33) as a margin so its slot is one pitch,
   and the track is a whole number of slots wide (4 x 349 = 1396). Every
   scroll position is then a whole number of pitches and the window is a whole
   number of slots. scroll-margin cancels the card's own margin so
   `snap-align: start` lands on the slot edge, which is where front.js
   scrolls to.

   The track carries the lift as vertical padding: a horizontal scroll
   container clips the other axis too, so without it the active card's 6px
   rise and 6% scale would be shaved off. The wall grows by twice the padding
   and its top moves up by one, so the cards still land on 4223. */
.d-s2-wall {
	left: 515px;               /* two slots, centred on the 1728 canvas */
	top: 652px;
	width: 698px;              /* 2 x 349 */
	height: 534px;
}
.d-s2-wall .svl-wall__track { padding-block: 0; }
.d-s2-wall .svl-wall-photo {
	flex: 0 0 283px;
	height: 534px;
	margin-inline: 33px;       /* half of the 66px design gap, each side */
	scroll-margin-inline-start: 33px;
	border-radius: 0;          /* Figma's placeholders are square-cornered */
}

.d-s2__strip {
	position: absolute;
	left: calc( 50% + 0.5px );
	transform: translateX( -50% );
	top: 1239px;
	width: 1675px;
	height: 77px;
	/* 576:23 is exported as an SVG whose whole content is a foreignObject with
	   backdrop-filter: blur( 20px ) under a white 38% fill. Inside an <img> that
	   blur composites against nothing, so the frost is lost and only the flat
	   white rect survives. Drawn as a real element it does what the design says. */
	border-radius: 10px;
	background: rgba( 255, 255, 255, 0.38 );
	backdrop-filter: blur( 20px );
	-webkit-backdrop-filter: blur( 20px );
}

/* The gradient runs through the glyphs, so the text itself is transparent. */
.d-s2__strip-text {
	position: absolute;
	left: calc( 50% + 407px );
	transform: translateX( -100% );
	top: 1263px;
	width: 809px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 30px;
	line-height: normal;
	text-align: right;
	/* Sampled off Figma's own render: #884f5b at the left end of the line and
	   #8b6d2e at the right. Physical direction, not reading direction. */
	background: linear-gradient( to right, #88505d, #8c6e2e );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* ======================================================================
   Section 3 — the video band

   These are loose nodes on the Figma canvas, not a frame, so `.d-s3` is
   deliberately NOT positioned: its children resolve against the canvas and
   carry page tops, the way section 2's children carry in-frame tops because
   section 2 IS a frame.
   ====================================================================== */
.d-s3 { position: static; }

/* 530:2, traced off the render rather than exported.

   Two straight edges meeting at a rounded apex — straight to within 0.3px over
   600px on both sides, then rounding off over the middle 456px to sit 13px
   below where the lines would have met. A polygon would come to a point there
   and it is visible; the quadratic's midpoint is (P0 + 2C + P2)/4, so the
   control point is pinned to the apex the render actually shows.

   The mobile band is NOT this shape at a different size. It is a lens, both
   edges a single parabola. See .m-s3__band.

   It carries .svl-bleed so it reaches the window edges past the scale cap. The
   tag is only safe because the element has no children — scaleX on a box that
   holds copy stretches the copy. */
.d-s3__band {
	position: absolute;
	left: 0;
	top: 1037px;
	width: 1728px;
	height: 756.27px;
	display: block;
	/* Both bands carry the same shadow, solved off the render: it peaks at 18%
	   black just under the edge, is at 9% 13px down and gone by 36px. A Gaussian
	   that does that is a 0.36 alpha at blur 28 offset 4. */
	filter: drop-shadow( 0 4px 28px rgba( 0, 0, 0, 0.36 ) );
}

.d-s3__title {
	position: absolute;
	left: 626px;
	top: 1122px;
	width: 476px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	/* Solved against the LAID-OUT width, not a Range rect: the string measures
	   13.56px per px of font size, and Figma draws it 475 wide. 475 / 13.56 = 35.
	   The first solve used Range.getClientRects(), which measures something else
	   — at 40px the line is 542 wide and wrapped to two inside a 476px box, which
	   is what put the second line behind the video plate. */
	font-size: 35px;
	line-height: normal;
	color: var( --svl-title-accent, #8c6d2e );
	text-align: center;
}

/* 531:5. Fill and radius measured off the render: #383838, and the left edge
   turns dark 30px down from the top row, which is a 30px corner. */
.d-s3__plate {
	position: absolute;
	left: 451px;
	top: 1203px;
	width: 827px;
	height: 466px;
	border-radius: 30px;
	background: #383838;
	overflow: hidden;
}
.d-s3__plate iframe,
.d-s3__plate video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* 531:6. The gradient is vertical — sampled left, centre and right at the same
   height and all three read #bb7988. */
.d-s3__play {
	position: absolute;
	left: 350px;                /* 801 - 451 */
	top: 154px;                 /* 1357 - 1203 */
	width: 127px;
	height: 128px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: linear-gradient( #f0a6b6, #88505d );
	cursor: pointer;
	transition: transform .25s cubic-bezier(.22,.61,.36,1);
}
.d-s3__plate:hover .d-s3__play { transform: scale( 1.06 ); }

/* 531:7. Figma's bounding box for this polygon sits entirely to the right of
   the circle's centre, which a rotated regular-polygon's box does; the render
   shows it centred with the usual optical nudge, and that is what is drawn
   here — 7.5px right of centre, which is where the render puts it. */
.d-s3__tri {
	position: absolute;
	left: 46.5px;
	top: 36.5px;
	width: 0;
	height: 0;
	border-left: 49px solid #fff;
	border-top: 26.5px solid transparent;
	border-bottom: 26.5px solid transparent;
}

/* --- mobile ------------------------------------------------------------- */
.m-s3 { position: static; }

/* 679:250. A lens, not the desktop chevron: both edges are a single parabola
   corner to corner, which fits the traced edge to under a pixel across the
   whole width. The soft grey halo under it is Figma's drop shadow — the node's
   box is 457px tall against a 446px shape, and the difference is the spread. */
.m-s3__band {
	position: absolute;
	left: 0;
	top: 914.5px;
	width: 440px;
	height: 446px;
	display: block;
	/* Both bands carry the same shadow, solved off the render: it peaks at 18%
	   black just under the edge, is at 9% 13px down and gone by 36px. A Gaussian
	   that does that is a 0.36 alpha at blur 28 offset 4. */
	filter: drop-shadow( 0 4px 28px rgba( 0, 0, 0, 0.36 ) );
}

.m-s3__title {
	position: absolute;
	left: 57px;
	top: 981px;
	width: 318px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 20px;              /* same solve on the same basis: 272 / 13.56 */
	line-height: normal;
	color: var( --svl-title-accent, #947433 );
	text-align: center;
}

.m-s3__plate {
	position: absolute;
	left: 46px;
	top: 1030px;
	width: 350px;
	height: 226px;
	border-radius: 30px;
	background: #383838;
	overflow: hidden;
}
.m-s3__plate iframe,
.m-s3__plate video { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* 679:253 really is an ellipse here — 54 wide by 63 tall in both the node data
   and the render, not a circle. */
.m-s3__play {
	position: absolute;
	left: 148px;                /* 194 - 46 */
	top: 74px;                  /* 1104 - 1030 */
	width: 54px;
	height: 63px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: linear-gradient( #f0a6b6, #88505d );
	cursor: pointer;
}
.m-s3__tri {
	position: absolute;
	left: 20.5px;
	top: 19.5px;
	width: 0;
	height: 0;
	border-left: 20px solid #fff;
	border-top: 11.5px solid transparent;
	border-bottom: 11.5px solid transparent;
}

/* ======================================================================
   Section 2 on mobile — "אף אחת לא בוחרת להישאר"

   The node map came back truncated above this point, so unlike the desktop
   frame there is no 576:2 to read here. Everything below was measured off the
   full-page render: the panel by walking its tint against the white page, the
   text by row-profiling the ink, the sizes by solving each string's px-per-
   font-px against a known-size line on the desktop canvas.

   Same copy as desktop, different geometry — not the desktop frame narrowed.
   ====================================================================== */
.m-s2 {
	position: absolute;
	left: 0;
	top: 3733px;
	width: 440px;
	height: 1286px;
	overflow: hidden;
	border-radius: 30px;
}
/* The same export the hero and the desktop panel use, but fainter than the
   desktop panel s 0.50. Solved on the mean over the whole panel rather than on
   one sample: Figma crops the artwork differently here, so any single point
   answers with the crop rather than with the opacity. */
.m-s2__bg { position: absolute; inset: 0; opacity: 0.26; overflow: hidden; pointer-events: none; }
.m-s2__bg img { position: absolute; left: -0.02%; top: -0.02%; width: 113.38%; height: 100%; max-width: none; }

.m-s2__title1,
.m-s2__title2 {
	position: absolute;
	left: 0;
	width: 440px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}
/* Ink starts 8px below the box at 37px in this face, so the box tops are the
   measured ink tops less that, scaled: 3164 - 5 and 3572 - 8. */
.m-s2__title1 { top: 90px;  font-size: 25px; }   /* ink lands on Figma's 3164 */
.m-s2__title2 { top: 491px; font-size: 37px; }   /* 3564 - 3073 */

.m-s2__body {
	position: absolute;
	left: 10px;
	top: 146px;
	width: 420px;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	/* Solved twice off desktop's 22px: 394 / 19.68 and 248 / 12.36 both give 20. */
	font-size: 20px;
	/* `normal` gives 26.36px here and Figma sets the lines 26.0 apart — over the
	   block s eleven slots that is 4px of drift, enough to see against the
	   design. */
	line-height: 26px;
	color: #000;
	text-align: center;
}
.m-s2__body strong {
	font-weight: 800;
	color: var( --svl-title-accent-2, #9e5c6b );
}

/* Two cards visible instead of four, and narrower — 186 wide against desktop's
   283, at the same 534 height and the same 66px gap. Same slot geometry: half
   the gap as a margin so the slot is one pitch, and a track that is a whole
   number of slots. */
/* The row bleeds past both edges of the panel, which is what Figma draws: the
   first card s ink starts at x=1, so its slot — the card plus half the gap —
   starts at -32. The panel clips it, and that clip IS the design. The arrows
   are pulled back inside the visible width below. */
/* ---------- Section 2's wall is videos, not photos ----------------------
   Figma drew four tall placeholders; the client's footage is landscape. A 16:9
   video inside a 283x534 card fills a third of its height, so the card takes
   the video's shape and two of them span the row the four used to.
   The cards are shorter than the band they sit in, so they centre in it and
   nothing around the section moves. */
.svl-wall--video .svl-wall__track { align-items: center; }
.svl-wall-video {
	position: relative;
	overflow: hidden;
	cursor: pointer;
	background: #ded9d2;
	box-shadow: 0 10px 30px rgba( 0, 0, 0, 0.18 );
}
.svl-wall-video img {
	display: block;
	width: 100%;
	height: 100%;
	/* cover, because hqdefault — the fallback still — is 4:3 with letterbox bars
	   baked in, and cropping to the card's 16:9 removes them. */
	object-fit: cover;
}
/* The same disc and triangle as the video plate in section 3, at 45% of its
   size, so the two players read as the same control. */
.svl-wall-video__play {
	position: absolute;
	left: 50%;
	top: 50%;
	width: 58px;
	height: 58px;
	margin: -29px 0 0 -29px;
	border-radius: 50%;
	background: linear-gradient( #f0a6b6, #88505d );
	box-shadow: 0 6px 18px rgba( 0, 0, 0, 0.3 );
	transition: transform .25s cubic-bezier( .22, .61, .36, 1 );
}
.svl-wall-video__play::after {
	content: '';
	position: absolute;
	left: 21px;
	top: 16px;
	width: 0;
	height: 0;
	border-left: 23px solid #fff;
	border-top: 13px solid transparent;
	border-bottom: 13px solid transparent;
}
.svl-wall-video:hover .svl-wall-video__play,
.svl-wall-video:focus-visible .svl-wall-video__play { transform: scale( 1.08 ); }
/* Once playing, the poster and the button are gone and the iframe fills it. */
.svl-wall-video.svl-video-playing .svl-wall-video__play,
.svl-wall-video.svl-video-playing img { display: none; }
.svl-wall-video iframe,
.svl-wall-video video { display: block; width: 100%; height: 100%; border: 0; }
.m-s2-wall .svl-wall-video__play { width: 44px; height: 44px; margin: -22px 0 0 -22px; }
.m-s2-wall .svl-wall-video__play::after { left: 16px; top: 12px; border-left: 17px solid #fff; border-top: 10px solid transparent; border-bottom: 10px solid transparent; }

.m-s2-wall {
	left: -32px;
	top: 582px;                  /* 3655 - 3073 */
	width: 504px;                /* 2 x 252 — both videos visible at once */
	height: 534px;
}
.m-s2-wall .svl-wall__arrow--prev { left: 36px; }
.m-s2-wall .svl-wall__arrow--next { right: 36px; }
.m-s2-wall .svl-wall__track { padding-block: 0; }
.m-s2-wall .svl-wall-photo {
	flex: 0 0 186px;
	height: 534px;
	margin-inline: 33px;
	scroll-margin-inline-start: 33px;
	border-radius: 0;
}

/* Full width here, where desktop insets it 26px each side. White at 0.30 over
   the panel gives 248.9 against the panel's 246.2 — which is what the render
   measures. */
.m-s2__strip {
	position: absolute;
	left: 0;
	top: 1159px;                 /* 4232 - 3073 */
	width: 440px;
	height: 79px;
	border-radius: 10px;
	background: rgba( 255, 255, 255, 0.3 );
	backdrop-filter: blur( 20px );
	-webkit-backdrop-filter: blur( 20px );
}

/* Centred over two lines here; desktop sets the same sentence right-aligned on
   one. The gradient spans the element, so both lines share it. */
.m-s2__strip-text {
	position: absolute;
	left: 25px;
	top: 1172px;                 /* 4245 - 3073 */
	width: 390px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 25px;
	line-height: normal;
	text-align: center;
	background: linear-gradient( to right, #88505d, #8c6e2e );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

/* ======================================================================
   Section 4 — "את יודעת מה את רוצה" and the belief bubbles

   Loose nodes on the canvas, so `.d-s4` stays unpositioned and its children
   carry page tops.

   The node map is NOT the source here for anything rotated. It puts the pink
   panel at x=784 when the render draws it at x=76, and gives each pill a box
   whose height implies two to five times the rotation the pill's own midline
   shows. Every rotated or transformed value below was measured off the render
   instead — the pills by isolating each one with a flood fill and taking its
   oriented extents.
   ====================================================================== */
/* ==========================================================================
   Video lead form (10/2026) — a second lead form right under the video.
   Unlike the page's other forms, this one flows (it is not pinned field by
   field to canvas coordinates), so it is self-contained and easy to move.
   ========================================================================== */
.d-svform, .m-svform { position: absolute; left: 50%; transform: translateX( -50% ); }
.d-svform { top: 1750px; width: 820px; }
.m-svform { top: 1320px; width: 400px; }

.svl-svform__panel {
	box-sizing: border-box;
	border-radius: 28px;
	background:
		linear-gradient( rgba( 255, 255, 255, 0.82 ), rgba( 255, 255, 255, 0.82 ) ),
		linear-gradient( 125deg, #f0a5b6 0%, #9e5c6b 100% );
	box-shadow: 0 10px 30px rgba( 0, 0, 0, 0.15 );
	padding: 38px 44px;
}
.m-svform .svl-svform__panel { padding: 26px 20px; border-radius: 22px; }

.svl-svform__title {
	margin: 0 0 26px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 36px;
	line-height: 1.2;
	color: #0b0a0a;
	text-align: center;
}
.m-svform .svl-svform__title { font-size: 25px; margin-bottom: 18px; }

/* Flow layout: override the absolute field model this instance inherits. */
.svl-form--video { position: relative; display: flex; flex-direction: column; }
.svl-form--video .svl-field {
	position: relative;
	left: auto;
	top: auto;
	width: 100%;
	height: 66px;
	margin: 0 0 14px;
}
.svl-form--video .svl-field input,
.svl-form--video .svl-field button { height: 66px; }
.svl-form--video .svl-field--consent { height: auto; margin-bottom: 18px; }
.svl-form--video .svl-field--submit { margin-bottom: 0; }

.d-s4 { position: static; }

.d-s4__title1 {
	position: absolute;
	left: 510px;
	top: 2442px;              /* the script face sets its ink 2px lower than the box */
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 37px;
	line-height: normal;
	/* Faded, not black — this line is the quiet one under the headline. */
	color: #c9c6c4;
	text-align: center;
}

.d-s4__title2 {
	position: absolute;
	left: 394px;
	/* Figma anchors a text box on its ink, a browser on the line box, so a
	   heavier size sinks the words. Measured back up. */
	top: 2492px;
	width: 964px;
	font-family: 'Assistant', sans-serif;
	font-weight: 800;
	/* Solved against the render: this string measures 302px at 30px and Figma
	   draws it 410 wide. */
	font-size: 41px;
	line-height: normal;
	color: var( --svl-title-dark, #000 );
	text-align: center;
}

.d-s4__body1 {
	position: absolute;
	left: 447px;
	top: 2542px;
	width: 834px;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 30px;
	/* The render sets these lines exactly 39px apart across all thirteen slots. */
	line-height: 39px;
	color: #000;
	text-align: center;
	/* Figma puts two spaces between some clauses and HTML would swallow one.
	   pre-wrap keeps them, and it is why these blocks print with plain() — the
	   stored newlines do the breaking, so no <br> is inserted that pre-wrap
	   would then double. */
	white-space: pre-wrap;
}

/* The pink panel: a rectangle whose right side is a full semicircle, so the
   radius there is exactly half the height. Measured 708x534 at (76, 2711) —
   the map's x=784 is not where this is drawn. The glow around it is warm, not
   grey: two pixels outside the edge the page reads #f7f2e8 against white. */
.d-s4__plate {
	position: absolute;
	left: 76px;
	top: 3331px;
	width: 708px;
	height: 534px;
	border-radius: 15px 267px 267px 15px;
	background: linear-gradient( to right, #945765 0%, #a86474 10%, #c88191 74%, #d58d9e 100% );
	box-shadow: 0 0 30px rgba( 175, 125, 25, 0.20 );
}

/* The cut-out overhangs the panel's top edge — her hair is drawn above it —
   so this is a separate node and not a fill inside the panel. */
.d-s4__photo {
	position: absolute;
	left: 125px;
	top: 3228px;
	width: 510px;
	height: 637px;
}
.d-s4__photo img { width: 100%; height: 100%; object-fit: contain; object-position: bottom; }

/* The right-hand column is right-aligned on 1673, which is where all three of
   its nodes end. */
.d-s4__title3,
.d-s4__body2,
.d-s4__body3 {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	line-height: 29px;
	color: #000;
	text-align: right;
}
.d-s4__title3 {
	left: 709px;
	top: 3263px;              /* same line-box correction as .d-s4__title2 */
	width: 964px;
	font-weight: 800;
	font-size: 43px;          /* same solve: 377 drawn at 30, Figma draws 536 */
	line-height: normal;
	color: var( --svl-title-dark, #000 );
}
.d-s4__body2,
.d-s4__body3 { white-space: pre-wrap; }
.d-s4__body2 { left: 839px; top: 3323px; width: 834px; font-weight: 400; font-size: 22px; }
.d-s4__body3 { left: 951px; top: 3697px; width: 722px; font-weight: 400; font-size: 22px; }

/* --- the belief bubbles ------------------------------------------------
   Five identical stadiums, 227x46, each rotated a few degrees the other way
   from its neighbour. Positioned by centre because that is what a rotation
   turns about; `translate(-50%, -50%)` before the rotate keeps the two
   independent, so changing one angle cannot move a pill. */
.d-s4-bubbles { position: static; }

.d-s4-bubble {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 227px;
	height: 46px;
	box-sizing: border-box;
	/* Figma runs the longest of these to 206px inside a 227px pill, so the room
	   either side is 8px, not the 14 a pill this shape would normally get. */
	padding: 0 8px;
	border-radius: 999px;
	background: #f9d6de;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 20px;          /* solved on the two pills whose text does not reach the ends */
	line-height: 1.1;
	color: #000;
	white-space: nowrap;
}
.d-s4-bubble--1 { left: 1535.6px; top: 3484.0px; transform: translate( -50%, -50% ) rotate(  5.10deg ); }
.d-s4-bubble--2 { left: 1139.6px; top: 3515.5px; transform: translate( -50%, -50% ) rotate( -4.28deg ); }
.d-s4-bubble--3 { left: 1333.1px; top: 3563.8px; transform: translate( -50%, -50% ) rotate( -4.30deg ); }
.d-s4-bubble--4 { left: 1140.8px; top: 3632.2px; transform: translate( -50%, -50% ) rotate(  5.11deg ); }
.d-s4-bubble--5 { left: 1518.5px; top: 3627.2px; transform: translate( -50%, -50% ) rotate( -3.11deg ); }

/* 13px dots, #9E5C6B — these are not rotated, so the map's coordinates hold. */
.d-s4-dot {
	position: absolute;
	width: 13px;
	height: 13px;
	border-radius: 50%;
	background: #9e5c6b;
}
.d-s4-dot--1 { left: 1648px; top: 3465px; }
.d-s4-dot--2 { left: 1249px; top: 3474px; }
.d-s4-dot--3 { left: 1435px; top: 3520px; }
.d-s4-dot--4 { left: 1624px; top: 3588px; }
.d-s4-dot--5 { left: 1252px; top: 3613px; }

/* ======================================================================
   Section 4 on mobile

   Restacked, not narrowed: one column, centred throughout where the desktop
   right column is right-aligned, and the five pills run down the page.

   The pills keep their desktop angles — each text's rotation matches its
   desktop rule to within a fifth of a degree — so they are listed here in the
   same order the desktop rules use, and the template reorders them.
   ====================================================================== */
.m-s4 { position: static; }

/* Figma centres this line in a 708px box that starts at -155, so its centre is
   199 rather than the frame's 220. That is the design, not a slip: the render
   puts the ink there too. */
.m-s4__title1 {
	position: absolute;
	left: -155px;
	top: 2014px;
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 37px;
	line-height: normal;
	color: #c9c6c4;
	text-align: center;
}

.m-s4__title2 {
	position: absolute;
	left: -271px;
	top: 2065px;
	width: 964px;
	font-family: 'Assistant', sans-serif;
	font-weight: 800;
	font-size: 34px;          /* 342 drawn here against 410 at 41px on desktop */
	line-height: normal;
	color: var( --svl-title-dark, #000 );
	text-align: center;
}

.m-s4__body1,
.m-s4__body2,
.m-s4__body3 {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.m-s4__body1 { left: 21px; top: 2114px; width: 398px; font-size: 19px; line-height: 25px; }
.m-s4__body2 { left: 19px; top: 2974px; width: 400px; font-size: 22px; line-height: 29px; }
/* Narrower than body2 and not on the same left edge: at 383px an extra word
   climbed onto line 5 and the last two lines came out 40px wrong in both
   directions. 360 wraps where Figma wraps, and the box is centred on 223.5
   like every other centred block in this section. */
.m-s4__body3 { left: 43px; top: 3547px; width: 360px; font-size: 22px; line-height: 29px; }

/* The same "D" as desktop at 388x290 — the right cap is still a full semicircle,
   so its radius is half the height. */
.m-s4__plate {
	position: absolute;
	left: 41px;
	top: 2551px;
	width: 384px;
	height: 290px;
	border-radius: 15px 145px 145px 15px;
	background: linear-gradient( to right, #945765 0%, #a86474 10%, #c88191 74%, #d58d9e 100% );
	box-shadow: 0 0 30px rgba( 175, 125, 25, 0.20 );
}
.m-s4__photo {
	position: absolute;
	left: 67px;
	top: 2495px;
	width: 279px;
	height: 346px;
}
.m-s4__photo img { width: 100%; height: 100%; object-fit: contain; object-position: bottom; }

.m-s4__title3 {
	position: absolute;
	left: 2px;
	top: 2936px;
	width: 437px;
	font-family: 'Assistant', sans-serif;
	font-weight: 800;
	font-size: 31px;
	line-height: normal;
	color: var( --svl-title-dark, #000 );
	text-align: center;
}

/* --- the belief bubbles, stacked ---------------------------------------- */
.m-s4-bubbles { position: static; }

.m-s4-bubble {
	position: absolute;
	left: 217px;
	display: flex;
	align-items: center;
	/* Centred, unlike the desktop pills whose text runs the full length. Measured
	   along each pill s own axis: Figma s text sits within 5px of the midpoint on
	   all five. */
	justify-content: center;
	width: 345px;
	height: 46px;
	box-sizing: border-box;
	padding: 0 18px;
	border-radius: 999px;
	background: #f9d6de;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 23px;          /* 1.15x the desktop pills, solved on all five */
	line-height: 1.1;
	color: #000;
	white-space: nowrap;
}
.m-s4-bubble--1 { top: 3155.0px; transform: translate( -50%, -50% ) rotate( -4.41deg ); }
.m-s4-bubble--2 { top: 3234.4px; transform: translate( -50%, -50% ) rotate(  5.23deg ); }
.m-s4-bubble--3 { top: 3316.5px; transform: translate( -50%, -50% ) rotate( -3.22deg ); }
.m-s4-bubble--4 { top: 3401.5px; transform: translate( -50%, -50% ) rotate(  5.17deg ); }
.m-s4-bubble--5 { top: 3487.6px; transform: translate( -50%, -50% ) rotate( -4.42deg ); }

/* ======================================================================
   Section 5 — "ועכשיו אני רוצה לבקש ממך לעצור לרגע" and the before/after table

   Figma centres most of this on 50% minus an offset, so the literal left is
   `centre - width/2`; that arithmetic is done here once rather than carrying
   translate() on every node.
   ====================================================================== */
.d-s5 { position: static; }

.d-s5__title {
	position: absolute;
	left: 493px;              /* centre 847, w 708 */
	top: 5580px;
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 37px;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}

/* 576:28 — the highlight behind one line of the paragraph. Figma draws it as
   its own node before the text, so it is a plate the words sit on rather than
   a background on the run. */
.d-s5__mark {
	position: absolute;
	left: 696px;
	top: 5794px;
	width: 302px;
	height: 42px;
	border-radius: 15px;
	background: linear-gradient( to right, #f0a5b6, #e8bf69 );
}

.d-s5__body1,
.d-s5__body2 {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.d-s5__body1 { left: 582px; top: 5653px; width: 530px; }
.d-s5__body2 { left: 557px; top: 7157px; width: 530px; }
.d-s5__body1 strong { font-weight: 800; }

/* --- the before / after table -------------------------------------------
   Written in its own coordinates: 0,0 is the pink panel's top-left corner.
   Each canvas then places the block and scales it — desktop at 1 from
   (411, 5426), mobile at 0.5155 from (26, 4782). The mobile table is that
   same table scaled, not a second design: run the desktop rule rows through
   0.5155 and they land on 5060 / 5123 / 5185 / 5253, which is where the
   render draws them. */
.svl-s5-table {
	position: absolute;
	width: 764px;
	height: 1083px;
	transform-origin: top left;
}
.svl-s5-table > * { position: absolute; }

/* The cream panel is 764 wide and starts at the same x as the pink one; the
   pink panel is painted over its left half, and that overlap is what makes the
   two columns. Order matters, so the template keeps it too. */
.svl-s5-table__now {
	left: 0;
	top: 63px;
	width: 764px;
	height: 943px;
	box-sizing: border-box;
	border: 1px solid #ff7700;
	border-radius: 20px;
	background: linear-gradient( to right, #fff 56.977%, #fff3d9 98.626% );
	backdrop-filter: blur( 14px );
	-webkit-backdrop-filter: blur( 14px );
}
/* Figma's export gives this node a border and no fill — the gradient it is
   actually drawn with did not survive. Measured off the render instead: light
   at the top right, dark at the bottom left. */
.svl-s5-table__after {
	left: 0;
	top: 0;
	width: 427px;
	height: 1083px;
	box-sizing: border-box;
	border: 1px solid #9e5c6b;
	border-radius: 20px;
	background: linear-gradient( 200deg, #e39aaa 0%, #975765 100% );
}

/* White at 18% over the pink, which is why it reads as a lighter plate rather
   than a white one. */
.svl-s5-table__plate {
	left: 53px;
	top: 51px;
	width: 328px;
	height: 103px;
	border-radius: 30px;
	background: rgba( 255, 255, 255, 0.18 );
	backdrop-filter: blur( 20px );
	-webkit-backdrop-filter: blur( 20px );
	box-shadow: 0 4px 4px rgba( 0, 0, 0, 0.25 );
}

.svl-s5-table__head {
	font-family: 'Tel Aviv Modernist', sans-serif;
	font-weight: 700;
	font-size: 45px;
	line-height: normal;
	text-align: center;
}
/* The gradient is Figma's own, off the node's style attribute. */
.svl-s5-table__head--after {
	left: 37px;
	top: 76px;
	width: 363px;
	background: linear-gradient( 89.353deg, #000 12.819%, #666 85.893% );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.svl-s5-table__head--now { left: 525px; top: 99px; width: 175px; color: #000; }

/* Both columns are right-aligned on two fixed edges. The widths are per row
   because they are what makes a row wrap where Figma wraps it — give them all
   one width and rows one, two and five change shape. */
.svl-s5-table__cell {
	font-family: 'Tel Aviv Modernist', sans-serif;
	font-weight: 400;
	/* 24, not Figma's 22 — asked for, to make the rows easier to read. */
	font-size: 24px;
	line-height: normal;
	text-align: right;
}
.svl-s5-table__cell--now   { color: #000; }
.svl-s5-table__cell--after { color: #fff; }

.svl-s5-table__cell--now-1   { left: 461px; top: 205px; width: 281px; }
.svl-s5-table__cell--now-2   { left: 506px; top: 328px; width: 236px; }
.svl-s5-table__cell--now-3   { left: 455px; top: 457px; width: 287px; }
.svl-s5-table__cell--now-4   { left: 477px; top: 585px; width: 265px; }
.svl-s5-table__cell--now-5   { left: 516px; top: 705px; width: 226px; }
.svl-s5-table__cell--now-6   { left: 529px; top: 828px; width: 213px; }
.svl-s5-table__cell--now-7   { left: 477px; top: 945px; width: 265px; }

.svl-s5-table__cell--after-1 { left: 136px; top: 220px; width: 232px; }
.svl-s5-table__cell--after-2 { left:  20px; top: 337px; width: 348px; }
.svl-s5-table__cell--after-3 { left: 102px; top: 453px; width: 266px; }
.svl-s5-table__cell--after-4 { left: 116px; top: 588px; width: 252px; }
.svl-s5-table__cell--after-5 { left: 154px; top: 683px; width: 214px; }
.svl-s5-table__cell--after-6 { left: 153px; top: 826px; width: 215px; }
.svl-s5-table__cell--after-7 { left: 133px; top: 945px; width: 235px; }

/* 748x1 at #9a9a9a, crossing both columns. */
.svl-s5-table__rule { left: 19px; width: 748px; height: 1px; background: #9a9a9a; }
.svl-s5-table__rule--top { top: 175px; }
.svl-s5-table__rule--2 { top: 297px; }
.svl-s5-table__rule--3 { top: 418px; }
.svl-s5-table__rule--4 { top: 540px; }
.svl-s5-table__rule--5 { top: 662px; }
.svl-s5-table__rule--6 { top: 783px; }
.svl-s5-table__rule--7 { top: 914px; left: 26px; }

.d-s5 .svl-s5-table { left: 411px; top: 6046px; }
.m-s5 .svl-s5-table { left:  26px; top: 5442px; transform: scale( 0.5155 ); }
/* The phone needs its own number here. The table is drawn once at desktop
   size and scaled to 0.5155, so a point added to the shared rule arrives on
   a phone as half a point — raising it from 22 to 24 moved the text from 10.4
   to 11.0px on an iPhone, which is not a change anyone can see. 28 lands at
   14.4px on the design's own width and is the ceiling: at 30 the longest rows
   take a fourth line and the first cell reaches into the one below it. */
.m-s5 .svl-s5-table__cell { font-size: 22px; }

/* --- Section 5 on mobile --------------------------------------------------
   Same copy, and the same table: only the surrounding text is re-laid out.
   The heading drops from 37px to 25px; the paragraphs stay at 22. */
.m-s5 { position: static; }

.m-s5__title {
	position: absolute;
	left: -138px;             /* centre 216.5, w 708 */
	top: 5031px;
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 25px;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}

.m-s5__mark {
	position: absolute;
	left: 65px;               /* centre 216.5, w 302 — the pill is the same size
	                             on both canvases, which the render confirms */
	top: 5245px;
	width: 302px;
	height: 42px;
	border-radius: 15px;
	background: linear-gradient( to right, #f0a5b6, #e8bf69 );
}

.m-s5__body1,
.m-s5__body2 {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.m-s5__body1 { left: 24px; top: 5077px; width: 390px; }
.m-s5__body2 { left: 7px;  top: 6037px; width: 426px; }
.m-s5__body1 strong { font-weight: 800; }

/* ======================================================================
   Section 6 — "היי, נעים מאוד. שמי סבטלנה"

   Figma builds both the pill and the panel as a rotated child inside a flex
   wrapper. Rotating in CSS too would mean carrying the wrapper, the rotation
   and a transform-origin for no gain — a gradient's angle just adds the
   rotation. So the boxes are written the size they end up, and each gradient
   angle is the design's own plus its node's rotation.
   ====================================================================== */
.d-s6, .m-s6 { position: static; }

/* 588:73 / 678:75 — a -90deg child, so Figma's `to right` becomes `to top`. */
.d-s6__pill,
.m-s6__pill {
	position: absolute;
	box-sizing: border-box;
	border: 1px solid #ff7700;
	border-radius: 20px;
	background: linear-gradient( to top, #fff 56.977%, #fff3d9 98.626% );
	backdrop-filter: blur( 14px );
	-webkit-backdrop-filter: blur( 14px );
}
.d-s6__pill { left: 1045px; top: 7567px; width: 593px; height: 167px; }
.m-s6__pill { left:   26px; top: 6196px; width: 388px; height:  91px; }

/* 588:70 / 678:77 — a +90deg child, so the 35.34deg gradient Figma states
   lands at 125.34 on the page (mobile's 4.87 lands at 94.87). The inset
   shadow's offset turns with it: 0 4px becomes -4px 0. */
.d-s6__panel,
.m-s6__panel {
	position: absolute;
	box-sizing: border-box;
	border: 1px solid #9e5c6b;
	border-radius: 20px;
	backdrop-filter: blur( 14px );
	-webkit-backdrop-filter: blur( 14px );
	box-shadow: inset -4px 0 20px 5px rgba( 0, 0, 0, 0.25 );
}
.d-s6__panel {
	left: 37px;
	top: 7682px;
	width: 1653px;
	height: 535px; /* 445 in Figma; +90 when the 10/2026 about text ran two lines longer */
	background:
		linear-gradient( rgba( 255, 255, 255, 0.2 ), rgba( 255, 255, 255, 0.2 ) ),
		linear-gradient( 125.341deg, #9e5c6b 0.575%, #f0a5b6 99.936% );
}
.m-s6__panel {
	left: 15px;
	top: 6287px;
	width: 410px;
	height: 918px;
	background:
		linear-gradient( rgba( 255, 255, 255, 0.2 ), rgba( 255, 255, 255, 0.2 ) ),
		linear-gradient( 94.873deg, #9e5c6b 0.575%, #f0a5b6 99.936% );
}

.d-s6__title,
.m-s6__title {
	position: absolute;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: right;
}
.d-s6__title { left: 848px; top: 7605px; width: 708px; font-size: 37px; }
.m-s6__title { left:  65px; top: 6221px; width: 311px; font-size: 30px; }

.d-s6__body,
.m-s6__body {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: right;
	white-space: pre-wrap;
}
.d-s6__body { left: 748px; top: 7711px; width: 877px; }
.m-s6__body { left:  26px; top: 6303px; width: 379px; }

/* The cut-out overhangs the panel on both canvases — her hair is drawn above
   its top edge — so it is its own node, not a fill inside the panel. */
.d-s6__photo,
.m-s6__photo { position: absolute; }
.d-s6__photo { left: -30px; top: 7341px; width: 786px; height: 786px; }
.m-s6__photo { left:  19px; top: 6840px; width: 365px; height: 365px; }
.d-s6__photo img,
.m-s6__photo img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; }

.d-s6__sign,
.m-s6__sign {
	position: absolute;
	font-family: 'Amsterdam Four', cursive;
	font-weight: 400;
	font-size: 30px;
	line-height: normal;
	color: #000;
	white-space: nowrap;
	text-align: right;
	transform: translateX( -100% );
}
.d-s6__sign { left: 650px; top: 8021px; }
.m-s6__sign { left: 393px; top: 7120px; }

/* ======================================================================
   Section 7 — "איך עובד התהליך": four grey steps

   Mobile is not the desktop narrowed: its lead paragraph is Assistant 20
   regular where desktop sets Tel Aviv Brutalist Bold 25, and its closing
   paragraph drops to 20. Those are separate rules on purpose.
   ====================================================================== */
.d-s7, .m-s7 { position: static; }

.d-s7__dots, .m-s7__dots { position: absolute; pointer-events: none; }
.d-s7__dots { left: 1138px; top: 8602px; width: 686px; height: 686px; }
.m-s7__dots { left:  512px; top: 7535px; width: 686px; height: 686px; }
/* Figma draws this pattern at opacity-20; at full strength it is a vivid pink
   block instead of the faint texture the design has. */
.d-s7__dots img, .m-s7__dots img { width: 100%; height: 100%; object-fit: contain; opacity: 0.2; }

.d-s7__title, .m-s7__title {
	position: absolute;
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 45px;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}
.d-s7__title { left: 481px; top: 8329px; }
.m-s7__title { left: -145px; top: 7262px; }

/* Desktop states this line in the display face at 25 bold; mobile sets the
   same words in Assistant 20 regular. */
.d-s7__lead {
	position: absolute;
	left: 344px;
	top: 8420px;
	width: 964px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 25px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.m-s7__lead {
	position: absolute;
	left: 19px;
	top: 7353px;
	width: 414px;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 20px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}

.d-s7__sub, .m-s7__sub,
.d-s7__step, .m-s7__step,
.d-s7__close, .m-s7__close {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.d-s7__sub { left: 413px; top: 8496px; width: 877px; }
.m-s7__sub { left:  35px; top: 7431px; width: 371px; }

.d-s7__box, .m-s7__box {
	position: absolute;
	background: #ededed;
	border-radius: 10px;
}
.d-s7__box--1 { left: 607px; top: 8540px; width: 476px; height: 47px; }
.d-s7__box--2 { left: 605px; top: 8602px; width: 477px; height: 81px; }
.d-s7__box--3 { left: 606px; top: 8713px; width: 477px; height: 81px; }
.d-s7__box--4 { left: 606px; top: 8823px; width: 478px; height: 74px; }

.d-s7__step--1 { left: 645px; top: 8547px; width: 414px; }
.d-s7__step--2 { left: 646px; top: 8617px; width: 397px; }
.d-s7__step--3 { left: 646px; top: 8720px; width: 400px; }
.d-s7__step--4 { left: 620px; top: 8830px; width: 449px; }

.m-s7__box--1 { left: 10px; top: 7497px; width: 422px; height: 46px; }
.m-s7__box--2 { left:  8px; top: 7558px; width: 423px; height: 80px; }
.m-s7__box--3 { left:  9px; top: 7668px; width: 423px; height: 79px; }
.m-s7__box--4 { left:  9px; top: 7776px; width: 424px; height: 73px; }

.m-s7__step--1 { left: 20px; top: 7504px; width: 414px; }
.m-s7__step--2 { left: 21px; top: 7564px; width: 397px; }
.m-s7__step--3 { left: 21px; top: 7677px; width: 400px; }
.m-s7__step--4 { left: -5px; top: 7783px; width: 449px; }

.d-s7__close { left: 606px; top: 8920px; width: 477px; }
.m-s7__close { left:  28px; top: 7870px; width: 384px; font-size: 20px; }
/* The mobile frame carries a second pattern, fainter still, off the left edge. */
.m-s7__dots--2 { left: -43px; top: 7357px; }
.m-s7__dots--2 img { opacity: 0.1; }

/* ======================================================================
   Section 8 — the three tracks

   Every coordinate inside a card is the same on both canvases — plate at 64,
   divider at 276, body at 391 — so the card is written once and only its own
   width changes (485 desktop, 381 mobile). Everything inside is centred, so
   that width change is all it takes.
   ====================================================================== */
.d-s8, .m-s8 { position: static; }

.d-s8__title, .m-s8__title {
	position: absolute;
	width: 708px;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	/* The faded one — Figma sets it at 30% black, not a grey. */
	color: rgba( 11, 10, 10, 0.3 );
	text-align: center;
}
.d-s8__title { left: 498px; top: 9027px; font-size: 65px; }
.m-s8__title { left: -128px; top: 7960px; font-size: 30px; }

.d-s8__lead, .m-s8__lead {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: #000;
	text-align: center;
}
.d-s8__lead { left: 565px; top: 9119px; width: 573px; font-size: 22px; }
.m-s8__lead { left:  21px; top: 8006px; width: 398px; font-size: 19px; }

/* --- one card, three variants ------------------------------------------ */
/* Each card is two rectangles. Figma exports only the back one — the pale card
   in front did not come through — but the render shows both: the back slab at
   the exported position, and the pale card offset 17 right and 29 down from it,
   so the slab shows as a coloured edge along the top and the left.

   The card element paints nothing itself. The slab is ::before and the pale
   card is ::after, which stacks them in tree order — a z-index on a pseudo
   element would have dropped the slab behind the section instead. */
/* 644px in the Figma frame. The 10/2026 copy runs longer — the group card's
   three paragraphs end 138px past the old plate — so the card grew and
   everything below both canvases moved down with it (+181 desktop, +543 mobile:
   stacked cards shift three times). */
.svl-s8-card { position: absolute; height: 825px; }
.svl-s8-card::before,
.svl-s8-card::after {
	content: '';
	position: absolute;
	border-radius: 15px;
}
/* The slab sits square behind a panel that is SHEARED off it. This was an
   ordinary offset — the panel pushed down and right — which draws an even
   coloured band along two sides and reads as a border. The render draws
   something else: the coloured band is fat at the top-left and runs out to
   nothing around 55% across, because the panel's top edge climbs to the right
   while its left edge stays vertical. A rotation cannot do that — it would
   tilt both edges by the same angle — so the panel is sheared, not turned.
   Measured off the render: the top edge climbs 37px over 246px, which is the
   7° here. The shear also lifts the panel's bottom-right corner clear of the
   slab, which is where the second wedge of colour comes from. */
.svl-s8-card::before { inset: 0; background: var( --svl-s8-slab ); }
.svl-s8-card::after {
	/* Negative on the right and the bottom: the transform pivots at the panel's
	   top-left, so it drags the far edges up and in. The panel is cut oversize
	   there and the transform brings it back to the card's own edge — measured
	   against the render, the colour left showing down the right side runs
	   4-11-18-24px where the render has 4-12-19-25. */
	inset: 42px -22px -55px 23px;
	/* Turned AND sheared. The render's two edges do not agree on an angle —
	   the panel's top edge climbs 9.6° to the right while its left edge leans
	   only 4.8° — and no single rotation can produce that, because a rotation
	   moves both by the same amount. The rotation supplies the 4.8° the left
	   edge needs and the shear adds the rest to the top edge. Measured against
	   the render at six points, this lands within 3px at every one. */
	transform: rotate( 4.8deg ) skewY( -14.4deg );
	transform-origin: left top;
	box-sizing: border-box;
	border: var( --svl-s8-border );
	background-image:
		linear-gradient( rgba( 255, 255, 255, 0.82 ), rgba( 255, 255, 255, 0.82 ) ),
		var( --svl-s8-fill );
}
.svl-s8-card > * { position: absolute; z-index: 1; }

.svl-s8-card__plate {
	left: 50%;
	transform: translateX( -50% );
	top: 64px;
	width: 328px;
	height: 103px;
	border-radius: 30px;
	background: rgba( 255, 255, 255, 0.18 );
	backdrop-filter: blur( 20px );
	-webkit-backdrop-filter: blur( 20px );
	box-shadow: 0 4px 4px rgba( 0, 0, 0, 0.25 );
}
.svl-s8-card__title {
	left: 50%;
	transform: translateX( -50% );
	width: 272px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 25px;
	line-height: normal;
	color: #000;
	text-align: center;
}
.svl-s8-card__line1,
.svl-s8-card__line2,
.svl-s8-card__body {
	left: 50%;
	transform: translateX( -50% );
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.svl-s8-card__line1 { width: 221px; }
.svl-s8-card__line2 { width: 182px; top: 300px; }
.svl-s8-card__body  { width: 308px; }

/* 337x1, mauve, fading out at both ends — Figma's own stops. */
.svl-s8-card__rule {
	left: 50%;
	transform: translateX( -50% );
	width: 337.024px;
	height: 1px;
	background: linear-gradient( to right,
		rgba( 158, 92, 107, 0 ) 2.4%,
		#9e5c6b 56.7%,
		rgba( 158, 92, 107, 0 ) 100% );
}
.svl-s8-card__rule--1 { top: 276px; }
.svl-s8-card__rule--2 { top: 364px; } /* line2 wraps to two lines since 10/2026 */

/* The three fills. Two of the slabs are one flat colour end to end; the third
   runs gold at the top into pink at the bottom, which is why it is a gradient
   and the other two are not. */
.svl-s8-card--1 {
	--svl-s8-fill: linear-gradient( 180deg, #fff 1.9231%, #e8bf69 52.404%, #826320 100% );
	--svl-s8-slab: #e8bf69;
	--svl-s8-border: 2px solid #e8bf69;
}
.svl-s8-card--2 {
	--svl-s8-fill: linear-gradient( 180deg, #fff 1.9231%, #f0a5b6 52.404%, #9e5c6b 100% );
	--svl-s8-slab: #f0a5b6;
	--svl-s8-border: 2px solid #f0a5b6;
}
.svl-s8-card--3 {
	--svl-s8-fill: linear-gradient( 180deg, #9e5c6b 1.9231%, #e8bf69 100% );
	--svl-s8-slab: linear-gradient( 180deg, #c3a055, #f0a5b6 );
	--svl-s8-border: 3px solid #c3a055;
}
.svl-s8-card--1 .svl-s8-card__title { top: 100px; } /* one line since 10/2026, sits like card 2's */
.svl-s8-card--2 .svl-s8-card__title { top: 100px; }
.svl-s8-card--3 .svl-s8-card__title { top: 103px; }
.svl-s8-card--1 .svl-s8-card__line1 { top: 198px; width: 221px; }
.svl-s8-card--2 .svl-s8-card__line1 { top: 198px; }
.svl-s8-card--3 .svl-s8-card__line1 { top: 201px; }
.svl-s8-card--1 .svl-s8-card__body  { top: 391px; }
.svl-s8-card--2 .svl-s8-card__body  { top: 334px; } /* no line2 since 10/2026 — body climbs to card 3's line */
.svl-s8-card--3 .svl-s8-card__body  { top: 334px; }

/* Desktop lays the three side by side, right to left; mobile stacks them. */
.d-s8 .svl-s8-card { width: 485px; top: 9226px; }
.d-s8 .svl-s8-card--1 { left: 1138px; }
.d-s8 .svl-s8-card--2 { left:  591px; }
.d-s8 .svl-s8-card--3 { left:   44px; }

.m-s8 .svl-s8-card { width: 381px; left: 30px; }
/* The offsets above are absolute pixels and Figma uses the same ones on both
   canvases — except the top, where the narrower card sits its panel 10px
   higher. Measured, not guessed: at four points across the top edge the
   desktop value ran +8 to +12 too deep here. */
.m-s8 .svl-s8-card::after { inset: 32px -22px -55px 23px; }
.m-s8 .svl-s8-card--1 { top: 8119px; }
.m-s8 .svl-s8-card--2 { top: 8993px; }
.m-s8 .svl-s8-card--3 { top: 9868px; }

/* ======================================================================
   Section 9 — "מה כולל כל מסלול?": five frosted rows

   The row internals are the same on both canvases — title at 22, body at 62 —
   so the row is written once. Only its width and the alignment change: desktop
   right-aligns, mobile centres.
   ====================================================================== */
.d-s9, .m-s9 { position: static; }

.d-s9__title, .m-s9__title {
	position: absolute;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	line-height: normal;
	color: #000;
	text-align: center;
}
.d-s9__title { left: 177px; top: 10187px; width: 1314px; font-size: 50px; }
/* Figma node 678:163: left 41, top 9538, 359 wide, 25px. What was here — a
   708px box at left -137, which is wider than the whole 440px canvas — is
   the desktop title's geometry, and it put this heading 228px too high,
   printing it straight through the last track card's paragraph. */
.m-s9__title { left:   41px; top: 10741px; width: 359px; font-size: 25px; }

/* 919px of dotted rule, drawn horizontally by Figma and turned upright here.
   It draws itself as the reader scrolls the five steps: --svl-s9-progress goes
   0 to 1 across the section and clips the rule from the top down, so the line
   is always exactly as long as the reader has got. Clip, not height — the rule
   is rotated, so changing its height would change its length AND its angle. */
.d-s9__line, .m-s9__line {
	position: absolute;
	width: 919px;
	height: 37px;
	transform-origin: center;
	transform: translate( -50%, -50% ) rotate( 90deg );
	pointer-events: none;
}
.d-s9__line { left: 834px; top: 10861px; }
.m-s9__line { left: 220px; top: 11263px; }
.d-s9__line img, .m-s9__line img {
	display: block; width: 100%; height: 100%;
	/* The rule is rotated 90deg, so its own left-to-right is the page s top-to-
	   bottom: clipping from the right reveals it downwards. */
	clip-path: inset( 0 calc( ( 1 - var( --svl-s9-progress, 1 ) ) * 100% ) 0 0 );
	transition: clip-path .25s linear;
}
@media ( prefers-reduced-motion: reduce ) {
	.d-s9__line img, .m-s9__line img { clip-path: none; transition: none; }
}

.svl-s9-row {
	position: absolute;
	border-radius: 8px;
	background: rgba( 255, 255, 255, 0.1 );
	backdrop-filter: blur( 14px );
	-webkit-backdrop-filter: blur( 14px );
	box-shadow: 0 10px 30px rgba( 0, 0, 0, 0.25 );
}
.svl-s9-row > * { position: absolute; }
.svl-s9-row__title {
	top: 22px;
	font-family: 'Tel Aviv Modernist', sans-serif;
	font-weight: 400;
	font-size: 30px;
	line-height: normal;
	color: #000;
}
.svl-s9-row__body {
	top: 62px;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	white-space: pre-wrap;
}

/* Desktop: one width, one height, right-aligned on a fixed edge. */
.d-s9 .svl-s9-row { left: 365px; width: 938px; height: 138px; }
/* Figma right-aligns these on 1257 and 1258, which inside a row that runs
   365..1303 is 46 and 45 in from its right edge. */
.d-s9 .svl-s9-row__title { right: 46px; width: 871px; text-align: right; }
.d-s9 .svl-s9-row__body  { right: 45px; width: 827px; text-align: right; }
.d-s9 .svl-s9-row--1 { top:  10394px; }
.d-s9 .svl-s9-row--2 { top:  10603px; }
.d-s9 .svl-s9-row--3 { top:  10812px; }
.d-s9 .svl-s9-row--4 { top: 11021px; }
.d-s9 .svl-s9-row--5 { top: 11230px; }

/* Mobile: centred, and each row is as tall as its own text needs. */
.m-s9 .svl-s9-row { left: 25px; width: 387px; }
.m-s9 .svl-s9-row__title { left: 50%; transform: translateX( -50% ); width: 360px; text-align: center; }
.m-s9 .svl-s9-row__body  { left: 50%; transform: translateX( -50% ); width: 342px; text-align: center; }
.m-s9 .svl-s9-row--1 { top:  10796px; height: 158px; }
.m-s9 .svl-s9-row--2 { top:  11005px; height: 160px; }
.m-s9 .svl-s9-row--3 { top: 11214px; height: 158px; }
.m-s9 .svl-s9-row--4 { top: 11423px; height: 166px; }
.m-s9 .svl-s9-row--5 { top: 11632px; height: 164px; }

/* Desktop sets the closing line in the display face; mobile uses Assistant. */
.d-s9__close, .m-s9__close {
	position: absolute;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.d-s9__close {
	left: 353px; top: 11425px; width: 964px;
	font-family: 'Tel Aviv Brutalist', sans-serif; font-weight: 700; font-size: 25px;
}
.m-s9__close {
	left: 37px; top: 11827px; width: 365px;
	font-family: 'Assistant', sans-serif; font-weight: 700; font-size: 22px;
}

/* ======================================================================
   Section 10 — "הם עשו את השינוי הזה" and the WhatsApp row

   Figma builds the band as a flipped, rotated child; a flip on a plain
   rectangle changes nothing, so only the tilt is carried here. Desktop tilts
   about four degrees, mobile not at all.
   ====================================================================== */
.d-s10, .m-s10 { position: static; }

.d-s10__band, .m-s10__band {
	position: absolute;
	background: rgba( 240, 165, 182, 0.3 );
	backdrop-filter: blur( 16px );
	-webkit-backdrop-filter: blur( 16px );
	pointer-events: none;
}
.d-s10__band {
	left: 835px; top: 11735px;
	width: 1804px; height: 99px;
	transform: translate( -50%, -50% ) rotate( -4.09deg );
}
.m-s10__band { left: 1px; top: 11953px; width: 441px; height: 113px; }

.d-s10__title, .m-s10__title {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 800;
	line-height: normal;
	color: #000;
	text-align: center;
}
.d-s10__title {
	left: 835px; top: 11737px; width: 1753px; font-size: 60px;
	transform: translate( -50%, -50% ) rotate( -3.73deg );
}
.m-s10__title { left: 52px; top: 11954px; width: 337px; font-size: 40px; }

/* The row bleeds off both edges — five cards at a 398 pitch on desktop, two at
   297 on mobile — which is what the design draws. Same slot geometry as every
   other carousel here: half the gap as a margin, a whole number of slots. */
/* The window is the canvas, not the track: five cards at a 398 pitch do not
   fit in 1728, so four are visible and the fifth is a scroll away — which is
   what makes this a carousel rather than a static row. The cards still start
   at -98 and run off both edges, as the design draws them. */
.d-s10-wall { left: 0; top: 11906px; width: 1728px; height: 561px; --svl-fade: 130px; }
.d-s10-wall .svl-wall-photo { flex: 0 0 259px; margin-inline: 69.5px; scroll-margin-inline-start: 69.5px; border-radius: 8px; }
.d-s10-wall .svl-wall__arrow--prev { left: 26px; }
.d-s10-wall .svl-wall__arrow--next { right: 26px; }

.m-s10-wall { left: 0; top: 12097px; width: 440px; height: 561px; --svl-fade: 90px; }
.m-s10-wall .svl-wall-photo { flex: 0 0 259px; margin-inline: 19px; scroll-margin-inline-start: 19px; border-radius: 8px; }
.m-s10-wall .svl-wall__arrow--prev { left: 6px; }
.m-s10-wall .svl-wall__arrow--next { right: 6px; }

/* ---------- A wall that keeps each picture's own shape ------------------
   These are screenshots of conversations, not photographs, and the two want
   opposite things. Covering one 259x561 box with all of them threw away up to
   39% of a picture's WIDTH — which on a screenshot is the sender's name down one
   edge and the timestamps down the other, so every card showed a column of
   half-words.

   So the row fixes the one dimension a row needs — its height — and each card
   takes its width from its own picture. That is the ordinary photo-wall layout:
   nothing is cropped, the strip still reads as a strip, and a screenshot from a
   different phone needs no code.

   The ratio is a custom property the renderer prints from the file itself, so
   the row is the right shape at first paint rather than after the pictures
   arrive. The fallback is the design's own 259x561, for a picture whose file
   cannot be read — a URL on someone else's server. */
.svl-wall--natural .svl-wall-photo {
	flex: 0 0 auto;
	width: auto;
	/* Shorter than the row it sits in, and centred in what is left. 561 is the
	   design's box for a photograph; these are pages of somebody's handwriting,
	   and at 561 only three and a half of them fit across the frame. The row
	   keeps its own height so nothing below it moves. */
	height: var( --svl-card-h, 470px );
	align-self: center;
	aspect-ratio: var( --svl-ar, 259 / 561 );
	background: transparent;
}

/* The row runs off both edges — but a photograph cut in half reads as one that
   continues, and a screenshot cut in half reads as a mistake. So the edges melt
   into the page instead of being sliced by it.

   White, not a mask: masking the scroller would put it on its own compositing
   layer, and a composited layer inside the canvas's `scale()` is rasterised at
   the wrong resolution — which shows up as exactly the softness these
   screenshots cannot afford. The page behind is white here; a background that
   ever stops being white changes this one colour.

   `rgba(255,255,255,0)`, not `transparent`: the keyword is transparent BLACK,
   and interpolating white to it draws a grey bruise down the middle of the
   gradient in engines that do not premultiply. */
.svl-wall--natural::before,
.svl-wall--natural::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	width: var( --svl-fade, 90px );
	pointer-events: none;   /* the row still scrolls under it */
	z-index: 2;
}
.svl-wall--natural::before {
	left: 0;
	background: linear-gradient( to right, #fff 12%, rgba( 255, 255, 255, 0 ) );
}
.svl-wall--natural::after {
	right: 0;
	background: linear-gradient( to left, #fff 12%, rgba( 255, 255, 255, 0 ) );
}
/* White screenshots on a white page have no edges, so seven testimonials read as
   one wall of text — which is most of why the row still looked broken after the
   cropping was fixed. A hairline and a soft shadow are enough to say "seven
   things", and they sit on the card rather than the picture so a screenshot with
   its own background is not double-framed. */
.svl-wall--natural .svl-wall-photo {
	box-shadow: 0 2px 14px rgba( 60, 40, 20, 0.10 ), 0 0 0 1px rgba( 60, 40, 20, 0.07 );
}

/* A card is a picture of text at a third of its size — legible only once it is
   opened. The cursor said so to a mouse and to nobody else. */
.svl-wall-photo__open {
	position: absolute;
	left: 10px;          /* physical: a logical property flips to the far side in RTL */
	bottom: 10px;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: rgba( 255, 255, 255, 0.94 ) url("data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%239f6739%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%3E%3Ccircle%20cx%3D%2210.5%22%20cy%3D%2210.5%22%20r%3D%226.5%22%2F%3E%3Cpath%20d%3D%22M15.5%2015.5L21%2021%22%2F%3E%3Cpath%20d%3D%22M10.5%207.8v5.4M7.8%2010.5h5.4%22%2F%3E%3C%2Fsvg%3E") center / 18px 18px no-repeat;
	box-shadow: 0 2px 10px rgba( 60, 40, 20, 0.22 );
	pointer-events: none;   /* the whole card is the button */
	transition: transform .25s cubic-bezier(.22,.61,.36,1);
}
.svl-stage--mobile .svl-wall-photo__open { width: 30px; height: 30px; background-size: 16px 16px; }
.svl-wall-photo[data-image-lightbox]:hover .svl-wall-photo__open,
.svl-wall-photo[data-image-lightbox]:focus-visible .svl-wall-photo__open { transform: scale( 1.12 ); }
@media ( prefers-reduced-motion: reduce ) {
	.svl-wall-photo__open { transition: none; }
}
/* The two cards at the ends of the row are never cut, so nothing there needs
   fading — and a card the fade reaches is a card washed out for no reason. The
   row is held clear of both strips by exactly their width, which also stops the
   first card from starting under the arrow. */
.svl-wall--natural .svl-wall-photo:first-child { margin-inline-start: var( --svl-fade, 90px ); }
.svl-wall--natural .svl-wall-photo:last-child  { margin-inline-end:   var( --svl-fade, 90px ); }

/* The arrows sit in the faded strip, so they belong above it. */
.svl-wall--natural .svl-wall__arrow { z-index: 3; }
.svl-wall--natural .svl-wall-photo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
/* A screenshot at card size is a picture of text, not text. The card opens it
   full size, which is the only way the words on it can actually be read. */
.svl-wall--natural .svl-wall-photo[data-image-lightbox] { cursor: zoom-in; }
.svl-wall--natural .svl-wall-photo[data-image-lightbox]:focus-visible {
	outline: 3px solid #9f6739;
	outline-offset: 3px;
}

.d-s10-wall .svl-wall__track,
.m-s10-wall .svl-wall__track { padding-block: 0; }

/* ======================================================================
   Section 11 — the lead form

   Desktop wraps everything in a clipped, full-width frame, so its children
   carry in-frame tops the way section 2's do. Mobile has no frame: a rounded
   panel sits behind and the children are positioned on the page.
   ====================================================================== */
.d-s11 {
	position: absolute;
	left: -12px;
	top: 12576px;
	width: 1728px;
	height: 1351px;
	overflow: hidden;
	border-radius: 30px;
}
.d-s11 > * { position: absolute; }
.d-s11__bg { position: absolute; inset: 0; opacity: 0.5; overflow: hidden; border-radius: 30px; pointer-events: none; }
.d-s11__bg img { position: absolute; left: -0.02%; top: -0.02%; width: 113.38%; height: 100%; max-width: none; }

.m-s11 { position: static; }
.m-s11__bg {
	position: absolute;
	left: 1px; top: 12723px; width: 438px; height: 968px;
	opacity: 0.5; overflow: hidden; border-radius: 30px; pointer-events: none;
}
.m-s11__bg img { position: absolute; left: -0.02%; top: -0.02%; width: 113.38%; height: 100%; max-width: none; }
.m-s11 > * { position: absolute; }

.d-s11__title, .m-s11__title {
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}
.d-s11__title { left: 469px; top: 143px;   width: 790px; font-size: 28px; }
/* 14px, measured rather than read: Figma exports this node as text-[0px]
   because its runs carry mixed styles, so the size is not in the export at
   all. The render draws this line 332px wide and 14px draws it 333. It was
   set to 22px, which needs 725px for the same words — so it wrapped inside a
   377px box and dropped its second line on top of the paragraph below. */
.m-s11__title { left:  32px; top: 12781px; width: 377px; font-size: 14px; }

.d-s11__body, .m-s11__body {
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.d-s11__body { left: 468px; top: 183px;   width: 792px; }
/* 18px, not the 22px the desktop paragraph uses. The two canvases share the
   rule above and shared the size too, and at 22px this paragraph ran four
   lines long in a 379px box and printed straight through the rose-coloured
   line underneath it. 18px is what the render actually measures: the same
   seven line boxes Figma lays out — six of copy and the blank between the
   two paragraphs. */
.m-s11__body { left:  30px; top: 12850px; width: 379px; font-size: 18px; }

.d-s11__highlight, .m-s11__highlight {
	font-family: 'Assistant', sans-serif;
	font-weight: 800;
	font-size: 22px;
	line-height: normal;
	color: var( --svl-title-accent-2, #9e5c6b );
	text-align: center;
}
.d-s11__highlight { left: 468px; top: 421px;   width: 792px; }
.m-s11__highlight { left:  64px; top: 13037px; width: 313px; }

/* Figma gives both of these the same words. Left as two editable fields rather
   than one, because the design clearly means two different lines. */
.d-s11__pill, .m-s11__pill { background: #ededed; border-radius: 10px; }
.d-s11__pill--1 { left: 557px; top: 491px; width: 275px; height: 47px; }
.d-s11__pill--2 { left: 895px; top: 491px; width: 275px; height: 47px; }
.d-s11__pill-text {
	font-family: 'Assistant', sans-serif; font-weight: 400; font-size: 22px;
	line-height: normal; color: #000; text-align: center; top: 498px; width: 235px;
}
.d-s11__pill-text--1 { left: 577px; }
.d-s11__pill-text--2 { left: 915px; }
/* Mobile has no pills — Figma drops them. */
.m-s11__pill, .m-s11__pill-text { display: none; }

.d-s11__panel, .m-s11__panel {
	border-radius: 28px;
	background: rgba( 240, 165, 182, 0.29 );
	backdrop-filter: blur( 14px );
	-webkit-backdrop-filter: blur( 14px );
	box-shadow: 0 10px 30px rgba( 0, 0, 0, 0.25 );
}
.d-s11__panel { left: 362px; top: 621px;   width: 1005px; height: 470px; }
.m-s11__panel { left:  28px; top: 13112px; width:  384px; height: 470px; }

.d-s11__form-title, .m-s11__form-title {
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: var( --svl-title-dark, #0b0a0a );
	text-align: center;
}
.d-s11__form-title { left: 469px; top: 676px;   width: 790px; font-size: 37px; }
.m-s11__form-title { left:  33px; top: 13158px; width: 375px; font-size: 30px; }

/* Mobile sets the field labels and the button in Assistant, not the display
   face desktop uses, and several sizes smaller. */
.m-s11 .svl-form .svl-field input,
.m-s11 .svl-form .svl-field button { font-family: 'Assistant', sans-serif; font-weight: 700; }
.m-s11 .svl-form .svl-field input { font-size: 17px; }
.m-s11 .svl-form .svl-field--submit button { font-size: 20px; }

.d-s11__close, .m-s11__close {
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 30px;
	line-height: normal;
	text-align: center;
	white-space: pre-wrap;
	background: linear-gradient( to right, #88505d, #8c6e2e );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}
.d-s11__close { left: 468px; top: 1125px;  width: 792px; }
/* 14px in Figma's own 397px box (node 678:176, left calc(50%+0.5) w-397).
   It was 20px in a 385px box, and the two errors compounded: the second of
   the two authored lines needs 390px, the box gave it 385, so it wrapped and
   the closing line of the page ran to three lines instead of two. */
.m-s11__close { left:  22px; top: 13623px; width: 397px; font-size: 14px; }

/* ======================================================================
   Section 12 — who the process fits

   Two cards built the same way as section 8's: a coloured slab with the pale
   card offset off it. The right-hand card is the pink one, the left is grey.
   ====================================================================== */
.d-s12, .m-s12, .d-s13, .m-s13 { position: static; }

.d-s12__title, .m-s12__title {
	position: absolute;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: rgba( 11, 10, 10, 0.3 );
	text-align: center;
}
.d-s12__title { left: 419px; top: 14080px; width: 865px; font-size: 45px; }
/* 25px: the render draws this line 322px wide and 22px drew it 283. */
.m-s12__title { left:  49px; top: 13712px; width: 343px; font-size: 25px; }

.d-s12__body, .m-s12__body {
	position: absolute;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.d-s12__body { left: 509px; top: 14159px; width: 686px; }
.m-s12__body { left:  23px; top: 13767px; width: 390px; }

.svl-s12-card { position: absolute; border-radius: 15px; box-sizing: border-box; }
.svl-s12-card > * { position: absolute; }
.svl-s12-card__plate {
	left: 50%;
	transform: translateX( -50% );
	width: 328px;
	border-radius: 30px;
	background: rgba( 255, 255, 255, 0.18 );
	backdrop-filter: blur( 20px );
	-webkit-backdrop-filter: blur( 20px );
	box-shadow: 0 4px 4px rgba( 0, 0, 0, 0.25 );
}
.svl-s12-card__title {
	left: 50%;
	transform: translateX( -50% );
	font-family: 'Tel Aviv Modernist', sans-serif;
	font-weight: 700;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
}
.svl-s12-card__body {
	left: 50%;
	transform: translateX( -50% );
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	font-size: 22px;
	line-height: normal;
	color: #000;
	text-align: center;
	white-space: pre-wrap;
}
.svl-s12-card--fit {
	border: 2px solid #f0a5b6;
	background-image:
		linear-gradient( rgba( 255, 255, 255, 0.82 ), rgba( 255, 255, 255, 0.82 ) ),
		linear-gradient( 180deg, #fff 1.9231%, #f0a5b6 52.404%, #9e5c6b 100% );
}
/* Figma states this one as a flat #d3d3d3 under the same white wash. */
.svl-s12-card--nofit {
	border: 2px solid #cecece;
	background-image:
		linear-gradient( rgba( 255, 255, 255, 0.82 ), rgba( 255, 255, 255, 0.82 ) ),
		linear-gradient( #d3d3d3, #d3d3d3 );
}

.d-s12 .svl-s12-card { top: 14561px; width: 640px; height: 644px; }
.d-s12 .svl-s12-card--fit   { left:  84px; }
.d-s12 .svl-s12-card--nofit { left: 942px; }
.d-s12 .svl-s12-card__plate { height: 103px; }
.d-s12 .svl-s12-card--fit   .svl-s12-card__plate { top:  94px; }
.d-s12 .svl-s12-card--nofit .svl-s12-card__plate { top:  79px; }
.d-s12 .svl-s12-card--fit   .svl-s12-card__title { top: 132px; width: 232px; }
.d-s12 .svl-s12-card--nofit .svl-s12-card__title { top: 117px; width: 179px; }
.d-s12 .svl-s12-card--fit   .svl-s12-card__body  { top: 228px; width: 493px; }
.d-s12 .svl-s12-card--nofit .svl-s12-card__body  { top: 241px; width: 529px; }

.m-s12 .svl-s12-card { width: 402px; }
.m-s12 .svl-s12-card--fit   { left: 19px; top: 14102px; height: 713px; }
.m-s12 .svl-s12-card--nofit { left: 16px; top: 14842px; height: 605px; }
.m-s12 .svl-s12-card__plate { height: 53px; top: 94px; width: 329px; }
.m-s12 .svl-s12-card--nofit .svl-s12-card__plate { top: 61px; }
.m-s12 .svl-s12-card__title { top: 107px; width: 229px; }
.m-s12 .svl-s12-card--nofit .svl-s12-card__title { top: 74px; }
.m-s12 .svl-s12-card__body  { top: 164px; width: 309px; }
.m-s12 .svl-s12-card--nofit .svl-s12-card__body  { top: 145px; width: 331px; }

/* ======================================================================
   Section 13 — the questions

   The rows are laid out in normal flow inside an absolutely-positioned list:
   an accordion whose rows cannot move is not an accordion, and opening the
   second question has to push the third down. Closed, that flow lands within
   about five pixels of Figma's rows — which is the state the design shows.
   ====================================================================== */
.d-s13__title, .m-s13__title {
	position: absolute;
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: #9e5c6b;
}
/* The heading and its line hold still while the questions scroll past, and they
   do it together — so they share this box and motion.js moves the box. It is at
   the canvas origin and as wide as the canvas, which makes it the containing
   block for both children without changing what their coordinates measure from:
   `top: 14605px` and `right: 95px` land exactly where they did as canvas
   children. Height zero, because nothing in it is positioned from the bottom.

   The box is why the stick is not driven on the children themselves. GSAP writes
   `translate: none; rotate: none; scale: none` inline next to its own transform,
   to stop the independent properties interfering with it — so a `translate` in
   this stylesheet is overruled and moves nothing at all. Untransformed at rest,
   so a reader who asked for less motion gets the design exactly as drawn. */
.d-s13__aside { position: absolute; left: 0; top: 0; width: 100%; height: 0; }

.d-s13__title { right: 95px; top: 15496px; width: 519px; font-size: 65px; text-align: right; }
.m-s13__title { left: 84px; top: 15518px; width: 271px; font-size: 35px; text-align: center; }

.d-s13__sub, .m-s13__sub {
	position: absolute;
	font-family: 'Tel Aviv Modernist', sans-serif;
	font-weight: 400;
	line-height: normal;
	color: #000;
	text-align: right;
}
.d-s13__sub { right: 95px; top: 15607px; width: 604px; font-size: 35px; }
.m-s13__sub { left:  34px; top: 15575px; width: 367px; font-size: 22px; }

.svl-faq { position: absolute; }
/* Figma leaves a wider gap under the open row than under a closed one — 30
   against 23 on desktop, 20 against 11 on mobile — so the two are separate. */
/* The row is a two-track grid so the answer can open to whatever height its own
   copy needs. The alternative — animating max-height — means picking a number
   big enough for the longest answer anyone might ever type, and every answer
   shorter than that opens with a pause at the end while the transition runs out
   the leftover. 0fr to 1fr has no number in it. */
.svl-faq__row {
	display: grid;
	grid-template-rows: auto 0fr;
	/* Named because front.js reads them: it has to know what an open row
	   costs before one is open, to reserve the height in advance. */
	margin-bottom: var( --svl-faq-gap, 23px );
	transition: grid-template-rows 380ms cubic-bezier( 0.2, 0.8, 0.2, 1 ),
	            margin-bottom 380ms cubic-bezier( 0.2, 0.8, 0.2, 1 );
}
.svl-faq__row.is-open { grid-template-rows: auto 1fr; margin-bottom: var( --svl-faq-gap-open, 30px ); }
.svl-faq__q {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	border: 0;
	border-radius: 15px;
	background: #f0a5b6;
	color: #000;
	text-align: right;
	cursor: pointer;
}
.svl-faq__q[disabled] { cursor: default; }
/* The track: no look of its own, and min-height:0 so a grid item is actually
   allowed to shrink below its content — without it the row will not collapse. */
.svl-faq__a {
	overflow: hidden;
	min-height: 0;
	/* Clipped to zero is still readable by a screen reader, so the closed
	   answer is taken out of the tree as well. The delay holds it visible for
	   the length of the collapse and drops it at the end; opening restores it
	   with no delay at all. */
	visibility: hidden;
	transition: visibility 0s linear 380ms;
}
.svl-faq__row.is-open .svl-faq__a { visibility: visible; transition-delay: 0s; }
/* The panel: everything the design says an answer looks like. It keeps its full
   height at all times and is simply clipped by the track above. */
.svl-faq__panel {
	box-sizing: border-box;
	/* The client writes some answers as two or three lines. They arrive as
	   newlines in one text field, and this is what makes them lines. */
	white-space: pre-line;
	border-radius: 15px;
	background: #9e5c6b;
	color: #fff;
}

.d-s13__list {
	left: 83px; top: 15512px; width: 856px;
	--svl-faq-gap: 23px;
	--svl-faq-gap-open: 30px;
	/* 15287 - 15113: what the design leaves under the last answer. */
	--svl-faq-tail: 174px;
}
.d-s13__list .svl-faq__q {
	min-height: 88px; padding: 12px 28px;
	font-family: 'Tel Aviv Modernist', sans-serif; font-weight: 700; font-size: 23px;
}
.d-s13__list .svl-faq__panel {
	margin-top: 15px; min-height: 130px; padding: 14px 28px;
	font-family: 'Tel Aviv Modernist', sans-serif; font-weight: 400; font-size: 26px;
}

.m-s13__list {
	left: 38px; top: 15656px; width: 364px;
	--svl-faq-gap: 11px;
	--svl-faq-gap-open: 20px;
	/* 14886 - 14796 above the button, 15040 - 14951 under it. */
	--svl-faq-cta-gap: 90px;
	--svl-faq-tail: 89px;
}
.m-s13__list .svl-faq__q {
	min-height: 42px; padding: 10px 18px;
	font-family: 'Assistant', sans-serif; font-weight: 400; font-size: 18px;
}
.m-s13__list .svl-faq__panel {
	margin-top: 11px; min-height: 138px; padding: 6px 18px;
	font-family: 'Assistant', sans-serif; font-weight: 400; font-size: 18px;
}
/* The closing button — Figma 679:375-377. Built from the same three pieces as
   the hero's: the plate SVG, the white label over it, and the arrow disc
   hanging off its left end. Only mobile has one; the desktop page ends on the
   last answer. */
.m-s13__cta-plate { position: absolute; left: 40.36px; top: calc( var( --svl-cta-top, 16089px ) + 8.29px ); width: 354px; height: 47px; }
.m-s13__cta-plate img { display: block; width: 100%; height: 100%; }
.m-s13__cta-label {
	position: absolute;
	left: calc( 50% + 157.36px );
	transform: translateX( -100% );
	top: calc( var( --svl-cta-top, 16089px ) + 22px );
	width: 286px;
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 700;
	font-size: 18px;
	line-height: normal;
	color: #fff;
	text-align: right;
}
.m-s13__cta-arrow {
	position: absolute;
	left: 16px;
	top: var( --svl-cta-top, 16089px );
	width: 64.972px;
	height: 64.972px;
	display: flex;
	align-items: center;
	justify-content: center;
	pointer-events: none;
}
.m-s13__cta-arrow span { display: block; width: 45.953px; height: 45.953px; transform: rotate( 46.25deg ) scaleY( -1 ); }
.m-s13__cta-arrow img { display: block; width: 100%; height: 100%; }
/* One hit area over all three, from the arrow's left edge to the plate's right. */
.m-s13__hit { position: absolute; left: 16px; top: var( --svl-cta-top, 16089px ); width: 378px; height: 65px; display: block; }


/* --- the privacy consent -------------------------------------------------
   Not in the Figma frame — added because the form must not send without it.
   Desktop drops it into the gap the design already leaves between the message
   field and the button; mobile has no such gap, so its panel grows by 40px and
   the button moves down with it. */
/* justify-content, because the label is a flex item and shrinks to its text:
   left alone it sat at the field's left edge while the inputs above it ran
   to the right one. The field is ltr (the canvas is), so flex-end is right. */
.svl-field--consent { display: flex; align-items: center; justify-content: flex-end; }
.svl-consent {
	display: flex;
	align-items: center;
	gap: 10px;
	/* The canvas is ltr because Figma's coordinates are, which put this row's
	   box on the left of its own Hebrew. The row is read right to left. */
	direction: rtl;
	cursor: pointer;
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
	color: #000;
	line-height: 1.2;
}
.svl-consent input { position: absolute; opacity: 0; width: 0; height: 0; }
.svl-consent__box {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	border: 2px solid #9e5c6b;
	border-radius: 5px;
	background: #fff;
	position: relative;
	transition: background .15s, border-color .15s;
}
.svl-consent input:checked + .svl-consent__box { background: #9e5c6b; }
.svl-consent input:checked + .svl-consent__box::after {
	content: '';
	position: absolute;
	left: 5.5px; top: 1.5px;
	width: 5px; height: 10px;
	border: solid #fff;
	border-width: 0 2.5px 2.5px 0;
	transform: rotate( 45deg );
}
/* Visible focus, because the box itself is a styled span. */
.svl-consent input:focus-visible + .svl-consent__box { outline: 2px solid #9e5c6b; outline-offset: 2px; }
.svl-consent__text a { color: inherit; text-decoration: underline; }

/* Until it is ticked the button reads as unavailable rather than silently
   failing on submit. */
.svl-form .svl-field--submit button[disabled] { opacity: 0.45; cursor: not-allowed; }

.d-s11 .svl-field--consent { left: 485px; top: 934px; width: 730px; height: 26px; font-size: 18px; }
.m-s11 .svl-field--consent { left:  37px; top: 13488px; width: 354px; height: 24px; font-size: 15px; }
.m-s11 .svl-consent { line-height: 1.15; }
/* The panel and the button both move down to make room. */
.m-s11__panel { height: 510px; }
.m-s11 .svl-form--1 .svl-field--submit { top: 13528px; }

/* The CTAs jump to the form, and a jump of ten thousand pixels with no motion
   reads as a page change rather than a scroll. scroll-margin keeps the panel
   clear of the very top edge when it lands. */
html { scroll-behavior: smooth; }
@media ( prefers-reduced-motion: reduce ) { html { scroll-behavior: auto; } }
#svl-form-panel-d, #svl-form-panel-m { scroll-margin-top: 60px; }

/* Someone who has asked their OS for less motion still gets a working
   accordion — it simply opens at once instead of easing. */
@media ( prefers-reduced-motion: reduce ) {
	.svl-faq__row { transition: none; }
}

/* ---------- Video lightbox ---------------------------------------------
   The section-2 cards are portrait and the uploads are 16:9 with the picture
   padded into the middle. Playing inside the card would box an already-boxed
   frame down to nothing, so the click opens the player at the shape it wants,
   over the page. */
.svl-lightbox {
	position: fixed;
	inset: 0;
	z-index: 100000;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 24px;
	background: rgba( 11, 10, 10, 0.88 );
	backdrop-filter: blur( 6px );
	animation: svl-lightbox-in 220ms ease-out;
}
@keyframes svl-lightbox-in { from { opacity: 0; } to { opacity: 1; } }
.svl-lightbox__frame {
	position: relative;
	width: min( 1100px, 92vw );
	aspect-ratio: 16 / 9;
	max-height: 84vh;
	background: #000;
	border-radius: 10px;
	overflow: hidden;
	box-shadow: 0 30px 80px rgba( 0, 0, 0, 0.55 );
}
.svl-lightbox__frame iframe,
.svl-lightbox__frame video { display: block; width: 100%; height: 100%; border: 0; }
.svl-lightbox__close {
	position: absolute;
	top: -46px;
	inset-inline-end: 0;
	width: 38px;
	height: 38px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgba( 255, 255, 255, 0.15 );
	color: #fff;
	font-size: 22px;
	line-height: 38px;
	cursor: pointer;
}
.svl-lightbox__close:hover { background: rgba( 255, 255, 255, 0.28 ); }
/* A picture sets its own shape and, as far as the window allows, its own size.
   The frame is 16:9 for a player because that is the shape of the footage; for a
   screenshot it is whatever the screenshot is.

   Only the WIDTH is capped. Capping the height too drew an 888x1446 conversation
   at 516 wide — 58% of the pixels it has, which is most of the way back to the
   unreadable card this overlay exists to escape. Width alone means a desktop
   gets the screenshot at its own size and scrolls down it, and a phone, where
   nothing fits at full width, gets the whole thing at once. */
.svl-lightbox--image {
	overflow-y: auto;
	align-items: flex-start;
	padding: 56px 24px 40px;
	overscroll-behavior: contain;
}
.svl-lightbox--image .svl-lightbox__frame {
	width: auto;
	height: auto;
	aspect-ratio: auto;
	max-width: 100%;
	max-height: none;
	margin: auto;            /* centres one that fits, top-aligns one that does not */
	overflow: visible;       /* the radius belongs to the picture now, not the frame */
	background: transparent;
	box-shadow: none;
}
.svl-lightbox--image .svl-lightbox__frame img {
	display: block;
	width: auto;
	height: auto;
	max-width: 100%;
	max-height: none;
	border-radius: 10px;
	box-shadow: 0 30px 80px rgba( 0, 0, 0, 0.55 );
}
/* Fitted to the width is the default; a tap asks for the file's own pixels, and
   the overlay pans in both directions while it is showing them. The class is set
   by front.js, and only when there is more picture to show. */
.svl-lightbox--image.can-zoom .svl-lightbox__frame img { cursor: zoom-in; }
.svl-lightbox--image.is-full { overflow: auto; }
.svl-lightbox--image.is-full .svl-lightbox__frame { max-width: none; }
.svl-lightbox--image.is-full .svl-lightbox__frame img {
	max-width: none;
	cursor: zoom-out;
}
/* The close button hangs above the frame, and the frame's top is now the top of
   the scroll area — so it pins to the corner of the window instead. */
.svl-lightbox--image .svl-lightbox__close {
	position: fixed;
	top: 12px;
	inset-inline-end: 12px;
	background: rgba( 255, 255, 255, 0.22 );
}
/* Nothing behind the overlay should scroll while it is open. */
body.svl-lightbox-open { overflow: hidden; }
@media ( prefers-reduced-motion: reduce ) {
	.svl-lightbox { animation: none; }
}

/* The card is a button whose only visible content is a picture, so its name
   has to be text a screen reader can read and a sighted visitor cannot see. */
.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

/* The video plate shows its own poster frame. Figma drew a flat dark
   rectangle there because no video was configured yet; a black box next to a
   play button reads as something that failed to load. */
.d-s3__poster,
.m-s3__poster {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: inherit;
}
/* Once playing, the iframe takes over. */
.svl-video-playing .d-s3__poster,
.svl-video-playing .m-s3__poster { display: none; }

/* ==========================================================================
   Thank-you page — the hero, minus the portrait

   It renders the hero's OWN classes on the hero's own canvas, so nothing about
   the type, the gradients or the button is described here. What is here is the
   arrangement, because the desktop hero is two columns — copy on the left of a
   portrait on the right — and with the portrait gone the copy has a whole canvas
   to sit in the middle of.

   The first version of this page was fluid and only borrowed the hero's
   colours. It had the right palette and the wrong composition: a bold black
   heading the hero does not have, and everything centred at sizes that were
   nobody's. Rendering the hero itself is both shorter and closer.

   Canvas centre is 864. Every value below is the element's own width halved
   against it, which is why they read as `calc( 50% - half )`.

   Mobile has nothing here. Its hero is ALREADY a centred single column with the
   portrait BELOW the button, so leaving the portrait out of the markup is the
   entire mobile change.
   ========================================================================== */

/* The body: the hero pulls it leftward off centre with translateX(-100%) to
   clear the portrait. Centred it needs neither the offset nor the pull — and
   centred copy suits a page whose whole job is one sentence and a way out. */
.svl-tyh .d-hero__body {
	left: calc( 50% - 398px );      /* 796 / 2 */
	transform: none;
	text-align: center;
}

/* The gold line. The hero anchors it with `left: calc( 50% - 475px )`, which is
   half of a 950px line that never wraps — right for the hero's sentence and
   wrong for any other length, because it centres the LINE'S BOX, not the line.
   A translate centres whatever the text turns out to be. */
.svl-tyh .d-hero__gold {
	left: 50%;
	transform: translateX( -50% );
	/* The landing hero promoted this class to Brutalist Bold (10/2026); the
	   thank-you page keeps the handwritten gold line it always had. */
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
	font-size: 35px;
}
.svl-tyh .m-hero__gold {
	font-family: 'Gveret Levin', sans-serif;
	font-weight: 400;
}
/* The landing hero changed the shared hero classes (10/2026). The thank-you
   page must look exactly as before, so pin its hero text back to the originals. */
.svl-tyh .d-hero__body,
.svl-tyh .m-hero__body {
	font-family: 'Assistant', sans-serif;
	font-weight: 400;
}
.svl-tyh .d-hero__body { font-size: 26px; }
.svl-tyh .m-hero__body { font-size: 20px; }
.svl-tyh .d-hero__pill-text,
.svl-tyh .m-hero__pill-text {
	font-family: 'Tel Aviv Brutalist', sans-serif;
	font-weight: 300;
}
.svl-tyh .d-hero__pill-text { font-size: 30px; }
.svl-tyh .m-hero__pill-text { font-size: 18px; }

/* The frosted bar, 841 wide. */
.svl-tyh .d-hero__glass { left: calc( 50% - 420.5px ); }

/* The sentence on it. The hero anchors this from the RIGHT to hang it off the
   bar's right edge, so `right` has to be released or it fights `left`. */
.svl-tyh .d-hero__pill-text {
	right: auto;
	left: calc( 50% - 341px );      /* 682 / 2 */
	text-align: center;
}
/* Bold clause, then light — the hero's own two weights, as two lines. */
.svl-tyh .d-hero__pill-text strong,
.svl-tyh .m-hero__pill-text strong { display: block; }
.svl-tyh .svl-tyh__pill-light { font-weight: 300; }

/* The button is four nodes that must move as one: the group runs from the arrow
   disc's left edge (234) to the plate's right (807), so it is 573 wide. Stated
   as calc from the centre rather than as a shift, so every value can be read
   against the canvas on its own. */
.svl-tyh .d-hero__cta-arrow,
.svl-tyh .d-hero__hit       { left: calc( 50% - 286.5px ); }   /* 573 / 2 */
.svl-tyh .d-hero__cta-plate { left: calc( 50% - 249.5px ); }
.svl-tyh .d-hero__cta-label { left: calc( 50% - 188.5px ); }

/* ---- The vertical rhythm, without the portrait to fill it ----------------
   The hero leaves 247px between the gold line and the paragraph, and that gap
   is the top of the portrait. Keep the hero's tops with no portrait in them and
   the column reads as one with a hole punched through it.

   So the gold line comes down to 95px above the paragraph, and everything below
   the paragraph keeps the hero's own offsets from it — the bar at +213, its text
   at +235, the arrow disc at +408, the plate at +421, the label at +442. Those
   five are the hero's rhythm and are not touched here; only where the group
   sits is.

   The block is then centred in the canvas, which is what decides the canvas
   height: 35 of gold + 95 of gap + 506 of group = 636, and 900 leaves 132 above
   and below. The phone's hero is already tight — 50px between its gold line and
   its paragraph — so it only moves down as a whole to centre 429 in 490. */
/* --svl-tyh-top is where the frosted bar starts, and front.js writes it from
   where the paragraph actually ENDS. The hero's tops assume the hero's
   paragraph — seven lines — so reproducing them under a three-line one left
   109px of hole, and tightening them by hand would fix this copy and print the
   next one straight through the bar. The client edits this text.

   Everything in the group keeps the hero's own offsets from the bar: its text at
   +22, the arrow disc at +195, the plate at +208, the label at +229. Only where
   the group begins is measured.

   The fallbacks are the tops that suit the copy shipping today, so the page is
   right before any JS runs and stays right if none ever does. --svl-tyh-air is
   the space above the gold line, which front.js also uses as the space below the
   button — that is what keeps the column centred at any length. */
.svl-tyh .svl-hero-canvas { --svl-tyh-air: 132px; --svl-tyh-gap: 40px; }
.svl-tyh .d-hero__gold      { top: var( --svl-tyh-air, 132px ); }
.svl-tyh .d-hero__body      { top: 262px; }
.svl-tyh .d-hero__glass     { top: var( --svl-tyh-top, 400px ); }
.svl-tyh .d-hero__pill-text { top: calc( var( --svl-tyh-top, 400px ) +  22px ); }
.svl-tyh .d-hero__cta-arrow { top: calc( var( --svl-tyh-top, 400px ) + 195px ); }
.svl-tyh .d-hero__cta-plate { top: calc( var( --svl-tyh-top, 400px ) + 208px ); }
.svl-tyh .d-hero__cta-label { top: calc( var( --svl-tyh-top, 400px ) + 229px ); }
.svl-tyh .d-hero__hit       { top: calc( var( --svl-tyh-top, 400px ) + 195px ); }

/* The phone's own offsets from its bar: text +22, disc +110, plate +118.29,
   label +132. Its column is narrower, so the copy runs longer and the gap can
   be smaller. */
.svl-tyh .svl-stage--mobile .svl-hero-canvas,
.svl-tyh.svl-stage--mobile .svl-hero-canvas { --svl-tyh-air: 30px; --svl-tyh-gap: 28px; }
.svl-tyh .m-hero__gold      { top: var( --svl-tyh-air, 30px ); }
.svl-tyh .m-hero__body      { top: 115px; }
.svl-tyh .m-hero__glass     { top: var( --svl-tyh-top, 260px ); }
.svl-tyh .m-hero__pill-text { top: calc( var( --svl-tyh-top, 260px ) +  22px ); }
.svl-tyh .m-hero__cta-arrow { top: calc( var( --svl-tyh-top, 260px ) + 110px ); }
.svl-tyh .m-hero__cta-plate { top: calc( var( --svl-tyh-top, 260px ) + 118.29px ); }
.svl-tyh .m-hero__cta-label { top: calc( var( --svl-tyh-top, 260px ) + 132px ); }
.svl-tyh .m-hero__hit       { top: calc( var( --svl-tyh-top, 260px ) + 110px ); }
/* One screen: the stage has no sections below the hero. */
.svl-tyh .svl-rest-stage { display: none; }
