/*
Theme Name: Shahan Amlak Showcase
Theme URI: https://example.com/shahan-amlak-showcase
Author: Shahan
Author URI: https://example.com
Description: پوسته نمایش عمومی فایل‌های ملکی افزونه «مدیریت املاک شاهان» با هویت بصری حرفه‌ای و معتبر مناسب آژانس‌های املاک: پالت سرمه‌ای/طلایی، تایپوگرافی رسمی، هیرو و نوار جستجوی برجسته، کارت‌های فایل شیک و فیلتر پیشرفته‌ی کاملاً AJAX (بدون رفرش صفحه).
Version: 2.1.0
Requires at least: 5.8
Requires PHP: 7.4
Tested up to: 6.6
Text Domain: shahan-showcase
Tags: real-estate, rtl, custom-post-type, grid-layout, one-column
*/

/* ==========================================================================
   Fonts
   ========================================================================== */
@font-face {
	font-family: 'Yekan';
	src: url('assets/fonts/yekan/Yekan.woff2') format('woff2'),
		 url('assets/fonts/yekan/Yekan.woff') format('woff');
	font-weight: normal;
	font-style: normal;
	font-display: swap;
}

/* ==========================================================================
   Design tokens — professional real-estate identity
   Deep navy (trust, authority) + warm brass/gold (value, prestige) on a
   warm paper background. Deal-type colors are muted and editorial rather
   than playful/saturated.
   ========================================================================== */
:root{
	--sam-primary:#0f3a5f;
	--sam-primary-dark:#0a2740;
	--sam-primary-light:#e8eef3;
	--sam-navy-900:#0a2138;
	--sam-navy-800:#0f2e4d;
	--sam-navy-700:#153e64;
	--sam-accent:#b6862f;
	--sam-accent-dark:#8f6a22;
	--sam-accent-light:#f6ecd7;
	--sam-ink:#16232c;
	--sam-ink-soft:#5c6b76;
	--sam-ink-faint:#8b98a2;
	--sam-line:#e3e2dc;
	--sam-bg:#f5f4f0;
	--sam-card:#ffffff;
	--sam-sale:#0f3a5f;
	--sam-rent:#96601f;
	--sam-partnership:#2c6b52;
	--sam-whatsapp:#25a35a;
	--sam-danger:#a13b3b;
	--sam-radius-lg:14px;
	--sam-radius-md:10px;
	--sam-radius-sm:7px;
	--sam-shadow:0 1px 2px rgba(15,35,55,.06), 0 3px 10px rgba(15,35,55,.05);
	--sam-shadow-hover:0 18px 38px -14px rgba(10,30,50,.28);
	--sam-container:1240px;
	--sam-font:'Yekan','Vazirmatn',Tahoma,'Segoe UI',sans-serif;
}

/* ==========================================================================
   Reset & base
   ========================================================================== */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
	margin:0;
	font-family:var(--sam-font);
	background:var(--sam-bg);
	color:var(--sam-ink);
	direction:rtl;
	text-align:right;
	line-height:1.9;
	font-size:15px;
}
img{ max-width:100%; display:block; }
[hidden]{ display:none !important; }
a{ color:inherit; text-decoration:none; }
ul{ margin:0; padding:0; list-style:none; }
button,input,select,textarea{ font-family:inherit; font-size:inherit; color:inherit; }
button{ cursor:pointer; }
h1,h2,h3,h4,p{ margin:0 0 .6em; }
::selection{ background:var(--sam-accent-light); color:var(--sam-navy-900); }
.screen-reader-text{ position:absolute !important; clip:rect(1px,1px,1px,1px); width:1px; height:1px; overflow:hidden; }

.sam-container{ max-width:var(--sam-container); margin:0 auto; padding:0 20px; }
.sam-eyebrow{
	display:inline-flex; align-items:center; gap:8px; font-size:12px; font-weight:700;
	color:var(--sam-accent-dark); letter-spacing:.02em; margin-bottom:10px;
}
.sam-eyebrow::before{ content:''; width:18px; height:2px; background:var(--sam-accent); border-radius:2px; }

/* ==========================================================================
   Top information bar
   ========================================================================== */
.sam-topbar{
	background:var(--sam-navy-900); color:rgba(255,255,255,.72);
	font-size:12.5px;
}
.sam-topbar__inner{ display:flex; align-items:center; justify-content:space-between; height:38px; gap:16px; }
.sam-topbar__info{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
.sam-topbar__info a,
.sam-topbar__info span{ display:flex; align-items:center; gap:6px; color:rgba(255,255,255,.72); transition:color .15s; }
.sam-topbar__info a:hover{ color:var(--sam-accent); }
.sam-topbar__info .sam-icon{ font-size:12px; color:var(--sam-accent); }
.sam-topbar__tag{ color:rgba(255,255,255,.5); }

/* ==========================================================================
   Header
   ========================================================================== */
.sam-header{
	background:var(--sam-card);
	border-bottom:1px solid var(--sam-line);
	position:sticky; top:0; z-index:60;
	box-shadow:0 1px 0 rgba(15,35,55,.02);
}
.sam-header__inner{
	display:flex; align-items:center; gap:24px;
	height:76px;
}
.sam-brand{ display:flex; align-items:center; gap:10px; font-weight:800; font-size:20px; color:var(--sam-primary); flex-shrink:0; letter-spacing:.01em; }
.sam-brand img{ max-height:42px; width:auto; }
.sam-nav{ display:flex; align-items:center; gap:26px; flex:1; }
.sam-nav a{ color:var(--sam-ink-soft); font-size:14.5px; font-weight:600; transition:color .15s; position:relative; padding:4px 0; }
.sam-nav a::after{ content:''; position:absolute; right:0; bottom:-2px; width:0; height:2px; background:var(--sam-accent); transition:width .18s; }
.sam-nav a:hover{ color:var(--sam-primary); }
.sam-nav a:hover::after{ width:100%; }
.sam-header__cta{
	display:flex; align-items:center; gap:8px;
	background:var(--sam-primary); color:#fff !important; border:none;
	padding:11px 20px; border-radius:var(--sam-radius-md); font-weight:700; font-size:14px;
	white-space:nowrap;
	transition:background .15s, transform .15s, box-shadow .15s;
	box-shadow:0 2px 8px rgba(15,58,95,.25);
}
.sam-header__cta:hover{ background:var(--sam-navy-700); transform:translateY(-1px); }
.sam-header__cta--user{
	background:transparent; color:var(--sam-primary) !important;
	border:1px solid var(--sam-line); box-shadow:none;
}
.sam-header__cta--user:hover{ background:var(--sam-primary-light); transform:translateY(-1px); }
.sam-header__burger{ display:none; background:none; border:1px solid var(--sam-line); border-radius:10px; width:42px; height:42px; align-items:center; justify-content:center; }
.sam-header__burger span, .sam-header__burger span::before, .sam-header__burger span::after{ content:''; display:block; width:20px; height:2px; background:var(--sam-ink); position:relative; }
.sam-header__burger span::before{ position:absolute; top:-6px; }
.sam-header__burger span::after{ position:absolute; top:6px; }

/* ==========================================================================
   Header image slider — optional, filled in from Customizer ‹ اسلایدر تصاویر
   ========================================================================== */
.sam-hero-slider{
	position:relative; overflow:hidden;
	background:var(--sam-bg);
	margin-bottom:20px;
}
.sam-hero-slider__track{
	position:relative;
	width:100%; height:100vh;
}
@media (max-width:760px){
	.sam-hero-slider{ margin-bottom:10px; }
	.sam-hero-slider__track{ height:40vh; }
}
.sam-hero-slider__slide{
	position:absolute; inset:0;
	opacity:0; visibility:hidden; pointer-events:none;
	transition:opacity .5s ease;
}
.sam-hero-slider__slide.is-active{
	opacity:1; visibility:visible; pointer-events:auto;
}
.sam-hero-slider__slide img{
	width:100%; height:100%; object-fit:cover; display:block;
}
.sam-hero-slider__nav{
	position:absolute; top:50%; transform:translateY(-50%); z-index:2;
	width:40px; height:40px; border-radius:999px; border:none;
	background:rgba(10,30,50,.45); color:#fff;
	display:flex; align-items:center; justify-content:center;
	backdrop-filter:blur(2px); transition:background .15s;
}
.sam-hero-slider__nav:hover{ background:rgba(10,30,50,.7); }
.sam-hero-slider__nav--prev{ right:16px; }
.sam-hero-slider__nav--next{ left:16px; }
.sam-hero-slider__nav--next .sam-icon{ transform:rotate(180deg); }
.sam-hero-slider__dots{
	position:absolute; bottom:14px; right:50%; transform:translateX(50%); z-index:2;
	display:flex; gap:8px; background:rgba(10,30,50,.35); padding:6px 8px; border-radius:999px;
}
.sam-hero-slider__dot{
	width:8px; height:8px; border-radius:999px; border:none; background:rgba(255,255,255,.5); padding:0;
	transition:background .15s, transform .15s;
}
.sam-hero-slider__dot.is-active{ background:#fff; transform:scale(1.2); }
@media (max-width:640px){
	.sam-hero-slider__nav{ width:34px; height:34px; }
}

/* ==========================================================================
   Hero
   ========================================================================== */
.sam-hero{
	background:
		radial-gradient(circle at 88% 12%, rgba(182,134,47,.16), transparent 42%),
		radial-gradient(circle at 6% 92%, rgba(255,255,255,.05), transparent 40%),
		linear-gradient(155deg,var(--sam-navy-900) 0%,var(--sam-navy-800) 55%,var(--sam-primary) 100%);
	color:#fff; padding:56px 0 92px; position:relative; overflow:hidden;
}
.sam-hero::after{
	content:''; position:absolute; inset:0; pointer-events:none;
	background-image:linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px),
					 linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
	background-size:42px 42px;
	mask-image:linear-gradient(180deg, rgba(0,0,0,.55), transparent 70%);
}
.sam-hero__inner{ position:relative; z-index:1; }
.sam-hero .sam-eyebrow{ color:var(--sam-accent); }
.sam-hero .sam-eyebrow::before{ background:var(--sam-accent); }
.sam-hero h1{ font-size:clamp(24px,3.4vw,36px); font-weight:800; margin-bottom:10px; letter-spacing:.005em; }
.sam-hero p{ color:rgba(255,255,255,.82); font-size:15.5px; max-width:640px; }
.sam-hero__stats{ display:flex; gap:0; margin-top:26px; flex-wrap:wrap; border-top:1px solid rgba(255,255,255,.14); padding-top:22px; }
.sam-hero__stat{ padding-left:36px; margin-left:36px; border-left:1px solid rgba(255,255,255,.14); }
.sam-hero__stat:last-child{ border-left:none; margin-left:0; padding-left:0; }
.sam-hero__stat b{ display:block; font-size:24px; font-weight:800; color:var(--sam-accent); }
.sam-hero__stat span{ font-size:12.5px; color:rgba(255,255,255,.72); }

/* ==========================================================================
   Search / quick filter bar (overlaps hero)
   ========================================================================== */
.sam-searchbar{
	position:relative; z-index:2; margin-top:-56px;
	background:var(--sam-card); border-radius:var(--sam-radius-lg);
	box-shadow:var(--sam-shadow-hover);
	padding:16px; display:flex; gap:10px; flex-wrap:wrap; align-items:center;
	border:1px solid rgba(15,35,55,.04);
}
.sam-searchbar__field{ flex:1 1 240px; position:relative; }
.sam-searchbar__field input[type="text"]{
	width:100%; border:1.5px solid var(--sam-line); border-radius:var(--sam-radius-md);
	padding:13px 44px 13px 14px; background:#fbfaf8; transition:border-color .15s, background .15s;
}
.sam-searchbar__field input:focus{ outline:none; border-color:var(--sam-primary); background:#fff; }
.sam-searchbar__field .sam-icon{ position:absolute; top:50%; right:14px; transform:translateY(-50%); color:var(--sam-ink-faint); }
.sam-searchbar .sam-deal-tabs{ display:flex; background:var(--sam-bg); border-radius:var(--sam-radius-md); padding:4px; flex-shrink:0; }
.sam-searchbar .sam-deal-tabs button{
	border:none; background:none; padding:10px 16px; border-radius:8px; font-weight:700; font-size:13.5px; color:var(--sam-ink-soft);
	transition:all .15s;
}
.sam-searchbar .sam-deal-tabs button.is-active{ background:var(--sam-primary); color:#fff; }
.sam-searchbar__submit{
	background:var(--sam-accent); color:#fff; border:none; border-radius:var(--sam-radius-md);
	padding:0 24px; height:48px; font-weight:700; font-size:14.5px; flex-shrink:0;
	display:flex; align-items:center; gap:8px; transition:background .15s, transform .15s;
}
.sam-searchbar__submit:hover{ background:var(--sam-accent-dark); transform:translateY(-1px); }

/* Advanced-filter toggle button, next to the search field */
.sam-searchbar__filters-btn{
	position:relative; flex-shrink:0;
	display:flex; align-items:center; gap:8px;
	background:#fff; color:var(--sam-ink); border:1.5px solid var(--sam-line); border-radius:var(--sam-radius-md);
	padding:0 18px; height:48px; font-weight:700; font-size:14.5px;
	transition:border-color .15s, color .15s, background .15s;
}
.sam-searchbar__filters-btn:hover{ border-color:var(--sam-primary); color:var(--sam-primary); background:var(--sam-primary-light); }
.sam-filters-btn__count{
	display:inline-flex; align-items:center; justify-content:center;
	min-width:20px; height:20px; padding:0 5px; border-radius:999px;
	background:var(--sam-accent); color:#fff; font-size:11px; font-weight:700;
}

/* ==========================================================================
   Trust strip — short, generic value props (no fabricated figures)
   ========================================================================== */
.sam-trust{ padding:30px 0 6px; }
.sam-trust__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.sam-trust__item{
	display:flex; align-items:center; gap:12px; background:var(--sam-card);
	border:1px solid var(--sam-line); border-radius:var(--sam-radius-md); padding:14px 16px;
}
.sam-trust__icon{
	flex-shrink:0; width:38px; height:38px; border-radius:9px; background:var(--sam-primary-light);
	color:var(--sam-primary); display:flex; align-items:center; justify-content:center; font-size:18px;
}
.sam-trust__item b{ display:block; font-size:13.5px; }
.sam-trust__item span{ font-size:11.5px; color:var(--sam-ink-soft); }

/* ==========================================================================
   Layout: results (the advanced filter panel is an off-canvas drawer,
   see "Advanced filter drawer" below — it no longer takes a grid column)
   ========================================================================== */
.sam-layout{ padding:34px 0 70px; }
.sam-filters__head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.sam-filters__head h3{ font-size:16px; margin:0; color:var(--sam-primary); }
.sam-filters__reset{ background:none; border:none; color:var(--sam-accent-dark); font-size:12.5px; font-weight:700; }
.sam-filter-group{ border-top:1px solid var(--sam-line); padding:16px 0; }
.sam-filter-group:first-of-type{ border-top:none; padding-top:0; }
.sam-filter-group__title{ font-weight:700; font-size:13.5px; margin-bottom:10px; display:flex; align-items:center; justify-content:space-between; color:var(--sam-ink); }
.sam-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.sam-chip{
	border:1.5px solid var(--sam-line); background:#fff; border-radius:999px; padding:7px 14px;
	font-size:12.8px; color:var(--sam-ink-soft); transition:all .15s; user-select:none;
}
.sam-chip input{ display:none; }
.sam-chip.is-selected{ background:var(--sam-primary-light); border-color:var(--sam-primary); color:var(--sam-primary); font-weight:700; }
.sam-range{ display:flex; align-items:center; gap:8px; }
.sam-range input{ width:100%; border:1.5px solid var(--sam-line); border-radius:var(--sam-radius-sm); padding:9px 10px; text-align:center; }
.sam-range input:focus{ outline:none; border-color:var(--sam-primary); }
.sam-range span{ color:var(--sam-ink-soft); font-size:12px; flex-shrink:0; }
.sam-select{ width:100%; border:1.5px solid var(--sam-line); border-radius:var(--sam-radius-sm); padding:10px 12px; background:#fff; }
.sam-filters__apply{
	width:100%; background:var(--sam-accent); color:#fff; border:none; border-radius:var(--sam-radius-md);
	padding:13px; font-weight:700; margin-top:6px; font-size:14px; transition:background .15s;
}
.sam-filters__apply:hover{ background:var(--sam-accent-dark); }

/* ==========================================================================
   Advanced filter drawer — off-canvas at every breakpoint, opened by the
   "فیلتر پیشرفته" button next to the search bar
   ========================================================================== */
.sam-filters{
	background:var(--sam-card); padding:20px;
	position:fixed; inset:0 0 0 auto; width:min(400px,92vw); height:100vh; max-height:100vh;
	z-index:120; border-radius:0; overflow:auto;
	transform:translateX(100%); transition:transform .25s;
	box-shadow:-8px 0 30px rgba(0,0,0,.2);
	border-left:3px solid var(--sam-accent);
}
body.sam-filters-open .sam-filters{ transform:translateX(0); }
body.sam-filters-open{ overflow:hidden; }
.sam-filters__backdrop{ display:none; position:fixed; inset:0; background:rgba(10,20,30,.55); z-index:110; }
body.sam-filters-open .sam-filters__backdrop{ display:block; }
.sam-filters__close{ display:block; background:none; border:none; font-size:20px; }

/* ==========================================================================
   Results area
   ========================================================================== */
.sam-results__bar{ display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; gap:12px; flex-wrap:wrap; }
.sam-results__count{ font-size:14.5px; color:var(--sam-ink-soft); }
.sam-results__count b{ color:var(--sam-primary); }
.sam-sort{ display:flex; align-items:center; gap:8px; }
.sam-sort select{ border:1.5px solid var(--sam-line); border-radius:var(--sam-radius-sm); padding:9px 12px; background:#fff; font-size:13px; }
.sam-active-filters{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.sam-active-filters .tag{
	display:flex; align-items:center; gap:6px; background:var(--sam-primary-light); color:var(--sam-primary);
	border-radius:999px; padding:6px 10px 6px 6px; font-size:12.5px; font-weight:600;
}
.sam-active-filters .tag button{ background:rgba(15,58,95,.1); border:none; border-radius:50%; width:18px; height:18px; display:flex; align-items:center; justify-content:center; font-size:11px; color:inherit; }

/* 4 columns × 5 rows = 20 listings per page on desktop; fewer columns as
   the viewport narrows, always keeping full-width even rows. */
.sam-grid{
	display:grid; grid-template-columns:repeat(4,1fr); gap:20px;
	min-height:200px; position:relative;
}
.sam-grid.is-loading{ opacity:.45; pointer-events:none; }

/* ==========================================================================
   Property card
   ========================================================================== */
.sam-card{
	background:var(--sam-card); border-radius:var(--sam-radius-lg); overflow:hidden;
	box-shadow:var(--sam-shadow); border:1px solid var(--sam-line); transition:box-shadow .2s, transform .2s, border-color .2s;
	display:flex; flex-direction:column;
}
.sam-card:hover{ box-shadow:var(--sam-shadow-hover); transform:translateY(-4px); border-color:var(--sam-accent); }
.sam-card__media{ position:relative; aspect-ratio:4/3; background:var(--sam-bg) url('assets/img/placeholder.svg') center/60% no-repeat; overflow:hidden; }
.sam-card__media img{ width:100%; height:100%; object-fit:cover; transition:transform .35s; }
.sam-card:hover .sam-card__media img{ transform:scale(1.05); }
.sam-card__media::after{
	content:''; position:absolute; inset:auto 0 0 0; height:52%; pointer-events:none;
	background:linear-gradient(0deg, rgba(10,20,30,.42), transparent);
}
.sam-card__badge{
	position:absolute; top:10px; right:10px; font-size:11.5px; font-weight:700; color:#fff;
	padding:5px 11px; border-radius:6px; backdrop-filter:blur(2px); z-index:1; letter-spacing:.01em;
}
.sam-card__badge--sale{ background:var(--sam-sale); }
.sam-card__badge--rent{ background:var(--sam-rent); }
.sam-card__badge--partnership{ background:var(--sam-partnership); }
.sam-card__fav{
	position:absolute; top:10px; left:10px; width:32px; height:32px; border-radius:50%; z-index:1;
	background:rgba(255,255,255,.92); display:flex; align-items:center; justify-content:center; color:var(--sam-ink-soft);
	border:none; transition:color .15s, transform .15s;
}
.sam-card__fav:hover{ transform:scale(1.08); }
.sam-card__fav.is-fav{ color:var(--sam-danger); }
.sam-card__fav.is-fav .sam-icon svg{ fill:currentColor; }
.sam-card__time{
	position:absolute; bottom:8px; left:8px; color:#fff; font-size:10.5px; z-index:1;
	padding:3px 8px; border-radius:999px; background:rgba(10,20,30,.5);
}
.sam-card__body{ padding:15px 15px 17px; display:flex; flex-direction:column; gap:8px; flex:1; }
.sam-card__cat{ font-size:11.5px; color:var(--sam-accent-dark); font-weight:700; }
.sam-card__title{ font-size:15px; font-weight:700; color:var(--sam-ink); line-height:1.6; min-height:2.6em;
	display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.sam-card__title a:hover{ color:var(--sam-primary); }
.sam-card__loc{ font-size:12.5px; color:var(--sam-ink-soft); display:flex; align-items:center; gap:5px; }
.sam-card__specs{ display:flex; flex-wrap:wrap; gap:10px; font-size:12px; color:var(--sam-ink-soft); border-top:1px dashed var(--sam-line); padding-top:9px; margin-top:2px; }
.sam-card__specs span{ display:flex; align-items:center; gap:4px; }
.sam-card__price{ margin-top:auto; padding-top:10px; display:flex; align-items:baseline; justify-content:space-between; border-top:1px solid var(--sam-line); }
.sam-card__price b{ font-size:16.5px; color:var(--sam-primary); font-weight:800; }
.sam-card__price small{ font-size:11.5px; color:var(--sam-ink-soft); }
.sam-card__price .unit{ font-size:11px; font-weight:700; color:var(--sam-accent-dark); }

/* ==========================================================================
   Pagination
   ========================================================================== */
.sam-pagination{ display:flex; align-items:center; justify-content:center; gap:8px; margin-top:34px; }
.sam-pagination__list{ display:flex; align-items:center; gap:6px; }
.sam-pagination__page,
.sam-pagination__nav{
	display:flex; align-items:center; justify-content:center;
	min-width:40px; height:40px; padding:0 6px; border-radius:var(--sam-radius-sm);
	background:#fff; border:1.5px solid var(--sam-line); color:var(--sam-ink); font-weight:700; font-size:13.5px;
	transition:all .15s;
}
.sam-pagination__page:hover,
.sam-pagination__nav:hover{ border-color:var(--sam-primary); color:var(--sam-primary); }
.sam-pagination__page.is-active{ background:var(--sam-primary); border-color:var(--sam-primary); color:#fff; cursor:default; }
.sam-pagination__nav.is-disabled{ opacity:.4; pointer-events:none; }
.sam-pagination__nav--next .sam-icon svg{ transform:scaleX(-1); }
.sam-pagination__ellipsis{ color:var(--sam-ink-soft); padding:0 4px; user-select:none; }

.sam-empty{ text-align:center; padding:70px 20px; color:var(--sam-ink-soft); background:var(--sam-card); border:1px dashed var(--sam-line); border-radius:var(--sam-radius-lg); }
.sam-empty svg{ margin-bottom:14px; opacity:.5; color:var(--sam-primary); }
.sam-empty h3{ color:var(--sam-ink); }

/* Skeleton loading cards */
.sam-skel{ background:var(--sam-card); border-radius:var(--sam-radius-lg); overflow:hidden; border:1px solid var(--sam-line); }
.sam-skel__media{ aspect-ratio:4/3; background:linear-gradient(90deg,#eef1f1 25%,#e4e9e9 37%,#eef1f1 63%); background-size:400% 100%; animation:sam-shimmer 1.4s infinite; }
.sam-skel__line{ height:11px; margin:14px; border-radius:6px; background:linear-gradient(90deg,#eef1f1 25%,#e4e9e9 37%,#eef1f1 63%); background-size:400% 100%; animation:sam-shimmer 1.4s infinite; }
.sam-skel__line.short{ width:50%; }
@keyframes sam-shimmer{ 0%{ background-position:100% 0; } 100%{ background-position:-100% 0; } }

/* ==========================================================================
   Single property page
   ========================================================================== */
.sam-breadcrumb{ font-size:12.5px; color:var(--sam-ink-soft); padding:16px 0; display:flex; gap:6px; flex-wrap:wrap; }
.sam-breadcrumb a{ color:var(--sam-primary); }
.sam-breadcrumb a:hover{ color:var(--sam-accent-dark); }
.sam-single{ display:grid; grid-template-columns:1fr 340px; gap:26px; padding-bottom:70px; align-items:start; }
.sam-gallery{ border-radius:var(--sam-radius-lg); overflow:hidden; border:1px solid var(--sam-line); background:#fff; }
.sam-gallery__main{ aspect-ratio:16/10; background:var(--sam-bg) url('assets/img/placeholder.svg') center/40% no-repeat; position:relative; }
.sam-gallery__main img{ width:100%; height:100%; object-fit:cover; cursor:zoom-in; }
.sam-gallery__thumbs{ display:flex; gap:8px; padding:10px; overflow-x:auto; }
.sam-gallery__thumbs img{ width:78px; height:58px; object-fit:cover; border-radius:8px; cursor:pointer; border:2px solid transparent; flex-shrink:0; }
.sam-gallery__thumbs img.is-active{ border-color:var(--sam-accent); }

.sam-single__title{ font-size:23px; font-weight:800; margin:20px 0 6px; color:var(--sam-ink); }
.sam-single__meta{ display:flex; gap:14px; flex-wrap:wrap; color:var(--sam-ink-soft); font-size:13px; margin-bottom:18px; align-items:center; }
.sam-single__meta span{ display:flex; align-items:center; gap:5px; }

/* A plain grid leaves a lopsided gap whenever the spec count doesn't
   divide evenly into a row (e.g. 7 items → a lonely last item with three
   empty cells beside it). Centered flex-wrap keeps every row — full or
   partial — visually balanced, at any item count and any breakpoint. */
.sam-spec-grid{
	display:flex; flex-wrap:wrap; justify-content:center; gap:20px 10px;
	background:var(--sam-card); border:1px solid var(--sam-line); border-radius:var(--sam-radius-lg);
	padding:20px 16px; margin-bottom:22px;
}
.sam-spec{ flex:0 1 108px; text-align:center; }
.sam-spec b{ display:block; font-size:15px; color:var(--sam-ink); }
.sam-spec span{ font-size:11.5px; color:var(--sam-ink-soft); }

.sam-single__desc{ background:var(--sam-card); border:1px solid var(--sam-line); border-radius:var(--sam-radius-lg); padding:22px; line-height:2.1; }
.sam-single__desc h3{ font-size:15.5px; margin-bottom:10px; color:var(--sam-primary); }

/* Mobile-only price section (see single-sam_property.php) — hidden on
   desktop, where the price already lives in the sticky sidebar card. */
.sam-mobile-price-card{ display:none; }

.sam-sidebar-card{ background:var(--sam-card); border:1px solid var(--sam-line); border-top:3px solid var(--sam-accent); border-radius:var(--sam-radius-lg); padding:22px; position:sticky; top:96px; box-shadow:var(--sam-shadow); }
.sam-single__title--sidebar{ margin:0 0 8px; font-size:19px; line-height:1.5; }
.sam-single__meta--sidebar{ margin:0 0 16px; padding-bottom:16px; border-bottom:1px dashed var(--sam-line); font-size:12.5px; gap:10px; }
.sam-sidebar-card__price{ font-size:23px; font-weight:800; color:var(--sam-primary); margin-bottom:4px; }
.sam-sidebar-card__price small{ font-size:12px; font-weight:400; color:var(--sam-ink-soft); }
.sam-sidebar-card__row{ display:flex; justify-content:space-between; padding:9px 0; border-top:1px dashed var(--sam-line); font-size:13px; color:var(--sam-ink-soft); }
.sam-sidebar-card__row b{ color:var(--sam-ink); font-weight:600; }
.sam-cta-btn{ display:flex; align-items:center; justify-content:center; gap:8px; width:100%; padding:14px; border-radius:var(--sam-radius-md); border:none; font-weight:700; font-size:14.5px; margin-top:14px; transition:all .15s; }
.sam-cta-btn--primary{ background:var(--sam-primary); color:#fff; box-shadow:0 4px 12px rgba(15,58,95,.25); }
.sam-cta-btn--primary:hover{ background:var(--sam-navy-700); transform:translateY(-1px); }
.sam-cta-btn--ghost{ background:#fff; border:1.5px solid var(--sam-whatsapp); color:var(--sam-whatsapp); }
.sam-cta-btn--ghost:hover{ background:var(--sam-whatsapp); color:#fff; }

/* Sticky "call / WhatsApp" bar — mobile & tablet only, where the price
   card no longer sits beside the content and would otherwise require a
   long scroll to reach. `position:sticky` (not `fixed`) so it naturally
   scrolls away with the page once the footer comes up, instead of ever
   covering it. */
.sam-mobile-cta{ display:none; }
@media (max-width:1080px){
	.sam-mobile-cta{
		display:flex; gap:10px; position:sticky; bottom:0; z-index:40;
		background:#fff; border-top:1px solid var(--sam-line);
		padding:12px 20px; margin:20px -20px 0;
		box-shadow:0 -10px 24px rgba(15,35,55,.1);
	}
	.sam-mobile-cta .sam-cta-btn{ margin-top:0; }
}

.sam-related{ padding:10px 0 60px; }
.sam-related h2{ font-size:19px; margin-bottom:16px; color:var(--sam-ink); position:relative; padding-right:14px; }
.sam-related h2::before{ content:''; position:absolute; right:0; top:3px; bottom:3px; width:4px; background:var(--sam-accent); border-radius:3px; }

/* ==========================================================================
   Contact form — "ارتباط با ما" section on the front page, just above
   the footer. Sits directly on the page background, no card/border of
   its own — the form fields carry the visual weight instead.
   ========================================================================== */
.sam-contact-section{ padding:20px 0; }
.sam-contact-section__inner{
	display:flex; align-items:center; gap:48px; flex-wrap:wrap;
	background:var(--sam-card); border:1px solid var(--sam-line); border-radius:16px;
	padding:40px; box-shadow:var(--sam-shadow);
}
.sam-contact-form{ flex:1 1 360px; min-width:280px; max-width:520px; }
.sam-contact-form__field{ margin-bottom:14px; }
.sam-contact-form__field input,
.sam-contact-form__field select,
.sam-contact-form__field textarea{
	width:100%; border:1.5px solid var(--sam-line); border-radius:var(--sam-radius-lg);
	padding:14px 18px; background:#fff; font-family:inherit; font-size:14px; color:var(--sam-ink);
	transition:border-color .15s, background .15s;
}
.sam-contact-form__field select{ appearance:auto; color:var(--sam-ink-soft); }
.sam-contact-form__field textarea{ resize:vertical; min-height:110px; }
.sam-contact-form__field input:focus,
.sam-contact-form__field select:focus,
.sam-contact-form__field textarea:focus{ outline:none; border-color:var(--sam-primary); background:#fbfaf8; }
.sam-hp-field{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; opacity:0; pointer-events:none; }
.sam-contact-form__submit{
	width:100%; background:var(--sam-primary); color:#fff; border:none; border-radius:999px;
	padding:15px; font-weight:700; font-size:14.5px; transition:background .15s, opacity .15s;
}
.sam-contact-form__submit:hover{ background:var(--sam-navy-700); }
.sam-contact-form__submit:disabled{ opacity:.6; }
.sam-contact-form__msg{
	margin:12px 0 0; font-size:13px; padding:10px 14px; border-radius:var(--sam-radius-sm);
}
.sam-contact-form__msg.is-success{ background:#e9f6ee; color:#1e6b3e; }
.sam-contact-form__msg.is-error{ background:#faeaea; color:var(--sam-danger); }
.sam-contact-section__art{ flex:1 1 320px; min-width:260px; max-width:520px; text-align:center; }
.sam-contact-section__art img{ width:100%; max-width:460px; height:auto; }
.sam-contact-section + .sam-footer{ margin-top:20px; }
@media (max-width:640px){
	.sam-contact-section__inner{ gap:28px; padding:24px; }
}

/* ==========================================================================
   Footer
   ========================================================================== */
.sam-footer{ background:var(--sam-navy-900); color:rgba(255,255,255,.72); margin-top:40px; padding:52px 0 22px; }
.sam-footer__grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:30px; }
.sam-footer h4{ color:#fff; font-size:14.5px; margin-bottom:16px; position:relative; padding-bottom:10px; }
.sam-footer h4::after{ content:''; position:absolute; right:0; bottom:0; width:26px; height:2px; background:var(--sam-accent); }
.sam-footer a{ display:flex; align-items:center; gap:8px; padding:4px 0; font-size:13px; color:rgba(255,255,255,.68); transition:color .15s; }
.sam-footer a:hover{ color:var(--sam-accent); }
.sam-footer .sam-icon{ color:var(--sam-accent); font-size:12px; flex-shrink:0; }
.sam-footer__social{ display:flex; gap:10px; margin-top:16px; }
.sam-footer__social a{
	display:flex; align-items:center; justify-content:center; padding:0;
	width:34px; height:34px; border-radius:50%; border:1px solid rgba(255,255,255,.16);
	color:rgba(255,255,255,.8); font-size:15px; transition:all .15s;
}
.sam-footer__social a:hover{ background:var(--sam-accent); border-color:var(--sam-accent); color:#fff; }
.sam-footer__bottom{ border-top:1px solid rgba(255,255,255,.12); margin-top:34px; padding-top:18px; font-size:12px; text-align:center; color:rgba(255,255,255,.5); }

/* ==========================================================================
   Utility / misc
   ========================================================================== */
.sam-lightbox{ position:fixed; inset:0; background:rgba(8,16,24,.94); z-index:200; display:flex; align-items:center; justify-content:center; }
.sam-lightbox img{ max-width:92vw; max-height:88vh; border-radius:6px; }
.sam-lightbox__close{ position:absolute; top:20px; left:24px; background:rgba(255,255,255,.15); color:#fff; border:none; width:40px; height:40px; border-radius:50%; font-size:18px; }
.sam-lightbox__nav{ position:absolute; top:50%; transform:translateY(-50%); background:rgba(255,255,255,.15); color:#fff; border:none; width:44px; height:44px; border-radius:50%; font-size:20px; }
.sam-lightbox__nav.prev{ right:24px; }
.sam-lightbox__nav.next{ left:24px; }

.sam-icon{ display:inline-flex; }
.sam-icon svg{ width:1em; height:1em; }

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:1080px){
	.sam-single{ grid-template-columns:1fr; }
	.sam-sidebar-card{ position:static; }
	.sam-grid{ grid-template-columns:repeat(3,1fr); }
	.sam-trust__grid{ grid-template-columns:repeat(2,1fr); }

	/* The gallery/specs/price/description wrapper stops being its own box
	   and hands its children straight to the .sam-single grid, so each one
	   can be reordered independently instead of moving as one fixed block
	   — that's what lets the gallery jump ahead of the title card below
	   without dragging specs/price/description along with it. */
	.sam-single > div{ display:contents; }

	/* Stacked mobile order: photo first, then the title/meta card, then
	   the rest of the file's details. */
	.sam-gallery{ order:-2; }
	.sam-single > aside{ order:-1; }

	/* These used to rely on normal block-flow margins inside the wrapper
	   div above; now that they're plain grid items, .sam-single's own
	   row-gap already spaces them out, so the old margins would double up. */
	.sam-spec-grid{ margin-bottom:0; }

	/* Once the sidebar drops above the specs/price/description instead of
	   sitting beside them, its full spec recap just repeats what the spec
	   grid below already says — keep only the title/meta there and let
	   the sticky bar below own the actual "call / message" actions, so
	   they never require scrolling past the whole page to reach. The
	   price moves out entirely into its own section (.sam-mobile-price-card)
	   right above the description, instead of being stranded next to the
	   title at the very top. */
	.sam-sidebar-card{ padding:16px 20px; }
	.sam-sidebar-card__price-block,
	.sam-sidebar-card__row,
	.sam-sidebar-card .sam-cta-btn{ display:none; }

	.sam-mobile-price-card{
		display:block; background:var(--sam-card); border:1px solid var(--sam-line);
		border-top:3px solid var(--sam-accent); border-radius:var(--sam-radius-lg);
		padding:16px 20px;
	}
}
@media (max-width:900px){
	.sam-filters{ width:min(340px,88vw); }
	.sam-searchbar__filters-btn{ padding:0 14px; font-size:13px; }
	.sam-grid{ grid-template-columns:repeat(2,1fr); gap:14px; }
	.sam-topbar{ display:none; }
}
@media (max-width:760px){
	.sam-header__inner{ height:64px; gap:10px; }
	.sam-header__cta{ width:42px; height:42px; padding:0; justify-content:center; }
	.sam-header__cta-label{ display:none; }
	.sam-nav{ display:none; }
	.sam-nav.is-open{
		display:flex; flex-direction:column; position:absolute; top:64px; right:0; left:0;
		background:#fff; border-bottom:1px solid var(--sam-line); padding:10px 20px 16px; box-shadow:var(--sam-shadow-hover); gap:2px;
	}
	.sam-nav.is-open a{ padding:10px 0; border-bottom:1px solid var(--sam-line); }
	.sam-nav.is-open a::after{ display:none; }
	.sam-header__burger{ display:flex; }

	/* Deal-type tabs ("همه / فروش / مشارکت در ساخت / رهن و اجاره") can't
	   shrink and don't wrap internally, so on a narrow screen they used to
	   overflow past the edge of the search bar instead of laying out
	   sanely. Give them their own full-width, horizontally-scrollable row
	   and stack the rest of the search bar underneath. */
	.sam-searchbar{ padding:12px; gap:10px; }
	.sam-searchbar .sam-deal-tabs{
		width:100%; max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;
		scrollbar-width:none; -ms-overflow-style:none;
	}
	.sam-searchbar .sam-deal-tabs::-webkit-scrollbar{ display:none; }
	.sam-searchbar .sam-deal-tabs{ padding:3px; }
	.sam-searchbar .sam-deal-tabs button{ white-space:nowrap; flex-shrink:0; padding:7px 12px; font-size:12px; }
	.sam-searchbar__field{ flex:1 1 100%; }
	.sam-searchbar__filters-btn{ flex:1 1 calc(50% - 5px); justify-content:center; padding:0 10px; }
	.sam-searchbar__submit{ flex:1 1 calc(50% - 5px); justify-content:center; padding:0 10px; }

	.sam-hero{ padding:34px 0 78px; }
	.sam-hero__stats{ gap:0; justify-content:center; text-align:center; }
	.sam-hero__stat{ padding-left:20px; margin-left:20px; }
	.sam-trust__grid{ grid-template-columns:1fr; }
	.sam-footer__grid{ grid-template-columns:1fr; gap:26px; }
	.sam-grid{ grid-template-columns:repeat(2,1fr); gap:12px; }
	.sam-card__title{ font-size:13.5px; }
	.sam-pagination__list{ gap:4px; }
	.sam-pagination__page,
	.sam-pagination__nav{ min-width:34px; height:34px; font-size:12.5px; }
}
@media (max-width:480px){
	.sam-grid{ grid-template-columns:1fr; }
}
