/**
 * Hafez design tokens
 * 
 * Written by the typography panel. Root 16px, viewport 320px–1920px.
 */

@font-face {
	font-family: "IRANSans";
	src: url("http://seenconstruct.com/wp-content/plugins/hafez/assets/fonts/iransans.ttf") format("truetype");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
}

:root {
	--hafez-font-heading: "FonntscomMaisonNeueBook", sans-serif;
	--hafez-font-body: "FonntscomMaisonNeueLight", sans-serif;
	--hafez-font-code: "Roboto Mono", monospace;
	--hafez-lh-heading: 1.25;
	--hafez-lh-body: 1.7;
	--hafez-fs-h1: clamp(1.50rem, calc(1.35rem + 0.75vw), 2.25rem);
	--hafez-fs-h2: clamp(1.25rem, calc(1.10rem + 0.75vw), 2.00rem);
	--hafez-fs-h3: clamp(1.25rem, calc(1.10rem + 0.75vw), 2.00rem);
	--hafez-fs-heading-sm: clamp(1.00rem, calc(0.925rem + 0.375vw), 1.375rem);
	--hafez-fs-body: clamp(0.875rem, calc(0.80rem + 0.375vw), 1.25rem);
	--hafez-fs-small: 0.875rem;
	--hafez-fs-card-title: clamp(1.125rem, calc(1.10rem + 0.125vw), 1.25rem);
	--hafez-fs-card-excerpt: 0.875rem;
	--hafez-fs-card-meta-label: 0.75rem;
	--hafez-fs-card-meta-value: clamp(0.75rem, calc(0.738rem + 0.063vw), 0.813rem);
	--hafez-fs-accordion-title: clamp(1.00rem, calc(0.975rem + 0.125vw), 1.125rem);
	--hafez-fs-content-box-title: clamp(1.125rem, calc(1.075rem + 0.25vw), 1.375rem);
	--hafez-fs-footer-menu-title: 1.00rem;
	--hafez-fs-footer-menu-item: 0.875rem;
	--hafez-color-primary: #2563eb;
	--hafez-color-primary-hover: #1d4ed8;
	--hafez-color-secondary: #64748b;
	--hafez-color-secondary-hover: #475569;
	--hafez-color-bg: #2f2e2c;
	--hafez-color-surface: #282725;
	--hafez-color-border: #e2e8f0;
	--hafez-color-divider: #e2e8f0;
	--hafez-color-shadow: #0f172a;
	--hafez-color-text-heading: #ffffff;
	--hafez-color-text-subtitle: #ededed;
	--hafez-color-text-body: #e7e7e7;
	--hafez-color-text-muted: #7d7d7d;
	--hafez-color-link: #939393;
	--hafez-color-link-hover: #b7b7b7;
	--hafez-color-focus: #2563eb;
	--hafez-color-disabled-bg: #f1f5f9;
	--hafez-color-disabled-text: #94a3b8;
	--hafez-color-disabled-border: #e2e8f0;
	--hafez-color-btn-primary-bg: #808080;
	--hafez-color-btn-primary-text: #ffffff;
	--hafez-color-btn-primary-hover: #f1f1f1;
	--hafez-color-btn-secondary-bg: #e2e8f0;
	--hafez-color-btn-secondary-text: #0f172a;
	--hafez-color-btn-secondary-hover: #cbd5e1;
	--hafez-color-btn-action-bg: #ea580c;
	--hafez-color-btn-action-text: #ffffff;
	--hafez-color-btn-action-hover: #c2410c;
	--hafez-color-success-bg: #dcfce7;
	--hafez-color-success-text: #166534;
	--hafez-color-warning-bg: #ffedd5;
	--hafez-color-warning-text: #9a3412;
	--hafez-color-danger-bg: #fee2e2;
	--hafez-color-danger-text: #991b1b;
	--hafez-radius-outer: 0px;
	--hafez-radius-inner: 0px;
	--hafez-radius-pill: 0px;
	--hafez-border-width: 1px;
	--hafez-border-style: solid;
	--hafez-space-xs: 4px;
	--hafez-space-sm: 8px;
	--hafez-space-md: 16px;
	--hafez-space-lg: 24px;
	--hafez-space-xl: 32px;
	--hafez-space-2xl: 48px;
	--hafez-shadow: 0 8px 24px color-mix(in srgb, var(--hafez-color-shadow) 18%, transparent);
	font-size: 16px;
}

.hafez-border {
	border-width: var(--hafez-border-width);
	border-style: var(--hafez-border-style);
	border-color: var(--hafez-color-border);
}




/* Strip Elementor / JetEngine / browser focus chrome (outline + glow). */
html body :is(a, button, input, textarea, select, summary, [tabindex], [contenteditable]):is(:focus, :focus-visible),
html body :is(.elementor, .elementor-widget, .elementor-button, .elementor-field, .elementor-field-textual):is(:focus, :focus-visible),
html body .elementor :is(a, button, input, textarea, select, .elementor-button, .elementor-field, .elementor-field-textual):is(:focus, :focus-visible),
html body [class*="elementor-kit-"] :is(a, button, input, textarea, select, .elementor-button, .elementor-field, .elementor-field-textual):is(:focus, :focus-visible),
html body [class*="elementor-kit-"] input:not([type="button"]):not([type="submit"]):is(:focus, :focus-visible),
html body [class*="elementor-kit-"] textarea:is(:focus, :focus-visible),
html body [class*="elementor-kit-"] select:is(:focus, :focus-visible),
html body :is(.jet-form-builder, .jet-engine, .jet-listing-grid, .jet-listing) :is(a, button, input, textarea, select, .jet-form-builder__field, .jet-form-builder__action-button):is(:focus, :focus-visible),
html body :is(.jet-form-builder__field, .jet-form-builder__action-button):is(:focus, :focus-visible),
html body *:is(:focus, :focus-visible) {
	outline: none !important;
	outline-width: 0 !important;
	outline-style: none !important;
	outline-color: transparent !important;
	outline-offset: 0 !important;
	box-shadow: none !important;
	-webkit-box-shadow: none !important;
}

html body button::-moz-focus-inner,
html body input::-moz-focus-inner {
	border: 0 !important;
	padding: 0;
}

/* Utility classes for Elementor — no raw HTML tag selectors. */

.hafez-h1,
.hafez-h2,
.hafez-h3,
.hafez-h4,
.hafez-h5,
.hafez-h6 {
	font-family: var(--hafez-font-heading);
	font-weight: 400;
	line-height: var(--hafez-lh-heading);
	color: var(--hafez-color-text-heading);
}

.hafez-h1 {
	font-size: var(--hafez-fs-h1);
}

.hafez-h2 {
	font-size: var(--hafez-fs-h2);
}

.hafez-h3 {
	font-size: var(--hafez-fs-h3);
}

.hafez-h4,
.hafez-h5,
.hafez-h6 {
	font-size: var(--hafez-fs-heading-sm);
}

.hafez-body,
.hafez-p {
	font-family: var(--hafez-font-body);
	font-weight: 300;
	font-size: var(--hafez-fs-body);
	line-height: var(--hafez-lh-body);
	color: var(--hafez-color-text-body);
}

.hafez-body {
	background-color: var(--hafez-color-bg);
}

.hafez-small {
	font-size: var(--hafez-fs-small);
	line-height: var(--hafez-lh-body);
}

.hafez-code {
	font-family: var(--hafez-font-code);
	font-weight: 400;
	font-size: var(--hafez-fs-small);
	line-height: var(--hafez-lh-body);
}

.hafez-link {
	color: var(--hafez-color-link);
}

.hafez-link:hover,
.hafez-link:focus {
	color: var(--hafez-color-link-hover);
}

.hafez-focus:focus-visible {
	outline: 2px solid var(--hafez-color-focus) !important;
	outline-offset: 2px !important;
}

.hafez-card-title {
	font-size: var(--hafez-fs-card-title);
}

.hafez-card-excerpt {
	font-size: var(--hafez-fs-card-excerpt);
}

.hafez-card-meta-label {
	font-size: var(--hafez-fs-card-meta-label);
}

.hafez-card-meta-value {
	font-size: var(--hafez-fs-card-meta-value);
}

.hafez-accordion-title {
	font-size: var(--hafez-fs-accordion-title);
}

.hafez-content-box-title {
	font-size: var(--hafez-fs-content-box-title);
}

.hafez-footer-menu-title {
	font-size: var(--hafez-fs-footer-menu-title);
}

.hafez-footer-menu-item {
	font-size: var(--hafez-fs-footer-menu-item);
}

.hafez-surface {
	background-color: var(--hafez-color-surface);
	border-color: var(--hafez-color-border);
	border-radius: var(--hafez-radius-outer);
	box-shadow: var(--hafez-shadow);
}

.hafez-radius-outer {
	border-radius: var(--hafez-radius-outer);
}

.hafez-radius-inner {
	border-radius: var(--hafez-radius-inner);
}

.hafez-radius-pill {
	border-radius: var(--hafez-radius-pill);
}

.hafez-text-subtitle {
	color: var(--hafez-color-text-subtitle);
}

.hafez-text-muted {
	color: var(--hafez-color-text-muted);
}

.hafez-quote {
	margin: 1em 0;
	padding: 0.75em 1em;
	border-inline-start: 3px solid var(--hafez-color-primary);
	background: var(--hafez-color-surface);
	border-radius: var(--hafez-radius-inner);
	color: var(--hafez-color-text-subtitle);
}

.hafez-quote > :last-child {
	margin-bottom: 0;
}

.hafez-list {
	margin: 0.75em 0 1em;
	padding-inline-start: 1.25em;
	font-size: var(--hafez-fs-body);
	line-height: var(--hafez-lh-body);
	color: var(--hafez-color-text-body);
}

.hafez-img,
.hafez-video {
	display: block;
	max-width: 100%;
	height: auto;
}

.hafez-audio {
	width: 100%;
}

.hafez-img-right {
	margin-inline-start: auto;
	margin-inline-end: 0;
	max-width: 50%;
}

.hafez-img-left {
	margin-inline-start: 0;
	margin-inline-end: auto;
	max-width: 50%;
}

.hafez-img-center {
	margin-inline: auto;
	max-width: 70%;
}

.hafez-img-wide {
	width: 100%;
	max-width: none;
}

.hafez-btn-primary {
	background-color: var(--hafez-color-btn-primary-bg);
	color: var(--hafez-color-btn-primary-text);
	border-radius: var(--hafez-radius-inner);
}

.hafez-btn-primary:hover,
.hafez-btn-primary:focus {
	background-color: var(--hafez-color-btn-primary-hover);
}

.hafez-btn-secondary {
	background-color: var(--hafez-color-btn-secondary-bg);
	color: var(--hafez-color-btn-secondary-text);
	border-radius: var(--hafez-radius-inner);
}

.hafez-btn-secondary:hover,
.hafez-btn-secondary:focus {
	background-color: var(--hafez-color-btn-secondary-hover);
}

.hafez-btn-action {
	background-color: var(--hafez-color-btn-action-bg);
	color: var(--hafez-color-btn-action-text);
	border-radius: var(--hafez-radius-inner);
}

.hafez-btn-action:hover,
.hafez-btn-action:focus {
	background-color: var(--hafez-color-btn-action-hover);
}

.hafez-alert-success {
	background-color: var(--hafez-color-success-bg);
	color: var(--hafez-color-success-text);
	border-radius: var(--hafez-radius-inner);
}

.hafez-alert-warning {
	background-color: var(--hafez-color-warning-bg);
	color: var(--hafez-color-warning-text);
	border-radius: var(--hafez-radius-inner);
}

.hafez-alert-danger {
	background-color: var(--hafez-color-danger-bg);
	color: var(--hafez-color-danger-text);
	border-radius: var(--hafez-radius-inner);
}

/* WooCommerce notices → Hafez alert tokens (classic + blocks). */
.woocommerce-message,
.woocommerce-error,
.woocommerce-info,
.wc-block-components-notice-banner {
	padding: var(--hafez-space-md) !important;
	margin: 0 0 var(--hafez-space-md);
	border: 0;
	border-radius: var(--hafez-radius-inner);
	box-shadow: none;
	list-style: none outside;
	font-size: var(--hafez-fs-body);
	line-height: var(--hafez-lh-body);
	width: auto;
	word-wrap: break-word;
}

.woocommerce-message::before,
.woocommerce-error::before,
.woocommerce-info::before {
	display: none !important;
	content: none !important;
}

.woocommerce-message,
.wc-block-components-notice-banner.is-success {
	background-color: var(--hafez-color-success-bg) !important;
	color: var(--hafez-color-success-text) !important;
	border-color: var(--hafez-color-success-text);
}

.woocommerce-info,
.wc-block-components-notice-banner.is-info,
.wc-block-components-notice-banner.is-warning {
	background-color: var(--hafez-color-warning-bg) !important;
	color: var(--hafez-color-warning-text) !important;
	border-color: var(--hafez-color-warning-text);
}

.woocommerce-error,
.wc-block-components-notice-banner.is-error {
	background-color: var(--hafez-color-danger-bg) !important;
	color: var(--hafez-color-danger-text) !important;
	border-color: var(--hafez-color-danger-text);
}

.wc-block-components-notice-banner.is-success > svg {
	background-color: var(--hafez-color-success-text) !important;
	fill: #fff;
}

.wc-block-components-notice-banner.is-info > svg,
.wc-block-components-notice-banner.is-warning > svg {
	background-color: var(--hafez-color-warning-text) !important;
	fill: #fff;
}

.wc-block-components-notice-banner.is-error > svg {
	background-color: var(--hafez-color-danger-text) !important;
	fill: #fff;
}

.woocommerce-message a,
.woocommerce-error a,
.woocommerce-info a,
.wc-block-components-notice-banner a {
	color: inherit;
}

/* Spacing utilities — padding / margin / gap. */

.hafez-p-xs {
	padding: var(--hafez-space-xs);
}

.hafez-px-xs {
	padding-inline: var(--hafez-space-xs);
}

.hafez-py-xs {
	padding-block: var(--hafez-space-xs);
}

.hafez-pt-xs {
	padding-block-start: var(--hafez-space-xs);
}

.hafez-pb-xs {
	padding-block-end: var(--hafez-space-xs);
}

.hafez-ps-xs {
	padding-inline-start: var(--hafez-space-xs);
}

.hafez-pe-xs {
	padding-inline-end: var(--hafez-space-xs);
}

.hafez-m-xs {
	margin: var(--hafez-space-xs);
}

.hafez-mx-xs {
	margin-inline: var(--hafez-space-xs);
}

.hafez-my-xs {
	margin-block: var(--hafez-space-xs);
}

.hafez-mt-xs {
	margin-block-start: var(--hafez-space-xs);
}

.hafez-mb-xs {
	margin-block-end: var(--hafez-space-xs);
}

.hafez-ms-xs {
	margin-inline-start: var(--hafez-space-xs);
}

.hafez-me-xs {
	margin-inline-end: var(--hafez-space-xs);
}

.hafez-gap-xs {
	gap: var(--hafez-space-xs);
}

.hafez-p-sm {
	padding: var(--hafez-space-sm);
}

.hafez-px-sm {
	padding-inline: var(--hafez-space-sm);
}

.hafez-py-sm {
	padding-block: var(--hafez-space-sm);
}

.hafez-pt-sm {
	padding-block-start: var(--hafez-space-sm);
}

.hafez-pb-sm {
	padding-block-end: var(--hafez-space-sm);
}

.hafez-ps-sm {
	padding-inline-start: var(--hafez-space-sm);
}

.hafez-pe-sm {
	padding-inline-end: var(--hafez-space-sm);
}

.hafez-m-sm {
	margin: var(--hafez-space-sm);
}

.hafez-mx-sm {
	margin-inline: var(--hafez-space-sm);
}

.hafez-my-sm {
	margin-block: var(--hafez-space-sm);
}

.hafez-mt-sm {
	margin-block-start: var(--hafez-space-sm);
}

.hafez-mb-sm {
	margin-block-end: var(--hafez-space-sm);
}

.hafez-ms-sm {
	margin-inline-start: var(--hafez-space-sm);
}

.hafez-me-sm {
	margin-inline-end: var(--hafez-space-sm);
}

.hafez-gap-sm {
	gap: var(--hafez-space-sm);
}

.hafez-p-md {
	padding: var(--hafez-space-md);
}

.hafez-px-md {
	padding-inline: var(--hafez-space-md);
}

.hafez-py-md {
	padding-block: var(--hafez-space-md);
}

.hafez-pt-md {
	padding-block-start: var(--hafez-space-md);
}

.hafez-pb-md {
	padding-block-end: var(--hafez-space-md);
}

.hafez-ps-md {
	padding-inline-start: var(--hafez-space-md);
}

.hafez-pe-md {
	padding-inline-end: var(--hafez-space-md);
}

.hafez-m-md {
	margin: var(--hafez-space-md);
}

.hafez-mx-md {
	margin-inline: var(--hafez-space-md);
}

.hafez-my-md {
	margin-block: var(--hafez-space-md);
}

.hafez-mt-md {
	margin-block-start: var(--hafez-space-md);
}

.hafez-mb-md {
	margin-block-end: var(--hafez-space-md);
}

.hafez-ms-md {
	margin-inline-start: var(--hafez-space-md);
}

.hafez-me-md {
	margin-inline-end: var(--hafez-space-md);
}

.hafez-gap-md {
	gap: var(--hafez-space-md);
}

.hafez-p-lg {
	padding: var(--hafez-space-lg);
}

.hafez-px-lg {
	padding-inline: var(--hafez-space-lg);
}

.hafez-py-lg {
	padding-block: var(--hafez-space-lg);
}

.hafez-pt-lg {
	padding-block-start: var(--hafez-space-lg);
}

.hafez-pb-lg {
	padding-block-end: var(--hafez-space-lg);
}

.hafez-ps-lg {
	padding-inline-start: var(--hafez-space-lg);
}

.hafez-pe-lg {
	padding-inline-end: var(--hafez-space-lg);
}

.hafez-m-lg {
	margin: var(--hafez-space-lg);
}

.hafez-mx-lg {
	margin-inline: var(--hafez-space-lg);
}

.hafez-my-lg {
	margin-block: var(--hafez-space-lg);
}

.hafez-mt-lg {
	margin-block-start: var(--hafez-space-lg);
}

.hafez-mb-lg {
	margin-block-end: var(--hafez-space-lg);
}

.hafez-ms-lg {
	margin-inline-start: var(--hafez-space-lg);
}

.hafez-me-lg {
	margin-inline-end: var(--hafez-space-lg);
}

.hafez-gap-lg {
	gap: var(--hafez-space-lg);
}

.hafez-p-xl {
	padding: var(--hafez-space-xl);
}

.hafez-px-xl {
	padding-inline: var(--hafez-space-xl);
}

.hafez-py-xl {
	padding-block: var(--hafez-space-xl);
}

.hafez-pt-xl {
	padding-block-start: var(--hafez-space-xl);
}

.hafez-pb-xl {
	padding-block-end: var(--hafez-space-xl);
}

.hafez-ps-xl {
	padding-inline-start: var(--hafez-space-xl);
}

.hafez-pe-xl {
	padding-inline-end: var(--hafez-space-xl);
}

.hafez-m-xl {
	margin: var(--hafez-space-xl);
}

.hafez-mx-xl {
	margin-inline: var(--hafez-space-xl);
}

.hafez-my-xl {
	margin-block: var(--hafez-space-xl);
}

.hafez-mt-xl {
	margin-block-start: var(--hafez-space-xl);
}

.hafez-mb-xl {
	margin-block-end: var(--hafez-space-xl);
}

.hafez-ms-xl {
	margin-inline-start: var(--hafez-space-xl);
}

.hafez-me-xl {
	margin-inline-end: var(--hafez-space-xl);
}

.hafez-gap-xl {
	gap: var(--hafez-space-xl);
}

.hafez-p-2xl {
	padding: var(--hafez-space-2xl);
}

.hafez-px-2xl {
	padding-inline: var(--hafez-space-2xl);
}

.hafez-py-2xl {
	padding-block: var(--hafez-space-2xl);
}

.hafez-pt-2xl {
	padding-block-start: var(--hafez-space-2xl);
}

.hafez-pb-2xl {
	padding-block-end: var(--hafez-space-2xl);
}

.hafez-ps-2xl {
	padding-inline-start: var(--hafez-space-2xl);
}

.hafez-pe-2xl {
	padding-inline-end: var(--hafez-space-2xl);
}

.hafez-m-2xl {
	margin: var(--hafez-space-2xl);
}

.hafez-mx-2xl {
	margin-inline: var(--hafez-space-2xl);
}

.hafez-my-2xl {
	margin-block: var(--hafez-space-2xl);
}

.hafez-mt-2xl {
	margin-block-start: var(--hafez-space-2xl);
}

.hafez-mb-2xl {
	margin-block-end: var(--hafez-space-2xl);
}

.hafez-ms-2xl {
	margin-inline-start: var(--hafez-space-2xl);
}

.hafez-me-2xl {
	margin-inline-end: var(--hafez-space-2xl);
}

.hafez-gap-2xl {
	gap: var(--hafez-space-2xl);
}
