Skip to content
EN  FR  ES  IT  PO  ا  ·  EUR €
Plan my trip on WhatsApp

<link rel=”preconnect” href=”https://fonts.googleapis.com”>
<link rel=”preconnect” href=”https://fonts.gstatic.com” crossorigin>
<link href=”https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,300;0,400;0,600;1,300;1,400&#038;family=DM+Sans:wght@300;400;500&#038;family=Playfair+Display:ital,wght@0,700;1,500&#038;display=swap” rel=”stylesheet”>

<style>
/* ── ALL STYLES SCOPED UNDER .dnm-article-root ── */
.dnm-article-root *,
.dnm-article-root *::before,
.dnm-article-root *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}

.dnm-article-root {
–dnm-gold: #C9A84C;
–dnm-gold-light: #E8C97A;
–dnm-terracotta: #C1663A;
–dnm-deep: #1A1208;
–dnm-ink: #2C2014;
–dnm-muted: #6B5B45;
–dnm-warm-gray: #8C7B68;
–dnm-cream: #F5EFE6;
–dnm-teal: #2A5C5A;
–dnm-teal-light: #3D7A78;
–dnm-border: rgba(201,168,76,0.25);
–dnm-font-display: ‘Playfair Display’, Georgia, serif;
–dnm-font-serif: ‘Cormorant Garamond’, Georgia, serif;
–dnm-font-sans: ‘DM Sans’, system-ui, sans-serif;
background: transparent;
color: var(–dnm-ink);
font-family: var(–dnm-font-sans);
font-size: 16px;
line-height: 1.8;
width: 100%;
display: block;
}

.dnm-article-root .dnm-wrap {
width: 100%;
max-width: 900px;
margin: 0 auto;
padding: 0 clamp(16px, 4vw, 48px);
}

/* ── HERO ── */
.dnm-article-root .dnm-hero {
position: relative;
width: 100%;
border-radius: clamp(8px, 1.5vw, 16px);
overflow: hidden;
margin-bottom: 44px;
background: linear-gradient(135deg, #1A1208 0%, #2C3E1A 40%, #1E3A38 100%);
min-height: clamp(200px, 38vw, 440px);
display: flex;
flex-direction: column;
justify-content: flex-end;
}

.dnm-article-root .dnm-hero::before {
content: ”;
position: absolute;
inset: 0;
background:
radial-gradient(ellipse 70% 60% at 80% 30%, rgba(201,168,76,0.18) 0%, transparent 60%),
radial-gradient(ellipse 50% 50% at 15% 70%, rgba(193,102,58,0.15) 0%, transparent 55%);
z-index: 1;
}

.dnm-article-root .dnm-hero-placeholder {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0.45;
z-index: 0;
}

.dnm-article-root .dnm-hero-content {
position: relative;
z-index: 2;
padding: clamp(18px, 4vw, 48px);
}

.dnm-article-root .dnm-hero-badge {
display: inline-flex;
align-items: center;
gap: 7px;
background: rgba(201,168,76,0.15);
border: 1px solid rgba(201,168,76,0.45);
border-radius: 100px;
padding: 5px 13px;
font-family: var(–dnm-font-sans);
font-size: 10.5px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(–dnm-gold-light);
margin-bottom: 15px;
}

.dnm-article-root .dnm-hero-badge::before { content: ‘✦’; font-size: 8px; }

.dnm-article-root .dnm-hero h1 {
font-family: var(–dnm-font-display);
font-size: clamp(20px, 4.5vw, 48px);
font-weight: 700;
color: #fff;
line-height: 1.15;
margin-bottom: 13px;
text-shadow: 0 2px 24px rgba(0,0,0,0.5);
}

.dnm-article-root .dnm-hero h1 em { font-style: italic; color: var(–dnm-gold-light); }

.dnm-article-root .dnm-hero-sub {
font-family: var(–dnm-font-sans);
font-size: clamp(12.5px, 1.7vw, 15.5px);
font-weight: 300;
color: rgba(255,255,255,0.75);
max-width: 560px;
line-height: 1.65;
}

.dnm-article-root .dnm-hero-meta {
display: flex;
align-items: center;
gap: 14px;
margin-top: 18px;
flex-wrap: wrap;
}

.dnm-article-root .dnm-hero-meta span {
font-size: 11.5px;
font-weight: 400;
color: rgba(255,255,255,0.55);
letter-spacing: 0.04em;
}

.dnm-article-root .dnm-hero-meta .dnm-dot {
width: 3px; height: 3px;
border-radius: 50%;
background: var(–dnm-gold);
opacity: 0.6;
}

/* ── INLINE TOC ── */
.dnm-article-root .dnm-toc-wrapper { margin-bottom: 44px; }

.dnm-article-root .dnm-toc-inline {
background: #F9F4EC;
border: 1px solid var(–dnm-border);
border-left: 3px solid var(–dnm-gold);
border-radius: 9px;
overflow: hidden;
box-shadow: 0 2px 18px rgba(26,18,8,0.09);
}

.dnm-article-root .dnm-toc-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 17px;
cursor: pointer;
user-select: none;
background: rgba(201,168,76,0.09);
border-bottom: 1px solid transparent;
gap: 10px;
transition: background 0.2s;
}

.dnm-article-root .dnm-toc-header:hover { background: rgba(201,168,76,0.14); }
.dnm-article-root .dnm-toc-inline.is-open .dnm-toc-header { border-bottom-color: var(–dnm-border); }

.dnm-article-root .dnm-toc-title {
font-family: var(–dnm-font-sans);
font-size: 10.5px;
font-weight: 500;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(–dnm-gold);
display: flex;
align-items: center;
gap: 6px;
}

.dnm-article-root .dnm-toc-toggle {
font-family: var(–dnm-font-sans);
font-size: 10.5px;
color: var(–dnm-warm-gray);
display: flex;
align-items: center;
gap: 5px;
flex-shrink: 0;
white-space: nowrap;
}

.dnm-article-root .dnm-toc-toggle-icon {
display: inline-block;
transition: transform 0.28s ease;
font-size: 9px;
color: var(–dnm-gold);
}

.dnm-article-root .dnm-toc-inline.is-open .dnm-toc-toggle-icon { transform: rotate(180deg); }

.dnm-article-root .dnm-toc-body {
max-height: 0;
overflow: hidden;
transition: max-height 0.35s cubic-bezier(0.4,0,0.2,1);
}

.dnm-article-root .dnm-toc-inline.is-open .dnm-toc-body { max-height: 800px; }

.dnm-article-root .dnm-toc-inner { padding: 13px 20px 17px; }

.dnm-article-root .dnm-toc-inline ol { padding-left: 16px; }

.dnm-article-root .dnm-toc-inline li {
font-family: var(–dnm-font-sans);
font-size: 12.5px;
color: var(–dnm-muted);
margin-bottom: 4px;
line-height: 1.5;
}

.dnm-article-root .dnm-toc-inline li a { color: var(–dnm-muted); text-decoration: none; transition: color 0.2s; }
.dnm-article-root .dnm-toc-inline li a:hover { color: var(–dnm-terracotta); }

/* ── BACK TO TOC ARROW ── */
.dnm-article-root .dnm-h2-row {
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
margin-bottom: 16px;
}

.dnm-article-root .dnm-h2 {
font-family: var(–dnm-font-display);
font-size: clamp(19px, 3vw, 30px);
font-weight: 700;
color: var(–dnm-deep);
line-height: 1.25;
flex: 1;
margin-bottom: 0;
}

.dnm-article-root .dnm-back-toc {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border-radius: 50%;
border: 1px solid var(–dnm-border);
background: rgba(201,168,76,0.07);
color: var(–dnm-gold);
font-size: 13px;
text-decoration: none;
flex-shrink: 0;
margin-top: 4px;
transition: background 0.2s, border-color 0.2s, transform 0.2s;
line-height: 1;
}

.dnm-article-root .dnm-back-toc:hover {
background: rgba(201,168,76,0.18);
border-color: var(–dnm-gold);
transform: translateY(-2px);
text-decoration: none;
color: var(–dnm-deep);
}

/* ── SECTIONS ── */
.dnm-article-root .dnm-section { margin-bottom: 52px; scroll-margin-top: 68px; }

.dnm-article-root .dnm-section-label {
display: flex;
align-items: center;
gap: 10px;
font-family: var(–dnm-font-sans);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(–dnm-terracotta);
margin-bottom: 9px;
}

.dnm-article-root .dnm-section-label::after {
content: ”;
flex: 1;
height: 1px;
background: linear-gradient(to right, rgba(193,102,58,0.3), transparent);
}

.dnm-article-root .dnm-h3 {
font-family: var(–dnm-font-serif);
font-size: clamp(16px, 2.2vw, 22px);
font-weight: 600;
color: var(–dnm-ink);
line-height: 1.35;
margin-bottom: 11px;
margin-top: 26px;
}

.dnm-article-root .dnm-p {
font-family: var(–dnm-font-sans);
font-size: clamp(13.5px, 1.6vw, 15.5px);
font-weight: 300;
color: #3A2E20;
line-height: 1.9;
margin-bottom: 15px;
}

.dnm-article-root .dnm-p a,
.dnm-article-root .dnm-inline-link {
color: var(–dnm-teal);
text-decoration: underline;
text-decoration-color: rgba(42,92,90,0.35);
text-underline-offset: 3px;
transition: color 0.2s;
font-weight: 400;
}

.dnm-article-root .dnm-p a:hover,
.dnm-article-root .dnm-inline-link:hover {
color: var(–dnm-terracotta);
text-decoration-color: rgba(193,102,58,0.5);
}

/* ── PULL QUOTE ── */
.dnm-article-root .dnm-pullquote {
border-left: 3px solid var(–dnm-gold);
padding: 16px 24px;
margin: 28px 0;
background: rgba(201,168,76,0.06);
border-radius: 0 9px 9px 0;
}

.dnm-article-root .dnm-pullquote p {
font-family: var(–dnm-font-serif);
font-size: clamp(15px, 2.2vw, 20px);
font-style: italic;
font-weight: 400;
color: var(–dnm-ink);
line-height: 1.6;
margin: 0;
}

/* ── IMAGE ── */
.dnm-article-root .dnm-img-block {
width: 100%;
border-radius: 11px;
overflow: hidden;
margin: 24px 0;
background: rgba(201,168,76,0.06);
border: 1px solid var(–dnm-border);
}

.dnm-article-root .dnm-img-block img { width: 100%; height: auto; display: block; object-fit: cover; }

.dnm-article-root .dnm-img-caption {
padding: 8px 13px;
font-family: var(–dnm-font-sans);
font-size: 11.5px;
color: var(–dnm-warm-gray);
font-style: italic;
text-align: center;
}

/* ── CITY CARDS ── */
.dnm-article-root .dnm-city-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
gap: 14px;
margin: 22px 0 28px;
}

.dnm-article-root .dnm-city-card {
border: 1px solid var(–dnm-border);
border-radius: 11px;
padding: 18px 16px;
background: rgba(201,168,76,0.04);
transition: border-color 0.25s, transform 0.25s;
position: relative;
overflow: hidden;
}

.dnm-article-root .dnm-city-card::before {
content: ”;
position: absolute;
top: 0; left: 0; right: 0;
height: 3px;
background: linear-gradient(to right, var(–dnm-gold), var(–dnm-terracotta));
opacity: 0;
transition: opacity 0.25s;
}

.dnm-article-root .dnm-city-card:hover { border-color: rgba(201,168,76,0.5); transform: translateY(-2px); }
.dnm-article-root .dnm-city-card:hover::before { opacity: 1; }

.dnm-article-root .dnm-city-name { font-family: var(–dnm-font-display); font-size: 18px; font-weight: 700; color: var(–dnm-deep); margin-bottom: 5px; }

.dnm-article-root .dnm-city-tag {
display: inline-block;
background: rgba(193,102,58,0.1);
color: var(–dnm-terracotta);
border-radius: 5px;
padding: 2px 8px;
font-size: 10px;
font-weight: 500;
letter-spacing: 0.05em;
margin-bottom: 9px;
}

.dnm-article-root .dnm-city-desc { font-family: var(–dnm-font-sans); font-size: 12.5px; color: var(–dnm-muted); line-height: 1.7; }

.dnm-article-root .dnm-city-speed {
margin-top: 9px;
font-size: 11.5px;
color: var(–dnm-warm-gray);
display: flex;
align-items: center;
gap: 5px;
}

.dnm-article-root .dnm-city-speed::before { content: ‘⚡’; font-size: 11px; }

/* ── INFO BOX ── */
.dnm-article-root .dnm-infobox {
background: rgba(42,92,90,0.07);
border: 1px solid rgba(42,92,90,0.2);
border-radius: 11px;
padding: 20px 24px;
margin: 24px 0;
}

.dnm-article-root .dnm-infobox-title {
font-family: var(–dnm-font-sans);
font-size: 10.5px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(–dnm-teal);
margin-bottom: 11px;
display: flex;
align-items: center;
gap: 6px;
}

.dnm-article-root .dnm-infobox ul { padding-left: 0; list-style: none; }

.dnm-article-root .dnm-infobox li {
font-family: var(–dnm-font-sans);
font-size: 13.5px;
color: #3A2E20;
line-height: 1.7;
padding: 6px 0;
border-bottom: 1px solid rgba(42,92,90,0.1);
display: flex;
align-items: flex-start;
gap: 8px;
}

.dnm-article-root .dnm-infobox li:last-child { border-bottom: none; }

.dnm-article-root .dnm-infobox li::before {
content: ‘→’;
color: var(–dnm-teal);
font-size: 11.5px;
flex-shrink: 0;
margin-top: 3px;
}

/* ── DIVIDER ── */
.dnm-article-root .dnm-divider {
display: flex;
align-items: center;
gap: 12px;
margin: 44px 0;
}

.dnm-article-root .dnm-divider::before,
.dnm-article-root .dnm-divider::after {
content: ”;
flex: 1;
height: 1px;
background: linear-gradient(to right, transparent, var(–dnm-border), transparent);
}

.dnm-article-root .dnm-divider span { font-size: 15px; color: var(–dnm-gold); opacity: 0.7; }

/* ── BOOKING ── */
.dnm-article-root .dnm-booking {
border: 1px solid var(–dnm-border);
border-radius: 14px;
overflow: hidden;
margin: 44px 0;
background: linear-gradient(135deg, rgba(26,18,8,0.04) 0%, rgba(42,92,90,0.06) 100%);
}

.dnm-article-root .dnm-booking-header {
background: linear-gradient(135deg, #1A2C1A 0%, #1E3A38 100%);
padding: 24px 28px;
position: relative;
overflow: hidden;
}

.dnm-article-root .dnm-booking-header::before {
content: ”;
position: absolute;
inset: 0;
background: radial-gradient(ellipse at 80% 50%, rgba(201,168,76,0.2) 0%, transparent 60%);
}

.dnm-article-root .dnm-booking-header-label {
font-family: var(–dnm-font-sans);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(–dnm-gold-light);
margin-bottom: 6px;
position: relative;
z-index: 1;
}

.dnm-article-root .dnm-booking-header-title {
font-family: var(–dnm-font-display);
font-size: clamp(17px, 2.6vw, 24px);
font-weight: 700;
color: #fff;
position: relative;
z-index: 1;
line-height: 1.2;
}

.dnm-article-root .dnm-booking-body { padding: clamp(16px, 2.5vw, 28px); }

.dnm-article-root .dnm-guide-profile {
display: flex;
align-items: center;
gap: 20px;
margin-bottom: 20px;
flex-wrap: wrap;
}

.dnm-article-root .dnm-guide-img {
width: 80px;
height: 80px;
border-radius: 50%;
object-fit: cover;
border: 3px solid var(–dnm-gold);
flex-shrink: 0;
box-shadow: 0 4px 16px rgba(201,168,76,0.25);
}

.dnm-article-root .dnm-guide-info { flex: 1; min-width: 160px; }
.dnm-article-root .dnm-guide-name { font-family: var(–dnm-font-display); font-size: 20px; font-weight: 700; color: var(–dnm-deep); margin-bottom: 3px; }
.dnm-article-root .dnm-guide-license { font-family: var(–dnm-font-sans); font-size: 11.5px; color: var(–dnm-teal); font-weight: 500; margin-bottom: 4px; letter-spacing: 0.03em; }
.dnm-article-root .dnm-guide-desc { font-family: var(–dnm-font-sans); font-size: 12.5px; color: var(–dnm-muted); line-height: 1.65; }
.dnm-article-root .dnm-booking-text { font-family: var(–dnm-font-sans); font-size: 13.5px; color: #3A2E20; line-height: 1.8; margin-bottom: 20px; }

.dnm-article-root .dnm-wa-btn {
display: inline-flex;
align-items: center;
gap: 10px;
background: #25D366;
color: #fff;
text-decoration: none;
border-radius: 10px;
padding: 12px 24px;
font-family: var(–dnm-font-sans);
font-size: 14px;
font-weight: 500;
letter-spacing: 0.02em;
transition: background 0.22s, transform 0.2s, box-shadow 0.2s;
box-shadow: 0 4px 14px rgba(37,211,102,0.3);
}

.dnm-article-root .dnm-wa-btn:hover {
background: #1ebe5c;
transform: translateY(-2px);
box-shadow: 0 8px 22px rgba(37,211,102,0.4);
color: #fff;
text-decoration: none;
}

.dnm-article-root .dnm-wa-icon { font-size: 18px; line-height: 1; }
.dnm-article-root .dnm-booking-note { font-family: var(–dnm-font-sans); font-size: 11.5px; color: var(–dnm-warm-gray); margin-top: 9px; font-style: italic; }

/* ── STATS ── */
.dnm-article-root .dnm-stats-row {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
gap: 12px;
margin: 24px 0;
}

.dnm-article-root .dnm-stat {
text-align: center;
padding: 18px 12px;
border: 1px solid var(–dnm-border);
border-radius: 10px;
background: rgba(201,168,76,0.04);
}

.dnm-article-root .dnm-stat-value { font-family: var(–dnm-font-display); font-size: clamp(19px, 3.2vw, 32px); font-weight: 700; color: var(–dnm-terracotta); line-height: 1.1; margin-bottom: 4px; }
.dnm-article-root .dnm-stat-label { font-family: var(–dnm-font-sans); font-size: 10.5px; color: var(–dnm-warm-gray); font-weight: 400; letter-spacing: 0.04em; }

/* ── ERGO BOX ── */
.dnm-article-root .dnm-ergo-box {
border: 1px solid rgba(201,168,76,0.3);
border-radius: 11px;
padding: 20px 24px;
margin: 22px 0;
background: rgba(201,168,76,0.05);
display: flex;
gap: 16px;
align-items: flex-start;
flex-wrap: wrap;
}

.dnm-article-root .dnm-ergo-icon { font-size: 28px; flex-shrink: 0; margin-top: 2px; }
.dnm-article-root .dnm-ergo-content { flex: 1; min-width: 180px; }
.dnm-article-root .dnm-ergo-title { font-family: var(–dnm-font-sans); font-size: 13px; font-weight: 500; color: var(–dnm-deep); margin-bottom: 6px; }
.dnm-article-root .dnm-ergo-text { font-family: var(–dnm-font-sans); font-size: 12.5px; color: var(–dnm-muted); line-height: 1.7; }
.dnm-article-root .dnm-ergo-text a { color: var(–dnm-teal); text-decoration: underline; text-decoration-color: rgba(42,92,90,0.35); text-underline-offset: 3px; font-weight: 400; transition: color 0.2s; }
.dnm-article-root .dnm-ergo-text a:hover { color: var(–dnm-terracotta); }

/* ── TECH LINKS ── */
.dnm-article-root .dnm-tech-row { display: flex; gap: 10px; flex-wrap: wrap; margin: 14px 0; }

.dnm-article-root .dnm-tech-link {
display: inline-flex;
align-items: center;
gap: 6px;
border: 1px solid var(–dnm-border);
border-radius: 8px;
padding: 8px 14px;
text-decoration: none;
font-family: var(–dnm-font-sans);
font-size: 12px;
font-weight: 500;
color: var(–dnm-ink);
background: rgba(255,255,255,0.5);
transition: border-color 0.2s, background 0.2s, transform 0.2s;
}

.dnm-article-root .dnm-tech-link:hover { border-color: var(–dnm-gold); background: rgba(201,168,76,0.08); transform: translateY(-2px); text-decoration: none; color: var(–dnm-deep); }
.dnm-article-root .dnm-tech-link-icon { font-size: 14px; }

/* ── VISA BOX ── */
.dnm-article-root .dnm-visa-box {
border-radius: 11px;
padding: 22px 26px;
background: linear-gradient(135deg, rgba(42,92,90,0.09) 0%, rgba(42,92,90,0.04) 100%);
border: 1px solid rgba(42,92,90,0.22);
margin: 22px 0;
}

.dnm-article-root .dnm-visa-box-title { font-family: var(–dnm-font-display); font-size: 18px; font-weight: 700; color: var(–dnm-teal); margin-bottom: 11px; }
.dnm-article-root .dnm-visa-box p { font-family: var(–dnm-font-sans); font-size: 13.5px; color: #3A2E20; line-height: 1.8; margin-bottom: 10px; }
.dnm-article-root .dnm-visa-box p:last-child { margin-bottom: 0; }
.dnm-article-root .dnm-visa-box a { color: var(–dnm-teal); text-decoration: underline; text-underline-offset: 3px; transition: color 0.2s; }
.dnm-article-root .dnm-visa-box a:hover { color: var(–dnm-terracotta); }

/* ── WARNING BOX ── */
.dnm-article-root .dnm-warning-box {
border-radius: 11px;
padding: 18px 22px;
background: rgba(193,102,58,0.07);
border: 1px solid rgba(193,102,58,0.28);
margin: 20px 0;
display: flex;
gap: 13px;
align-items: flex-start;
}

.dnm-article-root .dnm-warning-icon { font-size: 19px; flex-shrink: 0; margin-top: 1px; }
.dnm-article-root .dnm-warning-content { flex: 1; }
.dnm-article-root .dnm-warning-title { font-family: var(–dnm-font-sans); font-size: 11.5px; font-weight: 500; color: var(–dnm-terracotta); margin-bottom: 4px; letter-spacing: 0.04em; text-transform: uppercase; }
.dnm-article-root .dnm-warning-text { font-family: var(–dnm-font-sans); font-size: 13px; color: #3A2E20; line-height: 1.75; }
.dnm-article-root .dnm-warning-text a { color: var(–dnm-teal); text-decoration: underline; text-underline-offset: 3px; transition: color 0.2s; }

/* ── TRAIN CARD ── */
.dnm-article-root .dnm-train-card {
border: 1px solid rgba(42,92,90,0.25);
border-radius: 11px;
padding: 20px 24px;
margin: 22px 0;
background: linear-gradient(135deg, rgba(42,92,90,0.07) 0%, rgba(26,18,8,0.03) 100%);
position: relative;
overflow: hidden;
}

.dnm-article-root .dnm-train-card::before { content: ‘🚄’; position: absolute; right: 20px; top: 16px; font-size: 32px; opacity: 0.15; }
.dnm-article-root .dnm-train-card-title { font-family: var(–dnm-font-display); font-size: 18px; font-weight: 700; color: var(–dnm-teal); margin-bottom: 8px; }
.dnm-article-root .dnm-train-card p { font-family: var(–dnm-font-sans); font-size: 13.5px; color: #3A2E20; line-height: 1.8; margin-bottom: 8px; }
.dnm-article-root .dnm-train-card p:last-child { margin-bottom: 0; }

.dnm-article-root .dnm-train-route {
display: flex;
align-items: center;
gap: 7px;
flex-wrap: wrap;
margin: 11px 0;
font-family: var(–dnm-font-sans);
font-size: 12.5px;
}

.dnm-article-root .dnm-train-city { background: rgba(42,92,90,0.12); border-radius: 5px; padding: 3px 9px; color: var(–dnm-teal); font-weight: 500; }
.dnm-article-root .dnm-train-arrow { color: var(–dnm-gold); font-size: 14px; }
.dnm-article-root .dnm-train-time { font-size: 11px; color: var(–dnm-warm-gray); font-style: italic; }

/* ── COWORKING GRID ── */
.dnm-article-root .dnm-cowork-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));
gap: 13px;
margin: 20px 0 26px;
}

.dnm-article-root .dnm-cowork-card {
border: 1px solid var(–dnm-border);
border-radius: 10px;
padding: 16px 15px;
background: rgba(255,255,255,0.4);
transition: border-color 0.2s, transform 0.2s;
}

.dnm-article-root .dnm-cowork-card:hover { border-color: rgba(201,168,76,0.5); transform: translateY(-2px); }
.dnm-article-root .dnm-cowork-name { font-family: var(–dnm-font-serif); font-size: 15.5px; font-weight: 600; color: var(–dnm-deep); margin-bottom: 3px; }
.dnm-article-root .dnm-cowork-loc { font-size: 10px; color: var(–dnm-terracotta); font-weight: 500; letter-spacing: 0.05em; margin-bottom: 7px; text-transform: uppercase; }
.dnm-article-root .dnm-cowork-desc { font-family: var(–dnm-font-sans); font-size: 12px; color: var(–dnm-muted); line-height: 1.65; }
.dnm-article-root .dnm-cowork-vibe { margin-top: 8px; font-size: 11px; color: var(–dnm-warm-gray); }

.dnm-article-root .dnm-cowork-map {
display: inline-flex;
align-items: center;
gap: 4px;
margin-top: 8px;
font-family: var(–dnm-font-sans);
font-size: 11px;
font-weight: 500;
color: var(–dnm-teal);
text-decoration: none;
border: 1px solid rgba(42,92,90,0.22);
border-radius: 5px;
padding: 3px 8px;
transition: background 0.2s;
}

.dnm-article-root .dnm-cowork-map:hover { background: rgba(42,92,90,0.08); color: var(–dnm-teal); text-decoration: none; }
.dnm-article-root .dnm-cowork-map::before { content: ‘📍’; font-size: 10px; }

/* ── MONEY TABLE ── */
.dnm-article-root .dnm-money-grid {
display: grid;
grid-template-columns: 1fr 1fr;
border: 1px solid var(–dnm-border);
border-radius: 10px;
overflow: hidden;
margin: 20px 0;
font-family: var(–dnm-font-sans);
}

.dnm-article-root .dnm-money-cell { padding: 10px 15px; font-size: 13px; border-bottom: 1px solid rgba(201,168,76,0.12); line-height: 1.5; }
.dnm-article-root .dnm-money-cell:nth-child(odd) { background: rgba(201,168,76,0.04); color: var(–dnm-ink); font-weight: 400; border-right: 1px solid rgba(201,168,76,0.12); }
.dnm-article-root .dnm-money-cell:nth-child(even) { color: var(–dnm-muted); font-size: 12.5px; }
.dnm-article-root .dnm-money-cell.dnm-money-head { background: rgba(42,92,90,0.09); color: var(–dnm-teal); font-size: 10px; font-weight: 500; letter-spacing: 0.1em; text-transform: uppercase; }
.dnm-article-root .dnm-money-cell:last-child,
.dnm-article-root .dnm-money-cell:nth-last-child(2) { border-bottom: none; }

/* ── FAQ ── */
.dnm-article-root .dnm-faq { margin: 24px 0; }

.dnm-article-root .dnm-faq-item {
border: 1px solid var(–dnm-border);
border-radius: 9px;
margin-bottom: 9px;
overflow: hidden;
background: rgba(255,255,255,0.35);
}

.dnm-article-root .dnm-faq-q {
width: 100%;
background: none;
border: none;
text-align: left;
padding: 13px 17px;
font-family: var(–dnm-font-sans);
font-size: 13.5px;
font-weight: 500;
color: var(–dnm-deep);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
gap: 11px;
transition: background 0.18s;
line-height: 1.4;
}

.dnm-article-root .dnm-faq-q:hover { background: rgba(201,168,76,0.07); }
.dnm-article-root .dnm-faq-icon { font-size: 17px; color: var(–dnm-gold); flex-shrink: 0; transition: transform 0.25s ease; line-height: 1; }
.dnm-article-root .dnm-faq-item.is-open .dnm-faq-icon { transform: rotate(45deg); }

.dnm-article-root .dnm-faq-a { max-height: 0; overflow: hidden; transition: max-height 0.3s cubic-bezier(0.4,0,0.2,1); }
.dnm-article-root .dnm-faq-item.is-open .dnm-faq-a { max-height: 600px; }

.dnm-article-root .dnm-faq-a-inner {
padding: 4px 17px 14px;
font-family: var(–dnm-font-sans);
font-size: 13px;
color: var(–dnm-muted);
line-height: 1.75;
border-top: 1px solid rgba(201,168,76,0.12);
}

.dnm-article-root .dnm-faq-a-inner a { color: var(–dnm-teal); text-decoration: underline; text-decoration-color: rgba(42,92,90,0.35); text-underline-offset: 3px; transition: color 0.2s; }
.dnm-article-root .dnm-faq-a-inner a:hover { color: var(–dnm-terracotta); }

/* ── FOOTER ── */
.dnm-article-root .dnm-footer-note {
border-top: 1px solid var(–dnm-border);
padding-top: 22px;
margin-top: 52px;
display: flex;
align-items: flex-start;
gap: 12px;
flex-wrap: wrap;
}

.dnm-article-root .dnm-footer-logo { font-family: var(–dnm-font-display); font-size: 19px; font-weight: 700; color: var(–dnm-gold); flex-shrink: 0; }
.dnm-article-root .dnm-footer-text { font-family: var(–dnm-font-sans); font-size: 12px; color: var(–dnm-warm-gray); line-height: 1.6; flex: 1; min-width: 180px; }
.dnm-article-root .dnm-footer-text a { color: var(–dnm-teal); text-decoration: none; }
.dnm-article-root .dnm-footer-text a:hover { text-decoration: underline; }

/* ── TOOL WRAPPER (shared) ── */
.dnm-article-root .dnm-tool-wrap {
border: 1px solid var(–dnm-border);
border-radius: 16px;
overflow: hidden;
margin: 32px 0 44px;
box-shadow: 0 4px 28px rgba(26,18,8,0.08);
}

.dnm-article-root .dnm-tool-header {
background: linear-gradient(135deg, #1C2E1A 0%, #1E3A38 60%, #2A1A08 100%);
padding: 22px 28px;
position: relative;
overflow: hidden;
}

.dnm-article-root .dnm-tool-header::before {
content: ”;
position: absolute;
inset: 0;
background: radial-gradient(ellipse 60% 80% at 90% 40%, rgba(201,168,76,0.22) 0%, transparent 55%);
}

.dnm-article-root .dnm-tool-header-tag {
display: inline-flex;
align-items: center;
gap: 5px;
background: rgba(201,168,76,0.18);
border: 1px solid rgba(201,168,76,0.4);
border-radius: 100px;
padding: 3px 11px;
font-family: var(–dnm-font-sans);
font-size: 9.5px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(–dnm-gold-light);
margin-bottom: 8px;
position: relative;
z-index: 1;
}

.dnm-article-root .dnm-tool-title {
font-family: var(–dnm-font-display);
font-size: clamp(17px, 2.5vw, 24px);
font-weight: 700;
color: #fff;
line-height: 1.2;
position: relative;
z-index: 1;
margin-bottom: 5px;
}

.dnm-article-root .dnm-tool-subtitle {
font-family: var(–dnm-font-sans);
font-size: 12.5px;
color: rgba(255,255,255,0.6);
position: relative;
z-index: 1;
font-weight: 300;
}

/* ── TOOL BANNER (distinctive heading bar) ── */
.dnm-article-root .dnm-tool-banner {
display: flex;
align-items: center;
gap: 12px;
background: linear-gradient(90deg, rgba(42,92,90,0.12) 0%, rgba(201,168,76,0.08) 100%);
border: 1px solid var(–dnm-border);
border-left: 4px solid var(–dnm-teal);
border-radius: 10px;
padding: 12px 18px;
margin-bottom: 18px;
}

.dnm-article-root .dnm-tool-banner-icon {
font-size: 22px;
flex-shrink: 0;
}

.dnm-article-root .dnm-tool-banner-label {
font-family: var(–dnm-font-sans);
font-size: 9.5px;
font-weight: 600;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(–dnm-teal);
margin-bottom: 2px;
}

.dnm-article-root .dnm-tool-banner-title {
font-family: var(–dnm-font-display);
font-size: clamp(16px, 2.2vw, 22px);
font-weight: 700;
color: var(–dnm-deep);
line-height: 1.2;
}

.dnm-article-root .dnm-tool-body { background: #FEFAF3; padding: clamp(18px, 3vw, 32px); }

/* ── CITY MATCHER SLIDERS ── */
.dnm-article-root .dnm-cm-sliders { display: grid; gap: 16px; margin-bottom: 24px; }
.dnm-article-root .dnm-cm-slider-row { display: grid; gap: 5px; }

.dnm-article-root .dnm-cm-label {
display: flex;
justify-content: space-between;
align-items: center;
font-family: var(–dnm-font-sans);
font-size: 12px;
font-weight: 500;
color: var(–dnm-ink);
}

.dnm-article-root .dnm-cm-label-icon { font-size: 14px; margin-right: 5px; }

.dnm-article-root .dnm-cm-val {
font-family: var(–dnm-font-display);
font-size: 13px;
font-weight: 700;
color: var(–dnm-terracotta);
min-width: 28px;
text-align: right;
}

.dnm-article-root .dnm-cm-slider {
-webkit-appearance: none;
appearance: none;
width: 100%;
height: 5px;
border-radius: 10px;
background: linear-gradient(to right, var(–dnm-gold) 0%, var(–dnm-gold) var(–pct, 60%), rgba(201,168,76,0.2) var(–pct, 60%), rgba(201,168,76,0.2) 100%);
outline: none;
cursor: pointer;
}

.dnm-article-root .dnm-cm-slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 18px; height: 18px;
border-radius: 50%;
background: #fff;
border: 2px solid var(–dnm-gold);
box-shadow: 0 2px 8px rgba(201,168,76,0.35);
cursor: pointer;
transition: transform 0.15s;
}

.dnm-article-root .dnm-cm-slider::-webkit-slider-thumb:hover { transform: scale(1.15); }
.dnm-article-root .dnm-cm-slider::-moz-range-thumb {
width: 18px; height: 18px;
border-radius: 50%;
background: #fff;
border: 2px solid var(–dnm-gold);
cursor: pointer;
}

/* ── CITY RESULT CARDS ── */
.dnm-article-root .dnm-cm-results { display: grid; gap: 10px; }

.dnm-article-root .dnm-cm-result {
border: 1px solid var(–dnm-border);
border-radius: 11px;
padding: 14px 16px;
background: rgba(255,255,255,0.6);
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 12px;
transition: border-color 0.25s, box-shadow 0.25s, transform 0.2s;
}

.dnm-article-root .dnm-cm-result.is-top {
border-color: var(–dnm-gold);
background: rgba(201,168,76,0.06);
box-shadow: 0 4px 18px rgba(201,168,76,0.15);
}

.dnm-article-root .dnm-cm-result:hover { transform: translateY(-1px); }

.dnm-article-root .dnm-cm-rank {
width: 30px; height: 30px;
border-radius: 50%;
background: rgba(201,168,76,0.12);
display: flex; align-items: center; justify-content: center;
font-family: var(–dnm-font-display);
font-size: 13px;
font-weight: 700;
color: var(–dnm-gold);
flex-shrink: 0;
}

.dnm-article-root .dnm-cm-result.is-top .dnm-cm-rank { background: var(–dnm-gold); color: #fff; }
.dnm-article-root .dnm-cm-city-info { min-width: 0; }
.dnm-article-root .dnm-cm-city-name-r { font-family: var(–dnm-font-display); font-size: 16px; font-weight: 700; color: var(–dnm-deep); margin-bottom: 3px; }
.dnm-article-root .dnm-cm-city-tags { display: flex; flex-wrap: wrap; gap: 4px; }

.dnm-article-root .dnm-cm-city-tag {
font-family: var(–dnm-font-sans);
font-size: 9.5px;
font-weight: 500;
padding: 1px 7px;
border-radius: 4px;
border: 1px solid var(–dnm-border);
color: var(–dnm-muted);
}

.dnm-article-root .dnm-cm-score-col { text-align: right; flex-shrink: 0; }
.dnm-article-root .dnm-cm-score { font-family: var(–dnm-font-display); font-size: 22px; font-weight: 700; color: var(–dnm-terracotta); line-height: 1; }
.dnm-article-root .dnm-cm-score-label { font-family: var(–dnm-font-sans); font-size: 9.5px; color: var(–dnm-warm-gray); letter-spacing: 0.05em; }
.dnm-article-root .dnm-cm-bar-wrap { margin-top: 8px; height: 4px; background: rgba(201,168,76,0.15); border-radius: 4px; overflow: hidden; }
.dnm-article-root .dnm-cm-bar { height: 100%; border-radius: 4px; background: linear-gradient(to right, var(–dnm-teal), var(–dnm-gold)); transition: width 0.5s cubic-bezier(0.4,0,0.2,1); }

.dnm-article-root .dnm-cm-match-note {
margin-top: 16px;
padding: 10px 14px;
background: rgba(42,92,90,0.07);
border-radius: 8px;
font-family: var(–dnm-font-sans);
font-size: 12px;
color: var(–dnm-teal);
display: flex;
align-items: flex-start;
gap: 7px;
line-height: 1.5;
}

/* ── COST CALCULATOR ── */
.dnm-article-root .dnm-calc-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin-bottom: 22px;
}

.dnm-article-root .dnm-calc-field { display: grid; gap: 6px; }

.dnm-article-root .dnm-calc-field label {
font-family: var(–dnm-font-sans);
font-size: 11.5px;
font-weight: 500;
color: var(–dnm-muted);
display: flex;
align-items: center;
gap: 5px;
}

.dnm-article-root .dnm-calc-select,
.dnm-article-root .dnm-calc-input {
width: 100%;
padding: 10px 14px;
border: 1.5px solid var(–dnm-border);
border-radius: 8px;
font-family: var(–dnm-font-sans);
font-size: 13px;
color: var(–dnm-ink);
background: #fff;
outline: none;
transition: border-color 0.2s, box-shadow 0.2s;
-webkit-appearance: none;
appearance: none;
cursor: pointer;
}

.dnm-article-root .dnm-calc-select {
background-color: #fff;
background-image: url(“data:image/svg+xml,%3Csvg xmlns=’http://www.w3.org/2000/svg’ width=’12’ height=’8′ viewBox=’0 0 12 8’%3E%3Cpath d=’M1 1l5 5 5-5′ stroke=’%23C9A84C’ stroke-width=’1.5′ fill=’none’ stroke-linecap=’round’/%3E%3C/svg%3E”);
background-repeat: no-repeat;
background-position: right 12px center;
padding-right: 34px;
}

.dnm-article-root .dnm-calc-select:focus,
.dnm-article-root .dnm-calc-input:focus {
border-color: rgba(201,168,76,0.7);
box-shadow: 0 0 0 3px rgba(201,168,76,0.12);
}

.dnm-article-root .dnm-calc-select:hover,
.dnm-article-root .dnm-calc-input:hover {
border-color: rgba(201,168,76,0.5);
}

/* ── CHECKBOXES ── */
.dnm-article-root .dnm-calc-checkboxes {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
margin-bottom: 22px;
}

.dnm-article-root .dnm-calc-check-label {
display: flex;
align-items: center;
gap: 9px;
font-family: var(–dnm-font-sans);
font-size: 12.5px;
color: var(–dnm-ink);
cursor: pointer;
padding: 10px 13px;
border: 1.5px solid var(–dnm-border);
border-radius: 9px;
transition: border-color 0.2s, background 0.2s;
user-select: none;
background: #fff;
}

.dnm-article-root .dnm-calc-check-label:hover { border-color: rgba(201,168,76,0.6); background: rgba(201,168,76,0.05); }
.dnm-article-root .dnm-calc-check-label:has(input:checked) {
border-color: var(–dnm-gold);
background: rgba(201,168,76,0.08);
}

.dnm-article-root .dnm-calc-check-label input[type=”checkbox”] {
width: 16px; height: 16px;
accent-color: var(–dnm-gold);
cursor: pointer;
flex-shrink: 0;
}

.dnm-article-root .dnm-calc-section-label {
font-family: var(–dnm-font-sans);
font-size: 10px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(–dnm-muted);
margin-bottom: 11px;
display: flex;
align-items: center;
gap: 8px;
}

.dnm-article-root .dnm-calc-section-label::after {
content: ”;
flex: 1;
height: 1px;
background: var(–dnm-border);
}

/* ── CALC RESULT ── */
.dnm-article-root .dnm-calc-result-wrap {
background: linear-gradient(135deg, rgba(26,18,8,0.05) 0%, rgba(42,92,90,0.07) 100%);
border: 1px solid var(–dnm-border);
border-radius: 12px;
padding: 20px 22px;
margin-top: 4px;
}

.dnm-article-root .dnm-calc-total-label {
font-family: var(–dnm-font-sans);
font-size: 10px;
font-weight: 500;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(–dnm-muted);
margin-bottom: 6px;
}

.dnm-article-root .dnm-calc-total {
font-family: var(–dnm-font-display);
font-size: clamp(28px, 5vw, 44px);
font-weight: 700;
color: var(–dnm-terracotta);
line-height: 1;
margin-bottom: 4px;
}

.dnm-article-root .dnm-calc-total-sub {
font-family: var(–dnm-font-sans);
font-size: 12px;
color: var(–dnm-warm-gray);
margin-bottom: 16px;
}

.dnm-article-root .dnm-calc-breakdown { display: grid; gap: 7px; }

.dnm-article-root .dnm-calc-line {
display: flex;
justify-content: space-between;
align-items: center;
font-family: var(–dnm-font-sans);
font-size: 12.5px;
padding: 6px 10px;
border-radius: 6px;
background: rgba(255,255,255,0.5);
border: 1px solid rgba(201,168,76,0.1);
}

.dnm-article-root .dnm-calc-line-label { color: var(–dnm-muted); display: flex; align-items: center; gap: 6px; }
.dnm-article-root .dnm-calc-line-amount { font-weight: 500; color: var(–dnm-ink); }

.dnm-article-root .dnm-calc-line.is-total {
background: rgba(201,168,76,0.1);
border-color: rgba(201,168,76,0.3);
margin-top: 4px;
}

.dnm-article-root .dnm-calc-line.is-total .dnm-calc-line-label { font-weight: 600; color: var(–dnm-deep); }
.dnm-article-root .dnm-calc-line.is-total .dnm-calc-line-amount { font-weight: 700; color: var(–dnm-terracotta); }

/* ── INTERNET SPEED TABLE ── */
.dnm-article-root .dnm-speed-table {
width: 100%;
border-collapse: collapse;
border: 1px solid var(–dnm-border);
border-radius: 11px;
overflow: hidden;
margin: 20px 0;
font-family: var(–dnm-font-sans);
font-size: 13px;
}

.dnm-article-root .dnm-speed-table thead tr { background: rgba(42,92,90,0.09); }
.dnm-article-root .dnm-speed-table th {
padding: 10px 14px;
text-align: left;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(–dnm-teal);
border-bottom: 1px solid var(–dnm-border);
}

.dnm-article-root .dnm-speed-table td {
padding: 9px 14px;
color: var(–dnm-ink);
border-bottom: 1px solid rgba(201,168,76,0.1);
line-height: 1.4;
}

.dnm-article-root .dnm-speed-table tr:last-child td { border-bottom: none; }
.dnm-article-root .dnm-speed-table tr:nth-child(even) td { background: rgba(201,168,76,0.03); }
.dnm-article-root .dnm-speed-bar-cell { width: 120px; }
.dnm-article-root .dnm-speed-mini-bar { height: 6px; background: rgba(201,168,76,0.15); border-radius: 3px; overflow: hidden; }
.dnm-article-root .dnm-speed-mini-fill { height: 100%; border-radius: 3px; background: linear-gradient(to right, var(–dnm-teal), var(–dnm-gold)); }

/* ── RESPONSIVE ── */
@media (max-width: 580px) {
.dnm-article-root .dnm-guide-profile { flex-direction: column; align-items: flex-start; }
.dnm-article-root .dnm-booking-body { padding: 16px 14px; }
.dnm-article-root .dnm-toc-inner { padding: 11px 13px 15px; }
.dnm-article-root .dnm-ergo-box { flex-direction: column; }
.dnm-article-root .dnm-money-grid { grid-template-columns: 1fr; }
.dnm-article-root .dnm-money-cell:nth-child(odd) { border-right: none; border-bottom: none; padding-bottom: 1px; font-weight: 500; }
.dnm-article-root .dnm-money-cell:nth-child(even) { border-bottom: 1px solid rgba(201,168,76,0.12); padding-top: 1px; padding-bottom: 10px; }
.dnm-article-root .dnm-warning-box { flex-direction: column; gap: 7px; }
.dnm-article-root .dnm-booking-header { padding: 18px 16px; }
.dnm-article-root .dnm-calc-grid { grid-template-columns: 1fr; }
.dnm-article-root .dnm-calc-checkboxes { grid-template-columns: 1fr; }
.dnm-article-root .dnm-h2-row { flex-wrap: nowrap; }
}

@media (max-width: 380px) {
.dnm-article-root .dnm-stats-row { grid-template-columns: 1fr 1fr; }
.dnm-article-root .dnm-wa-btn { width: 100%; justify-content: center; }
}
</style>

<article class=”dnm-article-root” itemscope itemtype=”https://schema.org/Article”>
<meta itemprop=”headline” content=”Digital Nomad Guide to Morocco 2026 — Visas, Cities, Internet &#038; Living Costs”>
<meta itemprop=”keywords” content=”Digital Nomad Morocco, Morocco Digital Nomad Visa 2026, best cities for digital nomads Morocco, internet speed Morocco, remote work Morocco, coworking Morocco, cost of living Morocco”>
<meta itemprop=”datePublished” content=”2026-03-01″>

<div class=”dnm-wrap”>

<!– HERO –>
<header class=”dnm-hero”>
<img decoding=”async”
src=”https://moroccantraveltrips.com/wp-content/uploads/2026/03/Digital-Nomad-Guide-to-Morocco.webp”
alt=”Digital Nomad Guide to Morocco 2026 — cities, visa, internet”
class=”dnm-hero-placeholder”
loading=”eager”
onerror=”this.style.display=’none'”
>
<div class=”dnm-hero-content”>
<div class=”dnm-hero-badge”>Digital Nomad Guide · Updated 2026</div>
<h1 itemprop=”name”>Your Complete Guide to Living &#038; Working as a <em>Digital Nomad in Morocco</em></h1>
<p class=”dnm-hero-sub”>From visa reality and money management to Al Boraq trains and the best coworking communities — everything you need before you land.</p>
<div class=”dnm-hero-meta”>
<span>✦ In-depth guide</span>
<div class=”dnm-dot”></div>
<span>Last updated: March 2026</span>
<div class=”dnm-dot”></div>
<span>20 min read</span>
</div>
</div>
</header>

<!– INLINE TOC –>
<nav class=”dnm-toc-wrapper” aria-label=”Table of Contents” id=”dnm-toc-anchor”>
<div class=”dnm-toc-inline” id=”dnm-toc”>
<div class=”dnm-toc-header” onclick=”dnmToggleToc(this)” role=”button” aria-expanded=”false” aria-controls=”dnm-toc-body”>
<div class=”dnm-toc-title”>✦ In This Guide</div>
<div class=”dnm-toc-toggle”>
<span>Contents</span>
<span class=”dnm-toc-toggle-icon”>▼</span>
</div>
</div>
<div class=”dnm-toc-body” id=”dnm-toc-body” role=”region”>
<div class=”dnm-toc-inner”>
<ol>
<li><a href=”#why-morocco” onclick=”dnmCloseToc()”>Why Morocco Is Having Its Digital Nomad Moment</a></li>
<li><a href=”#visa-2026″ onclick=”dnmCloseToc()”>Visa Reality 2026 — What You Actually Need to Know</a></li>
<li><a href=”#money” onclick=”dnmCloseToc()”>Money, Cards &#038; ATMs — The Practical Guide</a></li>
<li><a href=”#transport” onclick=”dnmCloseToc()”>Getting Around: Al Boraq, Taxis &#038; Apps</a></li>
<li><a href=”#best-cities” onclick=”dnmCloseToc()”>Best Cities for Digital Nomads in Morocco</a></li>
<li><a href=”#city-matcher” onclick=”dnmCloseToc()”>✦ City Matcher Tool</a></li>
<li><a href=”#internet” onclick=”dnmCloseToc()”>Internet Speed, 5G &#038; Rural Connectivity</a></li>
<li><a href=”#coworking” onclick=”dnmCloseToc()”>Coworking Spaces, Community &#038; Cafés</a></li>
<li><a href=”#cost” onclick=”dnmCloseToc()”>Cost of Living &#038; Daily Budget</a></li>
<li><a href=”#cost-calc” onclick=”dnmCloseToc()”>✦ Cost Calculator</a></li>
<li><a href=”#workspace” onclick=”dnmCloseToc()”>Setting Up Your Mobile Workspace</a></li>
<li><a href=”#safety” onclick=”dnmCloseToc()”>Safety &#038; Practical Life Tips</a></li>
<li><a href=”#faq” onclick=”dnmCloseToc()”>FAQ — Frequently Asked Questions</a></li>
<li><a href=”#guide” onclick=”dnmCloseToc()”>Book a Licensed Local Guide</a></li>
</ol>
</div>
</div>
</div>
</nav>

<!– 1. WHY MOROCCO –>
<section class=”dnm-section” id=”why-morocco” itemprop=”articleBody”>
<div class=”dnm-section-label”>Introduction</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Why Morocco Is Having Its Digital Nomad Moment</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>There&#8217;s something almost effortless about the way Morocco absorbs new arrivals. One afternoon you&#8217;re filing a client report from a rooftop riad, the minaret&#8217;s call to prayer drifting over terracotta rooftops below, and the next morning you&#8217;re in a sleek coworking space with fiber-optic Wi-Fi and a flat white. This combination of soul and infrastructure has turned <strong>Digital Nomad Morocco</strong> from a niche experiment into a genuine conversation in 2026.</p>

<p class=”dnm-p”>The country sits at a compelling crossroads: geographically just 14 km from Europe; culturally blending Amazigh heritage, Arab influence, and francophone modernity into something entirely its own. Practically speaking, it offers one of the lowest costs of living on either side of the Atlantic without asking you to sacrifice connectivity or safety. And if you&#8217;re curious about <a href=”https://moroccantraveltrips.com/where-is-morocco/” class=”dnm-inline-link”>where Morocco sits on the map</a>, that context alone reshapes how you plan flights and time-zone overlap.</p>

<div class=”dnm-stats-row”>
<div class=”dnm-stat”>
<div class=”dnm-stat-value”>14km</div>
<div class=”dnm-stat-label”>From Europe (Gibraltar)</div>
</div>
<div class=”dnm-stat”>
<div class=”dnm-stat-value”>GMT±0/+1</div>
<div class=”dnm-stat-label”>Friendly time zone overlap</div>
</div>
<div class=”dnm-stat”>
<div class=”dnm-stat-value”>~€700</div>
<div class=”dnm-stat-label”>Comfortable monthly budget</div>
</div>
<div class=”dnm-stat”>
<div class=”dnm-stat-value”>4G/5G</div>
<div class=”dnm-stat-label”>Coverage in major cities</div>
</div>
</div>

<div class=”dnm-img-block”>
<img decoding=”async” src=”https://moroccantraveltrips.com/wp-content/uploads/2026/03/Digital-Nomad-Guide-to-Morocco.webp” alt=”Digital Nomad Guide to Morocco 2026″ loading=”lazy” onerror=”this.style.display=’none’; this.parentElement.style.minHeight=’100px'”>
<div class=”dnm-img-caption”>Morocco combines ancient atmosphere with modern digital infrastructure — an increasingly serious destination for remote professionals.</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– 2. VISA –>
<section class=”dnm-section” id=”visa-2026″>
<div class=”dnm-section-label”>Entry &#038; Legal</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Visa Reality 2026 — What You Actually Need to Know</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>This is the question every nomad forum gets wrong, so let&#8217;s be precise. As of 2026, Morocco does <strong>not</strong> have a dedicated Digital Nomad Visa in the way Portugal&#8217;s D8 or Spain&#8217;s Startups Visa work. What Morocco does have is a remarkably permissive tourist entry regime — and that&#8217;s what the vast majority of nomads actually use.</p>

<div class=”dnm-visa-box”>
<div class=”dnm-visa-box-title”>🇲🇦 What&#8217;s Really Happening at the Border</div>
<p>Citizens of over 60 countries — the entire EU, UK, US, Canada, Australia, most of Latin America, and many others — enter Morocco visa-free for up to <strong>90 days per entry</strong>. You arrive as a tourist. There is no law prohibiting remote work for foreign employers or clients on tourist status, provided you&#8217;re not generating income from Moroccan clients or registered as a Moroccan business.</p>
<p>After 90 days, many nomads do a <strong>&#8220;border run&#8221;</strong> — a quick trip to Ceuta or Melilla (Spanish enclaves reachable by bus from Tetouan/Fnideq), or a short flight to the Canary Islands, then re-entry. In practice this resets the clock and works consistently for most nationalities. It is not an officially sanctioned long-term strategy, but it is widely used.</p>
<p>Those planning to stay 6+ months should look at the <em>carte de séjour</em> (long-stay residency permit), which requires a local address and proof of income. Many long-term nomads in Marrakech and Agadir hold one. For current official entry procedures and eVisa options: <a href=”https://www.acces-maroc.ma/” rel=”noopener noreferrer” target=”_blank”>Accès Maroc</a>.</p>
</div>

<div class=”dnm-warning-box”>
<div class=”dnm-warning-icon”>⚠️</div>
<div class=”dnm-warning-content”>
<div class=”dnm-warning-title”>The Honest Caveat</div>
<div class=”dnm-warning-text”>Border runs work, but Morocco retains the right to refuse re-entry if an officer notices repeated short exits and returns. This is rare but not unheard of. If planning 6+ months, the <em>carte de séjour</em> route is more stable. Consult an immigration lawyer for your specific nationality and situation.</div>
</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– 3. MONEY –>
<section class=”dnm-section” id=”money”>
<div class=”dnm-section-label”>Finance &#038; Banking</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Money, Cards &#038; ATMs — The Practical Financial Guide</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Morocco&#8217;s currency, the Moroccan Dirham (MAD), is a <strong>non-convertible, state-controlled currency</strong> — you cannot buy or sell it outside Morocco in any meaningful volume. Before arriving, read this primer on <a href=”https://moroccantraveltrips.com/what-currency-does-morocco-use/” class=”dnm-inline-link”>how Morocco&#8217;s currency works</a> so you&#8217;re not caught off guard at ATMs.</p>

<h3 class=”dnm-h3″>Do Wise and Revolut Work in Morocco?</h3>

<p class=”dnm-p”>Yes — both work well. Wise gives near-interbank exchange rates to MAD, saving you 2–4% versus a standard debit card. Revolut also works but applies a weekend conversion markup. The variable factor is ATM fees charged by Moroccan banks on international cards:</p>

<div class=”dnm-money-grid”>
<div class=”dnm-money-cell dnm-money-head”>Card / Bank</div>
<div class=”dnm-money-cell dnm-money-head”>ATM Fee Note</div>
<div class=”dnm-money-cell”><strong>Wise debit card</strong></div>
<div class=”dnm-money-cell”>Excellent rates, ~MAD 15–25 from Moroccan ATM side. Best overall option.</div>
<div class=”dnm-money-cell”><strong>Revolut (Standard)</strong></div>
<div class=”dnm-money-cell”>Good within monthly free limit; avoid weekend conversions (markup applies).</div>
<div class=”dnm-money-cell”><strong>Attijariwafa Bank ATMs</strong></div>
<div class=”dnm-money-cell”>Widest network in Morocco; generally lowest surcharges on foreign cards. Try these first.</div>
<div class=”dnm-money-cell”><strong>CIH Bank / Banque Populaire</strong></div>
<div class=”dnm-money-cell”>Common in smaller towns; some branches add a flat ~MAD 25 fee on foreign cards.</div>
<div class=”dnm-money-cell”><strong>Your home bank card</strong></div>
<div class=”dnm-money-cell”>Expect 2–4% conversion + up to MAD 60 ATM surcharge. Use as backup only.</div>
</div>

<h3 class=”dnm-h3″>Cash vs Card — When to Use Which</h3>

<p class=”dnm-p”>Card works reliably at supermarkets, restaurants in modern districts, coworking spaces, and most hotels. Cash is essential for medina souks, local taxi drivers, hammams, street food, and anything under MAD 50.</p>

<div class=”dnm-infobox”>
<div class=”dnm-infobox-title”>💳 Money Management Tips</div>
<ul>
<li><strong>Withdraw in large amounts.</strong> Each transaction incurs a fee — MAD 2,000–3,000 at once is more economical than multiple small withdrawals.</li>
<li><strong>Keep a cash float.</strong> Always have MAD 300–500 on hand. Taxis, markets, tips, and emergencies require it instantly.</li>
<li><strong>Airport exchange booths are fair.</strong> Morocco&#8217;s official bureaux de change at Casablanca and Marrakech airports are regulated and offer reasonable rates. No need to pre-buy dirhams abroad.</li>
<li><strong>Don&#8217;t try to reconvert leftover MAD outside Morocco.</strong> The Dirham&#8217;s non-convertibility means you&#8217;ll struggle. Reconvert at the airport (keep your exchange receipt).</li>
<li><strong>PayPal works in Morocco.</strong> You can send/receive in your home currency. Note that withdrawing to a Moroccan bank account involves a conversion step.</li>
</ul>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– 4. TRANSPORT –>
<section class=”dnm-section” id=”transport”>
<div class=”dnm-section-label”>Getting Around</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Getting Around: Al Boraq, Taxis &#038; Transport Apps</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Morocco&#8217;s transport infrastructure is a genuine advantage for the mobile professional. Moving between cities is efficient, and within cities, the right apps eliminate the negotiation headaches that once defined Moroccan taxi culture.</p>

<div class=”dnm-train-card”>
<div class=”dnm-train-card-title”>🚄 Al Boraq — Africa&#8217;s Only High-Speed Train</div>
<p>The Al Boraq (البراق) connects Tangier to Casablanca at up to 320 km/h — a journey that used to take 4+ hours now takes under 2h10.</p>
<div class=”dnm-train-route”>
<span class=”dnm-train-city”>Tanger Ville</span>
<span class=”dnm-train-arrow”>→</span>
<span class=”dnm-train-city”>Kénitra</span>
<span class=”dnm-train-arrow”>→</span>
<span class=”dnm-train-city”>Rabat</span>
<span class=”dnm-train-arrow”>→</span>
<span class=”dnm-train-city”>Casablanca</span>
<span class=”dnm-train-time”>· ~2h10 total</span>
</div>
<p>For digital nomads: seats have power outlets, onboard Wi-Fi exists (bring a 4G backup for critical calls), and the ride is smooth enough for focused work. 1st class tickets: MAD 250–350. Book via the ONCF app — sell out fast on Friday evenings and Monday mornings.</p>
<p>ONCF&#8217;s regular network also covers Casablanca–Marrakech (3h15), Casablanca–Fes (4h30). For Agadir: train to Casa then CTM coach.</p>
</div>

<h3 class=”dnm-h3″>Transport Apps — Skip the Negotiation</h3>

<p class=”dnm-p”>Uber does not operate in Morocco. Active alternatives: <strong>InDrive</strong>, <strong>Careem</strong>, and <strong>Bolt</strong> — available in major cities. Download and add a payment method before landing.</p>

<div class=”dnm-infobox”>
<div class=”dnm-infobox-title”>🚗 Ride Options for Morocco</div>
<ul>
<li><strong>InDrive</strong> — Most widely used ride-hailing app in Morocco. You offer a price; drivers accept or counter. Available in Casablanca, Marrakech, Rabat, Agadir, Fes, and Tangier.</li>
<li><strong>Careem</strong> — Fixed pricing, slightly higher than InDrive but consistent. Popular with business travellers who prefer not to negotiate.</li>
<li><strong>Bolt</strong> — Growing rapidly in Casablanca and Marrakech. Often cheapest for short in-city trips.</li>
<li><strong>Petit taxi (city cab)</strong> — For short urban trips. Meters are mandatory but not always used — insist on the meter or agree a price. Very cheap for distances under 5km.</li>
<li><strong>Grand taxi</strong> — Shared intercity taxis for routes the train doesn&#8217;t cover. Essential for Taghazout, Essaouira, Chefchaouen, and other smaller towns.</li>
</ul>
</div>

<div class=”dnm-warning-box”>
<div class=”dnm-warning-icon”>⚠️</div>
<div class=”dnm-warning-content”>
<div class=”dnm-warning-title”>Important — Tension Between Taxi Drivers &#038; Ride-Hailing Apps</div>
<div class=”dnm-warning-text”>
There is an ongoing conflict in several Moroccan cities between licensed petit-taxi drivers and drivers for ride-hailing platforms. This tension can occasionally result in confrontations near train stations, bus terminals, and airport exits. If using a ride-hailing app at these locations, arrange your pickup slightly away from the main exit queue.<br><br>
<strong>At train stations and airports, using a licensed taxi from the official rank is always the safest and most hassle-free option.</strong>
</div>
</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– 5. BEST CITIES –>
<section class=”dnm-section” id=”best-cities”>
<div class=”dnm-section-label”>Where to Base Yourself</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Best Cities for Digital Nomads in Morocco</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Morocco is not a single experience — it&#8217;s a collection of distinct atmospheres packed into one country. The <a href=”https://moroccantraveltrips.com/list-of-cities-in-morocco/” class=”dnm-inline-link”>full range of Moroccan cities</a> reveals just how much variety there is. Below are the standouts for the location-independent professional.</p>

<div class=”dnm-city-grid”>
<div class=”dnm-city-card”>
<div class=”dnm-city-name”>Marrakech</div>
<span class=”dnm-city-tag”>Culture Hub</span>
<div class=”dnm-city-desc”>Balances authentic medina life with a growing coworking infrastructure. Guéliz and Hivernage are modern enough for business, atmospheric enough to remind you why you came. Largest nomad community of any Moroccan city.</div>
<div class=”dnm-city-speed”>Avg. 30–60 Mbps fiber; 4G strong throughout</div>
</div>
<div class=”dnm-city-card”>
<div class=”dnm-city-name”>Casablanca</div>
<span class=”dnm-city-tag”>Business Capital</span>
<div class=”dnm-city-desc”>Morocco&#8217;s economic engine. Best enterprise coworking scene, fastest fiber, and the country&#8217;s main international airport (CMN). More culture than its business reputation suggests.</div>
<div class=”dnm-city-speed”>Avg. 50–100 Mbps; some buildings with gigabit</div>
</div>
<div class=”dnm-city-card”>
<div class=”dnm-city-name”>Agadir</div>
<span class=”dnm-city-tag”>Coastal Ease</span>
<div class=”dnm-city-desc”>Wide boulevards, mild Atlantic climate, laid-back vibe. Popular with longer-stay nomads. Direct flights to many European cities. Gateway to Taghazout surf, 20 min north.</div>
<div class=”dnm-city-speed”>Avg. 25–50 Mbps; expanding rapidly</div>
</div>
<div class=”dnm-city-card”>
<div class=”dnm-city-name”>Rabat</div>
<span class=”dnm-city-tag”>Quiet Capital</span>
<div class=”dnm-city-desc”>Often flies under nomad radar — precisely its appeal. Safe, clean, manageable in scale, large expat community. Agdal and Hassan have excellent café culture for focused work. Underpriced for quality of life.</div>
<div class=”dnm-city-speed”>Avg. 35–70 Mbps; very stable connections</div>
</div>
<div class=”dnm-city-card”>
<div class=”dnm-city-name”>Taghazout</div>
<span class=”dnm-city-tag”>Surf &#038; Work</span>
<div class=”dnm-city-desc”>Small surf village near Agadir that became a word-of-mouth nomad destination. Home to SunDesk — arguably Morocco&#8217;s most famous coworking space. Best for 2–6 week recharging stays.</div>
<div class=”dnm-city-speed”>Avg. 15–35 Mbps; improving steadily</div>
</div>
<div class=”dnm-city-card”>
<div class=”dnm-city-name”>Fes</div>
<span class=”dnm-city-tag”>Cultural Depth</span>
<div class=”dnm-city-desc”>The most intellectually stimulating choice. Working from the world&#8217;s oldest university city reshapes how you see time. More affordable than Marrakech, less touristy at ground level. Growing Ville Nouvelle coworking scene.</div>
<div class=”dnm-city-speed”>Avg. 20–45 Mbps; growing coworking scene</div>
</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– CITY MATCHER TOOL –>
<section class=”dnm-section” id=”city-matcher”>
<div class=”dnm-section-label”>Interactive Tool</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Find Your Best City in Morocco</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>
<p class=”dnm-p”>Use the sliders below to weight what matters most to you. The tool scores each city across six real indicators and instantly ranks your best matches.</p>

<!– Tool distinctive banner –>
<div class=”dnm-tool-banner”>
<div class=”dnm-tool-banner-icon”>🗺️</div>
<div>
<div class=”dnm-tool-banner-label”>⚙ Interactive Tool — Personalised City Ranking</div>
<div class=”dnm-tool-banner-title”>Which Moroccan City Fits Your Work Style?</div>
</div>
</div>

<!– Tool image –>
<div class=”dnm-img-block”>
<img decoding=”async” src=”https://moroccantraveltrips.com/wp-content/uploads/2026/03/Find-Your-Best-City-in-Morocco.webp” alt=”Find Your Best City in Morocco — digital nomad city matcher tool” loading=”lazy” onerror=”this.style.display=’none’; this.parentElement.style.minHeight=’80px'”>
<div class=”dnm-img-caption”>Adjust the sliders to match your priorities — ranked results update in real time below.</div>
</div>

<div class=”dnm-tool-wrap”>
<div class=”dnm-tool-header”>
<div class=”dnm-tool-header-tag”>✦ City Matcher</div>
<div class=”dnm-tool-title”>Adjust Your Priorities — See Your Ranking</div>
<div class=”dnm-tool-subtitle”>Move the sliders · results update instantly</div>
</div>
<div class=”dnm-tool-body”>
<div class=”dnm-cm-sliders” id=”cm-sliders”>
<div class=”dnm-cm-slider-row”>
<div class=”dnm-cm-label”>
<span><span class=”dnm-cm-label-icon”>💸</span>Low Cost of Living</span>
<span class=”dnm-cm-val” id=”val-cost”>7</span>
</div>
<input type=”range” min=”0″ max=”10″ value=”7″ class=”dnm-cm-slider” data-key=”cost” oninput=”dnmCmUpdate()” id=”sl-cost”>
</div>
<div class=”dnm-cm-slider-row”>
<div class=”dnm-cm-label”>
<span><span class=”dnm-cm-label-icon”>📶</span>Fast &#038; Reliable Internet</span>
<span class=”dnm-cm-val” id=”val-internet”>8</span>
</div>
<input type=”range” min=”0″ max=”10″ value=”8″ class=”dnm-cm-slider” data-key=”internet” oninput=”dnmCmUpdate()” id=”sl-internet”>
</div>
<div class=”dnm-cm-slider-row”>
<div class=”dnm-cm-label”>
<span><span class=”dnm-cm-label-icon”>👥</span>Nomad Community &#038; Coworking</span>
<span class=”dnm-cm-val” id=”val-community”>6</span>
</div>
<input type=”range” min=”0″ max=”10″ value=”6″ class=”dnm-cm-slider” data-key=”community” oninput=”dnmCmUpdate()” id=”sl-community”>
</div>
<div class=”dnm-cm-slider-row”>
<div class=”dnm-cm-label”>
<span><span class=”dnm-cm-label-icon”>🏖️</span>Beach / Outdoor Lifestyle</span>
<span class=”dnm-cm-val” id=”val-outdoor”>5</span>
</div>
<input type=”range” min=”0″ max=”10″ value=”5″ class=”dnm-cm-slider” data-key=”outdoor” oninput=”dnmCmUpdate()” id=”sl-outdoor”>
</div>
<div class=”dnm-cm-slider-row”>
<div class=”dnm-cm-label”>
<span><span class=”dnm-cm-label-icon”>🕌</span>Cultural Immersion &#038; Authenticity</span>
<span class=”dnm-cm-val” id=”val-culture”>5</span>
</div>
<input type=”range” min=”0″ max=”10″ value=”5″ class=”dnm-cm-slider” data-key=”culture” oninput=”dnmCmUpdate()” id=”sl-culture”>
</div>
<div class=”dnm-cm-slider-row”>
<div class=”dnm-cm-label”>
<span><span class=”dnm-cm-label-icon”>✈️</span>International Flights &#038; Connections</span>
<span class=”dnm-cm-val” id=”val-flights”>6</span>
</div>
<input type=”range” min=”0″ max=”10″ value=”6″ class=”dnm-cm-slider” data-key=”flights” oninput=”dnmCmUpdate()” id=”sl-flights”>
</div>
</div>

<div class=”dnm-cm-results” id=”cm-results”></div>
<div class=”dnm-cm-match-note” id=”cm-note”>
<span>💡</span>
<span id=”cm-note-text”>Adjust sliders to see your personalised city ranking.</span>
</div>
</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– INTERNET –>
<section class=”dnm-section” id=”internet”>
<div class=”dnm-section-label”>Connectivity</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Internet Speed, 5G &#038; Rural Connectivity</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Connectivity is the make-or-break factor for any remote worker, and here Morocco tends to pleasantly surprise. Internet speeds have improved dramatically over the past three years, driven by competition between Maroc Telecom (IAM), Orange Maroc, and inwi — all of whom have expanded fiber and 4G+ coverage substantially.</p>

<div class=”dnm-pullquote”>
<p>&#8220;In major cities, fiber at 50–100 Mbps is routine. Video calls, large uploads, and cloud tools all run without friction. The real surprise is how solid 4G is even in smaller towns like Taghazout or Chefchaouen.&#8221;</p>
</div>

<p class=”dnm-p”>Before committing to accommodation, check real-time performance using <a href=”https://duga.ma/test-de-vitesse-internet-maroc/” class=”dnm-inline-link” rel=”noopener noreferrer” target=”_blank”>this Morocco-specific internet speed test</a>.</p>

<h3 class=”dnm-h3″>5G in Morocco — Progressive Rollout</h3>

<p class=”dnm-p”>Morocco has officially launched <a href=”https://duga.ma/5g-maroc-le-guide-complet/” class=”dnm-inline-link” rel=”noopener noreferrer” target=”_blank”><strong>5G Maroc</strong></a>, currently active in selected coverage zones in Casablanca, Rabat, and Marrakech. The rollout is progressive — operators have committed to expanding 5G to many additional cities across Morocco in planned phases. Coverage within cities remains uneven in 2026, with business districts and newer residential zones typically covered first.</p>

<h3 class=”dnm-h3″>Internet Outside Major Cities — The Honest Picture</h3>

<div class=”dnm-infobox”>
<div class=”dnm-infobox-title”>📶 Rural &#038; Off-Grid Connectivity Reality</div>
<ul>
<li><strong>Secondary towns (Chefchaouen, Ouarzazate, Essaouira):</strong> 4G generally available in town centres, but speeds can drop to 10–20 Mbps during peak hours.</li>
<li><strong>Mountain villages (High Atlas, Rif):</strong> 4G is patchy and often drops to 3G or EDGE. Expect 1–5 Mbps at best.</li>
<li><strong>Sahara / Deep South (Merzouga, Zagora, Erg Chebbi):</strong> Minimal to no reliable 4G. Some Starlink-equipped desert camps now exist for nomad travellers.</li>
<li><strong>Atlantic coast villages north of Agadir:</strong> Taghazout, Tamraght, and Imsouane now have workable 4G — though SunDesk-type dedicated connections are still most reliable for intensive work.</li>
<li><strong>General rule:</strong> A dual-SIM setup (Maroc Telecom + inwi) improves rural coverage significantly since tower coverage varies by operator.</li>
</ul>
</div>

<div class=”dnm-infobox”>
<div class=”dnm-infobox-title”>📶 City Connectivity Tips</div>
<ul>
<li>Buy a local SIM on arrival — prepaid data packages are very affordable. See the full comparison in our guide to the <a href=”https://moroccantraveltrips.com/best-sim-card-in-morocco-for-tourists/” rel=”noopener noreferrer” target=”_blank” style=”color:var(–dnm-teal);text-decoration:underline;text-underline-offset:3px;”>Best SIM Card in Morocco for Tourists</a>. Bring your passport; registration is required.</li>
<li>Ask your accommodation for the actual measured speed before signing. Old medina buildings with thick walls can significantly degrade Wi-Fi signals.</li>
<li>inwi&#8217;s high-data prepaid packages serve well as a backup city connection.</li>
<li>Best times for lowest latency on video calls: early morning (6–9am) and mid-afternoon on weekdays.</li>
</ul>
</div>

<h3 class=”dnm-h3″>Official Average Speeds by City (2025–2026)</h3>

<table class=”dnm-speed-table”>
<thead>
<tr>
<th>City</th>
<th>Fixed Broadband</th>
<th>Mobile 4G Avg.</th>
<th>5G Available</th>
<th style=”width:120px”>Relative Speed</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Casablanca</strong></td>
<td>60–110 Mbps</td>
<td>~40 Mbps</td>
<td>✅ Selected zones</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:95%”></div></div></td>
</tr>
<tr>
<td><strong>Rabat</strong></td>
<td>50–90 Mbps</td>
<td>~35 Mbps</td>
<td>✅ Selected zones</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:85%”></div></div></td>
</tr>
<tr>
<td><strong>Marrakech</strong></td>
<td>40–70 Mbps</td>
<td>~30 Mbps</td>
<td>✅ Selected zones</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:72%”></div></div></td>
</tr>
<tr>
<td><strong>Agadir</strong></td>
<td>30–60 Mbps</td>
<td>~25 Mbps</td>
<td>🔄 Rollout planned</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:60%”></div></div></td>
</tr>
<tr>
<td><strong>Tangier</strong></td>
<td>35–65 Mbps</td>
<td>~28 Mbps</td>
<td>🔄 Rollout planned</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:63%”></div></div></td>
</tr>
<tr>
<td><strong>Fes</strong></td>
<td>25–50 Mbps</td>
<td>~20 Mbps</td>
<td>🔄 Rollout planned</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:50%”></div></div></td>
</tr>
<tr>
<td><strong>Taghazout</strong></td>
<td>15–35 Mbps</td>
<td>~15 Mbps</td>
<td>❌ Not yet</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:30%”></div></div></td>
</tr>
<tr>
<td><strong>Chefchaouen</strong></td>
<td>10–25 Mbps</td>
<td>~12 Mbps</td>
<td>❌ Not yet</td>
<td class=”dnm-speed-bar-cell”><div class=”dnm-speed-mini-bar”><div class=”dnm-speed-mini-fill” style=”width:22%”></div></div></td>
</tr>
</tbody>
</table>

<h3 class=”dnm-h3″>Power Adapters &#038; Plugs</h3>

<p class=”dnm-p”>Morocco uses Type C and Type E sockets (same as continental Europe) at 220V/50Hz. If arriving from the US, UK, or Australia, you&#8217;ll need an adapter. Check the full guide on <a href=”https://moroccantraveltrips.com/morocco-outlet-type/” class=”dnm-inline-link” rel=”noopener noreferrer” target=”_blank”>Morocco plug type</a> to arrive prepared.</p>

<div class=”dnm-tech-row”>
<a href=”https://duga.ma/hp-store-maroc/” class=”dnm-tech-link” rel=”noopener noreferrer” target=”_blank”>
<span class=”dnm-tech-link-icon”>💻</span> HP Store Morocco
</a>
<a href=”https://duga.ma/revendeur-apple-agree-maroc/” class=”dnm-tech-link” rel=”noopener noreferrer” target=”_blank”>
<span class=”dnm-tech-link-icon”>🍎</span> Authorized Apple Resellers
</a>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– COWORKING –>
<section class=”dnm-section” id=”coworking”>
<div class=”dnm-section-label”>Community &#038; Workspace</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Coworking Spaces, Community &#038; Cafés</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Remote work can be isolating anywhere in the world. Morocco has developed a genuinely interesting coworking ecosystem where several spaces function as proper community hubs, not just desk-rental operations.</p>

<div class=”dnm-cowork-grid”>
<div class=”dnm-cowork-card”>
<div class=”dnm-cowork-name”>SunDesk</div>
<div class=”dnm-cowork-loc”>Taghazout</div>
<div class=”dnm-cowork-desc”>The most famous nomad coworking in Morocco — perhaps in Africa. Built for remote workers: surf lessons, community dinners, yoga deck. Operates on weekly packages. Books up fast in peak season.</div>
<div class=”dnm-cowork-vibe”>🏄 Surf retreat meets startup community</div>
<a href=”https://maps.google.com/?q=SunDesk+Taghazout+Morocco” target=”_blank” rel=”noopener noreferrer” class=”dnm-cowork-map”>View on Map</a>
</div>
<div class=”dnm-cowork-card”>
<div class=”dnm-cowork-name”>lblassa</div>
<div class=”dnm-cowork-loc”>Marrakech · Guéliz</div>
<div class=”dnm-cowork-desc”>Creative coworking and community hub in Guéliz. Regular events, stable local member base, strong connections to Marrakech&#8217;s creative and startup scene. Day passes available; solid Wi-Fi.</div>
<div class=”dnm-cowork-vibe”>💼 Creative professional community</div>
<a href=”https://maps.google.com/?q=lblassa+Coworking+Marrakech” target=”_blank” rel=”noopener noreferrer” class=”dnm-cowork-map”>View on Map</a>
</div>
<div class=”dnm-cowork-card”>
<div class=”dnm-cowork-name”>La Fabrique</div>
<div class=”dnm-cowork-loc”>Casablanca</div>
<div class=”dnm-cowork-desc”>Casablanca&#8217;s anchor coworking space for local startups and visiting nomads. Enterprise amenities — meeting rooms, printing, reception — in a modern building. Good for client presentations.</div>
<div class=”dnm-cowork-vibe”>🏢 Professional, business-oriented</div>
<a href=”https://maps.google.com/?q=La+Fabrique+Coworking+Casablanca” target=”_blank” rel=”noopener noreferrer” class=”dnm-cowork-map”>View on Map</a>
</div>
<div class=”dnm-cowork-card”>
<div class=”dnm-cowork-name”>Bab Coworking</div>
<div class=”dnm-cowork-loc”>Rabat · Agdal</div>
<div class=”dnm-cowork-desc”>Rabat&#8217;s cleanest coworking option. Quiet vibe suitable for deep focus work. Monthly memberships noticeably cheaper than Marrakech or Casa equivalents.</div>
<div class=”dnm-cowork-vibe”>📚 Focused, academic, affordable</div>
<a href=”https://maps.google.com/?q=Bab+Coworking+Rabat+Agdal” target=”_blank” rel=”noopener noreferrer” class=”dnm-cowork-map”>View on Map</a>
</div>
<div class=”dnm-cowork-card”>
<div class=”dnm-cowork-name”>Atlas Coworking</div>
<div class=”dnm-cowork-loc”>Agadir</div>
<div class=”dnm-cowork-desc”>Agadir&#8217;s best option for longer-stay nomads. Flexible packages, relaxed culture that matches the city&#8217;s pace. Close to the beach — the morning commute is genuinely pleasant.</div>
<div class=”dnm-cowork-vibe”>🌊 Relaxed, coastal lifestyle</div>
<a href=”https://maps.google.com/?q=Atlas+Coworking+Agadir” target=”_blank” rel=”noopener noreferrer” class=”dnm-cowork-map”>View on Map</a>
</div>
<div class=”dnm-cowork-card”>
<div class=”dnm-cowork-name”>Café Les Négociants</div>
<div class=”dnm-cowork-loc”>Marrakech · Guéliz</div>
<div class=”dnm-cowork-desc”>A legendary café on Mohammed V Avenue where laptop workers have gathered for years. Solid Wi-Fi, proper espresso, no time limit. Free — just buy coffee.</div>
<div class=”dnm-cowork-vibe”>☕ Classic Marrakech café culture</div>
<a href=”https://maps.google.com/?q=Cafe+Les+Negociants+Marrakech” target=”_blank” rel=”noopener noreferrer” class=”dnm-cowork-map”>View on Map</a>
</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– COST –>
<section class=”dnm-section” id=”cost”>
<div class=”dnm-section-label”>Budget &#038; Finance</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Cost of Living &#038; Daily Budget</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>For someone earning in euros, dollars, or sterling and spending in dirhams, the purchasing power differential is genuinely significant. A full month of decent living — comfortable apartment, groceries, meals out, coworking, transport, and leisure — is achievable for €700–1,200 depending on the city and lifestyle.</p>

<div class=”dnm-infobox”>
<div class=”dnm-infobox-title”>💰 Rough Monthly Cost Guide (2026)</div>
<ul>
<li><strong>Furnished apartment (city centre, 1 bed):</strong> MAD 4,000–7,500 / €370–690 · Marrakech &amp; Casa at higher end; Rabat &amp; Fes at lower</li>
<li><strong>Coworking hot desk (monthly):</strong> MAD 800–1,800 / €75–170 · Day passes typically MAD 80–150</li>
<li><strong>Groceries (for one):</strong> MAD 1,200–2,000/month · Local market shopping significantly cheaper than supermarkets</li>
<li><strong>Eating out (mid-range):</strong> MAD 80–180 per meal · Excellent tagine lunch can cost MAD 35–50</li>
<li><strong>Café session (coffee + water):</strong> MAD 30–60 · Most good cafés have no time limit</li>
<li><strong>Monthly transport (apps + taxis):</strong> MAD 400–900</li>
<li><strong>International health insurance:</strong> approx. €50–120/month · Strongly recommended</li>
<li><strong>SIM + data (inwi or IAM):</strong> MAD 100–200/month for ample 4G data</li>
</ul>
</div>

<div class=”dnm-img-block” style=”margin-top:28px;”>
<img decoding=”async” src=”https://moroccantraveltrips.com/wp-content/uploads/2026/03/person-work-pc-morocco.webp” alt=”Working remotely in Morocco — digital nomad at laptop” loading=”lazy” onerror=”this.style.display=’none’; this.parentElement.style.minHeight=’80px'”>
<div class=”dnm-img-caption”>The daily reality of remote work in Morocco — a combination of reliable connectivity and an unmatched atmosphere.</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– COST CALCULATOR –>
<section class=”dnm-section” id=”cost-calc”>
<div class=”dnm-section-label”>Interactive Tool</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Monthly Cost Calculator</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>
<p class=”dnm-p”>Estimate your real monthly budget in Morocco based on your lifestyle choices. All amounts in MAD with euro equivalent.</p>

<!– Tool distinctive banner –>
<div class=”dnm-tool-banner”>
<div class=”dnm-tool-banner-icon”>🧮</div>
<div>
<div class=”dnm-tool-banner-label”>⚙ Interactive Tool — Live Budget Estimator</div>
<div class=”dnm-tool-banner-title”>What Will Morocco Actually Cost You?</div>
</div>
</div>

<!– Tool image –>
<div class=”dnm-img-block”>
<img decoding=”async” src=”https://moroccantraveltrips.com/wp-content/uploads/2026/03/Monthly-Cost-Calculator-Morocco.webp” alt=”Monthly Cost Calculator Morocco — digital nomad budget tool” loading=”lazy” onerror=”this.style.display=’none’; this.parentElement.style.minHeight=’80px'”>
<div class=”dnm-img-caption”>Select your city and lifestyle preferences — your personalised monthly budget appears instantly below.</div>
</div>

<div class=”dnm-tool-wrap”>
<div class=”dnm-tool-header”>
<div class=”dnm-tool-header-tag”>✦ Cost Calculator</div>
<div class=”dnm-tool-title”>Personalise Your Morocco Budget</div>
<div class=”dnm-tool-subtitle”>Choose your city and lifestyle — results update instantly</div>
</div>
<div class=”dnm-tool-body”>

<div class=”dnm-calc-section-label”>Your Base Setup</div>
<div class=”dnm-calc-grid”>
<div class=”dnm-calc-field”>
<label for=”calc-city”>🏙️ Which city?</label>
<select class=”dnm-calc-select” id=”calc-city” onchange=”dnmCalcUpdate()”>
<option value=”marrakech”>Marrakech</option>
<option value=”casablanca”>Casablanca</option>
<option value=”agadir”>Agadir</option>
<option value=”rabat”>Rabat</option>
<option value=”fes”>Fes</option>
<option value=”taghazout”>Taghazout</option>
</select>
</div>
<div class=”dnm-calc-field”>
<label for=”calc-accom”>🏠 Accommodation style</label>
<select class=”dnm-calc-select” id=”calc-accom” onchange=”dnmCalcUpdate()”>
<option value=”budget”>Budget — shared / medina room</option>
<option value=”mid” selected>Mid-range — 1-bed, modern flat</option>
<option value=”comfort”>Comfortable — riad / premium</option>
</select>
</div>
<div class=”dnm-calc-field”>
<label for=”calc-food”>🍽️ Eating habits</label>
<select class=”dnm-calc-select” id=”calc-food” onchange=”dnmCalcUpdate()”>
<option value=”local”>Cook at home + local spots</option>
<option value=”mixed” selected>Mix of local &#038; mid-range restaurants</option>
<option value=”expat”>Frequent expat / Western restaurants</option>
</select>
</div>
<div class=”dnm-calc-field”>
<label for=”calc-work”>💼 Where do you work?</label>
<select class=”dnm-calc-select” id=”calc-work” onchange=”dnmCalcUpdate()”>
<option value=”home”>From home or cafés (free)</option>
<option value=”cowork” selected>Coworking hot desk — monthly pass</option>
<option value=”dedicated”>Dedicated coworking desk</option>
</select>
</div>
</div>

<div class=”dnm-calc-section-label”>Optional Extras</div>
<div class=”dnm-calc-checkboxes”>
<label class=”dnm-calc-check-label”>
<input type=”checkbox” id=”calc-insurance” onchange=”dnmCalcUpdate()” checked>
🏥 Health Insurance (~€80/mo)
</label>
<label class=”dnm-calc-check-label”>
<input type=”checkbox” id=”calc-sim” onchange=”dnmCalcUpdate()” checked>
📱 Local SIM + Data (~MAD 180)
</label>
<label class=”dnm-calc-check-label”>
<input type=”checkbox” id=”calc-leisure” onchange=”dnmCalcUpdate()”>
🎭 Leisure &amp; Activities (+MAD 900)
</label>
<label class=”dnm-calc-check-label”>
<input type=”checkbox” id=”calc-gym” onchange=”dnmCalcUpdate()”>
🏋️ Gym / Hammam (+MAD 350)
</label>
</div>

<div class=”dnm-calc-result-wrap” id=”calc-result”>
<div class=”dnm-calc-total-label”>Estimated Monthly Budget</div>
<div class=”dnm-calc-total” id=”calc-total-mad”>—</div>
<div class=”dnm-calc-total-sub” id=”calc-total-eur”>—</div>
<div class=”dnm-calc-breakdown” id=”calc-breakdown”></div>
</div>

</div>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– WORKSPACE –>
<section class=”dnm-section” id=”workspace”>
<div class=”dnm-section-label”>Productivity</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Setting Up Your Mobile Workspace</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Your physical workspace matters far more than it seems in the excitement of a new destination. A poor chair or bad lighting can turn an inspired morning into a back-ache-fuelled afternoon. If you plan to stay in Morocco for more than a few weeks — and many people extend well beyond initial plans — investing in your ergonomic setup is worth it.</p>

<div class=”dnm-ergo-box”>
<div class=”dnm-ergo-icon”>🪑</div>
<div class=”dnm-ergo-content”>
<div class=”dnm-ergo-title”>Ergonomic Seating — Don&#8217;t Neglect This</div>
<div class=”dnm-ergo-text”>Chronic back pain from unsuitable seating is among the top complaints of full-time remote workers. If your furnished apartment doesn&#8217;t include a decent chair, it&#8217;s worth sourcing one locally. <a href=”https://bigoffice.ma/categorie-produit/sieges-fauteuils/chaise-bureau-ergonomique/” rel=”noopener noreferrer” target=”_blank”>BigOffice.ma</a> offers ergonomic desk chairs with delivery service in Morocco.</div>
</div>
</div>

<p class=”dnm-p”>Beyond the chair: a portable monitor riser, compact keyboard, noise-isolating headphones for noisy riads, and a universal travel adapter with extra USB-C ports. All findable in Morocco, particularly at Casablanca&#8217;s Derb Ghallef electronics district.</p>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– SAFETY –>
<section class=”dnm-section” id=”safety”>
<div class=”dnm-section-label”>Safety &#038; Practicalities</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>Safety &#038; Practical Life Tips</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<p class=”dnm-p”>Morocco has a well-established reputation as one of the region&#8217;s safest and most tourist-friendly countries. Petty scams in high-traffic medina areas are real but avoidable with basic awareness. For a thorough regional breakdown, this <a href=”https://moroccantraveltrips.com/is-morocco-safe-to-visit-for-tourists/” class=”dnm-inline-link”>Morocco safety guide</a> is worth reading in full.</p>

<div class=”dnm-infobox”>
<div class=”dnm-infobox-title”>🧭 Practical Tips for Your First Weeks</div>
<ul>
<li>Download InDrive and Bolt before landing. At train stations and airports, use official taxis at the designated rank.</li>
<li><strong>Ramadan</strong> shifts the daily rhythm significantly. Restaurants have reduced daytime hours; the city comes alive after sunset.</li>
<li>Morocco has a public healthcare system, but nomads use private clinics for anything serious. International health insurance is strongly recommended.</li>
<li>Learning even basic Darija or French makes a noticeable difference. Even &#8220;shukran&#8221; (thank you) and &#8220;la shukran&#8221; (no thank you) changes how you&#8217;re received in markets.</li>
<li><strong>Emergency numbers:</strong> 19 (Police), 15 (Medical/SAMU), 177 (Gendarmerie). Save these the day you arrive.</li>
<li>Register your extended stay with your embassy if staying 3+ months — optional but sensible for emergency consular support.</li>
</ul>
</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– FAQ –>
<section class=”dnm-section” id=”faq”>
<div class=”dnm-section-label”>Frequently Asked Questions</div>
<div class=”dnm-h2-row”>
<h2 class=”dnm-h2″>FAQ — Digital Nomad in Morocco</h2>
<a href=”#dnm-toc-anchor” class=”dnm-back-toc” title=”Back to table of contents”>↑</a>
</div>

<div class=”dnm-faq” id=”dnm-faq”>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Does Morocco have an official Digital Nomad Visa in 2026?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>No. As of 2026, Morocco does not offer a dedicated Digital Nomad Visa. Most remote workers enter on the standard tourist regime (visa-free for 60+ nationalities, up to 90 days). For longer stays, the <em>carte de séjour</em> residency permit is the path. Check <a href=”https://www.acces-maroc.ma/” target=”_blank” rel=”noopener noreferrer”>Accès Maroc</a> for the latest official entry information.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Is internet in Morocco fast enough for remote work and video calls?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Yes, in major cities. Fiber at 30–100 Mbps is standard in coworking spaces and modern apartments in Casablanca, Marrakech, Rabat, and Agadir. 4G is reliable in most city areas. 5G has launched in selected zones in major cities and is being progressively rolled out. Rural areas can be patchy — plan accordingly. Use <a href=”https://duga.ma/test-de-vitesse-internet-maroc/” target=”_blank” rel=”noopener noreferrer”>this speed test</a> to check local performance before committing to accommodation.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
How much money do I need per month as a digital nomad in Morocco?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>A comfortable lifestyle — decent apartment, coworking membership, groceries, meals out, transport, and leisure — is achievable for €700–1,000/month in most cities. Casablanca is at the higher end; Fes and Rabat at the lower. Health insurance (€50–120/month) is a separate essential cost to factor in.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Do Wise and Revolut cards work in Morocco?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Yes, both work well. Wise is generally the best option — near-interbank exchange rates to MAD, low fees. Revolut also works but applies a weekend conversion markup. Attijariwafa Bank ATMs tend to have the lowest additional fees on foreign cards. Always withdraw in larger amounts to minimise per-transaction fees.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Which city in Morocco is best for digital nomads?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>It depends on your priorities. Marrakech: largest nomad community, best atmosphere, solid coworking. Casablanca: fastest internet and best business infrastructure. Agadir: coastal comfort, relaxed pace. Taghazout: ideal for surf + work short stays. Rabat: underrated pick for quiet, affordable, high-quality urban life. Fes: maximum cultural immersion with growing infrastructure. Use the City Matcher tool above for a personalised ranking.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Is Morocco safe for solo digital nomads, including solo women?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Morocco is generally considered safe, and thousands of solo nomads — including solo women — live here for extended periods without incidents. The most common issues are petty tourist-targeted scams in busy medina areas, which become avoidable quickly once you&#8217;ve been there a week. Read this detailed <a href=”https://moroccantraveltrips.com/is-morocco-safe-to-visit-for-tourists/” target=”_blank” rel=”noopener noreferrer”>Morocco safety guide</a> for region-specific nuances.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
What plug type does Morocco use? Do I need an adapter?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Morocco uses Type C and Type E sockets (same as continental Europe) at 220V/50Hz. If coming from the US, UK, or Australia you&#8217;ll need an adapter. See the full details on <a href=”https://moroccantraveltrips.com/morocco-outlet-type/” target=”_blank” rel=”noopener noreferrer”>Morocco plug type and adapters</a> to arrive prepared.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Can I travel between Moroccan cities while working remotely?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Yes. The Al Boraq high-speed train connects Tangier, Rabat, and Casablanca in under 2h10. ONCF&#8217;s regular network covers most major cities — Casablanca to Marrakech takes 3h15, Casablanca to Fes about 4h30. Inter-city CTM and Supratours buses are comfortable for destinations the train doesn&#8217;t reach.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Is there 5G in Morocco and can I use it as a nomad?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Yes — Morocco has officially launched 5G in selected zones in Casablanca, Rabat, and Marrakech, with a progressive rollout planned to cover many more cities in phases. Coverage within cities is still uneven in 2026. Check the full <a href=”https://duga.ma/5g-maroc-le-guide-complet/” target=”_blank” rel=”noopener noreferrer”>5G Maroc guide</a> for the latest coverage information.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Are ride-hailing apps like InDrive and Bolt safe to use in Morocco?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Yes, they are safe and widely used. However, there is an ongoing conflict between licensed petit-taxi drivers and ride-hailing app drivers in some cities. Near train stations and airports, tensions can occasionally arise. The safest approach at these locations is to use the official licensed taxi rank. Once in a residential area or coworking space, ordering via InDrive, Careem, or Bolt is straightforward and often more affordable.</div></div>
</div>

<div class=”dnm-faq-item”>
<button class=”dnm-faq-q” onclick=”dnmToggleFaq(this)” aria-expanded=”false”>
Do I need a local SIM card in Morocco? Which operator is best?
<span class=”dnm-faq-icon”>+</span>
</button>
<div class=”dnm-faq-a”><div class=”dnm-faq-a-inner”>Yes — a local SIM is strongly recommended. Maroc Telecom (IAM) has the widest network coverage, particularly outside cities. inwi is strong in urban areas and often offers competitive high-data packages. Orange Maroc is also available. You&#8217;ll need your passport to register.</div></div>
</div>

</div>
</section>

<div class=”dnm-divider”><span>✦</span></div>

<!– GUIDE BOOKING –>
<section class=”dnm-section” id=”guide”>
<div class=”dnm-booking”>
<div class=”dnm-booking-header”>
<div class=”dnm-booking-header-label”>✦ Local Expert Access</div>
<div class=”dnm-booking-header-title”>Get Oriented by a Licensed Moroccan Guide — Before You Commit</div>
</div>
<div class=”dnm-booking-body”>
<div class=”dnm-guide-profile”>
<img decoding=”async”
src=”https://moroccantraveltrips.com/wp-content/uploads/2026/03/Guide-Mouhssine.jpeg”
alt=”Licensed Moroccan tour guide Mouhssine”
class=”dnm-guide-img”
loading=”lazy”
>
<div class=”dnm-guide-info”>
<div class=”dnm-guide-name”>Guide Mouhssine</div>
<div class=”dnm-guide-license”>🏅 Official Licensed Guide · Ref. No. 2898</div>
<div class=”dnm-guide-desc”>Fluent in Arabic, French, and English · Specialist in cultural, heritage, and extended-stay orientation tours across Morocco</div>
</div>
</div>

<p class=”dnm-booking-text”>Arriving for an extended stay as a remote worker is a completely different experience from a standard holiday. You need to understand <em>neighbourhoods</em>, not just landmarks — which areas are genuinely walkable for daily errands, where the coworking spaces and reliable cafés are, which streets to live on versus avoid, and how to navigate local logistics from SIM cards to finding a decent apartment.</p>

<p class=”dnm-booking-text”>Guide Mouhssine is a government-licensed Moroccan guide (official reference <strong>No. 2898</strong>) who specialises in helping long-stay visitors and digital nomads settle into Morocco intelligently. He provides <strong>practical tips, insider knowledge, and honest local advice</strong> you won&#8217;t find online — and can take you on a <strong>curated city tour through the neighbourhoods that matter</strong> so you can make an informed final decision before committing to a long-stay plan.</p>

<a href=”https://wa.me/212671437971?text=Hello%2C%20I%20found%20your%20contact%20through%20the%20Digital%20Nomad%20Morocco%20guide%20and%20I%27d%20like%20to%20book%20your%20services.” class=”dnm-wa-btn” target=”_blank” rel=”noopener noreferrer” aria-label=”Book licensed guide Mouhssine on WhatsApp”>
<span class=”dnm-wa-icon”>💬</span>
Book via WhatsApp · +212 671 437 971
</a>

<p class=”dnm-booking-note”>✦ No intermediaries, no platform fees — direct contact with a licensed professional. Ask about arrival orientation tours and neighbourhood walkthroughs for digital nomads.</p>
</div>
</div>
</section>

<!– FOOTER –>
<footer class=”dnm-footer-note”>
<div class=”dnm-footer-logo”>✦ MTC</div>
<div class=”dnm-footer-text”>
This guide is part of the <a href=”https://moroccantraveltrips.com/” target=”_blank” rel=”noopener noreferrer”>Moroccan Travel Tips</a> series — practical, first-hand resources for travellers, remote workers, and long-stay visitors to Morocco. All information is reviewed and updated for 2026. For entry authorizations and visa questions, visit <a href=”https://www.acces-maroc.ma/” target=”_blank” rel=”noopener noreferrer”>Accès Maroc</a>.
</div>
</footer>

</div><!– /.dnm-wrap –>
</article>

<script>
(function() {
‘use strict’;

/* ── FIND ROOT ── */
function findRoot(el) {
while (el && !el.classList.contains(‘dnm-article-root’)) {
el = el.parentElement;
}
return el;
}

/* ── TOC TOGGLE ── */
function dnmToggleToc(btn) {
var root = findRoot(btn);
if (!root) return;
var toc = root.querySelector(‘#dnm-toc’);
if (!toc) return;
var isOpen = toc.classList.toggle(‘is-open’);
btn.setAttribute(‘aria-expanded’, isOpen ? ‘true’ : ‘false’);
}

function dnmCloseToc() {
var tocs = document.querySelectorAll(‘.dnm-article-root #dnm-toc’);
tocs.forEach(function(toc) {
toc.classList.remove(‘is-open’);
var hdr = toc.querySelector(‘.dnm-toc-header’);
if (hdr) hdr.setAttribute(‘aria-expanded’, ‘false’);
});
}

window.dnmToggleToc = dnmToggleToc;
window.dnmCloseToc = dnmCloseToc;

/* ── FAQ ── */
function dnmToggleFaq(btn) {
var item = btn.closest(‘.dnm-faq-item’);
if (!item) return;
var root = findRoot(item);
var wasOpen = item.classList.contains(‘is-open’);
if (root) {
root.querySelectorAll(‘.dnm-faq-item.is-open’).forEach(function(el) {
el.classList.remove(‘is-open’);
var b = el.querySelector(‘.dnm-faq-q’);
if (b) b.setAttribute(‘aria-expanded’, ‘false’);
});
}
if (!wasOpen) {
item.classList.add(‘is-open’);
btn.setAttribute(‘aria-expanded’, ‘true’);
}
}

window.dnmToggleFaq = dnmToggleFaq;

/* ── SLIDER GRADIENT ── */
function updateSliderGradient(slider) {
var pct = (parseFloat(slider.value) / parseFloat(slider.max)) * 100;
slider.style.setProperty(‘–pct’, pct + ‘%’);
}

document.querySelectorAll(‘.dnm-article-root .dnm-cm-slider’).forEach(function(s) {
updateSliderGradient(s);
s.addEventListener(‘input’, function() { updateSliderGradient(this); });
});

/* ── CITY MATCHER ── */
var CM_CITIES = [
{ id: ‘marrakech’, name: ‘Marrakech’, tags: [‘Culture Hub’, ‘Nomad Community’, ‘Coworking’], scores: { cost: 5, internet: 7, community: 9, outdoor: 4, culture: 9, flights: 8 }, note: ‘Largest nomad community in Morocco. Unbeatable atmosphere. Best for long stays with a social scene.’ },
{ id: ‘casablanca’, name: ‘Casablanca’, tags: [‘Business Capital’, ‘Fast Internet’, ‘Enterprise’], scores: { cost: 3, internet: 10, community: 7, outdoor: 4, culture: 5, flights: 10 }, note: ‘Morocco\’s economic hub. Best internet speeds, biggest international airport, modern coworking.’ },
{ id: ‘agadir’, name: ‘Agadir’, tags: [‘Coastal’, ‘Relaxed Pace’, ‘Atlantic’], scores: { cost: 6, internet: 6, community: 6, outdoor: 9, culture: 5, flights: 8 }, note: ‘Best city for beach + work balance. Mild year-round climate, direct European flights, laid-back vibe.’ },
{ id: ‘rabat’, name: ‘Rabat’, tags: [‘Quiet Capital’, ‘Expat Community’, ‘Affordable’], scores: { cost: 7, internet: 8, community: 6, outdoor: 5, culture: 7, flights: 6 }, note: ‘Underrated gem. Safe, clean, affordable for its quality. Large expat community, excellent café culture.’ },
{ id: ‘taghazout’, name: ‘Taghazout’, tags: [‘Surf & Work’, ‘SunDesk’, ‘Short Stay’], scores: { cost: 6, internet: 4, community: 7, outdoor: 10, culture: 4, flights: 4 }, note: ‘Home to SunDesk — Africa\’s most famous nomad coworking. Perfect for 2–6 week recharging stays.’ },
{ id: ‘fes’, name: ‘Fes’, tags: [‘Cultural Depth’, ‘Most Affordable’, ‘Historic’], scores: { cost: 9, internet: 5, community: 4, outdoor: 4, culture: 10, flights: 5 }, note: ‘The most affordable major city. Deepest cultural immersion. Growing infrastructure, quieter nomad scene.’ }
];

function dnmCmUpdate() {
var keys = [‘cost’, ‘internet’, ‘community’, ‘outdoor’, ‘culture’, ‘flights’];
var weights = {};

keys.forEach(function(k) {
var el = document.getElementById(‘sl-‘ + k);
var valEl = document.getElementById(‘val-‘ + k);
if (el) {
weights[k] = parseFloat(el.value);
updateSliderGradient(el);
if (valEl) valEl.textContent = el.value;
}
});

var totalWeight = Object.values(weights).reduce(function(a, b) { return a + b; }, 0);
if (totalWeight === 0) totalWeight = 1;

var ranked = CM_CITIES.map(function(city) {
var raw = 0;
keys.forEach(function(k) { raw += city.scores[k] * weights[k]; });
var score = Math.round((raw / (totalWeight * 10)) * 100);
return { city: city, score: score };
});

ranked.sort(function(a, b) { return b.score – a.score; });

var container = document.getElementById(‘cm-results’);
if (!container) return;
container.innerHTML = ”;

ranked.forEach(function(item, idx) {
var div = document.createElement(‘div’);
div.className = ‘dnm-cm-result’ + (idx === 0 ? ‘ is-top’ : ”);

var rankDiv = document.createElement(‘div’);
rankDiv.className = ‘dnm-cm-rank’;
rankDiv.textContent = idx + 1;

var infoDiv = document.createElement(‘div’);
infoDiv.className = ‘dnm-cm-city-info’;
infoDiv.innerHTML = ‘<div class=”dnm-cm-city-name-r”>’ + item.city.name + ‘</div>’ +
‘<div class=”dnm-cm-city-tags”>’ + item.city.tags.map(function(t) { return ‘<span class=”dnm-cm-city-tag”>’ + t + ‘</span>’; }).join(”) + ‘</div>’ +
‘<div class=”dnm-cm-bar-wrap” style=”margin-top:7px”><div class=”dnm-cm-bar” style=”width:’ + item.score + ‘%”></div></div>’;

var scoreDiv = document.createElement(‘div’);
scoreDiv.className = ‘dnm-cm-score-col’;
scoreDiv.innerHTML = ‘<div class=”dnm-cm-score”>’ + item.score + ‘</div><div class=”dnm-cm-score-label”>/ 100</div>’;

div.appendChild(rankDiv);
div.appendChild(infoDiv);
div.appendChild(scoreDiv);
container.appendChild(div);
});

var noteEl = document.getElementById(‘cm-note-text’);
if (noteEl && ranked[0]) {
noteEl.textContent = ‘🏆 Best match: ‘ + ranked[0].city.name + ‘ — ‘ + ranked[0].city.note;
}
}

window.dnmCmUpdate = dnmCmUpdate;
setTimeout(dnmCmUpdate, 100);

/* ── COST CALCULATOR ── */
var CALC_DATA = {
marrakech: { base: { budget: 2800, mid: 5000, comfort: 7500 } },
casablanca: { base: { budget: 3500, mid: 6500, comfort: 9500 } },
agadir: { base: { budget: 2600, mid: 4500, comfort: 6800 } },
rabat: { base: { budget: 2800, mid: 4800, comfort: 7000 } },
fes: { base: { budget: 2200, mid: 3800, comfort: 5800 } },
taghazout: { base: { budget: 2500, mid: 4200, comfort: 6000 } }
};

var FOOD_COSTS = { local: 1200, mixed: 2200, expat: 3800 };
var WORK_COSTS = { home: 150, cowork: 1200, dedicated: 1900 };
var TRANSPORT = 600;
var INSURANCE_EUR = 80;
var SIM_MAD = 180;
var LEISURE_MAD = 900;
var GYM_MAD = 350;
var EUR_RATE = 10.8;

function dnmCalcUpdate() {
var city = document.getElementById(‘calc-city’).value;
var accom = document.getElementById(‘calc-accom’).value;
var food = document.getElementById(‘calc-food’).value;
var work = document.getElementById(‘calc-work’).value;
var ins = document.getElementById(‘calc-insurance’).checked;
var sim = document.getElementById(‘calc-sim’).checked;
var leisure = document.getElementById(‘calc-leisure’).checked;
var gym = document.getElementById(‘calc-gym’).checked;

var accomCost = CALC_DATA[city].base[accom];
var foodCost = FOOD_COSTS[food];
var workCost = WORK_COSTS[work];
var insCostMAD = ins ? Math.round(INSURANCE_EUR * EUR_RATE) : 0;
var simCost = sim ? SIM_MAD : 0;
var leisureCost = leisure ? LEISURE_MAD : 0;
var gymCost = gym ? GYM_MAD : 0;

var total = accomCost + foodCost + workCost + TRANSPORT + insCostMAD + simCost + leisureCost + gymCost;
var totalEur = Math.round(total / EUR_RATE);

var totalEl = document.getElementById(‘calc-total-mad’);
var eurEl = document.getElementById(‘calc-total-eur’);
var breakEl = document.getElementById(‘calc-breakdown’);

if (totalEl) totalEl.textContent = total.toLocaleString() + ‘ MAD’;
if (eurEl) eurEl.textContent = ‘≈ €’ + totalEur + ‘ / month at current exchange rates’;

var lines = [
{ icon: ‘🏠’, label: ‘Accommodation’, amount: accomCost },
{ icon: ‘🍽️’, label: ‘Food & groceries’, amount: foodCost },
{ icon: ‘💼’, label: ‘Workspace’, amount: workCost },
{ icon: ‘🚗’, label: ‘Transport’, amount: TRANSPORT }
];
if (ins) lines.push({ icon: ‘🏥’, label: ‘Health insurance’, amount: insCostMAD });
if (sim) lines.push({ icon: ‘📱’, label: ‘SIM + data’, amount: simCost });
if (leisure) lines.push({ icon: ‘🎭’, label: ‘Leisure & activities’, amount: leisureCost });
if (gym) lines.push({ icon: ‘🏋️’, label: ‘Gym / hammam’, amount: gymCost });
lines.push({ icon: ‘∑’, label: ‘Total estimate’, amount: total, cls: ‘is-total’ });

if (breakEl) {
breakEl.innerHTML = lines.map(function(l) {
return ‘<div class=”dnm-calc-line’ + (l.cls ? ‘ ‘ + l.cls : ”) + ‘”>’ +
‘<span class=”dnm-calc-line-label”>’ + l.icon + ‘ ‘ + l.label + ‘</span>’ +
‘<span class=”dnm-calc-line-amount”>’ + l.amount.toLocaleString() + ‘ MAD</span>’ +
‘</div>’;
}).join(”);
}
}

window.dnmCalcUpdate = dnmCalcUpdate;
setTimeout(dnmCalcUpdate, 150);

})();
</script>

WhatsApp