/* Sensor Travel: design and accessibility fixes, Impeccable audit 5.10.2026.
   Selectors are body-prefixed on purpose: several of the rules they override
   are injected later in the document (engine style tags, WPCode, inline
   style attributes), so they must win on specificity, not on order. */

:root {
	--st-navy: #29295F;
	--st-navy-deep: #1B1B45;
	--st-gold: #D4AF6C;          /* graphics, and gold on navy (6.44:1) */
	--st-gold-text: #8C6A2F;     /* gold text on white/off-white (4.98 / 4.69) */
	--st-gold-text-cream: #7A5C29; /* gold text on the cream boxes #F4EBD9/#F5EDDC (5.23 / 5.32) */
	--st-paper: #FAF9F6;
	--st-cream: #FAF3E0;
	--st-ring: rgba(41, 41, 95, .16);
	--st-shadow-hard: 4px 4px 0 rgba(41, 41, 95, .08);
	--st-wa-text: #157A40;       /* WhatsApp green as text on white (5.40) */
	--st-muted: #5F5F73;         /* small print on white (6.23) */
}

/* 1. Engine: the selected option was white on #C9A24B (2.40:1).
      Navy on the brand gold is 6.44:1 and keeps the gold "selected" look. */
body #stMulti .st-opt.on {
	background: var(--st-gold);
	border-color: var(--st-gold);
	color: var(--st-navy);
	font-weight: 700;
}

/* 2. Header WhatsApp link on mobile: #1A8A4A was 4.39:1. */
@media (max-width: 820px) {
	body .snh-act-wa {
		color: var(--st-wa-text);
		box-shadow: inset 0 0 0 1.5px rgba(21, 122, 64, .4);
	}
}

/* 3. Footer headings, now h2 (were h4, which skipped levels on every page).
      Same look as the old .snf h4. */
body .snf h2.snf-h {
	font-family: Assistant, sans-serif;
	font-size: 1.1rem;
	font-weight: 700;
	line-height: 1.65;
	letter-spacing: normal;
	color: var(--st-gold);
	margin: 0 0 10px;
	padding: 0;
	text-transform: none;
}
body .snf h2.snf-h::before,
body .snf h2.snf-h::after {
	content: none;
}

/* 4. /destinations and any page that renders .tw-article straight into
      .page-content: text ran flush to the window edge. Same proportional
      padding as the articles (full width kept, per the owner's preference). */
body.page .site-main > .page-content > .tw-article {
	padding-inline: clamp(18px, 6vw, 120px);
}

/* 5. Boxes with a thick coloured bar on one side (an AI-site tell) move to
      the brand's travel-document language: a fine ring and a hard offset
      shadow, or a perforated edge. */
body .sn-wrap .sn-verdict {
	border-inline-start: 0;
	box-shadow: inset 0 0 0 1.5px rgba(41, 41, 95, .22), 6px 6px 0 rgba(41, 41, 95, .08);
}
body .st-check {
	border: 1.5px solid var(--st-ring);
	box-shadow: 6px 6px 0 rgba(212, 175, 108, .32);
}
body .sensor-aeo-ask {
	border: 1.5px dashed rgba(140, 106, 47, .55) !important;
}
body .tw-reviewer {
	border: 1px solid #E8E8E8 !important;
	box-shadow: var(--st-shadow-hard);
}

/* 6. Header dropdown: soft 28px blur became the brand's hard offset. */
body .snh-sub {
	box-shadow: inset 0 0 0 1.5px var(--st-ring), 6px 6px 0 rgba(41, 41, 95, .1);
}

/* 7. AI disclaimer under the advisor: 11.5px grey was too small for legal text. */
body .sa-note {
	font-size: 13px;
	color: var(--st-muted);
}

/* 8. Touch targets on mobile. Footer links get vertical padding on the inline
      box, which widens the tap area without changing the line spacing. */
@media (max-width: 820px) {
	body .snh-burger {
		min-width: 44px;
		min-height: 44px;
	}
	body .snf a {
		padding-block: 6px;
	}
}

/* ---- 1.1.0: axe scan of 6.10.2026 ---- */

/* 9. Links inside running text were told apart from it by colour alone
      (gold vs grey body text, 1.65:1), which fails WCAG 1.4.1. Underline
      them. Classed links (buttons, cards, chips) keep their own look, and
      plain link lists (tables of contents, one link per item) are not
      running text. */
body main p a:not([class]),
body main li > a:not([class]):not(:only-child),
body main td a:not([class]) {
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: .2em;
}

/* 10. Gold text on the cream boxes: #8C6A2F was 4.2 on /agents/ tags, and
       the "קשור לעניין" links in articles were #A8802B at 3.11. */
body .ag-card .tag {
	color: var(--st-gold-text-cream);
}
body .tw-xref a {
	color: var(--st-gold-text-cream) !important;
}

/* 11. New H1s: /partners/ (was the portal's h2, same look kept) and the
       /articles/ posts page, which had no H1 at all. */
body .twref-portal h1.sdf-portal-h1,
body .twref-auth h1.sdf-portal-h1 {
	font-family: Assistant, sans-serif;
	font-size: 24px;
	font-weight: 700;
	line-height: 1.65;
	color: var(--st-navy);
	margin: .83em 0;
	letter-spacing: normal;
}
body.blog h1.sdf-archive-h1 {
	font-family: Assistant, sans-serif;
	font-size: clamp(1.75rem, 1.4rem + 1.4vw, 2.4rem);
	font-weight: 800;
	line-height: 1.25;
	color: var(--st-navy);
	margin: 0 0 .5rem;
	grid-column: 1 / -1; /* .page-content is a 3-column card grid */
}

/* ====================================================================
 * 1.2.0: Impeccable critique of 9.10.2026 (score 26/40)
 * Same rules as before: nothing in the engine, the tariffs or
 * sensor-convert changes. Every rule is a selector from the outside, and
 * deactivating the plugin brings the old look back.
 * ==================================================================== */

/* 12. Results: the stamp opens the results instead of arriving after every
       price, and the edit chips move below the price summary. The step is already a flex column, so
       this is order only; no node moves and the engine keeps its ids. */
body .sw-step[data-step="5"] > * { order: 6; }
body .sw-step[data-step="5"] > #swResTitle { order: 1; }
body .sw-step[data-step="5"] > #swResSub { order: 2; }
body .sw-step[data-step="5"] > #swStamp { order: 3; }
body .sw-step[data-step="5"] > #sqcTop { order: 4; }
body .sw-step[data-step="5"] > #swEdit { order: 5; }
body .sw-step[data-step="5"] > .sw-nav { order: 8; }
body .sw-step[data-step="5"] > .sw-foot { order: 9; }
body .sw-step[data-step="5"] > #swStamp {
	width: min(320px, 86%);
	margin: 12px auto 16px; /* the rotated corner touched the title */
	padding: 10px 16px 12px;
}
body .sw-step[data-step="5"] > #swEdit { margin: 0 0 22px; }
body .sw-step[data-step="5"] > #swResTitle { margin-bottom: 6px; }
/* The stamp already says where, when, how many and how long; the line
   under the title said the same thing a third time. */
body .sw-step[data-step="5"]:has(> #swStamp) > #swResSub { display: none; }
/* The stamp thumped twice: when step 5 opened with prices still loading
   from sensor-quote, the stamp (still carrying "in" from before) animated on
   being shown, then animated again when resultsDraw re-added "in" with the
   real prices. While the engine's loading row is there, the stamp waits. */
body .sw-step[data-step="5"]:has(#swRes .sw-loading) > #swStamp {
	visibility: hidden;
}
/* 1.2.5-1.2.7: the passport-stamp press, once per visit to the results.
   The engine re-adds .in on every redraw, and it redraws whenever a price
   answer arrives, so one visit could stamp two or three times. The engine's
   .in animation is switched off and sdf.js adds .sdf-go once, when the
   prices are on screen, and again only if the trip itself changes. Redraws
   no longer touch the animation. It drops in large and tilted,
   accelerating like a hand pressing down, hits slightly under size and
   settles. The engine forces animation-duration .55s !important on
   .sw-stamp.in, hence !important here, winning on specificity. */
@keyframes sdfStamp {
	0% {
		opacity: 0;
		transform: rotate(-13deg) scale(1.85);
		animation-timing-function: cubic-bezier(.55, 0, .85, .35);
	}
	68% {
		opacity: .95;
		transform: rotate(-4.5deg) scale(.96);
		animation-timing-function: cubic-bezier(.2, .7, .3, 1);
	}
	100% {
		opacity: .9;
		transform: rotate(-5deg) scale(1);
	}
}
body .sw-stamp.in { animation-name: none !important; }
body .sw-stamp.sdf-go,
body .sw-stamp.sdf-go.in {
	animation-name: sdfStamp !important;
	animation-duration: .5s !important;
	animation-delay: .1s;
	animation-fill-mode: both;
}
/* No reduced-motion opt-out here: the engine deliberately keeps the stamp
   under prefers-reduced-motion (it forces its duration back after
   Elementor's global reset), and the owner wants it seen. An earlier
   1.2.x rule switched it off and the stamp vanished for him. */
/* Wide tracking pulled the Hebrew letters apart and broke "גבולות" onto
   its own line. */
body .sw-stamp .t1 {
	letter-spacing: .06em;
	word-spacing: .18em;
	white-space: nowrap;
}

/* 13. (1.4.0: applies only when the visitor picks shekels, html.sdf-ils.)
       One currency first, everywhere. The summary strip already leads with
       ₪; the cards led with $. When sensor-convert has added the shekel line
       it becomes the headline and the dollar figure becomes its note. With
       no exchange rate there is no shekel line and nothing changes. */
html.sdf-ils body .sw-price:has(.sqc-sub.ils) .sqc-sub.ils {
	order: -2;
	flex-basis: 100%;
	margin: 0;
	font-size: 2.5rem;
	font-weight: 800;
	line-height: 1;
	letter-spacing: -.02em;
	color: var(--st-navy);
}
html.sdf-ils body .sw-price:has(.sqc-sub.ils) .now {
	order: -1;
	font-size: 1rem;
	font-weight: 700;
	letter-spacing: 0;
	color: #4A4F57;
}
body .sw-price .was { color: #6B7078; }

/* 15. The two WhatsApp share links were a solid green slab (white on
       #1F8A4C, 4.38:1) louder than the buy buttons. They become secondary
       buttons in the brand's own form; green stays on the icon. */
body .sqc-share a.me,
body .sqc-share a.other {
	background: #fff !important;
	color: var(--st-navy) !important;
	border: 0 !important;
	box-shadow: inset 0 0 0 1.5px var(--st-ring), 4px 4px 0 rgba(41, 41, 95, .07) !important;
	min-height: 48px;
	font-weight: 800;
}
body .sqc-share a.me:hover,
body .sqc-share a.other:hover,
body .sqc-share a.me:focus,
body .sqc-share a.other:focus {
	color: var(--st-navy) !important;
	box-shadow: inset 0 0 0 1.5px var(--st-navy), 6px 6px 0 rgba(212, 175, 108, .4) !important;
}
body .sqc-share a svg { color: var(--st-wa-text); fill: currentColor; }

/* 16. Tap targets on the results screen: 44px at least. The "להרחבה"
       links were 47x16; a negative margin grows the hit area without
       moving the text. */
body .sqc-sort button,
body .sqc-strip .b,
body .sqc-strip .n,
body .sw-chip,
body .sw .sw-back { min-height: 44px; }
body .sw-bd > summary { min-height: 44px; }
body .sw-more {
	display: inline-block;
	padding: 14px 8px;
	margin-block: -14px;
	margin-inline-end: -8px;
}
/* The company names in the strip jump to the card; say so visually. */
body .sqc-strip .n {
	text-decoration: underline;
	text-decoration-color: rgba(41, 41, 95, .28);
	text-decoration-thickness: 1px;
	text-underline-offset: .28em;
}

/* 17. Contrast measured on the real backgrounds (9.10.2026). */
body .sw-e-who .sw-who.on {          /* white on #C9A24B, 2.40:1 */
	background: var(--st-gold);
	border-color: var(--st-gold);
	color: var(--st-navy);
}
body .sw-e.rec .cost,                /* #8C6A2F on cream, 4.20:1 */
body .sw-e.rec .sw-more,
body .sw-e.rec .sw-e-opt,
body .sw-e.rec .sw-e-who,
body .st-hint { color: var(--st-gold-text-cream); }
body .sn-rate__s,                    /* gold stars, 1.78 to 2.07:1 */
body .sn-rev__stars { color: var(--st-gold-text); }

/* 18. Errors in the brand's error red instead of a borrowed orange. */
body .sw-hint,
body .st-alert {
	background: #FDF2F1;
	color: #B4291F;
	box-shadow: inset 0 0 0 1.5px rgba(180, 41, 31, .35);
}

/* 19. Focus: gold on white was about 2:1. Inside the engine and the
       results the ring is navy; on navy surfaces it stays gold. */
body .sw button:focus-visible,
body .sw a:focus-visible,
body .sw input:focus-visible,
body .sw select:focus-visible,
body .sw summary:focus-visible {
	outline: 3px solid var(--st-navy) !important;
	outline-offset: 3px;
}

/* 20. No blurred shadows (DESIGN.md "No-Blur Rule"). The chat pill and
       the accessibility button also get a gold hairline so they stay
       visible over the navy footer. */
body .sa-launch {
	box-shadow: inset 0 0 0 1.5px rgba(212, 175, 108, .7), 4px 4px 0 rgba(41, 41, 95, .18) !important;
}
body .sa-launch:hover {
	box-shadow: inset 0 0 0 1.5px var(--st-gold), 6px 6px 0 rgba(212, 175, 108, .4) !important;
}
body .sn-a11y-btn {
	box-shadow: inset 0 0 0 1.5px rgba(212, 175, 108, .7), 4px 4px 0 rgba(41, 41, 95, .18) !important;
}
body .sn-sticky { box-shadow: 0 -1.5px 0 rgba(212, 175, 108, .6) !important; }
body .sw-c .f img { box-shadow: 0 0 0 1px rgba(41, 41, 95, .14); }

/* 22. Mobile gutter 14px -> 16px, the system's minimum. */
body .sn-home { padding-inline: clamp(16px, 3vw, 28px); }
body .sn-trust { padding-inline: clamp(16px, 3vw, 28px); }

/* 23. Assistant is the only face (DESIGN.md). Frank Ruhl Libre was
       declared on the homepage h2s but never loaded. */
body .sn-home .sn-h2 { font-family: Assistant, sans-serif; }

/* 24. The footer e-mail broke at its hyphen (office@sensor-/ins.com). */
body .snf a[href^="mailto:"] { white-space: nowrap; }

/* Visually hidden live region for step and result announcements. */
.sdf-live {
	position: absolute !important;
	width: 1px; height: 1px;
	margin: -1px; padding: 0; border: 0;
	overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%);
	white-space: nowrap;
}
body .sw .sw-title:focus { outline: none; }
body .sw .sw-title:focus-visible { outline: 3px solid var(--st-navy); outline-offset: 4px; border-radius: 4px; }

/* ====================================================================
 * 1.3.0: the add-ons step (critique 9.10.2026, P1: a 2,470px wall of 15
 * rows on a phone). The engine still builds every row and still decides
 * which are recommended and pre-ticked; nothing about that changes.
 * The rows it does not recommend, and that nobody has ticked, fold
 * behind one button. A ticked row is never folded away.
 * ==================================================================== */
body #swExts .sw-e.sdf-x { display: none; }
body .sdf-more {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 2px;
	width: 100%;
	margin: 12px 0 4px;
	padding: 12px 18px;
	min-height: 52px;
	background: #fff;
	color: var(--st-navy);
	border: 0;
	border-radius: 16px;
	box-shadow: inset 0 0 0 1.5px var(--st-ring), 4px 4px 0 rgba(41, 41, 95, .07);
	font-family: inherit;
	cursor: pointer;
	text-align: center;
	transition: box-shadow .18s cubic-bezier(.22, 1, .36, 1), transform .18s cubic-bezier(.22, 1, .36, 1);
}
body .sdf-more:hover {
	transform: translateY(-1px);
	box-shadow: inset 0 0 0 1.5px var(--st-navy), 6px 6px 0 rgba(212, 175, 108, .4);
}
body .sdf-more:focus-visible { outline: 3px solid var(--st-navy); outline-offset: 3px; }
body .sdf-more .t {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 1.05rem;
	font-weight: 800;
}
body .sdf-more .t svg { width: 16px; height: 16px; transition: transform .2s cubic-bezier(.22, 1, .36, 1); }
body .sdf-more[aria-expanded="true"] .t svg { transform: rotate(180deg); }
body .sdf-more .l {
	font-size: .88rem;
	font-weight: 600;
	color: #4A4F57;
	line-height: 1.45;
}

/* On a phone the "הצגת ההשוואה" button stays in reach at the bottom of
   the add-ons step, and the floating chat and accessibility buttons move
   up so they do not sit on it. */
@media (max-width: 767px) {
	body .sw-step[data-step="4"] > .sw-nav {
		position: sticky;
		bottom: 0;
		z-index: 6;
		margin-inline: -16px;
		padding: 10px 16px calc(10px + env(safe-area-inset-bottom, 0px));
		background: var(--st-paper);
		box-shadow: 0 -1.5px 0 rgba(41, 41, 95, .12);
	}
	/* (1.5.0: the floating buttons' lift on this step moved to --sdf-fab-b) */
}

/* 1.3.1: the per-traveller "למי זה מיועד" pills repeated on every ticked
   row. While an add-on covers everyone they fold into one small link;
   once someone is left out the pills stay open. */
body #swExts .sw-e-who.sdf-x { display: none !important; }
body .sdf-who-t {
	display: inline-block;
	margin-top: 4px;
	padding: 12px 0;
	margin-block: -8px -12px;
	background: none;
	border: 0;
	font-family: inherit;
	font-size: .88rem;
	font-weight: 700;
	color: #4A4F57;
	cursor: pointer;
	text-align: start;
}
body .sdf-who-t u {
	color: var(--st-navy);
	text-decoration-color: rgba(41, 41, 95, .35);
	text-underline-offset: .25em;
}
body .sdf-who-t:focus-visible { outline: 3px solid var(--st-navy); outline-offset: 2px; border-radius: 4px; }

/* ====================================================================
 * 1.4.0: results in dollars by default (owner, 9.10.2026: shekel figures
 * beside the insurers' own dollar prices can confuse and make us look the
 * most expensive). A "דולר | שקל משוער" switch beside the sort buttons
 * shows the shekel estimate sensor-convert already computes; the choice
 * is remembered per browser. html.sdf-ils = shekels on.
 * ==================================================================== */
html:not(.sdf-ils) body .sqc-strip .p b.ils { display: none; }
html:not(.sdf-ils) body .sqc-strip .p small {
	font-size: 18px;
	font-weight: 800;
	color: var(--st-navy-deep);
}
html:not(.sdf-ils) body .sw-price .sqc-sub.ils,
html:not(.sdf-ils) body .sw-price .sqc-sub.sdf-per-ils { display: none; }
html.sdf-ils body .sw-price .sdf-per-usd { display: none; }
body .sw-price .sdf-per-usd {
	flex-basis: 100%;
	display: block;
	font-size: .92rem;
	color: #5C5A55;
	font-weight: 600;
	line-height: 1.4;
	margin-top: -4px;
}
body .sdf-cur {
	display: inline-flex;
	vertical-align: top;
	margin: 0 0 10px;
	margin-inline-start: 8px;
	border: 1.5px solid var(--st-navy);
	border-radius: 999px;
	overflow: hidden;
}
body .sdf-cur button {
	border: 0;
	background: transparent;
	color: var(--st-navy);
	font-family: inherit;
	font-size: 15px;
	font-weight: 700;
	line-height: 1;
	padding: 10px 16px;
	min-height: 44px;
	cursor: pointer;
}
body .sdf-cur button[aria-pressed="true"] { background: var(--st-navy); color: var(--st-paper); }
body .sdf-cur button:focus-visible { outline: 3px solid var(--st-navy); outline-offset: 2px; }

/* 1.4.1: on a phone the floating chat pill ("שאלה על ביטוח נסיעות?")
   covered engine controls (critique re-run, P1). It is a round icon
   button (1.5.2: always on phones, owner; it covered prices in the
   content tables too); its label stays for screen
   readers. sensor-convert used display:none for the label on the results,
   which also removed the button's only accessible name; restored here.
   The engine gets room at the bottom so its last control can scroll clear
   of the two floating buttons. */
@media (max-width: 767px) {
	body .sa-launch {
		padding: 0 !important;
		width: 48px;
		height: 48px;
		min-width: 48px;
		justify-content: center;
		border-radius: 50%;
	}
	body .sa-launch span {
		display: inline !important;
		position: absolute !important;
		width: 1px;
		height: 1px;
		margin: -1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}
	body .sw { padding-bottom: 72px; }
}

/* 1.4.2: between about 820 and 1100px the header wrapped onto three rows
   (229px tall at 1024, nav plus the compare and WhatsApp pair could not
   share one row), and the result cards squeezed their price column. The
   header's own phone layout (burger + sheet, from the WPCode header) now
   runs up to 1100px; the rules below are a copy of its max-width:820px
   block. Its script already sets --snh-h at every width. */
@media (min-width: 821px) and (max-width: 1100px) {
	body .snh-in { flex-wrap: nowrap; justify-content: space-between; padding-top: 8px; padding-bottom: 8px; }
	body .snh-nav, body .snh-cta, body .snh-wa, body .snh-pair { display: none; }
	body .snh-burger { display: block; min-width: 44px; min-height: 44px; }
	body .snh-logo img { width: 104px; }
	body .snh-sheet {
		display: block;
		position: fixed;
		inset-inline: 0;
		top: var(--snh-h, 64px);
		bottom: 0;
		background: #FAF9F6;
		z-index: 899;
		transform: translateX(100%);
		transition: transform .28s cubic-bezier(.22, 1, .36, 1);
		overflow-y: auto;
		visibility: hidden;
	}
	body .snh.open .snh-sheet { transform: translateX(0); visibility: visible; }
	body .snh-sheet nav { display: flex; flex-direction: column; padding: 18px; }
	body .snh-sheet nav a {
		color: #29295F;
		font-weight: 800;
		font-size: 1.35rem;
		text-decoration: none;
		padding: 16px 6px;
		border-bottom: 1px solid rgba(41, 41, 95, .12);
	}
	body .snh-actions { position: sticky; top: 100%; display: grid; grid-template-columns: 1fr 1fr 1.4fr; gap: 10px; padding: 16px; }
	body .snh-actions a {
		display: flex;
		align-items: center;
		justify-content: center;
		min-height: 52px;
		border-radius: 999px;
		font-weight: 800;
		text-decoration: none;
		font-size: 1rem;
	}
	body .snh-act-tel { background: #fff; color: #29295F; box-shadow: inset 0 0 0 1.5px rgba(41, 41, 95, .16); }
	body .snh-act-wa { background: #fff; color: var(--st-wa-text); box-shadow: inset 0 0 0 1.5px rgba(21, 122, 64, .4); }
	body .snh-act-cmp { background: #1B1B45; color: #FAF9F6; }
}
@media (prefers-reduced-motion: reduce) {
	body .snh-sheet { transition: none; }
}

/* Result cards: the logo | price | buy row ran out of room below ~900px.
   The engine's own phone layout (buy button on its own row) now starts
   at 900px instead of 640px, and a price never breaks between number
   and currency. */
@media (max-width: 900px) {
	body .sw-rowhead { grid-template-columns: 80px 1fr; row-gap: 10px; }
	body .sw-rowhead .buy-wrap { grid-column: 1 / -1; }
}
body .sw-price .now,
body .sw-price .sqc-sub.ils { white-space: nowrap; }

/* 1.4.4: the sort and currency switches clip their children
   (overflow:hidden), so the 3px focus outline drawn outside a button was
   cut away and keyboard focus was invisible. Drawn inside instead: navy on
   the white option, gold on the selected navy one. */
body .sw .sqc-sort button:focus-visible,
body .sw .sdf-cur button:focus-visible {
	outline: 3px solid var(--st-navy) !important;
	outline-offset: -6px !important;
}
body .sw .sqc-sort button[aria-pressed="true"]:focus-visible,
body .sw .sdf-cur button[aria-pressed="true"]:focus-visible {
	outline-color: var(--st-gold) !important;
}

/* 1.4.5: polish from the critique re-run (P3).
   - .sw-proof (the line under an insurer's name) had a 3px gold bar on one
     side, the pattern DESIGN.md rules out; now a fine gold ring.
   - Floating panels drew soft blurred shadows; they get the system's hard
     offset instead (No-Blur Rule).
   - The last tap targets under 44px in the engine. */
body .sw-proof {
	border-inline-start: 0 !important;
	box-shadow: inset 0 0 0 1.5px rgba(212, 175, 108, .55);
}
body .sw-dp-pop { box-shadow: inset 0 0 0 1.5px var(--st-ring), 6px 6px 0 rgba(41, 41, 95, .1) !important; }
body .st-pop { box-shadow: 6px 6px 0 rgba(212, 175, 108, .3) !important; }
body .sn-a11y-panel { box-shadow: inset 0 0 0 1.5px var(--st-ring), 6px 6px 0 rgba(41, 41, 95, .12) !important; }
body .sa-panel { box-shadow: inset 0 0 0 1.5px var(--st-ring), 6px 6px 0 rgba(41, 41, 95, .12) !important; }
body .tw-article figure img:hover { box-shadow: 6px 6px 0 rgba(41, 41, 95, .1) !important; }
body .sw-med { min-height: 44px; }
body .sw-e-opt select { min-height: 44px; }
body .sw-ep-ext { min-height: 44px; }
body .sdf-who-t { min-height: 44px; }

/* 1.4.6: on a phone, while the date picker is open the two floating
   buttons (chat, accessibility) step aside: they sat on "היום" and on
   date cells. And keyboard focus is never left under the sticky header
   or behind the floating buttons (WCAG 2.4.11). */
@media (max-width: 767px) {
	body:has(.sw-dp.is-open) .sa-launch,
	body:has(.sw-dp.is-open) .sn-a11y-btn { visibility: hidden; }
	html { scroll-padding-top: 120px; scroll-padding-bottom: 84px; }
}

/* 1.5.0: the two floating buttons stand together on one side on phones
   (owner, 9.10.2026). Chat at the bottom, accessibility right above it,
   both at the inline end (left in Hebrew), so the start side, where the
   insurer names, labels and selects sit, stays clear. Both stay available
   at all times. --sdf-fab-b is the shared bottom line: higher while the
   site's sticky CTA or the step-5 sticky bar is showing. */
@media (max-width: 767px) {
	body { --sdf-fab-b: 14px; }
	body:has(.sn-sticky.on) { --sdf-fab-b: 76px; }
	body:has(.sw-step.on[data-step="4"]) { --sdf-fab-b: 92px; }
	body .sa-launch { bottom: calc(var(--sdf-fab-b) + env(safe-area-inset-bottom, 0px)) !important; }
	body .sn-a11y-btn {
		inset-inline-start: auto !important;
		inset-inline-end: 14px !important;
		bottom: calc(var(--sdf-fab-b) + 58px + env(safe-area-inset-bottom, 0px)) !important;
	}
	body .sn-a11y-panel {
		inset-inline-start: auto !important;
		inset-inline-end: 14px !important;
		bottom: calc(var(--sdf-fab-b) + 116px) !important;
	}
}

/* Keyboard focus stays clear of the sticky header at every width (it was
   phone-only; at 1024 the header is 121px), and an empty required age
   field is marked, not only announced. */
html { scroll-padding-top: 130px; }
body .sw input[aria-invalid="true"] {
	box-shadow: inset 0 0 0 2px #B4291F !important;
	background: #FDF2F1;
}

/* ====================================================================
 * 1.5.1: desktop layout and the phone opening view (critique run 4,
 * owner-approved after three preview rounds, 9.10.2026).
 * ==================================================================== */

/* Desktop: every question step in one centred 780px column; the results
   head (title, summary, chips) in the same column; insurer cards side by
   side below it (owner's choice). */
@media (min-width: 901px) {
	body .sw-step:not([data-step="5"]) { width: 100%; max-width: 780px; margin-inline: auto; }
	body .sw-step[data-step="5"] > :not(#swRes):not(#swStamp) { width: 100%; max-width: 780px; margin-inline: auto; }
	body #sqcTop { max-width: 780px; }
}
/* 1.5.2: the identical add-on rows start at 768px (tablets showed the
   engine's uneven 2x2 grid between 768 and 900). */
@media (min-width: 768px) {
	/* Add-ons: one column of identical rows. Name and cost on the start
	   side; the traveller link, or a row's own option (cancellation level),
	   on the end side, so no row grows taller than the others. */
	body #swExts { grid-template-columns: 1fr !important; grid-auto-rows: 1fr; }
	body #swExts .sw-e { flex-wrap: nowrap; align-items: center; }
	body #swExts .sw-e > .b {
		align-self: center;
		display: grid;
		grid-template-columns: 1fr auto;
		column-gap: 16px;
		align-items: center;
	}
	body #swExts .sw-e > .b > .nm,
	body #swExts .sw-e > .b > .cost,
	body #swExts .sw-e > .b > .sm { grid-column: 1; }
	body #swExts .sw-e > .b > .sdf-who-t { grid-column: 2; grid-row: 1 / span 2; align-self: center; margin: 0; }
	body #swExts .sw-e > .sw-e-opt:not(.sw-e-who) {
		flex: 0 0 48%;
		margin: 0;
		padding: 0;
		padding-inline-start: 16px;
		border-top: 0;
		border-inline-start: 1px solid var(--st-ring);
		align-self: stretch;
		align-content: center;
	}
	body #swExts .sw-e:has(> .sw-e-opt:not(.sw-e-who)) > .b { grid-template-columns: 1fr; }
	body #swExts .sw-e:has(> .sw-e-opt:not(.sw-e-who)) > .b > .sdf-who-t { grid-column: 1; grid-row: auto; justify-self: start; }
}
/* With a mouse the traveller link needs no 44px finger target. */
@media (min-width: 768px) and (pointer: fine) {
	body #swExts .sdf-who-t { min-height: 28px; padding-block: 4px; margin-block: 0; }
}
/* "הצגת ההשוואה" stays in view on the add-ons step at every width. */
@media (min-width: 768px) {
	body .sw-step[data-step="4"] > .sw-nav {
		position: sticky;
		bottom: 0;
		z-index: 6;
		padding-block: 12px;
		background: var(--st-paper);
		box-shadow: 0 -1.5px 0 rgba(41, 41, 95, .12);
	}
}
@media (min-width: 1100px) {
	body .sw-step[data-step="5"] > #swRes {
		display: grid;
		grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
		gap: 18px;
		align-items: start;
	}
	/* inside a narrower card the engine's own stacked card header fits */
	body .sw-step[data-step="5"] > #swRes .sw-rowhead { grid-template-columns: 80px 1fr; row-gap: 10px; }
	body .sw-step[data-step="5"] > #swRes .sw-rowhead .buy-wrap { grid-column: 1 / -1; }
	body .sw-step[data-step="5"] > #swRes .sw-perks { grid-template-columns: 1fr !important; }
}

/* Phone opening view: the trust strip keeps every word in less height,
   the six insurer names fit one line (no lone "• פספורטכארד"), and the
   destination tiles flow with the page instead of a 374px inner scroll. */
@media (max-width: 767px) {
	body .sn-trust { padding-top: 8px; padding-bottom: 2px; }
	body .sn-trust__lead { font-size: .94rem; line-height: 1.4; margin-bottom: 6px; }
	body .sn-trust__cos { gap: 2px 9px; flex-wrap: nowrap; justify-content: center; }
	body .sn-trust__cos li { font-size: .78rem; white-space: nowrap; }
	body .sn-trust__cos li + li::before { margin-left: 9px; margin-right: -5px; width: 3px; height: 3px; }
	body .sn-trust__pts { gap: 4px 6px; margin-top: 6px; }
	body .sn-trust__pts li { font-size: .76rem; padding-inline: 9px; }
	body .sn-trust__pts li.sn-rate { padding-inline: 9px 3px; }
	body #swCountries { max-height: none !important; overflow: visible !important; }
}

/* 1.5.2 (critique run 5).
   - Phones: the results price summary keeps its buy buttons clear of the
     floating buttons' corner (the accessibility button sat on PassportCard's
     "לרכישה").
   - The theme's own "דלג לתוכן" points at #content, which does not exist;
     the working skip link (.sn-a11y-skip, to #sn-main) is moved first in the
     page by sdf.js and the broken one is hidden. */
@media (max-width: 767px) {
	body .sqc-strip li { padding-inline-end: 66px; }
}
body:has(.sn-a11y-skip) .skip-link { display: none !important; }

/* ====================================================================
 * 1.5.4 (critique run 6, owner's picks 9.10.2026).
 * ==================================================================== */

/* Phones, add-ons step: once the sticky action row reaches its own place
   at the end of the step, the floating buttons' corner sat on
   "הצגת ההשוואה". The row keeps that corner free, as the price rows do. */
@media (max-width: 767px) {
	body .sw-step[data-step="4"] > .sw-nav { padding-inline-end: 72px; }
}

/* Results on wider screens: the chat launcher becomes the same 48px
   circle as on phones (owner), and the card grid keeps both floating
   buttons' columns free, so no buy button sits under either of them. */
@media (min-width: 768px) {
	body:has(.sw-step.on[data-step="5"]) .sa-launch {
		padding: 0 !important;
		width: 48px;
		height: 48px;
		min-width: 48px;
		justify-content: center;
		border-radius: 50%;
	}
	body:has(.sw-step.on[data-step="5"]) .sa-launch span {
		display: inline !important;
		position: absolute !important;
		width: 1px;
		height: 1px;
		margin: -1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}
}
@media (min-width: 1100px) {
	body .sw-step[data-step="5"] > #swRes { padding-inline: 24px; }
}
/* sensor-convert fades the launcher out (opacity 0) while its own bar is
   up; it stayed in the tab order as an invisible button. */
body .sa-launch.sqc-off { visibility: hidden; }

/* Side-by-side cards share their lines (owner): every card in a row keeps
   the same room for the badge above the price ("מדורגת ראשונה בשירות",
   "הטבת אתר", "הכי זול") and for the price block, so prices and buy
   buttons line up across the row. sdf.js measures the row and sets
   --sdf-pt / --sdf-p; cards in a row are equal height. (1.5.6: from 768px,
   where the cards also go two-up.) */
@media (min-width: 768px) {
	body .sw-step[data-step="5"] > #swRes { align-items: stretch; }
	/* 1.5.13: no grid any more. A card with two badges ("הכי זול" and a
	   "הטבת אתר" deal) put the second one in an extra narrow column, which
	   squeezed the deal into a tall strip and the price into a narrower
	   box that then overflowed under the buy button ("לכל הנוסעים, לכל…"
	   cut off). Badges stay in their own flow; the card only gets the room
	   it lacks above them and a minimum height for its price block. */
	body #swRes .sw-rmid.sdf-al { padding-top: var(--sdf-pt, 0px); }
	body #swRes .sw-rmid.sdf-al > .sw-price { min-height: var(--sdf-p); align-content: flex-start; }
}

/* Facts are not buttons (DESIGN.md, the Lift Means Press Rule). The navy
   fact bar under each insurer becomes a flat Sand fact tile, and the day
   count under the dates is a plain bold line, not a gold-ringed pill. */
body .sw-kick {
	background: #F6F3EC;
	color: var(--st-navy);
	border-radius: 12px;
	font-weight: 600;
}
body .sw-days {
	background: none;
	box-shadow: none;
	padding: 4px 0 0;
}

/* Touch screens keep no hover look after a tap: the tile under the finger
   stayed lifted with a navy ring on the next step. */
@media (hover: none) {
	body .sw-c:hover:not(.on),
	body .sw-n:hover,
	body .sw-chip:hover:not(.on) { transform: none; box-shadow: inset 0 0 0 1.5px var(--hair); }
	body .sw-c.on:hover { transform: none; box-shadow: 4px 4px 0 rgba(212, 175, 108, .4); }
	body .sw-next:hover { transform: none; background: var(--navy-deep); box-shadow: 4px 4px 0 rgba(41, 41, 95, .1); }
	body .sa-launch:hover { transform: none; }
}

/* The skip link's target takes focus without drawing a ring round the
   whole page. */
body #sn-main:focus { outline: none; }

/* 1.5.5 (critique run 7).
   - Phones: 1.5.4's corner reserve left "הצגת ההשוואה" 221px wide with the
     engine's 60px side padding, so it broke onto two lines (82px). Tighter
     padding keeps it on one line and still 30px clear of the corner.
   - Touch: an add-on row kept the navy hover ring after it was unticked,
     which looks the same as ticked. */
@media (max-width: 767px) {
	body .sw-step[data-step="4"] > .sw-nav .sw-next { padding-inline: 24px; white-space: nowrap; }
}
@media (hover: none) {
	body .sw-e:hover:not(.on) { box-shadow: inset 0 0 0 1.5px var(--hair); }
}

/* ====================================================================
 * 1.5.6 (critique run 7, owner's picks 10.10.2026).
 * ==================================================================== */

/* Results between 768 and 1099px: two cards side by side, as on wider
   screens (owner), with the same aligned price and buy lines. */
@media (min-width: 768px) and (max-width: 1099px) {
	body .sw-step[data-step="5"] > #swRes {
		display: grid;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		gap: 18px;
		padding-inline: 32px;
	}
	body .sw-step[data-step="5"] > #swRes .sw-rowhead { grid-template-columns: 80px 1fr; row-gap: 10px; }
	body .sw-step[data-step="5"] > #swRes .sw-rowhead .buy-wrap { grid-column: 1 / -1; }
	body .sw-step[data-step="5"] > #swRes .sw-perks { grid-template-columns: 1fr !important; }
}

/* Results from 768px: the accessibility button joins the chat circle on
   the inline end, stacked above it as on phones, and takes the same 48px.
   The other side of the card grid is then free of floating buttons. */
@media (min-width: 768px) {
	body:has(.sw-step.on[data-step="5"]) .sn-a11y-btn {
		inset-inline-start: auto !important;
		inset-inline-end: 20px !important;
		bottom: 78px !important;
		width: 48px;
		height: 48px;
	}
	body:has(.sw-step.on[data-step="5"]) .sn-a11y-btn svg { width: 26px; height: 26px; }
	body:has(.sw-step.on[data-step="5"]) .sn-a11y-panel {
		inset-inline-start: auto !important;
		inset-inline-end: 20px !important;
		bottom: 136px !important;
	}
}

/* Phones, results: the buy button, its note and the WhatsApp link keep
   the floating buttons' corner free while the cards scroll past. */
@media (max-width: 767px) {
	body #swRes .sw-rowhead .buy-wrap { padding-inline-end: 50px; }
}

/* Phones: the date picker opens as a sheet from the bottom of the screen
   (owner), so its days and "היום" / "ניקוי" are always in view, with
   44px days, month arrows and footer buttons. The page behind is dimmed;
   a tap on it closes the picker as before (outside tap). */
@media (max-width: 767px) {
	body .sw-step.on:has(.sw-dp.is-open) { transform: none !important; animation: none !important; }
	body .sw-dp.is-open .sw-dp-pop {
		position: fixed;
		top: auto !important;
		bottom: 0 !important;
		inset-inline: 0;
		width: auto;
		max-height: 88vh;
		overflow-y: auto;
		z-index: 100001;
		padding: 18px 16px calc(16px + env(safe-area-inset-bottom, 0px));
		border-radius: 20px 20px 0 0;
		box-shadow: inset 0 1.5px 0 var(--st-ring), 0 -4px 0 rgba(41, 41, 95, .08) !important;
		overscroll-behavior: contain;
	}
	body:has(.sw-dp.is-open)::after {
		content: '';
		position: fixed;
		inset: 0;
		z-index: 100000;
		background: rgba(27, 27, 69, .38);
	}
	body .sw-dp.is-open .sw-dp-day { min-height: 44px; font-size: 1.08rem; }
	body .sw-dp.is-open .sw-dp-nav { width: 44px; height: 44px; }
	body .sw-dp.is-open .sw-dp-quick { min-height: 44px; }
	body .sw-dp.is-open .sw-dp-grid { gap: 4px; }
}
/* The return calendar shows the chosen departure day. */
body .sw-dp-day.sdf-dep:not(.is-sel) { box-shadow: inset 0 0 0 2px var(--st-navy); }

/* The plane lands on the end of the track instead of half past it (it
   touched the screen edge on phones). */
body #swPlane[style*="100%"] { transform: translateX(100%); }

/* Ten destination tiles in two even rows of five from 768px (they ended
   4+4+2 on tablets and 6+4 on desktop). */
@media (min-width: 768px) {
	body #swCountries { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }
}

/* 1.5.7 (critique run 8): two slips from 1.5.6.
   - The engine nudges its date popup sideways to keep it on screen with an
     inline transform; on the full-width phone sheet that pushed it 8px
     off the right edge.
   - With the corner reserve, "לרכישה באתר PassportCard" broke onto two
     lines (84px); the buy buttons take less side padding on phones.
   - On touch, a tapped day no longer keeps its hover fill. */
@media (max-width: 767px) {
	body .sw-dp.is-open .sw-dp-pop { transform: none !important; }
	body #swRes .sw-rowhead .sw-buy { padding-inline: 18px; }
}
@media (hover: none) {
	body .sw-dp-day:hover:not(:disabled):not(.is-sel):not(.is-range) { background: transparent; }
}

/* ====================================================================
 * 1.5.8 (critique run 8, owner's picks 10.10.2026).
 * ==================================================================== */

/* Phone menu: the sheet scrolled as a whole and its action row
   (טלפון / וואטסאפ / להשוואה) ended 35px below the screen. The link list
   is the part that scrolls now; the action row is a fixed footer. */
@media (max-width: 1100px) {
	body .snh-sheet { display: flex; flex-direction: column; overflow: hidden; }
	body .snh-sheet nav { flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
	body .snh-actions {
		position: static;
		flex: 0 0 auto;
		padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
		background: #FAF9F6;
		box-shadow: 0 -1.5px 0 rgba(41, 41, 95, .12);
	}
}

/* Phones: the floating corner (chat + accessibility, x 14-62) keeps a
   gutter in the add-on rows, the result cards' details and the edit
   chips, as the buy row already does (owner). */
@media (max-width: 767px) {
	body #swExts .sw-e { padding-inline-end: 52px; }
	body #swRes .sw-det { padding-inline-end: 52px; }
	body #swEditChips { padding-inline-end: 52px; }
}

/* Phones: a "להשוואת מחירים" bar at the bottom of the screen once the
   engine has scrolled away above (owner). sdf.js adds the bar and turns
   .on on and off; the site's own .sn-sticky styles, and the floating
   buttons' lift while it shows, were already in place. */
@media (max-width: 767px) {
	body .sn-sticky.on { display: block; }
	body .sn-sticky { padding-bottom: calc(9px + env(safe-area-inset-bottom, 0px)); }
	body .sn-sticky a { min-height: 44px; display: flex; align-items: center; justify-content: center; }
	body:has(.sn-sticky) { padding-bottom: 68px; }
	body:has(.sw-dp.is-open) .sn-sticky { display: none; }
}
@media (min-width: 768px) {
	body .sn-sticky { display: none !important; }
}

/* ====================================================================
 * 1.5.11 (critique run 9, owner's picks 10.10.2026: all four, gutter).
 * ==================================================================== */

/* Phones: the homepage content under the engine (reviews, the five-step
   guide, insurer cards, price tables, FAQ) keeps the floating corner's
   gutter too, so the chat and accessibility circles never sit on text. */
@media (max-width: 767px) {
	body .sn-home { padding-inline-end: 64px; }
}

/* Result cards: the details panel painted over the card's ring, so the
   lower part of every card lost its sides, and a static card carried the
   offset shadow that DESIGN.md keeps for things you press. The panel sits
   inside the ring now, the cards are flat with a ring only, and in the
   side-by-side grid the panel runs to the card's foot. */
body #swRes .sw-row { box-shadow: inset 0 0 0 1.5px var(--hair); }
body #swRes .sw-row.lead { box-shadow: inset 0 0 0 2px var(--gold); }
body #swRes .sw-row .sw-det { margin: 0 1.5px 1.5px; border-radius: 0 0 16.5px 16.5px; }
body #swRes .sw-row.lead .sw-det { margin: 0 2px 2px; border-radius: 0 0 16px 16px; }
@media (min-width: 768px) {
	body .sw-step[data-step="5"] > #swRes .sw-row { display: flex; flex-direction: column; }
	body .sw-step[data-step="5"] > #swRes .sw-row > .sw-det { flex: 1 1 auto; }
}

/* Desktop: the price summary was as wide as the column, so a company's
   name sat ~650px from its price and buy button. It is a compact list in
   the middle now. */
@media (min-width: 768px) {
	body #sqcTop .sqc-strip { max-width: 560px; margin-inline: auto; }
}

/* Phone date sheet: its heading says which date is being picked (the
   popup's own label, "תאריך יציאה" / "תאריך חזרה"). */
@media (max-width: 767px) {
	body .sw-dp.is-open .sw-dp-pop::before {
		content: attr(aria-label);
		display: block;
		margin: 0 0 12px;
		font-size: 1.15rem;
		font-weight: 800;
		color: var(--st-navy);
		text-align: center;
	}
}

/* Footer links were 21px tall on desktop (24px is the floor for a mouse
   target); each link now takes its line's height. */
body .snf a { display: inline-block; }

/* 1.5.12: in an aligned row the badge slot is as tall as the row's
   tallest badge, and a short badge ("הכי זול") stretched to fill it (a
   59x50 lozenge). Badges keep their own height and sit just above the
   price; a "הטבת אתר" pill that wraps keeps soft corners, not an oval. */
@media (min-width: 768px) {
	body #swRes .sw-rmid > .deal { border-radius: 12px; }
}

/* ====================================================================
 * 1.5.14 (critique run 10, owner 10.10.2026: one rule for the floating
 * buttons everywhere). Chat and accessibility are two 48px circles
 * stacked at the inline end at every width, and nothing readable or
 * pressable runs underneath them: every place a scan found text in that
 * corner now keeps a gutter.
 * ==================================================================== */

/* Phones */
@media (max-width: 767px) {
	body .snf-in,
	body .snf-bottom { padding-inline-end: 64px; }
	body .sw-step > .sw-foot { padding-inline-end: 48px; }
	body #swCountries,
	body #swCounts { padding-inline-end: 44px; }
	body .sdf-more { padding-inline-end: 56px; }
	body #swRes .sw-rowhead .sw-rmid { padding-inline-end: 32px; }
	/* the sort and currency switches share one line and kept "שקל משוער"
	   in the corner */
	body #sqcTop .sqc-sort button,
	body #sqcTop .sdf-cur button { padding-inline: 12px; }
}

/* Wider screens: the same two circles, stacked, on every step (the chat
   was a 200px pill before results and the accessibility button sat on
   the other side, over the footer). */
@media (min-width: 768px) {
	body .sa-launch {
		padding: 0 !important;
		width: 48px;
		height: 48px;
		min-width: 48px;
		justify-content: center;
		border-radius: 50%;
	}
	body .sa-launch span {
		display: inline !important;
		position: absolute !important;
		width: 1px;
		height: 1px;
		margin: -1px;
		overflow: hidden;
		clip: rect(0 0 0 0);
		clip-path: inset(50%);
		white-space: nowrap;
	}
	body .sn-a11y-btn {
		inset-inline-start: auto !important;
		inset-inline-end: 20px !important;
		bottom: 78px !important;
		width: 48px;
		height: 48px;
	}
	body .sn-a11y-btn svg { width: 26px; height: 26px; }
	body .sn-a11y-panel {
		inset-inline-start: auto !important;
		inset-inline-end: 20px !important;
		bottom: 136px !important;
	}
	body .snf-in,
	body .snf-bottom { padding-inline: 76px; }
}
/* Tablets and small laptops, where the content runs edge to edge: the
   content and the question steps keep both sides clear, and the three
   sample price tables (wider than a third of the row, they spilled out
   of their cards at 1024) go two across with the third centred, or one
   across on narrower screens. */
@media (min-width: 768px) and (max-width: 1199px) {
	body .sn-home { padding-inline: 76px; }
	body .spt-grid { grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); }
	body .spt-grid > .spt-fig:last-child:nth-child(odd) {
		grid-column: 1 / -1;
		justify-self: center;
		width: calc(50% - 8px);
		min-width: 330px;
	}
}
@media (min-width: 768px) and (max-width: 900px) {
	body .sw-step:not([data-step="5"]) { padding-inline: 60px; }
}

/* 1.5.15 (critique run 11).
   - 768-827px: the sample price tables are one per row there, so the
     "odd last table centred at half width" rule made the third one half
     as wide as the other two.
   - Phones: the results edit pane keeps the floating corner's gutter too,
     and in the dates pane each label stays with its own field ("חזרה:" sat
     at the end of the first line with its field wrapped below). */
@media (min-width: 768px) and (max-width: 827px) {
	body .spt-grid > .spt-fig:last-child:nth-child(odd) {
		grid-column: auto;
		justify-self: stretch;
		width: auto;
		min-width: 0;
	}
}
@media (max-width: 767px) {
	body #swEditPane { padding-inline-end: 48px; }
	body #swEditPane .sw-ep-row:has(.sw-ep-date) {
		display: grid;
		grid-template-columns: auto 1fr;
		gap: 10px 12px;
		align-items: center;
	}
}

/* ====================================================================
 * 1.5.16 (critique run 11, owner 11.10.2026: "תתקן הכל").
 * ==================================================================== */

/* 1. Phones: the detailed result cards open short. Price, buy, the
   service-rank line and "פירוט המחיר" stay; the advantages list and the
   fact tile fold behind one button per card (sdf.js adds it). The price
   summary at the top remains the place to decide. */
@media (max-width: 767px) {
	body #swRes .sw-row.sdf-fold .sw-det > .sw-perks,
	body #swRes .sw-row.sdf-fold .sw-det > .sw-kick { display: none; }
	body #swRes .sdf-more-co {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 8px;
		width: 100%;
		min-height: 44px;
		margin: 10px 0 0;
		padding: 8px 14px;
		background: #fff;
		color: var(--st-navy);
		border: 0;
		border-radius: 999px;
		box-shadow: inset 0 0 0 1.5px var(--st-ring);
		font-family: inherit;
		font-size: 1rem;
		font-weight: 700;
		cursor: pointer;
	}
	body #swRes .sdf-more-co svg { width: 14px; height: 14px; transition: transform .2s cubic-bezier(.22, 1, .36, 1); }
	body #swRes .sdf-more-co[aria-expanded="true"] svg { transform: rotate(180deg); }
	body #swRes .sdf-more-co:focus-visible { outline: 3px solid var(--st-navy); outline-offset: 2px; }
}
@media (min-width: 768px) {
	body #swRes .sdf-more-co { display: none; }
}

/* 2. Date fields: one pill (DESIGN.md "Inputs"), not a ringed box holding
   a ringed field holding the input. The field is the pill, the input
   inside it is plain, and the card round each date is gone. */
body .sw-date { background: none; box-shadow: none; padding: 0; }
body .sw-dp-field {
	background: #fff;
	border-radius: 999px;
	min-height: 56px;
	padding: 4px 18px;
}
body .sw-dp-field .sw-dp-input {
	background: transparent;
	box-shadow: none;
	border-radius: 0;
	padding: 0;
	min-height: 0;
}
body .sw-dp-field .sw-dp-input:focus-visible { outline: none !important; }

/* 3. Phone date sheet: a visible "סגירה" in its top corner (sdf.js). */
body .sdf-dp-close { display: none; }
@media (max-width: 767px) {
	body .sw-dp.is-open .sw-dp-pop { position: fixed; }
	body .sw-dp.is-open .sdf-dp-close {
		display: inline-flex;
		align-items: center;
		justify-content: center;
		position: absolute;
		top: 10px;
		inset-inline-end: 12px;
		min-width: 44px;
		min-height: 44px;
		padding: 0 12px;
		background: transparent;
		color: var(--st-navy);
		border: 0;
		border-radius: 999px;
		font-family: inherit;
		font-size: 1rem;
		font-weight: 700;
		text-decoration: underline;
		text-underline-offset: .25em;
		cursor: pointer;
	}
	body .sw-dp.is-open .sdf-dp-close:focus-visible { outline: 3px solid var(--st-navy); outline-offset: 2px; }
}

/* 4. Desktop: the progress track spans the engine column, not the whole
   window. */
@media (min-width: 901px) {
	body .sw > .sw-prog { width: 100%; max-width: 780px; margin-inline: auto; } /* 1.5.17: width, or the flex parent shrank it to 72px */
}

/* 5. Results type and colour back on the tokens (DESIGN.md): small print
   0.9rem, UI text 1rem, prices in the summary 1.1rem, table heads and
   badges 0.8rem; greys are Muted Slate, the WhatsApp green is #157A40,
   card corners 16px. */
body .sw-step[data-step="5"] .sqc-strip .sqc-tag,
body .sw-step[data-step="5"] .sw-rmid .sqc-tag,
body .sw-step[data-step="5"] .sw-rmid .chip,
body .sw-step[data-step="5"] .sw-rmid .deal { font-size: .8rem; }
body .sw-step[data-step="5"] .sqc-strip .sqc-tag,
body .sw-step[data-step="5"] .sw-rmid .sqc-tag { color: var(--st-gold-text-cream); }
body .sw-step[data-step="5"] .sqc-note,
body .sw-step[data-step="5"] .sqc-lic,
body .sw-step[data-step="5"] .sqc-claims,
body .sw-step[data-step="5"] .sw-bdnote,
body .sw-step[data-step="5"] .sw-foot p,
body .sw-step[data-step="5"] .sw-bd > summary,
body .sw-step[data-step="5"] .sw-more,
body .sw-step[data-step="5"] .sqc-strip .b,
body .sw-step[data-step="5"] .sw-price .sdf-per-usd,
body .sw-step[data-step="5"] #swRes th,
body .sw-step[data-step="5"] #swRes td,
body .sw-step[data-step="5"] #swStamp .t3 { font-size: .9rem; }
body .sw-step[data-step="5"] .sqc-strip .n,
body .sw-step[data-step="5"] .sdf-cur button,
body .sw-step[data-step="5"] .sqc-sort button,
body .sw-step[data-step="5"] .sqc-share span,
body .sw-step[data-step="5"] .sw-price .per,
body .sw-step[data-step="5"] .sw-chip,
body .sw-step[data-step="5"] .sqc-wa span,
body .sw-step[data-step="5"] .sw-perks li,
body .sw-step[data-step="5"] .sw-kick,
body .sw-step[data-step="5"] .sw-proof,
body .sw-step[data-step="5"] .sw-price .was { font-size: 1rem; }
body .sw-step[data-step="5"] .sqc-strip .p b,
body .sw-step[data-step="5"] .sqc-strip .p small { font-size: 1.1rem; }
body .sw-step[data-step="5"] .sqc-note,
body .sw-step[data-step="5"] .sw-foot p,
body .sw-step[data-step="5"] .sw-price .was,
body .sw-step[data-step="5"] .sw-price .sdf-per-usd,
body .sw-step[data-step="5"] .sw-price .sqc-sub { color: #5F5F73; }
body .sw-step[data-step="5"] .sqc-wa,
body .sw-step[data-step="5"] .sqc-wa span { color: var(--st-wa-text); }
body #swRes .sw-row { border-radius: 16px; }
body #swRes .sw-row .sw-det { border-radius: 0 0 14.5px 14.5px; }
body #swRes .sw-row.lead .sw-det { border-radius: 0 0 14px 14px; }

/* 1.5.18 (critique run 12): two slips from 1.5.16.
   - The date input inside the pill still drew its own 2px focus ring (a
     square inside the pill); only the pill shows focus now.
   - With the results small print at 0.9rem, the licence/rating line under
     the summary ran into the floating corner on phones; it keeps the
     gutter like the rest. */
body .sw-dp-field .sw-dp-input:focus,
body .sw-dp-field .sw-dp-input:focus-visible { box-shadow: none !important; outline: none !important; }
@media (max-width: 767px) {
	body #sqcTop .sqc-lic,
	body #sqcTop .sqc-note { padding-inline-end: 48px; }
}

/* ====================================================================
 * 1.5.19 (owner 11.10.2026: yes to 1, 2 and 3 after run 12).
 * ==================================================================== */

/* 3. Phones: a folded card keeps price, buy and the reassurance line;
   the WhatsApp question and "פירוט המחיר" go into the fold as well. */
@media (max-width: 767px) {
	body #swRes .sw-row.sdf-fold .buy-wrap > .sqc-wa,
	body #swRes .sw-row.sdf-fold .sw-det > .sw-bd { display: none; }
}

/* 2. The summary list carries a card's own badge ("מדורגת ראשונה
   בשירות") on that insurer's row, so the מומלץ order is not a mystery. */
body #sqcTop .sqc-strip .sdf-strip-chip {
	display: inline-block;
	margin-inline-start: 6px;
	padding: 2px 10px;
	border-radius: 999px;
	background: var(--st-navy-deep);
	color: var(--st-paper);
	font-size: .8rem;
	font-weight: 800;
	line-height: 1.5;
	white-space: nowrap;
	vertical-align: middle;
}

/* 1. Phones: changing dates from the results opens the engine's own date
   sheet (the step-3 picker), not a typed field. While it is open, the
   hidden step-3 is laid out invisibly so its picker can show. */
@media (max-width: 767px) {
	body.sdf-epdp .sw-step[data-step="3"] {
		display: block !important;
		position: fixed !important;
		inset: 0 0 auto 0;
		height: 0;
		overflow: visible;
		visibility: hidden;
		z-index: 100001;
		animation: none !important;
		transform: none !important;
	}
	body.sdf-epdp .sw-step[data-step="3"] .sw-dp.is-open .sw-dp-pop { visibility: visible; }
	body #swEditPane .sw-ep-date[readonly] { cursor: pointer; caret-color: transparent; }
}

/* 1.5.20 (critique run 13).
   - Phones: the price summary is a flex item with auto side margins, so it
     sized to its content; with the new badge in a row it grew to 361px
     inside a 343px column and its left edge ran under the floating
     corner. It stretches to the column now, and the badge sits on its
     own line under the insurer's name. */
@media (max-width: 767px) {
	body .sw-step[data-step="5"] > #sqcTop,
	body #sqcTop.sqc-top { align-self: stretch; width: auto; min-width: 0; margin-inline: 0; }
	body #sqcTop .sqc-strip .n { min-width: 0; white-space: normal; }
	body #sqcTop .sqc-strip .sdf-strip-chip { display: block; width: fit-content; margin: 3px 0 0; }
}

/* 1.5.21 (owner 11.10.2026).
   - Desktop: the whole results head (sort and currency switches, the
     price summary, the notes and the share buttons) shares the summary's
     560px column, one edge for all of it.
   - A "הטבת אתר" deal that wraps keeps soft 12px corners at every width
     (a full pill over three lines read as a blob on phones). */
@media (min-width: 768px) {
	/* !important: the 1.5.1 column rule (:not(#swRes):not(#swStamp)) outranks a plain id */
	body #sqcTop { max-width: 560px !important; margin-inline: auto; }
	body #sqcTop .sqc-strip { max-width: none; }
}
body #swRes .sw-rmid > .deal { border-radius: 12px; }
