Index: src/wp-includes/css/media-views.css
===================================================================
--- src/wp-includes/css/media-views.css	(revision 29426)
+++ src/wp-includes/css/media-views.css	(working copy)
@@ -16,7 +16,6 @@
 .media-frame input,
 .media-frame textarea {
 	padding: 6px 8px;
-	line-height: 16px;
 }
 
 .media-frame select,
@@ -144,7 +143,7 @@
 	top: 0;
 	right: 0;
 	width: 50px;
-	height: 48px;
+	height: 50px;
 	z-index: 1000;
 	color: #777;
 	-webkit-transition: color .1s ease-in-out, background .1s ease-in-out;
@@ -626,6 +625,10 @@
 	box-shadow: 0 4px 4px -4px rgba( 0, 0, 0, 0.1 );
 }
 
+.media-frame-title .dashicons {
+	display: none;
+}
+
 .media-frame-title h1 {
 	padding: 0 16px;
 	font-size: 22px;
@@ -1832,11 +1835,16 @@
 	padding: 0;
 }
 
+.image-details .embed-media-settings,
+.image-details .embed-media-settings div {
+	box-sizing: border-box;
+}
+
 .image-details .column-settings {
 	background: #f3f3f3;
 	border-right: 1px solid #ddd;
 	min-height: 100%;
-	width: 52%;
+	width: 55%;
 	position: absolute;
 	top: 0;
 	left: 0;
@@ -1849,9 +1857,9 @@
 }
 
 .image-details .column-image {
-	width: 48%;
+	width: 45%;
 	position: absolute;
-	left: 52%;
+	left: 55%;
 	top: 0;
 }
 
@@ -2171,21 +2179,60 @@
  * Responsive layout
  */
 @media only screen and (max-width: 900px) {
+
+	/* Drop-down menu */
+	.media-frame-title,
+	.media-frame-router,
+	.media-frame-content,
+	.media-frame-toolbar {
+		left: 0;
+	}
+
 	.media-frame-menu {
-		width: 139px;
+		position: static;
+		width: 0;
 	}
 
+	.media-menu {
+		display: none;
+	}
+
+	.media-menu.visible {
+		z-index: 2000;
+		display: block;
+		position: fixed;
+		top: 30px;
+		left: 30px;
+		right: 30px;
+		bottom: 30px;
+		width: 250px;
+		max-width: 100%;
+		overflow: auto;
+	}
+
 	.media-menu > a {
-		padding: 4px 5px;
+		padding: 10px 20px;
+		font-size: 16px;
 	}
 
-	.media-frame-title,
-	.media-frame-router,
-	.media-frame-content,
-	.media-frame-toolbar {
-		left: 140px;
+	.media-frame-title {
+		left: 0;
+		color: #21759b;
 	}
 
+	.media-frame-title .dashicons {
+		display: inline-block;
+		line-height: 56px;
+	}
+
+	.media-frame-title h1 {
+		line-height: 3;
+		font-size: 18px;
+		float: left;
+		cursor: pointer;
+	}
+	/* End drop-down menu */
+/*
 	.media-sidebar {
 		width: 159px;
 		padding: 0 10px 24px;
@@ -2196,6 +2243,11 @@
 	.attachments-browser .media-toolbar {
 		right: 180px;
 	}
+*/
+	
+	.media-sidebar .setting {
+		margin: 6px 0px;
+	}
 
 	.media-sidebar .setting input,
 	.media-sidebar .setting textarea,
@@ -2207,17 +2259,27 @@
 	.media-sidebar .setting span,
 	.compat-item label span {
 		text-align: inherit;
-		display: block;
 		min-height: 16px;
 		margin: 0;
 		padding: 8px 2px 0;
 	}
+	
+	.media-sidebar .setting .value {
+		float: none;
+		width: auto;
+	}
 
-	.media-sidebar .setting input,
+	.media-sidebar .setting input[type="text"],
+	.media-sidebar .setting input[type="password"],
+	.media-sidebar .setting input[type="number"],
+	.media-sidebar .setting input[type="search"],
+	.media-sidebar .setting input[type="email"],
+	.media-sidebar .setting input[type="url"],
 	.media-sidebar .setting textarea,
 	.media-sidebar .setting select {
 		width: 98%;
 		max-width: none;
+		height: auto;
 	}
 
 	.media-sidebar .setting select.columns {
@@ -2230,6 +2292,15 @@
 		padding: 3px 6px;
 	}
 
+	.image-details .column-image {
+		width: 30%;
+		left: 70%;
+	}
+
+	.image-details .column-settings {
+		width: 70%;
+	}
+
 	.image-details .media-modal {
 		left: 30px;
 		right: 30px;
@@ -2273,10 +2344,6 @@
 		margin: 12px 10px;
 	}
 
-	.media-modal-close {
-		right: 10px;
-	}
-
 	/* Text inputs need to be 16px, or they force zooming on iOS */
 	.media-frame input[type="text"],
 	.media-frame input[type="password"],
@@ -2292,39 +2359,33 @@
 
 /* Responsive on portrait and landscape */
 @media only screen and (max-width: 640px), screen and (max-height: 400px) {
+	/* Full-bleed modal */
+	.media-modal,
+	.image-details .media-modal,
+	.media-menu.visible {
+		position: fixed;
+		top: 0;
+		left: 0;
+		right: 0;
+		bottom: 0;
+	}
 
-	/* Media tabs on the top */
-	.media-frame-content .media-toolbar .instructions {
+	.media-modal-backdrop {
+		position: fixed;
+	}
+
+	.media-sidebar {
 		display: none;
 	}
 
-	.media-frame-menu {
-		width: auto;
-		bottom: auto;
+	.attachments-browser .attachments,
+	.attachments-browser .uploader-inline,
+	.attachments-browser .media-toolbar {
 		right: 0;
-		height: 60px;
 	}
 
-	.media-menu {
-		border-right: none;
-		position: relative;
-		border-bottom: 1px solid #dddddd;
-		overflow: hidden;
-		padding: 10px 0 10px 10px;
-	}
 
-	.media-menu a {
-		float: left;
-		width: 42%;
-		white-space: nowrap;
-		text-overflow: ellipsis;
-		overflow: hidden;
-	}
 
-	.media-frame-title {
-		display: none;
-	}
-
 	.image-details .media-frame-title {
 		display: block;
 		top: 0;
@@ -2331,6 +2392,16 @@
 		font-size: 14px;
 	}
 
+	/* Media tabs on the top */
+	.media-frame-content .media-toolbar .instructions {
+		display: none;
+	}
+
+/*
+	.image-details .media-frame-menu-toggle {
+		display: none;
+	}
+
 	.media-frame-toolbar {
 		position: absolute;
 		bottom: 0px;
@@ -2348,8 +2419,13 @@
 		overflow: hidden;
 	}
 
+	.media-frame .attachments-browser {
+		overflow: auto;
+		padding-bottom: 0;
+	}
+
 	.attachments-browser .attachments {
-		top: 42px;
+		top: 0;
 	}
 
 	.attachment-details h3 {
@@ -2357,7 +2433,7 @@
 	}
 
 	/* Shorten right-side links so they don't overlap the close button */
-	.media-menu a:nth-child(2),
+/*	.media-menu a:nth-child(2),
 	.media-menu a:last-child {
 		width: 40%;
 	}
@@ -2366,29 +2442,22 @@
 		display: none;
 	}
 
-	.media-frame-title {
+	.image-details .media-frame-title {
 		top: 72px;
-		left: auto;
-		height: auto;
 	}
 
-	.media-frame-title h1 {
-		line-height: 3;
-		font-size: 18px;
-	}
-
 	.media-frame-router {
-		top: 84px;
 		left: 0;
 	}
 
 	.media-frame-content {
 		left: 0;
-		top: 118px;
+		overflow: hidden;
 	}
 
 	.image-details .media-frame.hide-router .media-frame-content {
-		top: 40px;
+		top: 56px;
+		overflow: auto;
 	}
 
 	.media-frame .attachments-browser {
@@ -2395,15 +2464,12 @@
 		padding-bottom: 300px;
 	}
 
-	.media-sidebar {
-		border-bottom: 1px solid #dddddd;
-	}
-
 	.media-modal {
 		width: auto;
 	}
 
-	.media-toolbar-primary, .media-toolbar-secondary {
+	.media-toolbar-primary,
+	.media-toolbar-secondary {
 		height: auto;
 	}
 
@@ -2422,23 +2488,9 @@
 	.attachments-browser .attachments,
 	.attachments-browser .uploader-inline {
 		position: relative;
-		margin-right: 180px;
+		margin-right: 0;
 	}
 
-	/* Full-bleed modal */
-	.media-modal,
-	.image-details .media-modal {
-		position: fixed;
-		top: 0;
-		left: 0;
-		right: 0;
-		bottom: 0;
-	}
-
-	.media-modal-backdrop {
-		position: fixed;
-	}
-
 	.attachments-browser .attachment,
 	.attachments-browser .attachment-preview {
 		max-width: 100%;
@@ -2445,7 +2497,8 @@
 	}
 
 	.attachments-browser .media-toolbar-primary input.search {
-		max-width: 150px;
+		max-width: none;
+		width: 100%;
 	}
 
 	.uploader-inline-content {
@@ -2458,9 +2511,10 @@
 	}
 
 	/* Image From Link */
-	.embed-link-settings,
+/*	.embed-link-settings,
 	.embed-media-settings {
 		padding-bottom: 52px;
+		box-sizing: border-box;
 	}
 
 	.image-details .column-settings,
@@ -2474,7 +2528,7 @@
 
 
 	/* Gallery */
-	.media-frame.hide-router .media-frame-content {
+/*	.media-frame.hide-router .media-frame-content {
 		top: 73px;
 		border-top: none;
 	}
@@ -2482,12 +2536,12 @@
 	.collection-settings h3 {
 		margin-top: 45px;
 	}
-
+*/
 }
 
 /* Landscape specific header override */
 @media screen and (max-height: 400px) {
-	.media-menu {
+/*	.media-menu {
 		padding: 0 0 0 10px;
 	}
 
@@ -2522,15 +2576,16 @@
 	}
 
 	/* Prevent unnecessary scrolling on title input */
-	.embed-link-settings {
+/*	.embed-link-settings {
 		overflow: visible;
-	}
+	}*/
 }
 
 @media only screen and (max-width: 680px) {
 	.media-frame-content .media-toolbar .search,
 	.media-frame-content .media-toolbar .attachment-filters {
-		max-width: 85px;
+		max-width: none;
+		width: 100%;
 	}
 }
 
Index: src/wp-includes/js/media-views.js
===================================================================
--- src/wp-includes/js/media-views.js	(revision 29426)
+++ src/wp-includes/js/media-views.js	(working copy)
@@ -1,6 +1,8 @@
 /* global _wpMediaViewsL10n, confirm, getUserSetting, setUserSetting */
-(function($, _){
-	var media = wp.media, l10n;
+( function( $, _ ) {
+	var l10n,
+		media = wp.media,
+		isTouchDevice = ( 'ontouchend' in document );
 
 	// Link any localized strings.
 	l10n = media.view.l10n = typeof _wpMediaViewsL10n === 'undefined' ? {} : _wpMediaViewsL10n;
@@ -1834,6 +1836,10 @@
 		template:  media.template('media-frame'),
 		regions:   ['menu','title','content','toolbar','router'],
 
+		events: {
+			'click div.media-frame-title h1': 'toggleMenu'
+		},
+
 		/**
 		 * @global wp.Uploader
 		 */
@@ -1883,6 +1889,10 @@
 			this.on( 'title:create:default', this.createTitle, this );
 			this.title.mode('default');
 
+			this.on( 'title:render', function( view ) {
+				view.$el.append( '<span class="dashicons dashicons-arrow-down"></span>' );
+			});
+
 			// Bind default menu.
 			this.on( 'menu:create:default', this.createMenu, this );
 		},
@@ -1918,6 +1928,11 @@
 				controller: this
 			});
 		},
+
+		toggleMenu: function() {
+			this.$el.find( '.media-menu' ).toggleClass( 'visible' );
+		},
+
 		/**
 		 * @param {Object} toolbar
 		 * @this wp.media.controller.Region
@@ -4412,13 +4427,17 @@
 
 			// When selecting a tab along the left side,
 			// focus should be transferred into the main panel
-			$('.media-frame-content input').first().focus();
+			if ( ! isTouchDevice ) {
+				$('.media-frame-content input').first().focus();
+			}
 		},
 
 		click: function() {
 			var state = this.options.state;
+
 			if ( state ) {
 				this.controller.setState( state );
+				this.views.parent.$el.removeClass( 'visible' ); // TODO: or hide on any click, see below
 			}
 		},
 		/**
@@ -4452,6 +4471,17 @@
 		property:  'state',
 		ItemView:  media.view.MenuItem,
 		region:    'menu',
+
+		/* TODO: alternatively hide on any click anywhere
+		events: {
+			'click': 'click'
+		},
+
+		click: function() {
+			this.$el.removeClass( 'visible' );
+		},
+		*/
+
 		/**
 		 * @param {Object} options
 		 * @param {string} id
@@ -4615,6 +4645,7 @@
 		tagName:   'li',
 		className: 'attachment',
 		template:  media.template('attachment'),
+		_isTouch: false,
 
 		attributes: {
 			tabIndex: 0,
@@ -4623,6 +4654,7 @@
 
 		events: {
 			'click .js--select-attachment':   'toggleSelectionHandler',
+			'touchend .attachment-preview':   'setTouch',
 			'change [data-setting]':          'updateSetting',
 			'change [data-setting] input':    'updateSetting',
 			'change [data-setting] select':   'updateSetting',
@@ -4747,6 +4779,11 @@
 				this.$bar.width( this.model.get('percent') + '%' );
 			}
 		},
+
+		setTouch: function() {
+			this._isTouch = true;
+		},
+
 		/**
 		 * @param {Object} event
 		 */
@@ -4785,6 +4822,11 @@
 				method = 'toggle';
 			}
 
+			if ( this._isTouch ) {
+				this._isTouch = false;
+				method = 'add';
+			}
+
 			this.toggleSelection({
 				method: method
 			});
@@ -4894,6 +4936,10 @@
 				}
 
 				return;
+			} else if ( 'add' === method ) {
+				selection.add( model );
+				selection.single( model );
+				return;
 			}
 
 			// Fixes bug that loses focus when selecting a featured image
@@ -5215,12 +5261,12 @@
 			this.el.id = _.uniqueId('__attachments-view-');
 
 			_.defaults( this.options, {
-				refreshSensitivity: 200,
+				refreshSensitivity: isTouchDevice ? 300 : 200,
 				refreshThreshold:   3,
 				AttachmentView:     media.view.Attachment,
 				sortable:           false,
 				resize:             true,
-				idealColumnWidth:   150
+				idealColumnWidth:   $( window ).width() < 640 ? 130 : 150
 			});
 
 			this._viewsByCid = {};
@@ -5241,7 +5287,7 @@
 			}, this );
 
 			this.collection.on( 'reset', this.render, this );
-
+// TODO: fix for mobile?
 			// Throttle the scroll handler and bind this.
 			this.scroll = _.chain( this.scroll ).bind( this ).throttle( this.options.refreshSensitivity ).value();
 
@@ -5284,7 +5330,7 @@
 		initSortable: function() {
 			var collection = this.collection;
 
-			if ( ! this.options.sortable || ! $.fn.sortable ) {
+			if ( isTouchDevice || ! this.options.sortable || ! $.fn.sortable ) {
 				return;
 			}
 
@@ -5347,7 +5393,7 @@
 		},
 
 		refreshSortable: function() {
-			if ( ! this.options.sortable || ! $.fn.sortable ) {
+			if ( isTouchDevice || ! this.options.sortable || ! $.fn.sortable ) {
 				return;
 			}
 
