/*
Theme Name: نویش
Theme URI: https://noyesh.io
Author: تیم نویش
Author URI: https://noyesh.io
Description: تم بلاکی سفارشی نویش — سیستم‌عامل هوشمند سازمان. تمام بخش‌های صفحه بلاک‌های Gutenberg قابل استفاده‌ی مجدد هستند.
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.0
Version: 1.1.0
License: GNU General Public License v2 or later
License URI: LICENSE
Text Domain: noyesh
Tags: full-site-editing, block-patterns, custom-colors, custom-menu, rtl-language-support

این تم فایل style.css را فقط برای هدر متادیتای وردپرس دارد؛ تقریباً تمام استایل‌دهی
از طریق theme.json (توکن‌های طراحی) و استایل مخصوص هر بلاک (که فقط هنگام استفاده از
همان بلاک بارگذاری می‌شود) انجام می‌شود — نه یک برگه‌ی استایل سراسری بزرگ.

استثنا: چیدمان ساختاری هدر/فوتر (که خودشان بلاک نیستند، بلکه ترکیبی از بلاک‌های
هسته داخل یک قالب‌بخش‌اند) اینجا نگه داشته می‌شود، دقیقاً مثل src/style.css در
نسخه‌ی استاتیک.
*/

* {
	box-sizing: border-box;
}

/* Page scrollbar in the brand colour.
 *
 * Both syntaxes are here on purpose: `scrollbar-color` is the standard property
 * (Firefox, Chromium 121+), while the ::-webkit- pseudo-elements still cover
 * Safari and older Chromium. A browser that understands the standard one
 * ignores the pseudo-elements, so they do not fight.
 *
 * These are page-level defaults. Components that style their own scrollbar
 * (the article table of contents) or hide it (the category and gallery rails)
 * are more specific and keep winning. */
:root {
	scrollbar-width: thin;
	scrollbar-color: var(--wp--preset--color--brand-primary) var(--wp--preset--color--bg-secondary);
}

html::-webkit-scrollbar {
	width: 12px;
}

html::-webkit-scrollbar-track {
	background: var(--wp--preset--color--bg-secondary);
}

html::-webkit-scrollbar-thumb {
	border: 3px solid var(--wp--preset--color--bg-secondary);
	border-radius: 999px;
	background: var(--wp--preset--color--brand-primary);
	background-clip: padding-box;
}

html::-webkit-scrollbar-thumb:hover {
	background: var(--wp--preset--color--brand-primary-hover);
	background-clip: padding-box;
}


/* Inline icons (assets/icons/, rendered by noyesh_icon()).
 *
 * The SVG files deliberately carry no width/height so each call site can size
 * them from CSS. That means an icon dropped somewhere with no sizing rule has
 * no intrinsic size at all — it collapses to 0 in a flex row, or stretches to
 * fill its container. This default keeps an unstyled icon sane; any wrapper
 * with its own `svg` rule still wins on specificity. */
.noyesh-icon {
	width: 1.25em;
	height: 1.25em;
	flex: none;
}



body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/* Shared content-width constraint for custom blocks with a full-bleed section
   background — the section itself stays edge-to-edge, this wraps just the content
   that should be capped and centered at theme.json's contentSize. Equivalent to the
   static site's .container class. */
.noyesh-container {
	max-width: var(--wp--style--global--content-size, 1240px);
	margin-inline: auto;
	padding-inline: 24px;
}

/* ============ Buttons ============ */
/* Shared across several blocks (hero, module-showcase, steps-cta, ...) — kept here once
   instead of duplicated per block's own stylesheet. */
.noyesh-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 6px 20px;
	border-radius: var(--wp--custom--radius--sm);
	font-weight: 600;
	font-size: 0.95rem;
	border: 1px solid transparent;
	white-space: nowrap;
	text-decoration: none;
	transition: transform 0.2s var(--wp--custom--ease), box-shadow 0.2s var(--wp--custom--ease), background 0.2s var(--wp--custom--ease), border-color 0.2s var(--wp--custom--ease), color 0.2s var(--wp--custom--ease);
}

.noyesh-btn--lg {
	padding: 8px 28px;
	font-size: 1.02rem;
}

.noyesh-btn--block {
	width: 100%;
}

.noyesh-btn--primary {
	background: var(--wp--preset--color--brand-primary);
	color: #fff;
	box-shadow: var(--wp--custom--shadow--md);
}

.noyesh-btn--primary:hover {
	background: var(--wp--preset--color--brand-primary-hover);
	color: #fff;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(49, 94, 251, 0.28);
}

.noyesh-btn--outline {
	background: var(--wp--preset--color--surface-primary);
	color: var(--wp--preset--color--text-primary);
	border-color: var(--wp--preset--color--border-default);
}

.noyesh-btn--outline:hover {
	border-color: var(--wp--preset--color--brand-primary);
	color: var(--wp--preset--color--brand-primary);
	transform: translateY(-2px);
}

/* WP's default ".is-layout-flow > *" global style hardcodes a 24px margin-top on every
   top-level block, including <main> right after the header — the static site has no such
   gap (each section controls its own top padding). */
.wp-site-blocks > main {
	margin-top: 0;
}

/* ============ Header ============ */
.noyesh-site-header {
	position: relative;
	/* Own stacking context, independent of the sticky wrapper below: pages that
	   call block_template_part('header') directly (404/blog archive/single post)
	   never get that wrapper, so without this the mobile-nav dropdown (absolutely
	   positioned inside this header) could paint behind a later sibling section
	   that establishes its own stacking context (e.g. isolation:isolate). */
	z-index: 1000;
	background: var(--wp--preset--color--surface-primary);
	border-bottom: 1px solid var(--wp--preset--color--border-subtle);
}

/* WordPress wraps the template-part header in another <header>. Sticky must be
   applied to that wrapper, otherwise the inner header is constrained by a
   parent with exactly the same height and scrolls away with the page. */
.wp-site-blocks > header.wp-block-template-part:has(> .noyesh-site-header) {
	position: sticky;
	top: 0;
	z-index: 1000;
}

body.admin-bar .wp-site-blocks > header.wp-block-template-part:has(> .noyesh-site-header) {
	top: 32px;
}

.noyesh-header-inner {
	max-width: var(--wp--style--global--content-size, 1240px);
	margin-inline: auto;
	padding-inline: 24px;
	padding-block: 10px;
	gap: 28px;
}

.noyesh-brand {
	gap: 10px;
}

.noyesh-brand .noyesh-fallback-logo,
.noyesh-brand .wp-block-site-logo {
	flex: none;
	line-height: 0;
}

.noyesh-brand .noyesh-fallback-logo img {
	display: block;
	width: 38px;
	height: 25px;
	object-fit: contain;
}

.noyesh-brand .wp-block-site-title a {
	font-weight: 700;
	font-size: 1.2rem;
	letter-spacing: -0.01em;
	text-decoration: none;
	color: var(--wp--preset--color--text-primary);
}

.noyesh-main-nav {
	flex-grow: 1;
}

.noyesh-main-nav .wp-block-navigation__container {
	gap: 4px;
}

/* WordPress pulls the custom mega-menu block out of .wp-block-navigation__container
   (it only recognizes core/navigation-link|submenu as "nav items") and renders it as a
   separate flex sibling of that container, inheriting the default 24px block gap instead
   of the 4px gap used between the regular nav-links. */
.wp-block-navigation__responsive-container-content {
	gap: 4px;
}

/* WP core defaults this to flex-wrap:wrap (see wp-includes/blocks/navigation/style.css:
   ".wp-block-navigation__responsive-container .wp-block-navigation__responsive-container-content"
   sets "flex-wrap: var(--navigation-layout-wrap, wrap)"), so the nav links break onto
   their own line(s) as soon as the row gets tight — even while the outer
   .noyesh-header-inner (nowrap) still has room. The static site's nav never wraps, it
   just sits snugly on one line down to the 960px hamburger breakpoint. Setting the CSS
   var directly beats fighting that rule's specificity. */
.noyesh-main-nav {
	--navigation-layout-wrap: nowrap;
}

.noyesh-main-nav .wp-block-navigation__container {
	flex-wrap: nowrap;
}

/* .noyesh-classic-menu is noyesh/classic-menu (renders a classic wp_nav_menu()
   theme_location, editable from دشبورد ← نمایش ← فهرست‌ها) — plain <ul><li><a>, much
   simpler markup than core/navigation's, so it gets its own selectors here. */
.noyesh-main-nav .noyesh-classic-menu {
	display: flex;
	align-items: center;
}

.noyesh-main-nav .noyesh-classic-menu__list {
	display: flex;
	align-items: center;
	gap: 4px;
	flex-wrap: nowrap;
	margin: 0;
	padding: 0;
	list-style: none;
}

.noyesh-main-nav .noyesh-classic-menu__list .menu-item {
	margin: 0;
}

.noyesh-main-nav .noyesh-classic-menu__list a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	color: var(--wp--preset--color--text-primary);
	font-size: 0.94rem;
	font-weight: 500;
	padding: 10px 14px;
	border-radius: var(--wp--custom--radius--full);
	text-decoration: none;
	white-space: nowrap;
	transition: color 0.2s var(--wp--custom--ease);
}

.noyesh-main-nav .noyesh-classic-menu__list a:hover {
	color: var(--wp--preset--color--brand-primary);
}

/* Core only enqueues wp-includes/blocks/buttons/style.css (.wp-block-buttons{display:flex},
   .wp-block-button{display:inline-block}) on pages that render an actual core/buttons block.
   Several custom parts of this theme (noyesh/header-actions, the FAQ section's button, etc.)
   reuse those exact class names purely for their visual styling without going through a real
   core/buttons block, so on pages with no real buttons block anywhere (e.g. the About page,
   built entirely by the custom page-builder) those classes silently fall back to the browser
   default display:block and the buttons stack/wrap instead of sitting side by side. Defining
   the same base display rules here, unconditionally, removes that dependency. */
.wp-block-buttons {
	display: flex;
	flex-wrap: wrap;
}

.wp-block-buttons > .wp-block-button {
	display: inline-block;
	margin: 0;
}

.noyesh-header-actions {
	margin-inline-start: auto;
	gap: 10px;
	flex-wrap: nowrap;
}

.noyesh-header-actions .wp-block-button__link,
.noyesh-btn-ghost .wp-block-button__link,
.noyesh-btn-outline .wp-block-button__link,
.noyesh-btn-primary .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	padding: 6px 20px;
	border-radius: var(--wp--custom--radius--sm);
	font-weight: 600;
	font-size: 0.95rem;
	border: 1px solid transparent;
	white-space: nowrap;
	transition: transform 0.2s var(--wp--custom--ease), box-shadow 0.2s var(--wp--custom--ease), background 0.2s var(--wp--custom--ease), border-color 0.2s var(--wp--custom--ease);
}

.noyesh-btn-ghost .wp-block-button__link {
	background: transparent;
	color: var(--wp--preset--color--text-primary);
}

.noyesh-btn-ghost .wp-block-button__link:hover {
	background: rgba(49, 94, 251, 0.06);
	color: var(--wp--preset--color--brand-primary);
}

.noyesh-btn-outline .wp-block-button__link {
	background: var(--wp--preset--color--surface-primary);
	color: var(--wp--preset--color--text-primary);
	border-color: var(--wp--preset--color--border-default);
}

.noyesh-btn-outline .wp-block-button__link:hover {
	border-color: var(--wp--preset--color--brand-primary);
	color: var(--wp--preset--color--brand-primary);
	transform: translateY(-2px);
}

.noyesh-btn-primary .wp-block-button__link {
	background: var(--wp--preset--color--brand-primary);
	color: #fff;
}

.noyesh-btn-primary .wp-block-button__link:hover {
	background: var(--wp--preset--color--brand-primary-hover);
}

@media (max-width: 960px) {
	/* Below the static site's own 960px breakpoint, its header hides the inline
	   nav and CTA buttons entirely and shows only the hamburger + sliding panel
	   (noyesh/mobile-nav) instead — so core Navigation's own toggle/overlay for
	   .noyesh-main-nav is hidden here rather than reskinned. */
	.noyesh-main-nav {
		display: none !important;
	}

	.noyesh-header-actions {
		display: none !important;
	}
}

/* ============ Footer ============ */
.noyesh-site-footer {
	margin-top: 40px;
	padding-block: 0 !important;
	/* Rounded where it meets the page, square at the very bottom of the
	   document — mirroring the mega menu, which is square against the header
	   and rounded on the edge that leaves the page. */
	border-radius: var(--wp--custom--radius--lg) var(--wp--custom--radius--lg) 0 0;
	overflow: hidden;
	position: relative;
}

/* Brand strip closing the page out. It is a child of the footer (which clips to
   the rounded top corners), so it follows that shape and never pokes past it. */
.noyesh-site-footer::after {
	content: "";
	position: absolute;
	inset-inline: 0;
	bottom: 0;
	height: 4px;
	/* `to left`, so the saturated brand blue sits at the inline start — the
	   right-hand side in RTL — and fades away towards the left. style.css is
	   not run through the RTL post-processor, so this direction is literal. */
	background: linear-gradient(
		to left,
		var(--wp--preset--color--brand-primary),
		var(--wp--preset--color--ai-accent)
	);
}

.noyesh-site-footer :where(h1, h2, h3, h4, h5, h6) {
	color: var(--wp--preset--color--dark-text-primary);
}

.noyesh-site-footer a {
	color: var(--wp--preset--color--dark-text-tertiary);
}

.noyesh-site-footer a:hover {
	color: var(--wp--preset--color--dark-text-primary);
}

.noyesh-site-footer .noyesh-brand .wp-block-site-title a {
	color: var(--wp--preset--color--dark-text-primary);
}

.noyesh-footer-brand .wp-block-site-logo img {
	filter: brightness(0) invert(1);
}

.noyesh-footer-brand .wp-block-site-logo,
.noyesh-footer-brand .wp-block-site-title {
	margin: 0 !important;
}

.noyesh-footer-top {
	display: grid !important;
	grid-template-columns: 1.1fr 2fr;
	gap: 56px;
	max-width: var(--wp--style--global--content-size, 1240px);
	margin-inline: auto;
	padding-inline: 24px;
	padding-block: 64px 40px;
	/* Start, not center: centring floated the brand column halfway down the
	   block while the four nav columns started at the top, so the two halves of
	   the footer never lined up. */
	align-items: start;
	border-bottom: 1px solid var(--wp--preset--color--dark-border-subtle);
}

.noyesh-footer-brand {
	max-width: 320px;
}

.noyesh-footer-brand > * {
	margin-block-start: 0 !important;
}

.noyesh-footer-brand .noyesh-brand {
	align-items: center !important;
	margin-bottom: 16px;
}

.noyesh-footer-brand > p {
	font-size: 0.9rem;
	margin: 0 0 24px;
	color: var(--wp--preset--color--dark-text-tertiary);
}

/* Social icons sit under the description now that the newsletter form is gone,
   so the brand column reads top to bottom: mark, sentence, links. */
.noyesh-footer-brand .noyesh-social-links {
	margin: 0;
}

.noyesh-footer-cols {
	display: grid !important;
	/* The product column is wider than the rest: it holds the longest labels
	   ("لجستیک توزیع هوشمند") and the badges, which together need more room than
	   an equal quarter gives before they wrap to two lines. */
	grid-template-columns: 1.4fr 1fr 1fr 1fr;
	gap: 24px !important;
}

.noyesh-footer-cols > .wp-block-column {
	flex-basis: auto !important;
}

/* Each column title is separated from its links by a hairline, so the four
   lists read as distinct groups rather than one long run of text. The short
   brand-coloured lead-in is the same detail the mega menu's category headings
   use, which is what ties the two navigations together visually. */
.noyesh-footer-cols h4 {
	position: relative;
	margin: 0 0 18px;
	padding-bottom: 12px;
	font-size: 0.86rem;
	font-weight: 600;
}

/* Identical treatment to the mega menu's category headings (see
   src/blocks/mega-group/style.scss): a full-width hairline with a short
   tone-coloured lead-in fading over it. Two pseudo-elements rather than one
   gradient, so the two navigations share the exact same rule rather than an
   approximation of it. */
.noyesh-footer-cols h4::before,
.noyesh-footer-cols h4::after {
	content: "";
	position: absolute;
	bottom: 0;
	height: 2px;
	border-radius: 2px;
}

.noyesh-footer-cols h4::before {
	inset-inline: 0;
	background: var(--wp--preset--color--dark-border-subtle);
}

.noyesh-footer-cols h4::after {
	inset-inline-start: 0;
	width: 28px;
	/*
	 * `to right`, even though the mega menu's source says `to left`.
	 * Block stylesheets are run through the RTL post-processor, which mirrors
	 * horizontal gradients — so the mega menu actually *renders* `to right`.
	 * style.css gets no such pass, so matching the rendered result means
	 * writing the flipped direction here. Written as authored, the two lines
	 * faded in opposite directions.
	 */
	background: linear-gradient(to right, transparent, var(--wp--preset--color--brand-primary));
}

/* Shared by the header's mega-menu star and the footer's product heading. */
@keyframes noyesh-star-twinkle {
	0%, 100% { opacity: 1; transform: scale(1) rotate(0deg); }
	45%      { opacity: 0.55; transform: scale(0.72) rotate(45deg); }
}

/* The star hangs off the column, not the heading: the heading's own
   pseudo-elements are both spent on the rule above, and anchoring to the column
   puts the star at the heading's start corner — the same place the header
   carries it. */
.noyesh-footer-col--star {
	position: relative;
}

.noyesh-footer-col--star::before {
	content: "";
	position: absolute;
	inset-inline-start: -13px;
	top: -7px;
	z-index: 1;
	width: 13px;
	height: 13px;
	background: #f59e0b;
	-webkit-mask: url('data:image/svg+xml,<svg%20viewBox="0%200%2024%2024"%20fill="#000"%20xmlns="http://www.w3.org/2000/svg"><path%20d="M8.03339%203.65784C8.37932%202.78072%209.62068%202.78072%209.96661%203.65785L11.0386%206.37599C11.1442%206.64378%2011.3562%206.85576%2011.624%206.96137L14.3422%208.03339C15.2193%208.37932%2015.2193%209.62068%2014.3422%209.96661L11.624%2011.0386C11.3562%2011.1442%2011.1442%2011.3562%2011.0386%2011.624L9.96661%2014.3422C9.62067%2015.2193%208.37932%2015.2193%208.03339%2014.3422L6.96137%2011.624C6.85575%2011.3562%206.64378%2011.1442%206.37599%2011.0386L3.65784%209.96661C2.78072%209.62067%202.78072%208.37932%203.65785%208.03339L6.37599%206.96137C6.64378%206.85575%206.85576%206.64378%206.96137%206.37599L8.03339%203.65784Z"%20stroke="#000"%20stroke-width="0"/><path%20d="M16.4885%2013.3481C16.6715%2012.884%2017.3285%2012.884%2017.5115%2013.3481L18.3121%2015.3781C18.368%2015.5198%2018.4802%2015.632%2018.6219%2015.6879L20.6519%2016.4885C21.116%2016.6715%2021.116%2017.3285%2020.6519%2017.5115L18.6219%2018.3121C18.4802%2018.368%2018.368%2018.4802%2018.3121%2018.6219L17.5115%2020.6519C17.3285%2021.116%2016.6715%2021.116%2016.4885%2020.6519L15.6879%2018.6219C15.632%2018.4802%2015.5198%2018.368%2015.3781%2018.3121L13.3481%2017.5115C12.884%2017.3285%2012.884%2016.6715%2013.3481%2016.4885L15.3781%2015.6879C15.5198%2015.632%2015.632%2015.5198%2015.6879%2015.3781L16.4885%2013.3481Z"%20stroke="#000"%20stroke-width="0"/></svg>') center / contain no-repeat;
	mask: url('data:image/svg+xml,<svg%20viewBox="0%200%2024%2024"%20fill="#000"%20xmlns="http://www.w3.org/2000/svg"><path%20d="M8.03339%203.65784C8.37932%202.78072%209.62068%202.78072%209.96661%203.65785L11.0386%206.37599C11.1442%206.64378%2011.3562%206.85576%2011.624%206.96137L14.3422%208.03339C15.2193%208.37932%2015.2193%209.62068%2014.3422%209.96661L11.624%2011.0386C11.3562%2011.1442%2011.1442%2011.3562%2011.0386%2011.624L9.96661%2014.3422C9.62067%2015.2193%208.37932%2015.2193%208.03339%2014.3422L6.96137%2011.624C6.85575%2011.3562%206.64378%2011.1442%206.37599%2011.0386L3.65784%209.96661C2.78072%209.62067%202.78072%208.37932%203.65785%208.03339L6.37599%206.96137C6.64378%206.85575%206.85576%206.64378%206.96137%206.37599L8.03339%203.65784Z"%20stroke="#000"%20stroke-width="0"/><path%20d="M16.4885%2013.3481C16.6715%2012.884%2017.3285%2012.884%2017.5115%2013.3481L18.3121%2015.3781C18.368%2015.5198%2018.4802%2015.632%2018.6219%2015.6879L20.6519%2016.4885C21.116%2016.6715%2021.116%2017.3285%2020.6519%2017.5115L18.6219%2018.3121C18.4802%2018.368%2018.368%2018.4802%2018.3121%2018.6219L17.5115%2020.6519C17.3285%2021.116%2016.6715%2021.116%2016.4885%2020.6519L15.6879%2018.6219C15.632%2018.4802%2015.5198%2018.368%2015.3781%2018.3121L13.3481%2017.5115C12.884%2017.3285%2012.884%2016.6715%2013.3481%2016.4885L15.3781%2015.6879C15.5198%2015.632%2015.632%2015.5198%2015.6879%2015.3781L16.4885%2013.3481Z"%20stroke="#000"%20stroke-width="0"/></svg>') center / contain no-repeat;
	filter: drop-shadow(0 0 4px rgba(245, 158, 11, 0.45));
	animation: noyesh-star-twinkle 3s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
	.noyesh-footer-col--star::before {
		animation: none;
	}
}

/* Badge on a footer menu item, opted into per item from
   نمایش ← فهرست‌ها by adding a CSS class (see inc/… classic-menu render). */
.noyesh-menu-badge {
	display: inline-block;
	margin-inline-start: 6px;
	padding: 2px 7px;
	border-radius: 999px;
	font-size: 0.62rem;
	font-weight: 700;
	line-height: 1.6;
	vertical-align: 2px;
	white-space: nowrap;
}

.noyesh-menu-badge--new {
	background: rgba(49, 94, 251, 0.16);
	color: #7da2ff;
}

.noyesh-menu-badge--smart {
	background: rgba(245, 158, 11, 0.16);
	color: #fbbf24;
}

.noyesh-menu-badge--soon {
	background: rgba(148, 163, 184, 0.16);
	color: #cbd5e1;
}

/* .noyesh-footer-nav is noyesh/classic-menu (renders a classic wp_nav_menu()
   theme_location, editable from دشبورد ← نمایش ← فهرست‌ها) — plain <ul><li><a>. */
.noyesh-footer-nav .noyesh-classic-menu__list {
	display: flex;
	flex-direction: column;
	gap: 12px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.noyesh-footer-nav .noyesh-classic-menu__list .menu-item {
	margin: 0;
}

/* An item carrying a badge lays the link and the badge out as one row, so a
   label that wraps to two lines keeps the badge beside it rather than pushing
   it onto a line of its own. */
.noyesh-footer-nav .noyesh-classic-menu__list .menu-item:has(> .noyesh-menu-badge) {
	display: flex;
	align-items: center;
	gap: 6px;
}

.noyesh-footer-nav .noyesh-classic-menu__list .menu-item > .noyesh-menu-badge {
	flex: none;
	margin-inline-start: 0;
}

.noyesh-footer-nav .noyesh-classic-menu__list a {
	display: inline;
	font-size: 0.86rem;
	text-decoration: none;
}

.noyesh-footer-bottom {
	max-width: var(--wp--style--global--content-size, 1240px);
	margin-inline: auto;
	padding-inline: 24px;
	padding-block: 22px;
	font-size: 0.8rem;
	margin-block-start: 0 !important;
}

.noyesh-footer-bottom p {
	margin: 0;
	color: var(--wp--preset--color--dark-text-tertiary);
}

.noyesh-footer-bottom-end {
	display: flex;
	align-items: center;
	gap: 18px;
}

.noyesh-enamad-badge a {
	display: block;
	line-height: 0;
}

.noyesh-enamad-badge img {
	display: block;
	height: 58px;
	width: auto;
	border-radius: var(--wp--custom--radius--sm);
}

.noyesh-social-links {
	display: flex;
	align-items: center;
	gap: 10px;
}

.noyesh-social-links .wp-block-social-link {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	line-height: 0;
}

.noyesh-social-links .wp-block-social-link a {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	padding: 0 !important;
	border-radius: 50%;
	background: var(--wp--preset--color--dark-surface-1);
	border: 1px solid var(--wp--preset--color--dark-border);
	transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}

.noyesh-social-links .wp-block-social-link svg {
	display: block;
	width: 18px;
	height: 18px;
	margin: 0;
}

.noyesh-social-links .wp-block-social-link a:hover {
	background: var(--wp--preset--color--brand-primary);
	border-color: var(--wp--preset--color--brand-primary);
	color: #fff;
}

@media (max-width: 860px) {
	.noyesh-footer-top {
		grid-template-columns: 1fr;
		gap: 36px;
	}

	.noyesh-footer-cols {
		grid-template-columns: repeat(2, 1fr);
	}

	.noyesh-footer-bottom {
		flex-direction: column;
		gap: 14px;
		text-align: center;
	}
}

@media (max-width: 782px) {
	body.admin-bar .wp-site-blocks > header.wp-block-template-part:has(> .noyesh-site-header) {
		top: 46px;
	}
}

/* ============ FAQ (core/details, "noyesh-faq" style) ============ */
/* The FAQ block itself is composed from core blocks (group/heading/paragraph/details) in
   each service template, so its layout + accordion styling lives here rather than in a
   custom block's own stylesheet. */
.noyesh-faq-section {
	padding-block: 100px 145px;
	background: #fff;
}

.noyesh-faq-section .noyesh-section-head {
	position: sticky;
	top: 105px;
}

.noyesh-faq-layout {
	display: grid;
	grid-template-columns: 0.72fr 1.28fr;
	gap: 86px;
	align-items: start;
}

.noyesh-faq-section .noyesh-section-head .noyesh-component-btn,
.noyesh-faq-section .noyesh-section-head .wp-block-button {
	margin-top: 24px;
}

@media (max-width: 860px) {
	.noyesh-faq-layout {
		grid-template-columns: 1fr;
		gap: 32px;
	}
}

.noyesh-section-eyebrow {
	display: inline-block;
	font-size: 0.8rem;
	font-weight: 600;
	color: var(--wp--preset--color--brand-primary);
	background: rgba(49, 94, 251, 0.06);
	border-radius: var(--wp--custom--radius--full);
	padding: 6px 14px;
	margin-bottom: 16px;
}

.wp-block-details.is-style-noyesh-faq {
	padding: 0 20px;
	margin: 0 0 12px;
	border: 1px solid var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--surface-primary);
}

.wp-block-details.is-style-noyesh-faq[open] {
	border-color: rgba(49, 94, 251, 0.2);
	background: #fbfcff;
}

.wp-block-details.is-style-noyesh-faq summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 16px 0;
	cursor: pointer;
	font-weight: 600;
	font-size: 0.92rem;
	color: var(--wp--preset--color--text-primary);
}

.wp-block-details.is-style-noyesh-faq summary::-webkit-details-marker {
	display: none;
}

.wp-block-details.is-style-noyesh-faq .noyesh-faq-item__question {
	flex: 1;
}

/* The open/close affordance is a real SVG in the markup now, so it centres on
   its own geometry instead of on a text baseline. */
.wp-block-details.is-style-noyesh-faq .noyesh-faq-item__toggle {
	flex: none;
	display: grid;
	place-items: center;
	width: 26px;
	height: 26px;
	border-radius: 50%;
	background: rgba(49, 94, 251, 0.06);
	color: var(--wp--preset--color--brand-primary);
	transition: transform 0.25s ease, background 0.25s ease;
}

.wp-block-details.is-style-noyesh-faq[open] .noyesh-faq-item__toggle {
	transform: rotate(45deg);
}


.wp-block-details.is-style-noyesh-faq p {
	margin: 0;
	padding: 0 0 18px;
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.88rem;
	line-height: 1.8;
}

@media (max-width: 860px) {
	.noyesh-faq-section .noyesh-section-head {
		position: static;
	}
}

@media (max-width: 640px) {
	/* FAQ is a full-bleed service section in some templates; its own inset keeps
	 * accordions comfortably away from the handset edges in every such template. */
	.noyesh-faq-section {
		padding-inline: 18px;
	}

	.noyesh-faq-section .wp-block-details.is-style-noyesh-faq,
	.post-faq {
		margin-inline: 0;
	}

	.faq-item {
		padding-inline: 16px;
	}

	/* Put the FAQ CTA directly beneath its intro on phones and make the native
	 * WordPress button match the blue component button used elsewhere. */
	.noyesh-faq-section .noyesh-section-head .noyesh-component-btn,
	.noyesh-faq-section .noyesh-section-head .wp-block-button {
		margin-top: 8px;
	}

	.noyesh-faq-section .noyesh-section-head .wp-block-button__link {
		border-color: #315efb !important;
		background: #315efb !important;
		color: #fff !important;
		box-shadow: 0 10px 22px rgba(49,94,251,.22);
	}
}

/* ============ Blog: page banner ============ */
.noyesh-page-banner {
	position: relative;
	isolation: isolate;
	overflow: clip;
	padding-block: 46px 60px;
	background: linear-gradient(150deg, #071330, #10265d);
}

.noyesh-page-banner__glow {
	position: absolute;
	width: 480px;
	height: 480px;
	inset-inline-end: -160px;
	top: -250px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(49, 94, 251, 0.32), transparent 68%);
	z-index: -1;
}

.noyesh-page-banner .noyesh-service-hero__breadcrumb,
.noyesh-page-banner .noyesh-breadcrumb {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 22px;
	font-size: 0.82rem;
	color: rgba(255, 255, 255, 0.55);
}

.noyesh-breadcrumb a {
	color: rgba(255, 255, 255, 0.75);
	text-decoration: none;
}

.noyesh-breadcrumb a:hover {
	color: #fff;
}

.noyesh-breadcrumb-current {
	color: #fff;
	flex: 0 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.breadcrumb > :not(.noyesh-breadcrumb-current) {
	flex-shrink: 0;
}

.noyesh-page-banner h1 {
	margin: 10px 0 14px;
	color: #fff;
	font-size: clamp(1.5rem, 2.6vw, 2.1rem);
}

.noyesh-page-banner p {
	margin: 0;
	max-width: 640px;
	color: rgba(255, 255, 255, 0.62);
	font-size: 0.95rem;
	line-height: 1.9;
}

/* ============ Blog: category pills (core/categories, "noyesh-pills" style) ============ */
.wp-block-categories.is-style-noyesh-pills {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	margin: 0 0 40px;
	padding: 0;
	list-style: none;
}

.wp-block-categories.is-style-noyesh-pills li {
	margin: 0;
}

.wp-block-categories.is-style-noyesh-pills a {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 9px 16px;
	border-radius: var(--wp--custom--radius--full);
	border: 1px solid var(--wp--preset--color--border-default);
	background: var(--wp--preset--color--surface-primary);
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.84rem;
	font-weight: 600;
	text-decoration: none;
	transition: background 0.2s var(--wp--custom--ease), border-color 0.2s var(--wp--custom--ease), color 0.2s var(--wp--custom--ease);
}

.wp-block-categories.is-style-noyesh-pills a:hover {
	border-color: var(--wp--preset--color--brand-primary);
	color: var(--wp--preset--color--brand-primary);
}

.wp-block-categories.is-style-noyesh-pills li.current-cat a {
	background: var(--wp--preset--color--brand-primary);
	border-color: var(--wp--preset--color--brand-primary);
	color: #fff;
}

/* ============ Blog: article grid (core/query, "noyesh-article-grid" className) ============ */
.noyesh-article-grid ul.wp-block-post-template {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.noyesh-article-grid li.wp-block-post {
	margin: 0;
	border-radius: var(--wp--custom--radius--lg);
	border: 1px solid var(--wp--preset--color--border-subtle);
	background: var(--wp--preset--color--surface-primary);
	overflow: hidden;
	box-shadow: var(--wp--custom--shadow--sm);
	transition: box-shadow 0.25s var(--wp--custom--ease), transform 0.25s var(--wp--custom--ease);
}

.noyesh-article-grid li.wp-block-post:hover {
	box-shadow: var(--wp--custom--shadow--lg);
	transform: translateY(-4px);
}

.noyesh-article-grid .wp-block-post-featured-image {
	margin: 0;
	aspect-ratio: 16 / 10;
	overflow: hidden;
}

.noyesh-article-grid .wp-block-post-featured-image img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.noyesh-article-grid .wp-block-post-terms {
	display: block;
	margin: 14px 18px 0;
	font-size: 0.72rem;
	font-weight: 700;
	color: var(--wp--preset--color--brand-primary);
}

.noyesh-article-grid .wp-block-post-terms a {
	color: inherit;
	text-decoration: none;
}

.noyesh-article-grid h3.wp-block-post-title {
	margin: 8px 18px 8px;
	font-size: 0.98rem;
	line-height: 1.6;
}

.noyesh-article-grid h3.wp-block-post-title a {
	color: var(--wp--preset--color--text-primary);
	text-decoration: none;
}

.noyesh-article-grid .wp-block-post-excerpt {
	margin: 0 18px 18px;
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.82rem;
	line-height: 1.8;
}

.noyesh-article-grid .wp-block-post-date {
	display: block;
	margin: 0 18px 18px;
	color: var(--wp--preset--color--text-tertiary);
	font-size: 0.76rem;
}

@media (max-width: 1080px) {
	.noyesh-article-grid ul.wp-block-post-template {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 640px) {
	.noyesh-article-grid ul.wp-block-post-template {
		grid-template-columns: 1fr;
	}
}

/* ============ Single post: two-column layout + content typography ============ */
.noyesh-post-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: 56px;
	align-items: start;
	padding-block: 48px 64px;
}

.noyesh-post-content {
	font-size: 1rem;
	line-height: 1.9;
	color: var(--wp--preset--color--text-secondary);
}

.noyesh-post-content h2 { font-size: 1.35rem; font-weight: 700; color: var(--wp--preset--color--text-primary); margin: 44px 0 18px; scroll-margin-top: 100px; }
.noyesh-post-content h3 { font-size: 1.1rem; font-weight: 700; color: var(--wp--preset--color--text-primary); margin: 28px 0 12px; scroll-margin-top: 100px; }
.noyesh-post-content h4 { font-size: 1rem; font-weight: 700; color: var(--wp--preset--color--text-primary); margin: 22px 0 10px; }
.noyesh-post-content h2:first-child { margin-top: 0; }
.noyesh-post-content p { margin: 0 0 18px; }
.noyesh-post-content ul,
.noyesh-post-content ol {
	margin: 0 0 20px;
	padding-inline-start: 22px;
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.noyesh-post-content li { line-height: 1.8; }
.noyesh-post-content ul { list-style: none; }
.noyesh-post-content ul li { position: relative; }
.noyesh-post-content ul li::before {
	content: '';
	position: absolute;
	inset-inline-start: -20px;
	top: 0.7em;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--wp--preset--color--brand-primary);
}
.noyesh-post-content strong { color: var(--wp--preset--color--text-primary); font-weight: 700; }
.noyesh-post-content a { color: var(--wp--preset--color--brand-primary); text-decoration: underline; text-underline-offset: 3px; }

/* core/table, "noyesh-data-table" style */
.wp-block-table.is-style-noyesh-data-table {
	overflow-x: auto;
	margin: 24px 0 32px;
}

.wp-block-table.is-style-noyesh-data-table table {
	width: 100%;
	border-collapse: collapse;
	font-size: 0.87rem;
	border: 1px solid var(--wp--preset--color--border-default);
	border-radius: var(--wp--custom--radius--md);
	overflow: hidden;
}

.wp-block-table.is-style-noyesh-data-table th,
.wp-block-table.is-style-noyesh-data-table td {
	padding: 12px 16px;
	text-align: start;
	border: 1px solid var(--wp--preset--color--border-default);
}

.wp-block-table.is-style-noyesh-data-table th {
	background: var(--wp--preset--color--brand-primary);
	color: #fff;
	font-weight: 700;
	font-size: 0.8rem;
}

.wp-block-table.is-style-noyesh-data-table td {
	color: var(--wp--preset--color--text-primary);
	font-weight: 500;
}

.wp-block-table.is-style-noyesh-data-table tbody tr:nth-child(even) {
	background: var(--wp--preset--color--surface-secondary);
}

/* TablePress is the canonical table renderer across posts and pages. */
.noyesh-post-content .noyesh-tablepress-wrap,
.noyesh-post-content .tablepress-scroll-wrapper,
.noyesh-post-content .tablepress-responsive-scroll-wrapper {
	max-width: 100%;
	overflow-x: auto;
}

.noyesh-post-content .noyesh-tablepress-wrap {
	margin: 24px 0 32px;
	border-radius: var(--wp--custom--radius--md);
}

.noyesh-post-content .tablepress {
	width: 100%;
	min-width: 520px;
	margin: 0;
	border: 1px solid var(--wp--preset--color--border-default);
	border-collapse: separate;
	border-spacing: 0;
	border-radius: var(--wp--custom--radius--md);
	overflow: hidden;
	direction: rtl;
	font-size: 0.87rem;
}

.noyesh-post-content .tablepress th,
.noyesh-post-content .tablepress td {
	padding: 12px 16px;
	border: 0;
	border-bottom: 1px solid var(--wp--preset--color--border-default);
	border-inline-start: 1px solid var(--wp--preset--color--border-default);
	text-align: start;
	white-space: normal;
}

.noyesh-post-content .tablepress th:last-child,
.noyesh-post-content .tablepress td:last-child {
	border-inline-start: 0;
}

.noyesh-post-content .tablepress thead th {
	background: var(--wp--preset--color--brand-primary);
	color: #fff;
	font-size: 0.8rem;
	font-weight: 700;
}

.noyesh-post-content .tablepress tbody td {
	background: #fff;
	color: var(--wp--preset--color--text-primary);
	font-weight: 500;
}

.noyesh-post-content .tablepress tbody tr:nth-child(even) td {
	background: var(--wp--preset--color--surface-secondary);
}

.noyesh-post-content .tablepress tbody tr:last-child td {
	border-bottom: 0;
}

@media (max-width: 600px) {
	.noyesh-post-content .tablepress {
		font-size: 0.8rem;
	}

	.noyesh-post-content .tablepress th,
	.noyesh-post-content .tablepress td {
		padding: 10px 12px;
	}
}

/* core/image, "noyesh-rounded" style */
.wp-block-image.is-style-noyesh-rounded img {
	border-radius: var(--wp--custom--radius--lg);
	box-shadow: var(--wp--custom--shadow--md);
}

/* core/gallery, "noyesh-slider" style — a horizontal scroll-snap filmstrip instead of a grid */
.wp-block-gallery.is-style-noyesh-slider {
	display: flex !important;
	flex-wrap: nowrap;
	gap: 12px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	padding-bottom: 4px;
}

.wp-block-gallery.is-style-noyesh-slider .wp-block-image {
	flex: 0 0 220px;
	scroll-snap-align: start;
}

.wp-block-gallery.is-style-noyesh-slider .wp-block-image img {
	height: 220px;
	width: 100%;
	object-fit: cover;
	border-radius: var(--wp--custom--radius--md);
}

/* generic content callout box — add "noyesh-callout", "noyesh-callout--warning" or
   "noyesh-callout--danger" as an Additional CSS Class on any core/group */
.noyesh-callout {
	background: var(--wp--preset--color--surface-secondary);
	border: 1px solid var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--md);
	padding: 18px 20px;
	margin: 24px 0;
}

.noyesh-callout--warning {
	background: rgba(245, 158, 11, 0.07);
	border-color: rgba(245, 158, 11, 0.22);
}

.noyesh-callout--danger {
	background: rgba(220, 38, 38, 0.06);
	border-color: rgba(220, 38, 38, 0.2);
}

/* ============ Server-rendered archive, article and 404 components ============ */
/* Match .noyesh-header-inner's box exactly (max-width:1240px + 24px inner
   padding on each side) so the article content's edges line up with where the
   header's logo/nav items actually start and end, not with the header's outer
   (padding-including) boundary — that mismatch was making the content look
   wider/less compact than the header above it. */
.noyesh-component-container { max-width:1240px; margin-inline:auto; padding-inline:24px; box-sizing:border-box; }
.noyesh-component-banner { padding-block:52px 66px; }
.noyesh-component-banner .noyesh-breadcrumb { display:flex; gap:9px; align-items:center; margin:0 0 22px; }
.noyesh-component-eyebrow { display:inline-flex; align-items:center; width:max-content; margin-bottom:12px; padding:6px 14px; border-radius:999px; background:rgba(255,255,255,.14); color:#fff; font-size:.78rem; font-weight:700; }
.noyesh-component-banner h1 { max-width:760px; margin:0 0 12px; color:#fff; font-size:clamp(1.7rem,3vw,2.55rem); line-height:1.42; }
.noyesh-component-banner p { max-width:720px; font-size:1rem; }
.noyesh-component-blog { padding:46px 0 90px; background:#f7f8fc; }
.noyesh-component-pills { display:flex; gap:9px; flex-wrap:wrap; margin:0 0 34px; }
.noyesh-component-pills a { display:inline-flex; align-items:center; gap:7px; padding:9px 15px; border:1px solid #e2e7f1; border-radius:999px; background:#fff; color:#647187; font-size:.83rem; font-weight:700; text-decoration:none; transition:.2s ease; }
.noyesh-component-pills a:hover,.noyesh-component-pills a.is-active { border-color:#315efb; background:#315efb; color:#fff; box-shadow:0 9px 20px rgba(49,94,251,.15); }
.noyesh-component-pills small { font:inherit; opacity:.72; }
.noyesh-component-article-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; }
.noyesh-component-article-card { min-width:0; overflow:hidden; border:1px solid #e7ebf3; border-radius:24px; background:#fff; box-shadow:0 10px 28px rgba(20,37,74,.055); transition:transform .25s ease,box-shadow .25s ease; }
.noyesh-component-article-card:hover { transform:translateY(-5px); box-shadow:0 18px 34px rgba(20,37,74,.12); }
.noyesh-component-article-card__media { position:relative; display:block; aspect-ratio:16/10; overflow:hidden; background:#0d1a3d; }
.noyesh-component-article-card__media::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg,rgba(7,16,42,.08),rgba(7,16,42,.62)); pointer-events:none; }
.noyesh-component-article-card__media img { width:100%; height:100%; object-fit:cover; transition:transform .35s ease; }
.noyesh-component-article-card:hover .noyesh-component-article-card__media img { transform:scale(1.04); }
.noyesh-component-article-card__media span,.noyesh-component-article-card__media small { position:absolute; z-index:1; border-radius:999px; color:#fff; font-weight:700; }
.noyesh-component-article-card__media span { inset-inline-start:15px; top:15px; padding:6px 11px; background:rgba(10,24,58,.72); font-size:.72rem; }
.noyesh-component-article-card__media small { inset-inline-end:15px; bottom:13px; font-size:.7rem; }
.noyesh-component-article-card__body { padding:18px 19px 16px; }
.noyesh-component-article-card h2 { margin:0 0 8px; font-size:1rem; line-height:1.75; }
.noyesh-component-article-card h2 a { color:#111b32; text-decoration:none; }
.noyesh-component-article-card p { min-height:44px; margin:0; color:#747f92; font-size:.82rem; line-height:1.8; }
.noyesh-component-article-card footer { display:flex; align-items:center; justify-content:space-between; margin-top:16px; color:#9aa4b5; font-size:.72rem; }
.noyesh-component-article-card footer a { display:grid; width:28px; height:28px; place-items:center; border-radius:50%; background:#edf1ff; color:#315efb; font-size:1.1rem; text-decoration:none; transition:.2s ease; }
.noyesh-component-article-card:hover footer a { background:#315efb; color:#fff; }
.noyesh-component-empty { grid-column:1/-1; padding:34px; border:1px dashed #ccd4e4; border-radius:18px; color:#6c778c; text-align:center; }
.noyesh-component-pagination { margin-top:38px; }
.noyesh-component-pagination ul { display:flex; justify-content:center; gap:7px; margin:0; padding:0; list-style:none; }
.noyesh-component-pagination a,.noyesh-component-pagination span { display:grid; min-width:36px; height:36px; place-items:center; padding:0 10px; border:1px solid #e1e6ef; border-radius:10px; background:#fff; color:#45536d; font-size:.8rem; text-decoration:none; }
.noyesh-component-pagination .current { border-color:#315efb; background:#315efb; color:#fff; }
.noyesh-component-pagination a:hover { border-color:#315efb; color:#315efb; background:#eef2ff; }
.noyesh-component-post-meta { display:flex; gap:14px; color:rgba(255,255,255,.72); font-size:.82rem; }
.noyesh-component-post-meta span+span::before { content:"•"; margin-inline-end:14px; }
.noyesh-component-post { padding:52px 0 84px; background:#fff; }
.noyesh-component-post__grid { display:grid; grid-template-columns:minmax(0,1fr) 285px; gap:52px; align-items:start; }
.noyesh-component-post__image { display:block; width:100%; max-height:500px; margin:0 0 36px; border-radius:26px; object-fit:cover; }
.noyesh-component-toc { position:sticky; top:105px; padding:20px; border:1px solid #e7ebf3; border-radius:18px; background:#f9faff; }
.noyesh-component-toc strong { display:block; margin-bottom:13px; color:#17213a; font-size:.9rem; }
.noyesh-component-toc ol { display:grid; gap:10px; margin:0; padding:0; list-style:none; }
.noyesh-component-toc li.level-3 { padding-inline-start:12px; }
.noyesh-component-toc a { color:#718099; font-size:.8rem; line-height:1.65; text-decoration:none; }
.noyesh-component-toc a:hover { color:#315efb; }
.noyesh-component-related { padding:66px 0 88px; background:#f7f8fc; }
.noyesh-component-section-head { margin-bottom:25px; }
.noyesh-component-section-head .noyesh-component-eyebrow { background:#e9eeff; color:#315efb; }
.noyesh-component-section-head h2 { margin:0; color:#17213a; font-size:clamp(1.25rem,2vw,1.75rem); }
.noyesh-component-error { min-height:70vh; display:grid; place-items:center; padding:80px 24px; background:radial-gradient(circle at 50% 10%,#1c3d89 0,transparent 38%),#071330; color:#fff; text-align:center; }
.noyesh-component-error section { max-width:650px; }
.noyesh-component-error span { display:block; margin-bottom:6px; color:#7595ff; font-size:clamp(5rem,18vw,11rem); font-weight:800; line-height:1; letter-spacing:-.08em; }
.noyesh-component-error h1 { margin:0 0 14px; font-size:clamp(1.5rem,3vw,2.25rem); }
.noyesh-component-error p { margin:0 auto 28px; max-width:540px; color:rgba(255,255,255,.7); line-height:2; }
.noyesh-component-error section>div { display:flex; justify-content:center; gap:12px; flex-wrap:wrap; }
.noyesh-component-btn { display:inline-flex; align-items:center; justify-content:center; min-height:46px; padding:0 21px; border:1px solid #315efb; border-radius:13px; background:#315efb; color:#fff; font-weight:700; text-decoration:none; transition:.2s ease; }
.noyesh-component-btn:hover { transform:translateY(-2px); box-shadow:0 12px 22px rgba(49,94,251,.3); }
.noyesh-component-btn--ghost { border-color:rgba(255,255,255,.34); background:transparent; }
@media (max-width:900px) { .noyesh-component-article-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.noyesh-component-post__grid{grid-template-columns:1fr}.noyesh-component-toc{position:static;order:-1}.noyesh-component-post__image{max-height:420px} }
@media (max-width:620px) { .noyesh-component-banner{padding-block:38px 46px}.noyesh-component-article-grid{grid-template-columns:1fr;gap:16px}.noyesh-component-pills{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}.noyesh-component-pills a{flex:0 0 auto}.noyesh-component-post{padding-block:32px 58px}.noyesh-component-post__image{margin-bottom:25px;border-radius:18px}.noyesh-component-error{min-height:62vh;padding:60px 20px} }

/* Blog reference parity: blog.html */
.noyesh-blog-reference-hero{position:relative;overflow:hidden;padding-block:44px 56px;background:linear-gradient(165deg,#060d21 0%,#0d1a3d 45%,#16255a 100%)}
.noyesh-blog-reference-hero .contact-banner-glow{position:absolute;inset:auto -4% -260px auto;width:620px;height:620px;border-radius:50%;background:radial-gradient(circle,rgba(49,94,251,.32),transparent 68%);pointer-events:none}
.noyesh-blog-reference-hero .breadcrumb{position:relative;display:flex;justify-content:center;align-items:center;gap:9px;margin:0 0 28px;color:rgba(255,255,255,.62);font-size:.8rem}.noyesh-blog-reference-hero .breadcrumb a{color:rgba(255,255,255,.75);text-decoration:none}.noyesh-blog-reference-hero .breadcrumb .noyesh-breadcrumb-current{color:#fff}
.noyesh-blog-reference-hero .contact-banner-inner{position:relative;max-width:760px;margin-inline:auto;text-align:center}.noyesh-blog-reference-hero .eyebrow-tag{display:inline-block;padding:6px 15px;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font-size:.8rem;font-weight:700}.noyesh-blog-reference-hero h1{margin:15px 0 14px;color:#fff;font-size:clamp(1.7rem,3.1vw,2.45rem);line-height:1.45}.noyesh-blog-reference-hero .text-gradient-on-dark{background:linear-gradient(100deg,#91abff,#fff);-webkit-background-clip:text;background-clip:text;color:transparent}.noyesh-blog-reference-hero p{margin:0 auto;max-width:700px;color:rgba(255,255,255,.72);font-size:.98rem;line-height:1.9}
.noyesh-blog-reference{padding:0 0 100px;background:#f7f8fc}.noyesh-blog-reference .category-panel{position:relative;z-index:2;margin-top:-34px;padding:18px 22px;border:1px solid #e6eaf2;border-radius:24px;background:#fff;box-shadow:0 20px 48px rgba(17,34,70,.11)}.noyesh-blog-reference .category-slider-wrap{display:flex;align-items:center;gap:16px}.noyesh-blog-reference .category-slider-label{flex:none;color:#68758b;font-size:.85rem;font-weight:700}.noyesh-blog-reference .category-slider{display:flex;align-items:center;flex:1;gap:10px;min-width:0}.noyesh-blog-reference .cat-nav-btn{display:grid;flex:none;width:32px;height:32px;place-items:center;border:1px solid #dfe5ef;border-radius:50%;background:#fff;color:#647187;font-size:1.25rem;line-height:1;cursor:pointer;transition:border-color .2s ease,color .2s ease,background .2s ease}
.noyesh-blog-reference .cat-nav-btn:hover{border-color:#315efb;color:#315efb;background:#eef2ff}
.noyesh-blog-reference .cat-nav-btn svg{width:14px;height:14px}.noyesh-blog-reference .category-track{display:flex;flex:1;gap:8px;min-width:0;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none}.noyesh-blog-reference .category-track::-webkit-scrollbar{display:none}.noyesh-blog-reference .cat-pill{display:inline-flex;flex:none;align-items:center;gap:8px;padding:9px 18px;border:1px solid #dfe5ef;border-radius:999px;background:#f8f9fc;color:#68758b;font-size:.85rem;font-weight:600;white-space:nowrap;text-decoration:none;transition:.2s ease}.noyesh-blog-reference .cat-pill:hover{border-color:#315efb;color:#315efb}.noyesh-blog-reference .cat-pill.is-active{border-color:#315efb;background:#315efb;color:#fff}.noyesh-blog-reference .cat-count{padding:1px 8px;border-radius:999px;background:#fff;color:#9ba6b8;font-size:.72rem}.noyesh-blog-reference .cat-pill.is-active .cat-count{background:rgba(255,255,255,.22);color:#fff}
.noyesh-blog-reference .article-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:44px}.noyesh-blog-reference .article-card{display:flex;flex-direction:column;overflow:hidden;border:1px solid #e6eaf2;border-radius:24px;background:#fff;box-shadow:0 7px 20px rgba(17,34,70,.055);text-decoration:none;transition:box-shadow .25s ease,transform .25s ease}.noyesh-blog-reference .article-card:hover{transform:translateY(-4px);box-shadow:0 20px 42px rgba(17,34,70,.15)}.noyesh-blog-reference .article-card-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:#f2f4f8}.noyesh-blog-reference .article-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.noyesh-blog-reference .article-card:hover .article-card-media img{transform:scale(1.06)}.noyesh-blog-reference .article-card-badge{position:absolute;top:14px;inset-inline-start:14px;padding:5px 13px;border-radius:999px;background:#fff;color:#315efb;font-size:.72rem;font-weight:700;box-shadow:0 5px 14px rgba(17,34,70,.1)}.noyesh-blog-reference .article-card-time{position:absolute;bottom:14px;inset-inline-start:14px;display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;background:rgba(7,19,48,.65);backdrop-filter:blur(4px);color:#fff;font-size:.7rem;font-weight:600}.noyesh-blog-reference .article-card-time svg{width:12px;height:12px}.noyesh-blog-reference .article-card-body{display:flex;flex:1;flex-direction:column;padding:20px 22px 22px}.noyesh-blog-reference .article-card-body h3{margin:0 0 10px;color:#111b32;font-size:1.02rem;line-height:1.55}.noyesh-blog-reference .article-card-body p{flex:1;margin:0 0 18px;color:#68758b;font-size:.85rem;line-height:1.7}.noyesh-blog-reference .article-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:14px;border-top:1px solid #e8ecf3}.noyesh-blog-reference .article-card-date,.noyesh-blog-reference .article-card-more{display:inline-flex;align-items:center;gap:5px}.noyesh-blog-reference .article-card-date{color:#9aa5b7;font-size:.76rem}.noyesh-blog-reference .article-card-date svg{width:13px;height:13px}.noyesh-blog-reference .article-card-more{color:#315efb;font-size:.78rem;font-weight:700}.noyesh-blog-reference .article-card-more svg{width:14px;height:14px;transition:transform .2s ease}.noyesh-blog-reference .article-card:hover .article-card-more svg{transform:translateX(-3px)}
@media(max-width:980px){.noyesh-blog-reference .article-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.noyesh-blog-reference .category-panel{margin-top:-22px;padding:16px}.noyesh-blog-reference .category-slider-wrap{flex-wrap:wrap}.noyesh-blog-reference .category-slider-label{width:100%}.noyesh-blog-reference .article-grid{grid-template-columns:1fr;gap:16px}.noyesh-blog-reference .cat-nav-btn{display:none}}

/* ============ Services archive (/products/) ============ */
.noyesh-service-archive-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:44px}
.noyesh-service-archive-card{position:relative;display:flex;flex-direction:column;gap:14px;padding:28px;border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--lg);background:#fff;box-shadow:0 7px 20px rgba(17,34,70,.055);text-decoration:none;transition:box-shadow .25s ease,transform .25s ease}
.noyesh-service-archive-card:hover{transform:translateY(-4px);box-shadow:0 20px 42px rgba(17,34,70,.15)}
.noyesh-service-archive-card[data-tone='a']{--tone:#315efb;--tone-soft:rgba(49,94,251,.09)}
.noyesh-service-archive-card[data-tone='b']{--tone:#16a34a;--tone-soft:rgba(22,163,74,.09)}
.noyesh-service-archive-card[data-tone='c']{--tone:#d97706;--tone-soft:rgba(217,119,6,.1)}
.noyesh-service-archive-card[data-tone='d']{--tone:#6366f1;--tone-soft:rgba(99,102,241,.09)}
.noyesh-service-archive-card__icon{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:14px;background:var(--tone-soft);color:var(--tone)}
.noyesh-service-archive-card__icon svg{width:24px;height:24px}
.noyesh-service-archive-card__title{color:#111b32;font-size:1.05rem}
.noyesh-service-archive-card__desc{flex:1;margin:0;color:#68758b;font-size:.88rem;line-height:1.8}
.noyesh-service-archive-card__more{display:inline-flex;align-items:center;gap:6px;color:var(--tone);font-size:.85rem;font-weight:700}
.noyesh-service-archive-card__more svg{width:14px;height:14px;transition:transform .2s ease}
.noyesh-service-archive-card:hover .noyesh-service-archive-card__more svg{transform:translateX(-3px)}
@media(max-width:860px){.noyesh-service-archive-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.noyesh-service-archive-grid{grid-template-columns:1fr;gap:16px}}

/* Blog reference parity: blog-post.html */
.noyesh-post-reference-hero{position:relative;overflow:hidden;padding-block:44px 56px;background:linear-gradient(165deg,#060d21 0%,#0d1a3d 45%,#16255a 100%)}.noyesh-post-reference-hero .contact-banner-glow{position:absolute;inset:-300px auto auto -170px;width:590px;height:590px;border-radius:50%;background:radial-gradient(circle,rgba(49,94,251,.3),transparent 68%)}.noyesh-post-reference-hero .breadcrumb{position:relative;display:flex;align-items:center;gap:9px;margin:0 0 26px;color:rgba(255,255,255,.62);font-size:.8rem}.noyesh-post-reference-hero .breadcrumb a{color:rgba(255,255,255,.75);text-decoration:none}.noyesh-post-reference-hero .breadcrumb .noyesh-breadcrumb-current{color:#fff}.noyesh-post-reference-hero .post-hero-row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:40px;align-items:center}.noyesh-post-reference-hero .post-hero-head{max-width:720px}.noyesh-post-reference-hero .post-category-badge{display:inline-block;margin-bottom:18px;padding:6px 16px;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font-size:.8rem;font-weight:700;text-decoration:none;transition:background .2s ease}
.noyesh-post-reference-hero a.post-category-badge:hover{background:rgba(255,255,255,.24)}.noyesh-post-reference-hero h1{margin:0 0 16px;color:#fff;font-size:clamp(1.5rem,3.2vw,2.15rem);line-height:1.45}.noyesh-post-reference-hero .post-lead{margin:0;max-width:680px;color:rgba(255,255,255,.78);font-size:1.02rem;line-height:1.8}.noyesh-post-reference-hero .post-meta-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px;margin-top:28px;padding-top:24px;border-top:1px solid rgba(255,255,255,.14)}.noyesh-post-reference-hero .post-author{display:flex;align-items:center;gap:12px}.noyesh-post-reference-hero .post-author-avatar{display:grid;width:40px;height:40px;place-items:center;border-radius:50%;background:linear-gradient(135deg,#5b8def,#315efb);color:#fff;font-size:.8rem;font-weight:700}.noyesh-post-reference-hero .post-author strong,.noyesh-post-reference-hero .post-author small{display:block}.noyesh-post-reference-hero .post-author strong{color:#fff;font-size:.88rem}.noyesh-post-reference-hero .post-author small{margin-top:2px;color:rgba(255,255,255,.6);font-size:.74rem}.noyesh-post-reference-hero .post-meta-stats{display:flex;align-items:center;gap:18px;flex-wrap:wrap}.noyesh-post-reference-hero .meta-item{display:flex;align-items:center;gap:6px;color:rgba(255,255,255,.7);font-size:.82rem}.noyesh-post-reference-hero .meta-item svg{width:15px;height:15px}.noyesh-post-reference-hero .post-hero-media{overflow:hidden;border:1px solid rgba(255,255,255,.14);border-radius:var(--wp--custom--radius--lg);box-shadow:var(--wp--custom--shadow--lg)}.noyesh-post-reference-hero .post-hero-media img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover}
.post-body-section{padding:64px 0 20px;background:#f6f8fc}.post-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;grid-template-rows:auto auto;gap:56px;align-items:start}.post-layout>.post-content{grid-column:1;grid-row:1/3}.post-layout>.post-side-sticky{grid-column:2;grid-row:1/3}.post-content{color:#68758b;font-size:1rem;line-height:1.9}.post-content h2{margin:44px 0 18px;color:#111b32;font-size:1.35rem;scroll-margin-top:100px}.post-content h2:first-child{margin-top:0}.post-content h3{margin:28px 0 12px;color:#111b32;font-size:1.1rem;scroll-margin-top:100px}.post-content h4{margin:22px 0 10px;color:#111b32;font-size:1rem;font-weight:700;scroll-margin-top:100px}.post-content h5{margin:18px 0 8px;color:#111b32;font-size:.92rem;font-weight:700;scroll-margin-top:100px}.post-content h6{margin:16px 0 8px;color:#68758b;font-size:.84rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em;scroll-margin-top:100px}.post-content p{margin:0 0 18px}.post-content ul,.post-content ol{display:flex;flex-direction:column;gap:10px;margin:0 0 20px;padding-inline-start:22px}.post-content ul{list-style:none}.post-content ul li{position:relative}.post-content ul li::before{position:absolute;top:.7em;inset-inline-start:-20px;width:7px;height:7px;border-radius:50%;background:#315efb;content:""}.post-content strong{color:#111b32}.post-content figure img{display:block;width:100%;border-radius:var(--wp--custom--radius--lg)}.post-content table{width:100%;border-collapse:collapse;margin:24px 0 32px;overflow:hidden;border:1px solid #e5e7eb;border-radius:var(--wp--custom--radius--md);font-size:.87rem}.post-content th,.post-content td{padding:12px 16px;border:1px solid #e5e7eb;text-align:start}.post-content th{background:#315efb;color:#fff}.post-content details{margin:0 0 12px;padding:0 20px;border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--md);background:#fff}.post-content summary{display:flex;align-items:center;justify-content:space-between;padding:16px 0;color:#111b32;cursor:pointer;font-size:.92rem;font-weight:600}.post-content details p{padding-bottom:16px}.post-side-sticky{position:sticky;top:100px;display:flex;flex-direction:column;gap:20px}.post-sidebar{display:flex;flex-direction:column;gap:20px}.post-toc,.post-share-card,.post-cta-card{padding:22px;border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--lg);background:#fff;box-shadow:var(--wp--custom--shadow--sm)}.post-toc h4,.post-share-card h4,.post-cta-card h4{display:flex;align-items:center;gap:10px;margin:0 0 16px;color:#111b32;font-size:.92rem;font-weight:700}.post-toc h4::before{content:"";width:3px;height:16px;border-radius:2px;background:#315efb}.post-toc nav{display:flex;flex-direction:column;gap:2px;max-height:260px;overflow-y:auto}.post-toc a{padding:9px 12px;border-inline-start:2px solid transparent;border-radius:var(--wp--custom--radius--sm);color:#68758b;font-size:.84rem;text-decoration:none;transition:background .2s ease,color .2s ease,border-color .2s ease}.post-toc a.is-sub{padding-inline-start:26px;font-size:.79rem}.post-toc a:hover{border-inline-start-color:#315efb;background:rgba(49,94,251,.06);color:#315efb}.post-toc a.is-active{border-inline-start-color:#315efb;background:rgba(49,94,251,.06);color:#315efb;font-weight:700}.post-cta-card{text-align:center;background:linear-gradient(165deg,#0d1a3d,#16255a);border-color:transparent}.post-cta-card h4{color:#fff;justify-content:center}.post-cta-card h4::before{display:none}.post-cta-card p{margin:0 0 16px;color:rgba(255,255,255,.72);font-size:.85rem;line-height:1.7}.post-share-actions{display:flex;flex-direction:column;gap:10px}.share-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border:1px solid #e5e7eb;border-radius:var(--wp--custom--radius--sm);background:#fafbfd;color:#111b32;font:inherit;font-size:.85rem;font-weight:600;text-decoration:none;transition:border-color .2s ease,color .2s ease,opacity .2s ease}.share-btn:hover{border-color:#315efb;color:#315efb}.share-btn svg{flex:none;width:16px;height:16px}.share-btn--brand{border-color:#0a66c2;background:#0a66c2;color:#fff}.share-btn--brand:hover{opacity:.9;color:#fff;border-color:#0a66c2}.post-related{padding:20px 0 100px;background:#f7f8fc}.post-related .noyesh-component-section-head{margin-bottom:28px}.post-related .noyesh-component-section-head .noyesh-component-eyebrow{background:#e9eeff;color:#315efb}.post-related .noyesh-component-section-head h2{margin:0;color:#111b32;font-size:1.7rem}.post-related .noyesh-component-section-head p{color:#68758b}.related-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.related-grid .article-card{display:flex;flex-direction:column;overflow:hidden;border:1px solid #e6eaf2;border-radius:24px;background:#fff;box-shadow:0 7px 20px rgba(17,34,70,.055);text-decoration:none;transition:box-shadow .25s ease,transform .25s ease}.related-grid .article-card:hover{transform:translateY(-4px);box-shadow:0 20px 42px rgba(17,34,70,.15)}.related-grid .article-card-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:#f2f4f8}.related-grid .article-card-media img{width:100%;height:100%;object-fit:cover;transition:transform .4s ease}.related-grid .article-card:hover .article-card-media img{transform:scale(1.06)}.related-grid .article-card-badge{position:absolute;top:14px;inset-inline-start:14px;padding:5px 13px;border-radius:999px;background:#fff;color:#315efb;font-size:.72rem;font-weight:700;box-shadow:0 5px 14px rgba(17,34,70,.1)}.related-grid .article-card-time{position:absolute;bottom:14px;inset-inline-start:14px;display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;background:rgba(7,19,48,.65);backdrop-filter:blur(4px);color:#fff;font-size:.7rem;font-weight:600}.related-grid .article-card-time svg{width:12px;height:12px}.related-grid .article-card-body{display:flex;flex:1;flex-direction:column;padding:20px 22px 22px}.related-grid .article-card-body h3{margin:0 0 10px;color:#111b32;font-size:1.02rem;line-height:1.55}.related-grid .article-card-body p{flex:1;margin:0 0 18px;color:#68758b;font-size:.85rem;line-height:1.7}.related-grid .article-card-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:14px;border-top:1px solid #e8ecf3}.related-grid .article-card-date,.related-grid .article-card-more{display:inline-flex;align-items:center;gap:5px}.related-grid .article-card-date{color:#9aa5b7;font-size:.76rem}.related-grid .article-card-date svg{width:13px;height:13px}.related-grid .article-card-more{color:#315efb;font-size:.78rem;font-weight:700}.related-grid .article-card-more svg{width:14px;height:14px;transition:transform .2s ease}.related-grid .article-card:hover .article-card-more svg{transform:translateX(-3px)}

/* ---- Rich post-body components (callouts, quote, stats, gallery, video, FAQ, tags, author card) ---- */
.post-content strong{color:#111b32;font-weight:700}
.post-content a:not(.wp-element-button):not(.noyesh-btn-primary){color:#315efb;text-decoration:underline;text-underline-offset:3px}
.post-callout{display:flex;gap:14px;align-items:flex-start;background:#fafbfd;border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--md);padding:18px 20px;margin:24px 0}
.post-callout-icon{flex:none;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(49,94,251,.06);color:#315efb}
.post-callout p{margin:0;color:#111b32;font-size:.94rem}
.post-callout--warning{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.22)}
.post-callout--warning .post-callout-icon{background:rgba(245,158,11,.16);color:#f59e0b}
.post-callout--danger{background:rgba(220,38,38,.06);border-color:rgba(220,38,38,.2)}
.post-callout--danger .post-callout-icon{background:rgba(220,38,38,.14);color:#dc2626}
.post-callout--success{background:rgba(22,163,74,.06);border-color:rgba(22,163,74,.2)}
.post-callout--success .post-callout-icon{background:rgba(22,163,74,.14);color:#16a34a}
.post-callout--purple{background:rgba(139,92,246,.06);border-color:rgba(139,92,246,.2)}
.post-callout--purple .post-callout-icon{background:rgba(139,92,246,.14);color:#8b5cf6}
.post-callout-icon img{width:18px;height:18px;object-fit:contain}
.post-steps{display:flex;flex-direction:column;gap:16px;margin:24px 0}
.post-step-item{display:flex;gap:14px;align-items:flex-start}
.post-step-number{flex:none;width:28px;height:28px;border-radius:50%;background:rgba(22,163,74,.12);color:#16a34a;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}
.post-step-item p{margin:0;padding-top:3px;color:#68758b;font-size:.94rem;line-height:1.8}
.post-quote{position:relative;margin:32px 0;padding:22px 26px;border-inline-start:3px solid #315efb;background:#fafbfd;border-radius:0 var(--wp--custom--radius--md) var(--wp--custom--radius--md) 0;font-size:1.05rem;font-weight:600;color:#111b32;line-height:1.8}
.post-quote cite{display:block;margin-top:12px;font-size:.82rem;font-weight:500;color:#68758b;font-style:normal}
.post-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:28px 0}
.post-stat-box{background:#fafbfd;border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--md);padding:18px;text-align:center}
.post-stat-box strong{display:block;font-size:1.5rem;font-weight:800;color:#315efb;margin-bottom:4px}
.post-stat-box small{color:#68758b;font-size:.8rem}
.post-table-wrap{overflow-x:auto;margin:24px 0 32px;border:1px solid #e5e7eb;border-radius:var(--wp--custom--radius--md);box-shadow:var(--wp--custom--shadow--sm)}
.post-table{width:100%;border-collapse:collapse;font-size:.87rem}
.post-table th,.post-table td{padding:12px 16px;text-align:start;border:1px solid #e5e7eb;white-space:nowrap}
.post-table th{background:#315efb;color:#fff;font-weight:700;font-size:.8rem;border-color:#214eeb}
.post-table th:first-child{border-start-start-radius:calc(var(--wp--custom--radius--md) - 1px)}
.post-table th:last-child{border-start-end-radius:calc(var(--wp--custom--radius--md) - 1px)}
.post-table td{color:#111b32;font-weight:500}
.post-table tbody tr:nth-child(even){background:#f8f9fc}
.post-table tbody tr:hover{background:#eef2ff}
.post-gallery-slider{position:relative;margin:24px 0 32px;padding-inline:48px}
.post-gallery{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:2px}
.post-gallery::-webkit-scrollbar{display:none}
.gallery-item{position:relative;flex:0 0 220px;height:220px;scroll-snap-align:start;border:none;padding:0;border-radius:var(--wp--custom--radius--md);overflow:hidden;cursor:zoom-in}
.gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s cubic-bezier(.16,1,.3,1)}
.gallery-item:hover img{transform:scale(1.08)}
.blog-nav-btn{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:40px;height:40px;border-radius:50%;border:1px solid #e5e7eb;background:#fff;color:#111b32;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 4px 12px rgba(15,23,42,.06);transition:background .2s ease,border-color .2s ease,color .2s ease}
.blog-nav-btn:hover{background:rgba(49,94,251,.06);border-color:#315efb;color:#315efb}
.blog-nav-btn svg{width:18px;height:18px}
.blog-nav-btn--prev{right:8px}
.blog-nav-btn--next{left:8px}
@media(max-width:640px){.post-gallery-slider{padding-inline:0}.gallery-item{flex-basis:170px;height:170px}.blog-nav-btn--prev{right:4px}.blog-nav-btn--next{left:4px}}
.post-video-player{position:relative;margin:24px 0 32px;border-radius:var(--wp--custom--radius--lg);overflow:hidden;aspect-ratio:16/9;box-shadow:0 4px 12px rgba(15,23,42,.06);cursor:pointer;border:0;padding:0;width:100%;display:block}
.post-video-player img{width:100%;height:100%;object-fit:cover;display:block}
.post-video-player::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,19,48,.1),rgba(7,19,48,.5))}
.post-video-play{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;width:68px;height:68px;border-radius:50%;border:none;background:rgba(255,255,255,.95);color:#315efb;display:flex;align-items:center;justify-content:center;box-shadow:0 12px 32px rgba(15,23,42,.08);transition:transform .2s ease;-webkit-tap-highlight-color:transparent;outline:none}
.post-video-play:focus-visible{outline:2px solid #315efb;outline-offset:3px}
.post-video-player{-webkit-tap-highlight-color:transparent}
.post-video-player:focus,.post-video-player:focus-visible{outline:none}
.post-video-play:hover{transform:translate(-50%,-50%) scale(1.08)}
.post-video-play svg{width:26px;height:26px;margin-inline-start:3px}
.post-single-image{margin:24px 0 32px}
.post-single-image img{width:100%;border-radius:var(--wp--custom--radius--lg);display:block;box-shadow:0 4px 12px rgba(15,23,42,.06)}
.post-single-image figcaption{margin-top:10px;font-size:.82rem;color:#9ca3af;text-align:center}
.post-faq{margin:24px 0 32px}
.faq-item{border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--md);background:#fff;padding:0 20px;margin-bottom:12px}
.faq-item summary{cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0;font-weight:600;font-size:.92rem;color:#111b32}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";flex:none;width:26px;height:26px;border-radius:50%;background:rgba(49,94,251,.06);color:#315efb;display:flex;align-items:center;justify-content:center;font-size:1.1rem;transition:transform .25s ease}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-answer,.faq-item>p{padding:0 0 18px;margin:0;color:#68758b;font-size:.88rem;line-height:1.8}
.post-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:36px;padding-top:24px;border-top:1px solid #eef2f7}
@media(max-width:640px){.post-tags{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.post-tags::-webkit-scrollbar{display:none}.post-tags .post-tag{flex:none}}
.post-tag{padding:6px 14px;border-radius:999px;background:#fafbfd;border:1px solid #eef2f7;font-size:.8rem;color:#68758b;font-weight:600;text-decoration:none;transition:border-color .2s ease,color .2s ease}
.post-tag,.post-tag:visited,.post-tag:hover,.post-tag:focus{box-shadow:none!important;text-decoration:none!important}.post-tag:hover{border-color:#315efb;color:#315efb}
.post-author-card{display:flex;align-items:flex-start;gap:18px;margin-top:24px;padding:24px;background:#fafbfd;border:1px solid #eef2f7;border-radius:var(--wp--custom--radius--lg)}
.post-author-card .post-author-avatar{width:56px;height:56px;font-size:1rem;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#5b8def,#315efb);color:#fff;font-weight:700}
.post-author-card .post-author-avatar__image{width:100%;height:100%;display:block;border-radius:inherit;object-fit:cover}
.noyesh-post-reference-hero .post-author-avatar{overflow:hidden;flex:none}
.noyesh-post-reference-hero .post-author-avatar__image{width:100%;height:100%;display:block;border-radius:inherit;object-fit:cover}
.post-cta-card .noyesh-component-btn{display:flex;width:100%;box-sizing:border-box}
.post-share-card #copyLinkBtn svg{display:none}
.post-share-card #copyLinkBtn::before{width:18px;height:18px;flex:none;content:"";background:center/contain no-repeat url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23111b32' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.2 13.8a4 4 0 0 0 5.66 0l2.42-2.42a4 4 0 0 0-5.66-5.66l-1.38 1.37'/%3E%3Cpath d='M13.8 10.2a4 4 0 0 0-5.66 0l-2.42 2.42a4 4 0 0 0 5.66 5.66l1.38-1.37'/%3E%3C/svg%3E")}
.post-share-card #copyLinkBtn:hover::before{filter:invert(36%) sepia(97%) saturate(1812%) hue-rotate(214deg) brightness(99%) contrast(98%)}

@media (min-width:641px){.post-gallery-slider .blog-nav-btn--prev{right:-32px}.post-gallery-slider .blog-nav-btn--next{left:-32px}}

/* FAQ accordion: a drawn icon avoids incomplete font glyphs, and the answer
 * stays in the layout so it can animate in both directions. */
.faq-item{display:grid;grid-template-rows:auto 0fr;overflow:hidden;transition:border-color .25s ease,box-shadow .25s ease}
.faq-item[open]{grid-template-rows:auto 1fr;border-color:rgba(49,94,251,.38);box-shadow:0 8px 22px rgba(49,94,251,.06)}
.faq-item summary::after{content:"";background:linear-gradient(#315efb 0 0) center/10px 2px no-repeat,linear-gradient(#315efb 0 0) center/2px 10px no-repeat,#f0f3ff;transition:transform .28s cubic-bezier(.16,1,.3,1),background-color .28s ease}
.faq-item[open] summary::after{content:"";transform:rotate(45deg)}
.faq-item .faq-answer{min-height:0;overflow:hidden;opacity:0;transition:opacity .2s ease .02s}
.faq-item[open] .faq-answer{opacity:1}
.faq-item .faq-answer p{margin:0;padding:0 0 21px;color:#6d7890;line-height:2}

/* Compact scrollbar for the article table of contents. */
.post-toc nav{scrollbar-width:thin;scrollbar-color:#e2e5eb transparent}
.post-toc nav::-webkit-scrollbar{width:8px}
.post-toc nav::-webkit-scrollbar-track{background:transparent}
.post-toc nav::-webkit-scrollbar-thumb{border:2px solid transparent;border-radius:999px;background:#e2e5eb;background-clip:padding-box}
.post-toc nav::-webkit-scrollbar-thumb:hover{background:#cfd5df;background-clip:padding-box}

/* TablePress exposes an administrator-only edit shortcut below frontend
 * tables. Table management stays available in wp-admin; it must not appear in
 * article content, even for a logged-in administrator. */
.post-content .tablepress-edit-link{display:none!important}
.post-author-card h4{margin:0 0 4px;font-size:1rem;color:#111b32}
.post-author-card small{display:block;color:#315efb;font-size:.8rem;font-weight:600;margin-bottom:8px}
.post-author-card p{margin:0;font-size:.85rem;color:#68758b;line-height:1.7}
.lightbox{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:40px;background:rgba(4,6,12,.92);opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s}
.lightbox.is-open{opacity:1;visibility:visible}
.lightbox img{max-width:min(900px,90vw);max-height:85vh;border-radius:20px;box-shadow:0 20px 50px rgba(0,0,0,.3)}
.lightbox-close{position:absolute;top:24px;inset-inline-end:24px;width:40px;height:40px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;font-size:1.3rem;line-height:1;cursor:pointer}
.lightbox-close:hover{background:rgba(255,255,255,.2)}
@media(max-width:960px){.post-layout{grid-template-columns:minmax(0,1fr);grid-template-rows:none}.post-layout>.post-content{grid-column:1;grid-row:auto;order:1}.post-layout>.post-side-sticky{display:contents}.post-layout .post-toc{grid-column:1;grid-row:auto;order:0;position:static}.post-layout .post-sidebar{grid-column:1;grid-row:auto;order:2;position:static;display:flex;flex-direction:column}.noyesh-post-reference-hero .post-hero-row{grid-template-columns:1fr}.noyesh-post-reference-hero .post-hero-media{max-width:280px;margin-inline:auto}}@media(max-width:640px){.noyesh-post-reference-hero{padding-block:30px 40px}.post-body-section{padding-top:38px}.post-sidebar{display:flex}.post-related{padding-bottom:68px}.related-grid{display:flex;gap:16px;overflow-x:auto;padding-bottom:8px}.related-grid .article-card{flex:0 0 calc(100% - 44px)}}

@media (max-width: 900px) {
	.noyesh-post-layout {
		grid-template-columns: 1fr;
	}
}

/* ============ Contact page (kept in parity with contact.html) ============ */
body.page-id-15 .noyesh-page-banner {
	padding-block: 44px 72px;
	background: linear-gradient(165deg, #060d21 0%, #0d1a3d 45%, #16255a 100%);
}

body.page-id-15 .noyesh-page-banner__glow {
	inset: 0 !important;
	width: auto !important;
	max-width: none !important;
	height: auto !important;
	margin: 0 !important;
	border-radius: 0;
	background:
		radial-gradient(45% 55% at 12% 15%, rgba(91, 141, 239, 0.28), transparent 68%),
		radial-gradient(40% 50% at 90% 10%, rgba(99, 102, 241, 0.22), transparent 68%),
		radial-gradient(55% 60% at 50% 100%, rgba(49, 94, 251, 0.16), transparent 70%);
}

body.page-id-15 .noyesh-page-banner > .noyesh-breadcrumb {
	justify-content: center;
	margin: 0 auto 40px;
	text-align: center;
}

body.page-id-15 .noyesh-page-banner > h1,
body.page-id-15 .noyesh-page-banner > p:last-child {
	position: relative;
	margin-inline: auto;
	text-align: center;
}

body.page-id-15 .noyesh-contact-banner__inner {
	position: relative;
	max-width: 620px;
	margin: 0 auto 40px;
	text-align: center;
}

body.page-id-15 .noyesh-contact-banner__eyebrow {
	display: inline-block;
	padding: 7px 16px;
	border-radius: var(--wp--custom--radius--full);
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	font-size: 0.82rem;
	font-weight: 600;
}

body.page-id-15 .noyesh-contact-banner__inner h1 {
	margin: 14px 0;
	padding: 0;
	color: #fff;
	font-size: clamp(1.5rem, 3vw, 2.2rem);
	font-weight: 700;
	line-height: 1.4;
}

body.page-id-15 .noyesh-contact-banner__inner h1::before {
	content: none;
}

body.page-id-15 .noyesh-contact-banner__inner p {
	margin: 0;
	max-width: none;
	color: rgba(255, 255, 255, 0.72);
	font-size: 1rem;
	line-height: 1.8;
}

body.page-id-15 .noyesh-contact-grid {
	align-items: stretch;
}

body.page-id-15 .noyesh-contact-grid > .noyesh-form-slot,
body.page-id-15 .noyesh-contact-grid > .noyesh-contact-info-card {
	position: relative;
	z-index: 1;
	align-self: stretch;
	margin-top: -96px;
	margin-block-start: -96px !important;
}

body.page-id-15 .noyesh-page-banner > h1 {
	max-width: 620px;
	margin-top: 0;
	margin-bottom: 14px;
	padding-top: 45px;
	font-size: clamp(1.5rem, 3vw, 2.2rem);
	font-weight: 700;
	line-height: 1.4;
}

body.page-id-15 .noyesh-page-banner > h1::before {
	position: absolute;
	inset-inline: 50% auto;
	top: 0;
	padding: 7px 16px;
	border-radius: var(--wp--custom--radius--full);
	background: rgba(255, 255, 255, 0.14);
	color: #fff;
	content: "تماس با ما";
	font-size: 0.82rem;
	font-weight: 600;
	line-height: 1.2;
	transform: translateX(50%);
	white-space: nowrap;
}

body.page-id-15 .noyesh-page-banner > p:last-child {
	max-width: 620px;
	color: rgba(255, 255, 255, 0.72);
	font-size: 1rem;
	line-height: 1.8;
}

.noyesh-contact-grid {
	display: grid !important;
	grid-template-columns: minmax(0, 1.15fr) minmax(340px, 0.85fr);
	gap: 32px;
	align-items: start;
	padding-block: 0 100px;
	max-width: var(--wp--style--global--content-size, 1240px);
	margin: 0 auto !important;
	margin-block-start: 0 !important;
	padding-inline: 24px;
}

.noyesh-contact-grid > .noyesh-form-slot,
.noyesh-contact-grid > .noyesh-contact-info-card {
	width: 100% !important;
	max-width: none !important;
	box-sizing: border-box;
}

.noyesh-form-slot {
	position: relative;
	z-index: 1;
	margin-top: -64px;
	margin-block-start: -64px !important;
	background: var(--wp--preset--color--surface-primary);
	border: 1px solid var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--lg);
	padding: 44px;
	box-shadow: var(--wp--custom--shadow--lg);
}

/* Only the card's own title/description are centered — text-align isn't reset
   back to right/start anywhere inside the actual Gravity Forms markup below,
   so setting this on .noyesh-form-slot itself used to inherit all the way down
   into every field label and input, centering the whole form's text instead. */
.noyesh-form-slot > h2,
.noyesh-form-slot > h3 {
	margin: 0 0 8px;
	font-size: 1.3rem;
	font-weight: 700;
	line-height: 1.5;
	text-align: center;
}

.noyesh-form-slot > p {
	margin: 0 0 28px;
	padding-bottom: 24px;
	border-bottom: 1px solid var(--wp--preset--color--border-subtle);
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.9rem;
	line-height: 1.8;
	text-align: center;
}

body.page-id-15 .noyesh-form-slot > .noyesh-contact-toast {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0 0 18px;
	padding: 10px 13px;
	border: 1px solid rgba( 22, 163, 74, 0.22 );
	border-radius: var(--wp--custom--radius--sm);
	background: rgba( 22, 163, 74, 0.09 );
	color: #15803d;
	font-size: 0.8rem;
	font-weight: 600;
	line-height: 1.65;
	text-align: right;
}

/* The tick is the `check` icon from assets/icons/, layered over the green disc
   as a background image rather than a "check" character. A glyph sits on its
   text baseline and never optically centres in a round chip, and its weight
   changes with whatever font happens to load. One box is enough here because
   the colours are fixed (white on green), so the tick can be baked into the
   image instead of inheriting a tone. */
body.page-id-15 .noyesh-form-slot > .noyesh-contact-toast::before {
	content: '';
	flex: none;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: #16a34a url('data:image/svg+xml,<svg%20viewBox="0%200%2024%2024"%20fill="none"%20xmlns="http://www.w3.org/2000/svg"><path%20d="M8.5%2012.5L10.5%2014.5L15.5%209.5"%20stroke="%23fff"%20stroke-width="1.5"%20stroke-linecap="round"%20stroke-linejoin="round"/></svg>') center / 13px 13px no-repeat;
}

.noyesh-form-slot__placeholder {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 8px;
	text-align: center;
	min-height: 320px;
	padding: 24px;
	border: 1px dashed var(--wp--preset--color--border-default);
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--bg-secondary);
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.88rem;
}

.noyesh-contact-info-card {
	margin-top: -64px;
	margin-block-start: -64px !important;
	background: var(--wp--preset--color--surface-primary);
	border: 1px solid var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--lg);
	padding: 32px;
	box-shadow: var(--wp--custom--shadow--md);
}

.noyesh-contact-info-card > h3 {
	margin: 0 0 20px;
	font-size: 1.05rem;
	font-weight: 700;
	line-height: 1.5;
}

.noyesh-contact-details {
	display: flex;
	flex-direction: column;
	gap: 16px;
	margin: 18px 0 0;
	padding: 0;
	list-style: none;
}

.noyesh-contact-details li {
	display: flex;
	align-items: center;
	gap: 12px;
}

.noyesh-contact-icon {
	flex: none;
	width: 42px;
	height: 42px;
	border-radius: var(--wp--custom--radius--md);
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(49, 94, 251, 0.08);
	color: var(--wp--preset--color--brand-primary);
}

.noyesh-contact-icon svg,
.noyesh-contact-icon img {
	width: 20px !important;
	height: 20px !important;
}

.noyesh-contact-details small {
	display: block;
	color: var(--wp--preset--color--text-tertiary);
	font-size: 0.76rem;
}

.noyesh-contact-details strong {
	display: block;
	color: var(--wp--preset--color--text-primary);
	font-size: 0.9rem;
}

.noyesh-contact-map {
	margin-top: 32px;
	height: 260px;
	border-radius: var(--wp--custom--radius--md);
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--border-subtle);
}

.noyesh-contact-map .leaflet-control-attribution { font-size: 9px; }

.noyesh-about-location {
	padding: 88px 24px;
	background: var(--wp--preset--color--bg-primary);
}

.noyesh-about-location__inner { max-width: 980px; margin: 0 auto; text-align: center; }
.noyesh-about-location__inner > span { color: var(--wp--preset--color--brand-primary); font-size: .8rem; font-weight: 700; }
.noyesh-about-location__inner h2 { margin: 8px 0; color: var(--wp--preset--color--text-primary); font-size: 1.45rem; }
.noyesh-about-location__inner p { margin: 0 0 28px; color: var(--wp--preset--color--text-secondary); }
.noyesh-about-location__map { height: 390px; overflow: hidden; border: 1px solid var(--wp--preset--color--border-subtle); border-radius: var(--wp--custom--radius--lg); box-shadow: var(--wp--custom--shadow--md); text-align: right; }
@media (max-width: 640px) { .noyesh-about-location { padding: 64px 18px; } .noyesh-about-location__map { height: 300px; } }

.noyesh-contact-map iframe {
	width: 100%;
	height: 260px;
	border: 0;
	display: block;
}

.noyesh-contact-map img {
	display: block;
	width: 100%;
	height: 260px;
	object-fit: cover;
}

@media (max-width: 900px) {
	.noyesh-contact-grid {
		grid-template-columns: 1fr;
	}

	.noyesh-contact-info-card {
		margin-top: 40px;
		margin-block-start: 40px !important;
	}

	body.page-id-15 .noyesh-contact-grid > .noyesh-contact-info-card {
		margin-top: 40px;
		margin-block-start: 40px !important;
	}
}

@media (max-width: 860px) {
	body.page-id-15 .noyesh-page-banner {
		padding-block: 32px 90px;
	}

	body.page-id-15 .noyesh-page-banner > .noyesh-breadcrumb {
		margin-bottom: 32px;
	}

	.noyesh-form-slot {
		padding: 28px;
	}

	.noyesh-contact-info-card {
		padding: 24px;
	}

	.noyesh-contact-map iframe {
		height: 220px;
	}
}

/* Contact-page-specific mapping of the original contact.html form and social row. */
body.page-id-15 .noyesh-contact-form--gravity .gform-phone__input-wrapper {
	display: flex !important;
	align-items: stretch;
	gap: 0 !important;
	direction: ltr;
}

body.page-id-15 .noyesh-contact-form--gravity .gform-phone__input-wrapper > span {
	display: block;
}

body.page-id-15 .noyesh-contact-form--gravity .ginput_phone_container {
	flex: 1 1 auto;
	min-width: 0;
}

body.page-id-15 .noyesh-contact-form--gravity .ginput_country-selector_container {
	display: none !important;
}

body.page-id-15 .noyesh-contact-form--gravity .gform-phone__input-wrapper .gform-field-label--type-sub {
	display: none !important;
}

body.page-id-15 .noyesh-contact-form--gravity .gform-phone__country-selector,
body.page-id-15 .noyesh-contact-form--gravity .gform-phone__input {
	min-height: 46px !important;
	height: 46px !important;
	margin: 0 !important;
	border: 1px solid var(--wp--preset--color--border-default) !important;
	background: var(--wp--preset--color--surface-secondary) !important;
	box-shadow: none !important;
}

body.page-id-15 .noyesh-contact-form--gravity .gform-phone__country-selector {
	display: inline-flex !important;
	align-items: center;
	gap: 6px;
	padding: 0 11px !important;
	border-inline-end: 0 !important;
	border-radius: var(--wp--custom--radius--sm) 0 0 var(--wp--custom--radius--sm) !important;
	color: var(--wp--preset--color--text-secondary) !important;
}

body.page-id-15 .noyesh-contact-form--gravity .gform-phone__input {
	border-radius: var(--wp--custom--radius--sm) !important;
	direction: ltr;
	font-size: 0.8rem !important;
	text-align: left;
}

/* Keep the contact form compact, in line with the original contact.html. */
body.page-id-15 .noyesh-form-slot > h2,
body.page-id-15 .noyesh-form-slot > h3 {
	font-size: 17px;
}

body.page-id-15 .noyesh-form-slot > p {
	font-size: 0.82rem;
}

body.page-id-15 .noyesh-contact-form--gravity .gfield_label,
body.page-id-15 .noyesh-contact-form--gravity .gform-field-label__text {
	display: block !important;
	text-align: right !important;
	font-size: 0.74rem !important;
}

body.page-id-15 .noyesh-contact-form--gravity input[type='email'],
body.page-id-15 .noyesh-contact-form--gravity input[type='phone'],
body.page-id-15 .noyesh-contact-form--gravity input[type='tel'],
body.page-id-15 .noyesh-contact-form--gravity input[type='text'],
body.page-id-15 .noyesh-contact-form--gravity textarea {
	font-size: 0.8rem !important;
}

body.page-id-15 .noyesh-contact-form--gravity textarea {
	direction: rtl;
	text-align: right;
}

body.page-id-15 .noyesh-contact-form--gravity .gform_button {
	font-size: 0.86rem !important;
}

body.page-id-15 .noyesh-contact-info-card > .wp-block-social-links {
	justify-content: flex-start;
	gap: 10px;
	margin: 24px 0 0 !important;
	padding: 20px 0 0;
	border-top: 1px solid var(--wp--preset--color--border-subtle);
}

body.page-id-15 .noyesh-contact-info-card > .wp-block-social-links::before {
	margin-inline-end: auto;
	color: var(--wp--preset--color--text-secondary);
	content: "شبکه‌های اجتماعی";
	font-size: 0.85rem;
	font-weight: 600;
	white-space: nowrap;
}

/* Preferred-contact choices: match the dedicated contact.html pill state. */
body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gfield_radio {
	gap: 8px !important;
}

/* The whole pill must be clickable, not just the circle and the letters of the
 * label. Padding/gap that used to sit on the pill itself (dead space no click
 * handler covers) is moved onto the label, which is stretched to the pill's
 * full height, so the label's own box — not just its text — covers the pill. */
body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice {
	min-height: 40px !important;
	padding: 0 !important;
	padding-inline-start: 14px !important;
	padding-inline-end: 0 !important;
	gap: 0 !important;
	border-radius: var(--wp--custom--radius--full);
	background: var(--wp--preset--color--surface-secondary);
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice input[type='radio'] {
	align-self: center !important;
	flex: none !important;
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice label {
	display: flex !important;
	flex: 1 1 auto !important;
	align-items: center !important;
	padding-inline: 7px 12px !important;
	font-size: 0.82rem !important;
	font-weight: 500 !important;
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice:has(input:checked) {
	border-color: var(--wp--preset--color--brand-primary) !important;
	background: rgba(49, 94, 251, 0.08) !important;
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice:has(input:checked) label {
	color: var(--wp--preset--color--brand-primary) !important;
	font-weight: 600 !important;
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice input[type='radio'] {
	/* Native radio styling is also what the original contact.html uses. */
	appearance: auto !important;
	-webkit-appearance: radio !important;
	/* Gravity Forms supplies a narrow input width; restore the browser default geometry. */
	width: 13px !important;
	height: 13px !important;
	min-width: 13px !important;
	margin: 0 !important;
	border: initial !important;
	border-radius: initial !important;
	background: initial !important;
	background-image: initial !important;
	accent-color: var(--wp--preset--color--brand-primary) !important;
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice input[type='radio']:checked {
	accent-color: var(--wp--preset--color--brand-primary) !important;
}

/* Keep keyboard focus visible on the rounded choice, never as a square around
 * the native radio control. */
body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice input[type='radio']:focus,
body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice input[type='radio']:focus-visible {
	outline: none !important;
	box-shadow: none !important;
}

body.page-id-15 .noyesh-contact-form--gravity .noyesh-gf-contact-method .gchoice:has(input[type='radio']:focus-visible) {
	box-shadow: 0 0 0 3px rgba(49, 94, 251, 0.16) !important;
}

/* ============ Homepage parity with the original HTML design ============ */
.wp-block-noyesh-hero .noyesh-hero__frame {
	animation: noyesh-home-hero-float 7s ease-in-out infinite !important;
	will-change: transform;
}

@keyframes noyesh-home-hero-float {
	0%, 100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-10px);
	}
}

@media (prefers-reduced-motion: reduce) {
	.wp-block-noyesh-hero .noyesh-hero__frame {
		animation: none !important;
		will-change: auto;
	}
}

.wp-site-blocks > main > .wp-block-noyesh-logo-marquee,
.noyesh-home-content > .wp-block-noyesh-logo-marquee {
	margin-block-start: 0 !important;
	margin-inline: auto !important;
}

.wp-site-blocks > main > .wp-block-noyesh-module-showcase,
.noyesh-home-content > .wp-block-noyesh-module-showcase {
	margin-block-start: 0 !important;
}

.wp-site-blocks > main > .noyesh-home-blog-slider,
.noyesh-home-content > .noyesh-home-blog-slider {
	margin-block-start: 0 !important;
	padding-block: 80px 0;
}

.noyesh-home-contact-head {
	max-width: 580px !important;
	margin: 89px auto 49px !important;
	padding-inline: 24px;
	text-align: center;
}

.noyesh-home-contact-head > * {
	margin-block-start: 0;
}

.noyesh-home-contact-head h2 {
	font-size: clamp(1.2rem, 2.1vw, 1.55rem);
	font-weight: 700;
	line-height: 1.5;
	margin: 0 0 12px;
}

.noyesh-home-contact-head p:last-child {
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.95rem;
	line-height: 1.8;
	margin: 0;
}

.noyesh-home-contact-grid {
	grid-template-columns: 0.85fr 1.15fr;
	gap: 24px;
	align-items: stretch;
	padding-block: 0 100px;
}

.noyesh-home-contact-grid > * {
	width: auto !important;
	max-width: none !important;
	margin: 0 !important;
}

.noyesh-home-contact-card {
	position: relative;
	padding: 36px;
	border: 1px solid var(--wp--preset--color--border-subtle);
	border-radius: var(--wp--custom--radius--lg);
	background: var(--wp--preset--color--surface-primary);
	box-shadow: var(--wp--custom--shadow--md);
	overflow: hidden;
	transition: box-shadow 0.25s var(--wp--custom--ease), transform 0.25s var(--wp--custom--ease);
	box-sizing: border-box;
}

.noyesh-home-contact-info-card,
.noyesh-contact-info-card.noyesh-home-contact-card {
	min-height: 0;
	padding: 36px;
	box-shadow: var(--wp--custom--shadow--md);
}

.noyesh-home-form-card {
	min-height: 0;
}

.noyesh-home-contact-card::before {
	content: '';
	position: absolute;
	inset-inline-end: -30%;
	top: -40%;
	width: 70%;
	height: 160%;
	background: radial-gradient(closest-side, var(--wp--preset--color--bg-secondary), transparent 70%);
	pointer-events: none;
}

.noyesh-home-contact-card:hover {
	box-shadow: var(--wp--custom--shadow--lg);
	transform: translateY(-3px);
}

.noyesh-home-contact-card > * {
	position: relative;
	z-index: 1;
}

.noyesh-contact-card-title {
	font-size: 1.02rem !important;
	font-weight: 700;
	margin: 0 0 26px !important;
	padding-bottom: 18px;
	border-bottom: 1px solid var(--wp--preset--color--border-subtle);
}

.noyesh-contact-info-card.noyesh-home-contact-card .noyesh-contact-card-title {
	display: flex;
	align-items: center;
	gap: 12px;
}

.noyesh-contact-card-icon {
	flex: none;
	width: 36px;
	height: 36px;
	border-radius: 11px;
	background: linear-gradient(135deg, var(--wp--preset--color--ai-accent), var(--wp--preset--color--brand-primary-hover));
	color: #fff;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: var(--wp--custom--shadow--sm);
}

.noyesh-contact-card-icon svg {
	width: 17px;
	height: 17px;
}

.noyesh-contact-card-icon img,
.noyesh-home-contact-card .noyesh-contact-icon img {
	display: block;
	width: 20px;
	height: 20px;
	object-fit: contain;
}

.noyesh-contact-frame {
	position: relative;
	height: 200px;
	margin-bottom: 22px;
	border-radius: var(--wp--custom--radius--md);
	box-shadow: var(--wp--custom--shadow--md);
	overflow: hidden;
}

.noyesh-contact-frame img,
.noyesh-contact-photo-overlay {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.noyesh-contact-frame img {
	object-fit: cover;
}

.noyesh-contact-photo-overlay {
	background: linear-gradient(180deg, transparent 45%, rgba(7, 19, 48, 0.6));
}

.noyesh-contact-online {
	position: absolute;
	bottom: 14px;
	inset-inline-start: 14px;
	display: flex;
	align-items: center;
	gap: 7px;
	max-width: calc(100% - 28px);
	padding: 8px 12px;
	border: 1px solid rgba(255,255,255,.2);
	border-radius: var(--wp--custom--radius--full);
	background: rgba(7,19,48,.76);
	color: #fff;
	font-size: .72rem;
	backdrop-filter: blur(6px);
}

.noyesh-contact-online span {
	flex: none;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: #34d399;
	box-shadow: 0 0 0 5px rgba(52,211,153,.14);
	animation: noyeshOnlinePulse 1.8s ease-in-out infinite;
}

@keyframes noyeshOnlinePulse {
	0%, 100% { box-shadow: 0 0 0 5px rgba(52,211,153,.14); opacity: 1; }
	50% { box-shadow: 0 0 0 8px rgba(52,211,153,.3); opacity: .7; }
}

@media (prefers-reduced-motion: reduce) {
	.noyesh-contact-online span { animation: none; }
}

.noyesh-home-contact-card .noyesh-contact-details {
	gap: 18px;
	margin: 0;
}

.noyesh-home-contact-card .noyesh-contact-details li {
	gap: 14px;
}

.noyesh-home-contact-card .noyesh-contact-icon {
	width: 42px;
	height: 42px;
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--bg-secondary);
	color: var(--wp--preset--color--brand-primary);
}

.noyesh-home-contact-card .noyesh-contact-icon svg {
	width: 20px;
	height: 20px;
}

/* Hand-authored replacement for core/social-links (see noyesh_render_contact_info_card())
   no longer benefits from that block's own conditionally-loaded core CSS, which is where
   "list-style: none" on .wp-block-social-links li normally comes from. Without it, each
   <li> shows its default bullet marker, rendered in the inherited `color` (brand-primary
   blue here) via currentColor — visible as a stray blue dot next to every icon. */
.wp-block-social-links,
.wp-block-social-links li {
	list-style: none;
}

.noyesh-contact-info-card > .wp-block-social-links {
	direction: rtl;
	display: flex;
	align-items: center;
	gap: 10px;
	width: 100%;
	margin: 24px 0 0 !important;
	padding: 20px 0 0;
	border-top: 1px solid var(--wp--preset--color--border-subtle);
}

.noyesh-contact-info-card.noyesh-home-contact-card > .wp-block-social-links::before {
	content: attr(data-label);
	margin-inline-end: auto;
	color: var(--wp--preset--color--text-secondary);
	font-size: 0.85rem;
	font-weight: 600;
	white-space: nowrap;
}

.noyesh-contact-info-card > .wp-block-social-links .wp-social-link {
	background: transparent !important;
}

.noyesh-contact-info-card > .wp-block-social-links .wp-social-link a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	padding: 0;
	border: 1px solid var(--wp--preset--color--dark-border);
	border-radius: 50%;
	background: var(--wp--preset--color--dark-surface-1);
	color: var(--wp--preset--color--dark-text-secondary) !important;
	transition: background 0.2s var(--wp--custom--ease), color 0.2s var(--wp--custom--ease), border-color 0.2s var(--wp--custom--ease);
}

.noyesh-contact-info-card > .wp-block-social-links .wp-social-link svg {
	display: block;
	width: 17px;
	height: 17px;
}

.noyesh-contact-info-card > .wp-block-social-links .wp-social-link a:hover {
	background: var(--wp--preset--color--brand-primary);
	border-color: var(--wp--preset--color--brand-primary);
	color: #fff !important;
}

.noyesh-contact-info-card > .wp-block-social-links .wp-social-link img {
	display: block;
	width: 17px;
	height: 17px;
	object-fit: contain;
}

.noyesh-home-form-card {
	padding-block: 28px;
}

.noyesh-home-form-card .noyesh-contact-card-title {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 18px !important;
	padding-bottom: 14px;
}

.noyesh-home-form-card .noyesh-contact-card-title:not(:has(.noyesh-contact-card-icon))::before {
	content: '';
	flex: none;
	width: 42px;
	height: 42px;
	border-radius: var(--wp--custom--radius--md);
	background-color: var(--wp--preset--color--brand-primary);
	background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg' fill='none'%3E%3Cpath d='M21 3L2 10.5l7 3M21 3l-3 18-8-7.5M21 3L10 15' stroke='%23fff' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-position: center;
	background-repeat: no-repeat;
	background-size: 22px 22px;
	box-shadow: 0 8px 18px rgba(49, 94, 251, 0.18);
}

.noyesh-contact-form--consultation {
	gap: 11px;
}

.noyesh-contact-form--consultation label > span,
.noyesh-contact-form--consultation legend {
	margin-bottom: 5px;
}

.noyesh-contact-form--consultation input[type='text'],
.noyesh-contact-form--consultation textarea {
	padding-block: 9px;
	background: var(--wp--preset--color--surface-secondary);
}

.noyesh-contact-form--consultation textarea {
	min-height: 58px;
}

.noyesh-contact-form--consultation .noyesh-contact-form__choices {
	display: flex;
	flex-wrap: wrap;
}

.noyesh-contact-form--consultation .noyesh-contact-form__choices span {
	min-height: 0;
	padding: 5px 12px;
	border-radius: var(--wp--custom--radius--full);
}

@media (max-width: 900px) {
	.noyesh-home-contact-grid {
		grid-template-columns: 1fr;
	}

	.noyesh-home-contact-card {
		min-height: 0;
	}
}

@media (max-width: 640px) {
	.wp-site-blocks > main > .wp-block-noyesh-logo-marquee,
	.noyesh-home-content > .wp-block-noyesh-logo-marquee {
		margin-block-start: 0 !important;
	}

	.wp-site-blocks > main > .noyesh-home-blog-slider,
	.noyesh-home-content > .noyesh-home-blog-slider {
		padding-block-start: 56px;
	}

	.noyesh-home-contact-head {
		margin: 56px auto 40px !important;
	}

	.noyesh-home-contact-grid {
		padding-inline: 18px;
		padding-bottom: 72px;
	}

	.noyesh-home-contact-card {
		padding: 26px;
	}

	.noyesh-contact-form--consultation .noyesh-contact-form__row {
		grid-template-columns: 1fr 1fr;
	}
}

/* The front page content lives in the editable page, not in the template. */
.noyesh-home-content {
	max-width: none !important;
	margin: 0 !important;
	padding: 0 !important;
}

.noyesh-home-content > * {
	margin-block-start: 0;
}

.noyesh-home-contact-section {
	margin: 0 !important;
}

.noyesh-float-card__icon img {
	display: block;
	width: 18px;
	height: 18px;
	object-fit: contain;
}

/* Gravity Forms validation summary box: text-align must stay right-aligned on
   this RTL site. Kept here (outside the block build pipeline) because
   wp-scripts' auto-generated RTL stylesheet mirrors left/right text-align
   values, which would flip "right" back to "left". */
.gform_validation_errors,
.gform_validation_errors .gform_submission_error,
.gform_validation_errors ol {
	text-align: right !important;
}

.gfield_validation_message,
.gfield_description.validation_message {
	text-align: right !important;
}
