@if (Model.ShowContact)
@@ -93,11 +93,13 @@
{
✓ این فرصت ذخیره شد و در پیشنهادهای شما لحاظ میشود.
}
-
-
با اعلام تمایل، اطلاعات تماس مرکز نمایش داده میشود.
+
+
+
با اعلام تمایل، اطلاعات تماس مرکز نمایش داده میشود.
+
+@* Sticky bottom action bar — mobile only. Always-reachable primary action (native-app feel). *@
+
+ @if (Model.ShowContact)
+ {
+ @if (!string.IsNullOrEmpty(f.Phone))
+ {
+
📞 تماس با مرکز
+ }
+ else
+ {
+
اطلاعات تماس در بالای صفحه
+ }
+ }
+ else
+ {
+
+
+ }
+
+
@if (!string.IsNullOrEmpty(Model.MapKey) && Model.Shift?.Facility?.Lat is not null)
{
diff --git a/src/JobsMedical.Web/wwwroot/css/site.css b/src/JobsMedical.Web/wwwroot/css/site.css
index 47fc642..bbcae90 100644
--- a/src/JobsMedical.Web/wwwroot/css/site.css
+++ b/src/JobsMedical.Web/wwwroot/css/site.css
@@ -256,6 +256,25 @@ label { font-size: 13px; }
.tour-count { font-size: 12px; color: var(--muted); }
.tour-btns { display: flex; gap: 6px; }
+/* ---------- Mobile sticky action bar (detail pages feel like a native app) ---------- */
+.mobile-action-bar { display: none; }
+@media (max-width: 860px) {
+ .mobile-action-bar {
+ display: flex; gap: 8px; align-items: stretch;
+ position: fixed; inset-inline: 0; bottom: 0; z-index: 95;
+ padding: 10px 14px; padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px));
+ background: var(--surface); border-top: 1px solid var(--line);
+ box-shadow: 0 -8px 24px rgba(0,0,0,.10);
+ }
+ .mobile-action-bar form { margin: 0; }
+ .mobile-action-bar .cta-main { flex: 1; }
+ .mobile-action-bar .btn { margin: 0; }
+ /* breathing room so the fixed bar never covers page content */
+ .has-action-bar { padding-bottom: 92px; }
+ /* the in-aside primary CTA is redundant on mobile — the sticky bar replaces it */
+ .aside-apply { display: none; }
+}
+
/* ---------- Admin settings: sidebar tabs ---------- */
.settings-layout { display: grid; grid-template-columns: 220px 1fr; gap: 18px; align-items: start; }
.settings-tabs {