/* WP InPlate — WordPress glue. Loads after tokens.css and components.css.
   Maps WordPress block output onto the design system; uses semantic tokens only. */

/* ---------- Template parts ---------- */
/* The template-part wrapper must not become the sticky header's containing block. */
.wp-block-template-part:has(> .ip-header),
.wp-block-template-part:has(> .ip-footer) { display: contents; }
.admin-bar .ip-header.is-sticky { top: var(--wp-admin--admin-bar--height, 0px); }
.ip-main:focus { outline: none; }

/* ---------- Helpers replacing inline styles from the handoff ---------- */
.ip-rule-top { border-top: var(--plate-border-hairline) solid var(--plate-color-border-subtle); }
.ip-row-gap-8 { row-gap: var(--plate-space-8); }
.ip-mb-12 { margin-bottom: var(--plate-space-12); }
.ip-stack { display: grid; gap: var(--plate-space-5); }

/* ---------- Photography (core/image) ---------- */
.wp-block-image.ip-photo { margin: 0; }
.wp-block-image.ip-photo img { display: block; width: 100%; height: auto; background: var(--plate-color-surface-muted); }
.wp-block-image.ip-photo--r-xl img { border-radius: var(--plate-radius-xl); }
.wp-block-image.ip-photo--r-lg img { border-radius: var(--plate-radius-lg); }
.wp-block-image.ip-photo--r-md img { border-radius: var(--plate-radius-md); }

/* ---------- FAQ: core/details styled as the ip-accordion ---------- */
.ip-faq { border-top: var(--plate-border-hairline) solid var(--plate-color-border); max-width: 800px; }
.ip-faq__item { border-bottom: var(--plate-border-hairline) solid var(--plate-color-border); }
.ip-faq__item > summary {
	display: flex; justify-content: space-between; align-items: center; gap: var(--plate-space-6);
	padding: var(--plate-space-5) 0; list-style: none; cursor: pointer;
	font-size: 18px; line-height: 26px; font-weight: 600; color: var(--plate-color-text);
	transition: color var(--plate-duration-fast) var(--plate-ease-standard);
}
.ip-faq__item > summary::-webkit-details-marker { display: none; }
.ip-faq__item > summary:hover { color: var(--plate-color-primary-text); }
.ip-faq__item > summary::after {
	content: ""; flex: none; width: 20px; height: 20px; background: var(--plate-color-text-muted);
	-webkit-mask: var(--ip-faq-icon) center / 20px no-repeat; mask: var(--ip-faq-icon) center / 20px no-repeat;
	--ip-faq-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E");
}
.ip-faq__item[open] > summary::after {
	--ip-faq-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E");
}
.ip-faq__item > :not(summary) {
	padding: 0 var(--plate-space-10) var(--plate-space-6) 0; max-width: 68ch; color: var(--plate-color-text-muted);
	animation: ip-reveal var(--plate-duration-base) var(--plate-ease-enter);
}

/* ---------- Prose (design-system .ip-prose on post content) ---------- */
.wp-block-post-title + .ip-prose { margin-top: var(--plate-space-8); }

/* ---------- Embedded KDS demo ---------- */
.ip-demo-frame { display: block; width: 100%; height: 980px; border: 0; border-radius: var(--plate-radius-lg); background: transparent; }
.ip-demo-actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--plate-space-4); margin-top: var(--plate-space-6); }

/* ---------- Contact form ---------- */
.ip-form { display: grid; gap: var(--plate-space-5); max-width: 640px; }
.ip-form__row { display: grid; gap: var(--plate-space-5); }
@media (min-width: 768px) { .ip-form__row { grid-template-columns: 1fr 1fr; } }
.ip-form__hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.ip-form .ip-field { max-width: none; }
.ip-form a { color: var(--plate-color-link); text-decoration: underline; text-underline-offset: 2px; }
.ip-form a:hover { color: var(--plate-color-link-hover); }

/* ---------- Long Polish button labels on narrow screens ---------- */
@media (max-width: 767px) {
	.ip-hero__actions .ip-btn { height: auto; min-height: 48px; padding-block: 12px; white-space: normal; text-align: center; }
	.ip-cta__inner, .ip-cta__text, .ip-hero__text, .ip-split__text { min-width: 0; }
}

/* ---------- Ordering demo: end-of-demo summary ---------- */
.ip-demo-end { display: grid; gap: var(--plate-space-10); }
.ip-demo-end__grid { display: grid; gap: var(--plate-space-10); align-items: start; }
@media (min-width: 1024px) { .ip-demo-end__grid { grid-template-columns: 5fr 7fr; gap: var(--plate-space-16); } }
.ip-demo-end__order { display: grid; gap: var(--plate-space-4); padding: var(--plate-space-6); background: var(--plate-color-surface); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-lg); }
.ip-demo-end__order .ip-eyebrow { margin: 0; }
.ip-demo-end__facts { display: grid; gap: var(--plate-space-2); margin: 0; font-size: 14px; line-height: 21px; }
.ip-demo-end__facts > div { display: grid; grid-template-columns: 96px 1fr; gap: var(--plate-space-3); }
.ip-demo-end__facts dt { color: var(--plate-color-text-muted); }
.ip-demo-end__items { list-style: none; margin: 0; padding: var(--plate-space-4) 0 0; border-top: var(--plate-border-hairline) solid var(--plate-color-border-subtle); display: grid; gap: var(--plate-space-3); font-size: 15px; line-height: 22px; }
.ip-demo-end__items li { display: grid; grid-template-columns: 1fr auto; gap: 2px var(--plate-space-4); }
.ip-demo-end__price { font-variant-numeric: tabular-nums; font-weight: 600; }
.ip-demo-end__meta { grid-column: 1 / -1; font-size: 13px; line-height: 18px; color: var(--plate-color-text-muted); }
.ip-demo-end__total { display: flex; justify-content: space-between; padding-top: var(--plate-space-4); border-top: var(--plate-border-hairline) solid var(--plate-color-text); font-size: 18px; font-variant-numeric: tabular-nums; }
.ip-demo-end__next { display: grid; gap: var(--plate-space-5); }
.ip-demo-end__next .ip-eyebrow { margin: 0; }

/* =====================================================================
   Kadence Blocks ↔ design system
   Pages are built from Kadence rows, columns, headings, buttons, icons, images and accordions.
   Layout values live in Kadence attributes (editable in the Kadence UI); this layer maps Kadence's
   global palette and component looks onto the design tokens.
   ===================================================================== */

/* Kadence palette and button colours follow the tokens (re-evaluated inside dark sections). */
html:root,
html .is-theme-dark {
	--global-palette1: var(--plate-color-primary);
	--global-palette2: var(--plate-color-primary-hover);
	--global-palette3: var(--plate-color-text);
	--global-palette4: var(--plate-color-text);
	--global-palette5: var(--plate-color-text-muted);
	--global-palette6: var(--plate-color-text-subtle);
	--global-palette7: var(--plate-color-surface-muted);
	--global-palette8: var(--plate-color-background);
	--global-palette9: var(--plate-color-surface);
	--global-palette-btn-bg: var(--plate-color-primary);
	--global-palette-btn-bg-hover: var(--plate-color-primary-hover);
	--global-palette-btn: var(--plate-color-on-primary);
	--global-palette-btn-hover: var(--plate-color-on-primary);
}
.ip-kb-dark { color: var(--plate-color-text); }
.ip-kb-hero-minimal { border-bottom: var(--plate-border-hairline) solid var(--plate-color-border-subtle); }

/* Buttons (kadence/singlebtn with ip-kb-btn--*) look like ip-btn. */
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn {
	min-height: 40px; padding: 0 var(--plate-space-4); gap: 8px;
	border: var(--plate-border-hairline) solid transparent; border-radius: var(--plate-radius-md); box-shadow: none;
	font-family: var(--font-sans); font-size: 15px; line-height: 20px; font-weight: 600; letter-spacing: 0; text-decoration: none;
	transition: background-color var(--plate-duration-fast) var(--plate-ease-standard), border-color var(--plate-duration-fast) var(--plate-ease-standard), color var(--plate-duration-fast) var(--plate-ease-standard);
}
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn.kt-btn-size-large { min-height: 48px; padding: 0 var(--plate-space-5); font-size: 16px; }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn.kt-btn-size-small { min-height: 32px; padding: 0 var(--plate-space-3); font-size: 14px; border-radius: var(--plate-radius-sm); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--primary { background: var(--plate-color-primary); border-color: var(--plate-color-primary); color: var(--plate-color-on-primary); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--primary:hover,
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--primary:focus { background: var(--plate-color-primary-hover); border-color: var(--plate-color-primary-hover); color: var(--plate-color-on-primary); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--secondary { background: var(--plate-color-surface-muted); border-color: var(--plate-color-border-subtle); color: var(--plate-color-text); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--secondary:hover,
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--secondary:focus { background: var(--plate-color-surface); border-color: var(--plate-color-border); color: var(--plate-color-text); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--outline,
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--ghost { background: transparent; border-color: var(--plate-color-border-strong); color: var(--plate-color-text); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--outline:hover,
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn--outline:focus { background: var(--plate-color-surface-muted); border-color: var(--plate-color-text-muted); color: var(--plate-color-text); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn .kb-svg-icon-wrap { font-size: 18px; transition: transform var(--plate-duration-fast) var(--plate-ease-standard); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-btn:hover .kb-svg-icon-wrap { transform: translateX(2px); }
.wp-block-kadence-advancedbtn .kb-button:focus-visible { outline: 2px solid transparent; box-shadow: var(--plate-focus-ring); }

/* Arrow links (kadence/singlebtn with ip-kb-link) look like ip-link--arrow. */
.wp-block-kadence-advancedbtn .kb-button.ip-kb-link {
	min-height: 0; padding: 0; gap: 6px; background: none; border: 0; border-radius: 0; box-shadow: none;
	font-family: var(--font-sans); font-size: 15px; line-height: 22px; font-weight: 600; color: var(--plate-color-link); text-decoration: none;
}
.wp-block-kadence-advancedbtn .kb-button.ip-kb-link:hover,
.wp-block-kadence-advancedbtn .kb-button.ip-kb-link:focus { background: none; color: var(--plate-color-link-hover); }
.wp-block-kadence-advancedbtn .kb-button.ip-kb-link .kb-svg-icon-wrap { font-size: 16px; }
@media (max-width: 767px) {
	.ip-kb-hero-text .wp-block-kadence-advancedbtn .kb-button.ip-kb-btn,
	.ip-kb-cta-text .wp-block-kadence-advancedbtn .kb-button.ip-kb-btn { width: 100%; white-space: normal; text-align: center; padding-block: 12px; }
}

/* Feature-card icon (kadence/icon > single-icon). */
.wp-block-kadence-icon.ip-kb-icon { justify-content: flex-start; }

/* FAQ (kadence/accordion with ip-kb-faq) looks like the design-system accordion. */
.wp-block-kadence-accordion.ip-kb-faq { max-width: 800px; border-top: var(--plate-border-hairline) solid var(--plate-color-border); }
.wp-block-kadence-accordion.ip-kb-faq .kt-accordion-inner-wrap { gap: 0; row-gap: 0; }
.wp-block-kadence-accordion.ip-kb-faq .kt-accordion-pane { margin: 0; border-bottom: var(--plate-border-hairline) solid var(--plate-color-border); }
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-header,
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-header:hover,
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-header.kt-accordion-panel-active {
	margin: 0; padding: var(--plate-space-5) 0; gap: var(--plate-space-6); background: transparent; border: 0; border-radius: 0;
	font-family: var(--font-sans); font-size: 18px; line-height: 26px; font-weight: 600; color: var(--plate-color-text); text-align: left;
}
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-header:hover { color: var(--plate-color-primary-text); }
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-title { font: inherit; color: inherit; }
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-icon-trigger::before,
.wp-block-kadence-accordion.ip-kb-faq .kt-blocks-accordion-icon-trigger::after { background: var(--plate-color-text-muted); }
.wp-block-kadence-accordion.ip-kb-faq .kt-accordion-panel-inner {
	padding: 0 var(--plate-space-10) var(--plate-space-6) 0; background: transparent; border: 0; color: var(--plate-color-text-muted); max-width: 68ch; font-size: 18px; line-height: 28px;
}
/* Plain paragraphs and lists in Kadence content columns (docs, changelog) are content paragraphs: 18px like .ip-t-body. */
.wp-block-kadence-column.ip-kb-text > .kt-inside-inner-col > :is(p:not([class*="ip-"]), ul.wp-block-list, ol.wp-block-list) { font-size: 18px; line-height: 28px; }

/* Hero composite inside a Kadence column: position children against the column, not the inner wrapper. */
.wp-block-kadence-column.ip-heroc > .kt-inside-inner-col { position: static; display: block; }
/* The theme makes Kadence photos full width; the composite's photo is the narrow back layer. */
.wp-block-kadence-image.ip-photo.ip-heroc__photo { width: 46%; }

/* Text stacks: design-system eyebrow spacing inside Kadence columns. */
.wp-block-kadence-column .ip-eyebrow { margin-bottom: 0; }

/* Kadence images fill their column like ip-photo frames. */
.wp-block-kadence-image.ip-photo,
.wp-block-kadence-image.ip-photo figure,
.wp-block-kadence-image.ip-photo img { width: 100%; }
.ip-kb-ucard .wp-block-kadence-image { margin: 0 0 var(--plate-space-2); overflow: hidden; border-radius: var(--plate-radius-lg); }
.ip-kb-ucard img { transition: transform var(--plate-duration-slow) var(--plate-ease-standard); }
.ip-kb-ucard:hover img { transform: scale(1.02); }
.ip-kb-ucard h3 a { color: inherit; text-decoration: none; }
.ip-kb-ucard:hover h3 a { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; }
.ip-fcard--rule.wp-block-kadence-column { padding-top: var(--plate-space-5); border-top: var(--plate-border-hairline) solid var(--plate-color-text); }
.ip-fcard--framed.wp-block-kadence-column { padding: var(--plate-space-6); background: var(--plate-color-surface); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-lg); }
/* Framed cards in a row share a height; keep their links on one line at the bottom. */
.ip-fcard--framed.wp-block-kadence-column > .kt-inside-inner-col { height: 100%; display: flex; flex-direction: column; }
.ip-fcard--framed.wp-block-kadence-column .ip-fcard__link { margin-top: auto; }

/* ---------- Blog (templates home, archive, single; blocks in inc/blog.php) ---------- */
.ip-blog-head { padding-bottom: var(--plate-space-8); }
.ip-blog-head .ip-container { display: grid; gap: var(--plate-space-4); }
.ip-blog-head .ip-crumbs ol { margin: 0; }
.ip-blog-head .ip-eyebrow { margin: 0; }
.ip-blog-list { padding-top: 0; }

.ip-blog-cats ul { list-style: none; display: flex; flex-wrap: wrap; gap: var(--plate-space-2); margin: var(--plate-space-4) 0 0; padding: 0; }
.ip-blog-cats a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 var(--plate-space-4); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-pill); color: var(--plate-color-text); font-size: 14px; font-weight: 500; text-decoration: none; }
.ip-blog-cats a:hover { border-color: var(--plate-color-text); }
.ip-blog-cats a[aria-current] { background: var(--plate-color-text); border-color: var(--plate-color-text); color: var(--plate-color-background); }

.ip-blog-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--plate-space-12) var(--plate-space-6); }
.ip-blog-grid > li { margin: 0; }
@media (max-width: 1023px) { .ip-blog-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .ip-blog-grid { grid-template-columns: minmax(0, 1fr); gap: var(--plate-space-10); } }
.ip-acard .wp-block-post-featured-image, .ip-acard__photo { margin: 0; overflow: hidden; border-radius: var(--plate-radius-lg); }
.ip-acard .wp-block-post-featured-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ip-acard .wp-block-post-title { margin: 0; }
.ip-acard .wp-block-post-title a { color: inherit; text-decoration: none; }
.ip-acard .wp-block-post-title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.ip-acard:hover .wp-block-post-title a { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; }
.ip-acard .wp-block-post-excerpt { margin: 0; }
.ip-acard .wp-block-post-excerpt__excerpt { margin: 0; }
.ip-acard__meta { margin: 0; }
/* First post on the first page of the blog index is featured across the grid. */
@media (min-width: 1024px) {
	.blog:not(.paged) .ip-blog-grid > li:first-child { grid-column: 1 / -1; }
	.blog:not(.paged) .ip-blog-grid > li:first-child .ip-acard { grid-template-columns: 7fr 5fr; gap: var(--plate-space-10); align-items: center; }
	.blog:not(.paged) .ip-blog-grid > li:first-child .wp-block-post-title { font-size: 32px; line-height: 38px; letter-spacing: -0.02em; }
	.blog:not(.paged) .ip-blog-grid > li:first-child .wp-block-post-excerpt { font-size: 18px; line-height: 28px; }
}

.ip-blog-pagination { display: flex; flex-wrap: wrap; gap: var(--plate-space-4); justify-content: center; margin-top: var(--plate-space-16); font-weight: 500; }
.ip-blog-pagination a { color: var(--plate-color-link); }
.ip-blog-pagination .current { color: var(--plate-color-text); }

/* Article */
.ip-blog-article .ip-ahead .ip-crumbs ol, .ip-blog-article .ip-ahead .ip-eyebrow { margin: 0; }
.ip-blog-cat a { color: inherit; text-decoration: none; }
.ip-blog-cat a:hover { text-decoration: underline; }
.ip-blog-cat .wp-block-post-terms__separator { display: none; }
.ip-blog-cat .wp-block-post-terms__separator + a { display: none; }
.ip-blog-lead p { margin: 0; }
.ip-blog-article .ip-ahead__meta .ip-avatar { border-radius: var(--plate-radius-md); }
.ip-blog-cover { margin: 0; overflow: hidden; border-radius: var(--plate-radius-xl); }
.ip-blog-cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 767px) { .ip-blog-cover img { aspect-ratio: 16 / 10 !important; } }
/* Article: header and cover span the site container; text column + sticky contents beside it. */
.ip-blog-ahead { display: grid; gap: var(--plate-space-4); }
.ip-blog-layout { display: grid; grid-template-columns: minmax(0, 800px) 280px; justify-content: space-between; column-gap: var(--plate-space-16); align-items: start; padding-bottom: var(--plate-section-md); }
.ip-blog-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--plate-space-12); min-width: 0; }
.ip-blog-body .ip-prose { margin: 0; max-width: none; }
.ip-blog-body .ip-author { max-width: none; }
.ip-blog-aside { position: sticky; top: calc(var(--plate-header-height) + var(--plate-space-6)); }
.ip-blog-toc--aside { padding: var(--plate-space-5); border: var(--plate-border-hairline) solid var(--plate-color-border-subtle); border-radius: var(--plate-radius-lg); background: var(--plate-color-surface); }
.ip-blog-toc--aside .ip-blog-toc__title { margin: 0 0 var(--plate-space-3); font-size: 13px; line-height: 18px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--plate-color-text-muted); }
.ip-blog-toc--aside ol { margin: 0; padding-left: 1.2em; font-size: 15px; line-height: 22px; }
.ip-blog-toc--aside li + li { margin-top: var(--plate-space-2); }
.ip-blog-toc--aside li::marker { color: var(--plate-color-text-muted); }
.ip-blog-toc--aside a { color: var(--plate-color-text); text-decoration: none; }
.ip-blog-toc--aside a:hover { color: var(--plate-color-link); text-decoration: underline; }
@media (min-width: 1024px) { .ip-prose .ip-blog-toc { display: none; } }
@media (max-width: 1023px) {
	.ip-blog-layout { grid-template-columns: minmax(0, 1fr); }
	.ip-blog-aside { display: none; }
}
.ip-prose .wp-block-table { margin-inline: 0; overflow-x: auto; }
.ip-prose .wp-block-table table { min-width: 520px; }
.ip-prose .wp-block-table figcaption { text-align: left; }
.ip-prose .ip-blog-sources { font-size: 15px; line-height: 24px; color: var(--plate-color-text-muted); }
.ip-prose .ip-blog-sources a { word-break: break-word; }
.ip-blog-body .ip-author .ip-avatar { border-radius: var(--plate-radius-md); }
.ip-blog-cta { display: grid; gap: var(--plate-space-6); padding: var(--plate-space-8); border-radius: var(--plate-radius-xl); background: var(--plate-color-surface-cream); }
.ip-blog-cta > div:first-child { display: grid; gap: var(--plate-space-3); }
.ip-blog-cta .ip-eyebrow { margin: 0; }
.ip-blog-cta__actions { display: flex; flex-wrap: wrap; gap: var(--plate-space-3); }
@media (max-width: 639px) { .ip-blog-cta { padding: var(--plate-space-6); } }
.ip-blog-related__title { margin: 0 0 var(--plate-space-10); }
.ip-prose .ip-blog-toc { padding: var(--plate-space-5) var(--plate-space-6); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-lg); background: var(--plate-color-surface); }
.ip-prose .ip-blog-toc__title { margin: 0 0 var(--plate-space-2); font-size: 14px; line-height: 20px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--plate-color-text-muted); }
.ip-prose .ip-blog-toc ol { margin: 0; font-size: 16px; line-height: 26px; }
.ip-prose .ip-blog-toc li + li { margin-top: 2px; }
.ip-prose .ip-blog-toc a { text-decoration: none; }
.ip-prose .ip-blog-toc a:hover { text-decoration: underline; }
.ip-prose h2[id], .ip-prose h3[id] { scroll-margin-top: calc(var(--plate-header-height) + var(--plate-space-6)); }
/* Core table block draws full cell borders; the design system uses hairline rows only. */
.ip-prose .wp-block-table table { border-collapse: collapse; }
.ip-prose .wp-block-table th, .ip-prose .wp-block-table td { border: 0; border-bottom: var(--plate-border-hairline) solid var(--plate-color-border); }
.ip-prose .wp-block-table thead { border-bottom: 0; }
.ip-prose .wp-block-table tfoot { border-top: 0; }

/* ---------- Menu illustrations (.ip-pm-*): mirror the real WP InPlate menu (plugin assets/build/menu.css) ---------- */
.ip-pm { --pm-text: #1a1a1a; --pm-text-2: #555; --pm-text-3: #888; --pm-border: #e0e0e0; --pm-card-min: 200px; position: relative; padding: 20px; background: var(--plate-color-background); color: var(--pm-text); text-align: left; }
.ip-pm__bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.ip-pm__venue { font-size: 15px; font-weight: 700; line-height: 1.2; }
.ip-pm-cart { display: inline-flex; align-items: center; gap: 8px; padding: 9px 14px; border-radius: 8px; background: #1a1a1a; color: #fff; font-size: 13px; font-weight: 600; line-height: 1; white-space: nowrap; }
.ip-pm-cart__count { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: #fff; color: #1a1a1a; font-size: 11px; font-weight: 700; }
.ip-pm-nav { display: flex; overflow: hidden; margin-bottom: 22px; background: #fff; box-shadow: 0 1px 6px rgba(0, 0, 0, .08); }
.ip-pm-nav span { flex-shrink: 0; padding: 12px 16px; border-bottom: 3px solid transparent; font-size: 13px; font-weight: 600; line-height: 1.2; color: #666; white-space: nowrap; }
.ip-pm-nav .is-active { color: var(--pm-text); border-bottom-color: var(--pm-text); }
.ip-pm-section + .ip-pm-section { margin-top: 28px; }
.ip-pm-section__title { margin: 0 0 4px; padding-bottom: 12px; border-bottom: 2px solid var(--pm-border); font-size: 20px; font-weight: 800; line-height: 1.2; letter-spacing: 0; color: var(--pm-text); }
.ip-pm-section__desc { margin: 0 0 16px; font-size: 13px; line-height: 1.5; color: var(--pm-text-3); }
.ip-pm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(var(--pm-card-min), 1fr)); gap: 16px; }
.ip-pm-card { display: flex; flex-direction: column; overflow: hidden; border-radius: 12px; background: #fff; box-shadow: 0 1px 4px rgba(0, 0, 0, .06); }
.ip-pm-card__img { aspect-ratio: 4 / 3; overflow: hidden; background: #f5f0eb; }
.ip-pm-card__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ip-pm-card__body { display: flex; flex: 1; flex-direction: column; gap: 6px; padding: 14px; }
.ip-pm-card__name { margin: 0; font-size: 15px; font-weight: 700; line-height: 1.3; letter-spacing: 0; color: var(--pm-text); }
.ip-pm-card__portion { font-size: 12px; line-height: 1.4; color: var(--pm-text-3); }
.ip-pm-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.ip-pm-tag { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border: 1px solid var(--pm-border); border-radius: 20px; background: #f5f5f5; font-size: 11px; font-weight: 600; line-height: 1.4; color: var(--pm-text-2); white-space: nowrap; }
.ip-pm-tag__emoji { font-size: 13px; line-height: 1; }
.ip-pm-tag img.emoji { width: 13px !important; height: 13px !important; margin: 0 !important; }
.ip-pm-card__desc { display: -webkit-box; flex: 1; margin: 0; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; font-size: 12px; line-height: 1.5; color: var(--pm-text-3); }
.ip-pm-card__foot { display: flex; align-items: center; justify-content: space-between; margin-top: auto; padding-top: 16px; }
.ip-pm-card__price { font-size: 16px; font-weight: 800; color: var(--pm-text); }
.ip-pm-card__add { display: flex; flex-shrink: 0; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: #1a1a1a; color: #fff; font-size: 18px; font-weight: 300; line-height: 1; }
/* Desktop: three cards per row inside the browser frame. */
.ip-pm--desktop .ip-pm-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 639px) { .ip-pm--desktop { padding: 12px; } .ip-pm--desktop .ip-pm-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .ip-pm--desktop .ip-pm-card:nth-child(3) { display: none; } }
/* Phone: two columns like the plugin below 600px, scaled to the small screen. */
.ip-pm--mobile { height: 100%; overflow: hidden; padding: 12px 10px; }
.ip-pm--mobile .ip-pm__bar { margin-bottom: 10px; }
.ip-pm--mobile .ip-pm__venue { font-size: 14px; }
.ip-pm--mobile .ip-pm-nav { margin: 0 -10px 14px; }
.ip-pm--mobile .ip-pm-nav span { padding: 9px 10px; font-size: 11px; }
.ip-pm--mobile .ip-pm-section__title { font-size: 16px; padding-bottom: 8px; }
.ip-pm--mobile .ip-pm-section__desc { margin-bottom: 10px; font-size: 10.5px; }
.ip-pm--mobile .ip-pm-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.ip-pm--mobile .ip-pm-card { border-radius: 10px; }
.ip-pm--mobile .ip-pm-card__body { gap: 4px; padding: 8px; }
.ip-pm--mobile .ip-pm-card__name { font-size: 12px; }
.ip-pm--mobile .ip-pm-card__portion { font-size: 10px; }
.ip-pm--mobile .ip-pm-tags,
.ip-pm--mobile .ip-pm-card__desc { display: none; }
.ip-pm--mobile .ip-pm-card__foot { padding-top: 8px; }
.ip-pm--mobile .ip-pm-card__price { font-size: 13px; }
.ip-pm--mobile .ip-pm-card__add { width: 22px; height: 22px; font-size: 15px; }
.ip-pm__float { position: absolute; right: 10px; bottom: 14px; left: 10px; display: flex; justify-content: center; }
.ip-pm__float .ip-pm-cart { box-shadow: 0 6px 18px rgba(0, 0, 0, .25); }
/* Standalone cards (e.g. daily dishes beside text). */
.ip-pm-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; align-items: stretch; }
@media (max-width: 479px) { .ip-pm-cards { gap: 10px; } .ip-pm-cards .ip-pm-card__body { padding: 10px; } }
.ip-pm-taglist { display: flex; flex-wrap: wrap; gap: 8px; }
.ip-pm-taglist .ip-pm-tag { padding: 4px 12px; font-size: 13px; }
.ip-pm-taglist .ip-pm-tag__emoji { font-size: 16px; }
/* Inside Kadence columns paragraph colours win over single classes; keep the plugin's greys. */
.ip-pm-card .ip-pm-card__desc { color: var(--pm-text-3, #888); }
.ip-pm-card .ip-pm-card__name, .ip-pm-card .ip-pm-card__price { color: var(--pm-text, #1a1a1a); }
.ip-pm-card, .ip-pm-cards { --pm-text: #1a1a1a; --pm-text-2: #555; --pm-text-3: #888; --pm-border: #e0e0e0; }

/* ---------- Steps with photos (PhotoSteps): a photo replaces the ruled line above each step ---------- */
.ip-steps--photo .ip-steps__item { padding-top: 0; border-top: 0; gap: var(--plate-space-5); }
.ip-steps__photo { position: relative; margin: 0; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--plate-radius-lg); background: var(--plate-color-surface-muted); }
.ip-steps__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.ip-steps--photo .ip-steps__n { position: absolute; top: var(--plate-space-3); left: var(--plate-space-3); display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: var(--plate-color-surface); color: var(--plate-color-text); font-family: var(--font-mono); font-size: 13px; font-weight: 600; box-shadow: var(--plate-shadow-subtle); }
.ip-steps--photo .ip-steps__body { padding-top: 0; }
@media (min-width: 640px) and (max-width: 1023px) { .ip-steps--photo { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--plate-space-5); } }

/* ---------- Page titles and heroes (user decision 2026-10-11) ---------- */
/* Every h1 on the site has the same size (the design system's display-l), whatever class the block carries. */
h1, h1.ip-t-h1, h1.ip-t-display-l, h1.ip-t-display-xl, h1.wp-block-heading { font-family: var(--font-sans); font-size: clamp(38px, 2.2vw + 24px, 56px); line-height: 1.08; font-weight: 600; letter-spacing: -0.025em; max-width: none; text-wrap: balance; }
/* Hero text takes the width of its container (the site container or its hero column), not a ch-based measure. */
.ip-kb-hero .ip-hero__lead, .ip-kb-hero-minimal .ip-hero__lead, .ip-blog-head__lead, .ip-blog-ahead .ip-blog-lead, .ip-docs-head__lead { max-width: none; }

/* ---------- Hero trial note (HeroPerks): one quiet line under the hero buttons ---------- */
/* Small print for "Wypróbuj przez 30 dni": it answers "what does the trial cost me", so it must not outshine the buttons. */
/* 24px below the buttons (the hero column already adds 20px), so the note reads as its own line, not part of the buttons. */
.ip-perks { margin-top: var(--plate-space-1); }
.ip-perks__list { display: flex; flex-wrap: wrap; gap: var(--plate-space-3) var(--plate-space-6); margin: 0; padding: 0; list-style: none; }
.ip-perks__item { display: flex; align-items: center; gap: 10px; margin: 0; color: var(--plate-color-text-muted); font-size: 14px; font-weight: 500; line-height: 20px; }
/* The tick sits in a pale herb disc: a finished detail that stays quieter than the buttons. */
.ip-perks__icon { flex: none; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: var(--plate-color-primary-100); color: var(--plate-color-primary-700); }
.is-theme-dark .ip-perks__icon, [data-theme="dark"] .ip-perks__icon { background: var(--plate-color-primary-subtle); color: var(--plate-color-primary); }
/* The tick is drawn in CSS: the WordPress editor strips inline SVG from the HTML block on save. */
/* Content that still carries the design-system SVG (generated patterns, restored revisions) would show two ticks. */
.ip-perks__icon > svg { display: none; }
.ip-perks__icon::before { content: ""; width: 12px; height: 12px; background: currentColor; -webkit-mask: var(--ip-perk-tick) center / contain no-repeat; mask: var(--ip-perk-tick) center / contain no-repeat; }
.ip-perks { --ip-perk-tick: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E"); }

/* ---------- Support scope (/cennik/ "Wsparcie"): what support covers (tick) and what it does not (cross) ---------- */
/* Icons are CSS masks: the WordPress editor strips inline SVG from the HTML block on save. */
.ip-scope { --ip-scope-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7.5'/%3E%3C/svg%3E"); display: grid; gap: var(--plate-space-3); margin: 0; padding: 0; list-style: none; color: var(--plate-color-text); font-size: 15px; line-height: 22px; }
.ip-scope li { display: flex; gap: var(--plate-space-3); align-items: flex-start; margin: 0; }
.ip-scope li::before { content: ""; flex: none; width: 18px; height: 18px; margin-top: 2px; background: var(--plate-color-primary); -webkit-mask: var(--ip-scope-icon) center / contain no-repeat; mask: var(--ip-scope-icon) center / contain no-repeat; }
.ip-scope--out { --ip-scope-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M7 7l10 10M17 7L7 17'/%3E%3C/svg%3E"); }
.ip-scope--out li::before { background: var(--plate-color-text-subtle); }
.ip-scope + .ip-fcard__body { margin-top: var(--plate-space-3); padding-top: var(--plate-space-4); border-top: var(--plate-border-hairline) solid var(--plate-color-border-subtle); }

/* ---------- Commission calculator (/cennik/): platform commission per year vs the WP InPlate licence ---------- */
/* Markup in the page (core/html), behaviour in site.js. The server-rendered numbers are the 300 × 50 zł × 20% example. */
.ip-calc { display: grid; gap: var(--plate-space-8); padding: var(--plate-space-8); background: var(--plate-color-surface); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-xl); }
@media (min-width: 900px) { .ip-calc { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--plate-space-12); padding: var(--plate-space-10); } }
@media (max-width: 479px) { .ip-calc { padding: var(--plate-space-6) var(--plate-space-5); } }
.ip-calc__inputs { display: grid; gap: var(--plate-space-8); align-content: start; margin: 0; }
.ip-calc__slider { display: grid; gap: var(--plate-space-2); }
.ip-calc__head { display: flex; justify-content: space-between; align-items: baseline; gap: var(--plate-space-4); }
.ip-calc__head output { font-size: 24px; line-height: 1.2; font-weight: 600; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ip-calc__scale { display: flex; justify-content: space-between; font-size: 13px; line-height: 18px; color: var(--plate-color-text-muted); font-variant-numeric: tabular-nums; }
/* Range: track filled up to the thumb via --p (0–100%, set by site.js; the server value is written inline). */
.ip-range { --p: 50%; width: 100%; height: 28px; margin: 0; background: transparent; cursor: pointer; -webkit-appearance: none; appearance: none; }
.ip-range:focus { outline: none; }
.ip-range::-webkit-slider-runnable-track { height: 6px; border-radius: var(--plate-radius-pill); background: linear-gradient(to right, var(--plate-color-primary) var(--p), var(--plate-color-border) var(--p)); }
.ip-range::-moz-range-track { height: 6px; border-radius: var(--plate-radius-pill); background: var(--plate-color-border); }
.ip-range::-moz-range-progress { height: 6px; border-radius: var(--plate-radius-pill); background: var(--plate-color-primary); }
.ip-range::-webkit-slider-thumb { -webkit-appearance: none; width: 24px; height: 24px; margin-top: -9px; border-radius: 50%; background: var(--plate-color-surface); border: 2px solid var(--plate-color-primary); box-shadow: var(--plate-shadow-subtle); transition: transform var(--plate-duration-fast) var(--plate-ease-standard); }
.ip-range::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--plate-color-surface); border: 2px solid var(--plate-color-primary); box-shadow: var(--plate-shadow-subtle); }
.ip-range:hover::-webkit-slider-thumb, .ip-range:active::-webkit-slider-thumb { transform: scale(1.1); }
.ip-range:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 3px var(--plate-color-surface), 0 0 0 5px var(--plate-color-focus); }
.ip-range:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 3px var(--plate-color-surface), 0 0 0 5px var(--plate-color-focus); }
.ip-calc__results { display: grid; gap: var(--plate-space-4); align-content: start; }
.ip-calc__row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px var(--plate-space-4); align-items: baseline; padding-bottom: var(--plate-space-4); border-bottom: var(--plate-border-hairline) solid var(--plate-color-border-subtle); }
.ip-calc__label { font-size: 15px; line-height: 22px; font-weight: 600; color: var(--plate-color-text); }
.ip-calc__val { font-size: 24px; line-height: 1.2; font-weight: 600; letter-spacing: -0.01em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ip-calc__val--cost { color: var(--plate-color-error-text); }
.ip-calc__how { grid-column: 1 / -1; font-size: 13px; line-height: 18px; color: var(--plate-color-text-muted); }
.ip-calc__save { display: grid; gap: var(--plate-space-1); padding: var(--plate-space-6); border-radius: var(--plate-radius-lg); background: var(--plate-color-primary-subtle); border: var(--plate-border-hairline) solid color-mix(in srgb, var(--plate-color-primary) 30%, transparent); }
.ip-calc__save .ip-calc__label { color: var(--plate-color-primary-text); }
.ip-calc__big { font-size: clamp(40px, 3vw + 24px, 64px); line-height: 1; font-weight: 600; letter-spacing: -0.03em; color: var(--plate-color-primary-text); font-variant-numeric: tabular-nums; }
.ip-calc__big small { font-size: 0.375em; letter-spacing: 0; font-weight: 600; margin-left: 0.25em; }
.ip-calc__save .ip-calc__how { font-size: 15px; line-height: 22px; color: var(--plate-color-text); }
.ip-calc.is-loss .ip-calc__save { background: var(--plate-color-surface-muted); border-color: var(--plate-color-border); }
.ip-calc.is-loss .ip-calc__save .ip-calc__label, .ip-calc.is-loss .ip-calc__big { color: var(--plate-color-text); }
.ip-calc__note { margin: 0; font-size: 13px; line-height: 18px; color: var(--plate-color-text-muted); }

/* Subpage heroes (MediaHero) split text and media 50/50; Kadence rows get the same widths from convert.cjs. */
@media (min-width: 1024px) { .ip-hero__grid--even { grid-template-columns: 1fr 1fr; } }

/* ---------- Documentation (template page-docs, blocks in inc/docs.php, tools/docs) ---------- */
/* DocsLayout from the design system, widened to the site container: chapters | text | "Na tej stronie". */
.ip-docs-page .ip-docs { padding-block: var(--plate-space-10) var(--plate-section-md); align-items: start; }
.ip-docs > *, .ip-docs__main > * { margin-block: 0; }
/* One shrinkable column below 1024px: wide tables scroll inside their figure instead of widening the page. */
.ip-docs__main { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 1023px) { .ip-docs { grid-template-columns: minmax(0, 1fr); } }
@media (min-width: 1280px) {
	.ip-docs { grid-template-columns: 260px minmax(0, 760px) 220px; justify-content: space-between; }
	.ip-docs-home .ip-docs { grid-template-columns: 260px minmax(0, 1fr); justify-content: stretch; }
}
@media (min-width: 1024px) {
	.ip-docs__side, .ip-docs__toc { position: sticky; top: calc(var(--plate-header-height) + var(--plate-space-6)); max-height: calc(100vh - var(--plate-header-height) - var(--plate-space-12)); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
	.ip-docs__side { padding-right: var(--plate-space-2); }
	.ip-docs__toc .ip-toc { position: static; }
}
@media (max-width: 1023px) {
	.ip-docs { gap: var(--plate-space-6); }
	.ip-docs__side.is-open { padding: var(--plate-space-5); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-lg); background: var(--plate-color-surface); }
	.ip-docs__side.is-open .ip-dside a { margin-left: 0; }
	.ip-docs__side.is-open .ip-dside__title { padding-left: 10px; }
	.ip-docs__mobile button[aria-expanded="true"] .ip-icon:last-child { transform: rotate(180deg); }
}
.ip-dside { gap: var(--plate-space-5); }
.ip-dside__title { margin: 0 0 var(--plate-space-2); }
.ip-dside a { font-size: 14px; line-height: 20px; padding-block: 5px; }
.ip-toc { display: grid; gap: var(--plate-space-2); }
.ip-toc .ip-dside__title { margin: 0; }

/* Search */
.ip-docs-search { position: relative; display: grid; gap: var(--plate-space-2); }
.ip-docs-search .ip-field { max-width: none; }
.ip-docs-search .ip-input { height: 40px; font-size: 15px; }
.ip-docs-results { max-height: min(60vh, 520px); overflow-y: auto; border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-md); background: var(--plate-color-surface); box-shadow: var(--plate-shadow-subtle); }
.ip-docs-results ul { list-style: none; margin: 0; padding: 4px; display: grid; gap: 2px; }
.ip-dside .ip-docs-results a { display: grid; gap: 2px; margin: 0; padding: 8px 10px; border-radius: var(--plate-radius-sm); }
.ip-dside .ip-docs-results a:hover, .ip-dside .ip-docs-results a.is-active { background: var(--plate-color-primary-subtle); }
.ip-docs-results__where { font-size: 13px; line-height: 18px; font-weight: 600; color: var(--plate-color-text); }
.ip-docs-results__text { font-size: 13px; line-height: 18px; color: var(--plate-color-text-muted); }
.ip-docs-results mark { background: var(--plate-color-warning-subtle); color: inherit; border-radius: 2px; }
.ip-docs-results__empty { margin: 0; padding: var(--plate-space-3); font-size: 13px; line-height: 19px; color: var(--plate-color-text-muted); }

/* Page header */
.ip-docs-head { display: grid; gap: var(--plate-space-3); padding-bottom: var(--plate-space-8); border-bottom: var(--plate-border-hairline) solid var(--plate-color-border-subtle); }
.ip-docs-head .ip-crumbs ol { margin: 0 0 var(--plate-space-2); }
.ip-docs-head .ip-eyebrow, .ip-docs-head .ip-t-h1, .ip-docs-head p { margin: 0; }
.ip-docs-head__meta { font-size: 13px; line-height: 18px; color: var(--plate-color-text-subtle); }
.ip-docs__main { gap: var(--plate-space-10); }
.ip-docs__main .ip-prose { margin: 0; max-width: none; }
.ip-docs__main .ip-prose > :first-child { margin-top: 0; }
.ip-prose--docs h2:first-child { padding-top: 0; border-top: 0; }
.ip-prose--docs h3 { font-size: 20px; line-height: 27px; }
.ip-prose--docs h4 { font-size: 17px; line-height: 24px; font-weight: 600; margin-top: 1.4em; }
.ip-prose--docs .wp-block-table { margin-block: 1.4em 0; }
.ip-prose--docs table td:first-child { min-width: 150px; }
.ip-prose--docs td code, .ip-prose--docs th code { white-space: nowrap; }
.ip-prose--docs li > ul, .ip-prose--docs li > ol { margin-top: .4em; }
.ip-docs-code pre code { padding: 0; border: 0; background: none; font-size: inherit; }

/* Docs home: first steps and chapter cards */
.ip-prose .ip-docs-start, .ip-prose .ip-docs-cards { list-style: none; padding: 0; display: grid; gap: var(--plate-space-4); }
.ip-prose .ip-docs-start li + li, .ip-prose .ip-docs-cards li + li { margin-top: 0; }
.ip-docs-start { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.ip-docs-cards { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.ip-docs-start__step, .ip-docs-card { position: relative; display: grid; grid-template-columns: auto 1fr; align-content: start; gap: 4px var(--plate-space-3); padding: var(--plate-space-5); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-lg); background: var(--plate-color-surface); transition: border-color var(--plate-duration-fast) var(--plate-ease-standard); }
.ip-docs-start__step:hover, .ip-docs-card:hover { border-color: var(--plate-color-primary); }
.ip-docs-start__n { grid-row: span 2; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--plate-color-primary); color: var(--plate-color-on-primary); font-size: 15px; font-weight: 700; line-height: 1; }
.ip-docs-card__n { grid-row: span 2; padding-top: 2px; font-family: var(--font-mono); font-size: 13px; line-height: 20px; color: var(--plate-color-text-subtle); }
.ip-prose .ip-docs-start__t, .ip-prose .ip-docs-card__t { font-size: 17px; line-height: 24px; font-weight: 600; color: var(--plate-color-text); text-decoration: none; }
.ip-docs-start__step:hover .ip-docs-start__t, .ip-docs-card:hover .ip-docs-card__t { color: var(--plate-color-link); text-decoration: underline; text-underline-offset: 3px; }
.ip-prose .ip-docs-start__d, .ip-prose .ip-docs-card__d { margin: 0; font-size: 15px; line-height: 22px; color: var(--plate-color-text-muted); }
.ip-docs-home .ip-prose--docs h3 { margin-top: 1.8em; }

/* Help box and pager */
.ip-docs-foot { display: grid; gap: var(--plate-space-8); }
.ip-docs-help { display: flex; gap: var(--plate-space-4); padding: var(--plate-space-5) var(--plate-space-6); border-radius: var(--plate-radius-lg); background: var(--plate-color-surface-cream); font-size: 15px; line-height: 23px; }
.ip-docs-help p { margin: 0; }
.ip-docs-help__icon { flex: none; margin-top: 1px; color: var(--plate-color-primary); }
.ip-docs-help__title { margin-bottom: 2px !important; font-weight: 600; }
.ip-docs-help a { color: var(--plate-color-link); text-decoration: underline; text-underline-offset: 2px; }
.ip-docs-foot .ip-pager { margin-top: 0; }
@media (max-width: 639px) {
	.ip-docs-foot .ip-pager { grid-template-columns: minmax(0, 1fr); }
	.ip-docs-foot .ip-pager > span:empty { display: none; }
	.ip-docs-help { padding: var(--plate-space-5); }
}

/* Contact e-mail cards and social links (/kontakt/, core/html in the hero). The whole card is the mailto link.
   Icons are CSS masks, so the page content holds no SVG. The support card uses the dark tokens (data-theme). */
.ip-contact-cards { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--plate-space-4); margin-top: var(--plate-space-8); }
@media (min-width: 768px) { .ip-contact-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--plate-space-6); } }
.ip-contact-card { position: relative; display: flex; flex-direction: column; gap: var(--plate-space-2); padding: var(--plate-space-6) var(--plate-space-6) var(--plate-space-8); border: var(--plate-border-hairline) solid var(--plate-color-primary-200); border-radius: var(--plate-radius-xl); background: var(--plate-color-primary-subtle); color: var(--plate-color-text); text-decoration: none; transition: transform var(--plate-duration-base, 200ms) var(--plate-ease-standard, ease), box-shadow var(--plate-duration-base, 200ms) var(--plate-ease-standard, ease); }
.ip-contact-card[data-theme="dark"] { background: var(--plate-color-background); border-color: var(--plate-color-border-subtle); }
.ip-contact-card:hover { transform: translateY(-2px); box-shadow: var(--plate-shadow-floating); }
.ip-contact-card:focus-visible { outline: none; box-shadow: var(--plate-focus-ring); }
.ip-contact-card__icon { display: grid; place-items: center; width: 48px; height: 48px; margin-bottom: var(--plate-space-3); border-radius: var(--plate-radius-lg); background: var(--plate-color-primary); }
.ip-contact-card__icon::before { content: ""; width: 24px; height: 24px; background: var(--plate-color-on-primary); -webkit-mask: var(--ip-icon) center / contain no-repeat; mask: var(--ip-icon) center / contain no-repeat; }
.ip-contact-card--hello { --ip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='m3 7 9 6 9-6'/%3E%3C/svg%3E"); }
.ip-contact-card--support { --ip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='m5.6 5.6 3.6 3.6m5.6 5.6 3.6 3.6m0-12.8-3.6 3.6m-5.6 5.6-3.6 3.6'/%3E%3C/svg%3E"); }
.ip-contact-card__label { font-size: 12px; line-height: 16px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--plate-color-primary-text); }
.ip-contact-card__email { font-size: clamp(22px, 1vw + 16px, 28px); line-height: 1.2; font-weight: 600; letter-spacing: -0.01em; overflow-wrap: anywhere; }
.ip-contact-card__email::after { content: " →"; color: var(--plate-color-primary); }
.ip-contact-card:hover .ip-contact-card__email { text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 5px; }
.ip-contact-card__desc { font-size: 15px; line-height: 1.55; color: var(--plate-color-text-muted); }
.ip-contact-social { display: flex; flex-wrap: wrap; align-items: center; gap: var(--plate-space-3) var(--plate-space-4); margin: var(--plate-space-6) 0 0; font-size: 15px; color: var(--plate-color-text-muted); }
.ip-contact-social a { display: inline-flex; align-items: center; gap: var(--plate-space-2); padding: var(--plate-space-2) var(--plate-space-4) var(--plate-space-2) var(--plate-space-3); border: var(--plate-border-hairline) solid var(--plate-color-border); border-radius: var(--plate-radius-pill); color: var(--plate-color-text); font-weight: 600; text-decoration: none; }
.ip-contact-social a:hover { border-color: var(--plate-color-border-strong); background: var(--plate-color-surface); }
.ip-contact-social a:focus-visible { outline: none; box-shadow: var(--plate-focus-ring); }
.ip-contact-social a::before { content: ""; width: 20px; height: 20px; background: currentColor; -webkit-mask: var(--ip-icon) center / contain no-repeat; mask: var(--ip-icon) center / contain no-repeat; }
.ip-contact-social__facebook { --ip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M24 12.07C24 5.41 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.04V9.41c0-3.02 1.8-4.7 4.54-4.7 1.31 0 2.68.24 2.68.24v2.97h-1.5c-1.5 0-1.96.93-1.96 1.89v2.26h3.32l-.53 3.5h-2.8V24C19.62 23.1 24 18.1 24 12.07'/%3E%3C/svg%3E"); }
.ip-contact-social__linkedin { --ip-icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.45 20.45h-3.56v-5.57c0-1.33-.02-3.04-1.85-3.04-1.85 0-2.14 1.45-2.14 2.94v5.67H9.35V9h3.41v1.56h.05c.48-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.34 7.43a2.06 2.06 0 1 1 0-4.13 2.06 2.06 0 0 1 0 4.13ZM7.12 20.45H3.56V9h3.56v11.45ZM22.22 0H1.77C.79 0 0 .77 0 1.73v20.54C0 23.23.79 24 1.77 24h20.45c.98 0 1.78-.77 1.78-1.73V1.73C24 .77 23.2 0 22.22 0Z'/%3E%3C/svg%3E"); }
@media (max-width: 767px) { .ip-contact-social > span { flex-basis: 100%; } }
@media (prefers-reduced-motion: reduce) { .ip-contact-card { transition: none; } .ip-contact-card:hover { transform: none; } }

/* Contact Form 7 in ip-form markup (/kontakt/). Fields, labels and buttons use ip-* classes from the form template;
   this maps CF7's own wrappers, validation tips and response box onto the design tokens. */
.ip-form .wpcf7-form-control-wrap { display: block; }
.ip-form .hidden-fields-container { display: none; }
.ip-control--select::after { content: ""; position: absolute; right: 12px; top: 13px; width: 18px; height: 18px; pointer-events: none; background: var(--plate-color-text-muted); -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") center / contain no-repeat; }
.ip-form select.ip-select { appearance: none; -webkit-appearance: none; }
.ip-form .ip-input.wpcf7-not-valid { border-color: var(--plate-color-error); }
.ip-form .ip-input.wpcf7-not-valid:focus { box-shadow: 0 0 0 1px var(--plate-color-error); }
.ip-form .wpcf7-not-valid-tip { display: block; margin-top: 6px; font-size: 13px; line-height: 18px; color: var(--plate-color-error-text); }
.ip-form__actions { display: flex; align-items: center; gap: var(--plate-space-3); }
.ip-form input.ip-btn { cursor: pointer; border: 0; font: inherit; font-weight: 600; }
.ip-form .wpcf7-spinner { margin: 0; background-color: var(--plate-color-text-muted); }
.ip-form .wpcf7-response-output:empty { display: none; }
.wpcf7 form.ip-form .wpcf7-response-output { margin: 0; padding: var(--plate-space-4) var(--plate-space-5); border: 0; border-left: 3px solid var(--plate-color-info); border-radius: var(--plate-radius-md); background: var(--plate-color-info-subtle); color: var(--plate-color-text); font-size: 15px; line-height: 22px; }
.wpcf7 form.ip-form.sent .wpcf7-response-output { border-left-color: var(--plate-color-success); background: var(--plate-color-success-subtle); }
.wpcf7 form.ip-form.invalid .wpcf7-response-output,
.wpcf7 form.ip-form.unaccepted .wpcf7-response-output,
.wpcf7 form.ip-form.payment-required .wpcf7-response-output { border-left-color: var(--plate-color-warning); background: var(--plate-color-warning-subtle); }
.wpcf7 form.ip-form.failed .wpcf7-response-output,
.wpcf7 form.ip-form.aborted .wpcf7-response-output,
.wpcf7 form.ip-form.spam .wpcf7-response-output { border-left-color: var(--plate-color-error); background: var(--plate-color-error-subtle); }

/* Feature testimonial (home): the first sentence is a bold lead on its own line, the rest regular weight.
   The opening „ hangs into the margin so the text keeps one left edge. */
.ip-tcard__q--split { margin: 0; font-size: clamp(19px, 0.4vw + 16px, 22px); line-height: 1.45; font-weight: 400; letter-spacing: -0.005em; color: var(--plate-color-text); }
.ip-tcard__q--split p { margin: 0; }
.ip-tcard__lead { display: block; margin-bottom: var(--plate-space-2); font-size: clamp(22px, 0.5vw + 18px, 26px); line-height: 1.25; font-weight: 600; letter-spacing: -0.01em; text-indent: -0.4em; }
