You are here
Home > Uncategorized > Golden Gate to Make Dramatic Shift in Southern Marin

Golden Gate to Make Dramatic Shift in Southern Marin

I was very fortunate to attend not just one, but three meetings in nearly two hours, in which I was able to view in person how Golden Gate Bridge, Highway, and Transportation District (District) meetings are structured. And it was a very fruitful and fascinating experience since I got to speak on one of the Board’s agenda items. Perhaps the most interesting part was that, not only I got to attend two public hearings that focused on the pending elimination of Route 10 and the fare hike due this July, but also participated in a Transportation Committee meeting as an observer that discussed the future of mobility in the Tiburon Peninsula.

Golden Gate Transit to Modify Sausalito Bus Service

If we look at what the Golden Gate Bridge, Highway, and Transportation District (District) board is planning for southern Marin County, look no further than the pending changes on the Routes 10 and 70 wherein the former will be axed due to low ridership and the latter being revised to serve Spencer Avenue bus pads in Sausalito at all times instead of having late-night deviations through Bridgeway and Alexander Avenue in Sausalito. According to the District, the Route 10 will be replaced by an all-day Route 30, in which it will operate identical to the current Route 10 between San Francisco and Marin City via Sausalito, and it will be extended north to serve the bus pads along US-101 up to San Rafael Transit Center. The Route 70, on the other hand, will exclusively serve the bus pads along US-101 between San Francisco and Novato to lessen confusion among riders traveling along the corridor.
A friend of mine suggested rerouting Route 92, a weekday peak period-only service operating between Marin City and San Francisco via Sausalito and Geary Boulevard, to provide replacement service to and from Tam Valley, a small neighborhood just west of Tamalpais High School in nearby Mill Valley. Currently served by the Route 10 during weekday peaks (with one southbound and two northbound trips), the closest available transit service to this community if the 10 is axed would be West Marin Stagecoach Route 61 that runs alongside CA-1 between Marin City and Bolinas via Tam High School, Stinson Beach, and Panoramic Highway. If that is to be done, I would propose the following schedule to provide adequate replacement service (following the current Golden Gate Transit schedule for this route listed here):

#element-266df23b-0a87-40fb-a713-a69482496448 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-tab-group {
font-size: 0;
margin: 0;
padding: 0;
float: left;
list-style: none;
height: 60px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-tab {
margin: 0;
cursor: pointer;
height: 60px;
display: inline-block;
min-width: 19%;
position: relative;
background-color: #F7F7F7;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-content-group {
clear: both;
float: left;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .scrollArrow {
width: 25px;
background-color: white;
text-align: center;
position: absolute;
z-index: 3;
top: 0;
display: none;
cursor: pointer;
height: 60px;
line-height: 60px;
font-weight: bold;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box.scrollable .tabbed-box-bar:hover .scrollArrow.active {
display: block;
}
@media only screen and (min-device-width: 414px) and (max-device-width: 736px) and (-webkit-min-device-pixel-ratio: 3),only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 499px) {
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .line.scrollable .scrollArrow-left,
#element-266df23b-0a87-40fb-a713-a69482496448 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .s3d-content-shadow {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .s3d .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
-webkit-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
-moz-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .s3d .tabbed-box-content-group {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-tab .paragraph {
padding: 0px;
line-height: 60px !important;
text-align: center !important;
font-weight: bold;
font-size: 16px !important;
margin: 0 20px;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-266df23b-0a87-40fb-a713-a69482496448 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • AM Commute
  • PM Commute
  • Alternate Services
<
>

​Southbound (to San Francisco)

#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table-wrapper {
padding: 20px 0;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table.style-top tr:first-child td,
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table.style-top tr:first-child td .paragraph,
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table tr:last-child td {
border-bottom: none;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table td:last-of-type {
border-right: none;
}
#element-4861740b-9e84-4b4c-8c37-90b78958d79d .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Tam Valley
(Marin & Spruce)
Manzanita Park-and-Ride
Golden Gate Bridge Toll Plaza
San Francisco (Geary & Divisadero)
SF Civic Center (Golden Gate & Polk)
6:30am
6:37am
6:53am
7:14am
7:21am
7:30am
7:37am
7:53am
8:14am
8:21am
8:30am
8:37am
8:55am
9:20am
9:30am

function setupElement359094524567423781() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3}],”columns”:5,”rows”:4,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “359094524567423781”;
_Element.prototype.element_id = “4861740b-9e84-4b4c-8c37-90b78958d79d”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-4861740b-9e84-4b4c-8c37-90b78958d79d’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement359094524567423781();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement359094524567423781, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement359094524567423781();
}
});
}

Northbound (to Tam Valley via Sausalito)

#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table-wrapper {
padding: 20px 0;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table.style-top tr:first-child td,
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table.style-top tr:first-child td .paragraph,
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table tr:last-child td {
border-bottom: none;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table td:last-of-type {
border-right: none;
}
#element-702b5f49-2323-4e07-8520-029020fc1600 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

SF Civic Center (McAllister & Polk)
San Francisco (Geary & Divisadero)
Golden Gate Bridge Toll Plaza
Marin City
​(Donahue & Terners)
Tam Valley
(Marin & Spruce)
7:20am
7:29am
7:44am
8:05am
8:20am

function setupElement582248944631659344() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1}],”columns”:5,”rows”:2,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “582248944631659344”;
_Element.prototype.element_id = “702b5f49-2323-4e07-8520-029020fc1600”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-702b5f49-2323-4e07-8520-029020fc1600’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement582248944631659344();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement582248944631659344, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement582248944631659344();
}
});
}

Southbound (to San Francisco)

#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table-wrapper {
padding: 20px 0;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table.style-top tr:first-child td,
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table.style-top tr:first-child td .paragraph,
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table tr:last-child td {
border-bottom: none;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table td:last-of-type {
border-right: none;
}
#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Tam Valley
(Marin & Spruce)
Manzanita Park-and-Ride
Golden Gate Bridge Toll Plaza
San Francisco (Geary & Divisadero)
SF Civic Center (Golden Gate & Polk)
5:40pm
5:47pm
6:10pm
6:30pm
6:41pm

function setupElement955231507684278586() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1}],”columns”:5,”rows”:2,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “955231507684278586”;
_Element.prototype.element_id = “51799d82-a8f0-45dd-a793-3dc19ac46ce2”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-51799d82-a8f0-45dd-a793-3dc19ac46ce2’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement955231507684278586();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement955231507684278586, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement955231507684278586();
}
});
}

Northbound (to Tam Valley via Sausalito)

#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table-wrapper {
padding: 20px 0;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 20%;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table.style-top tr:first-child td,
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table.style-top tr:first-child td .paragraph,
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table tr:last-child td {
border-bottom: none;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table td:last-of-type {
border-right: none;
}
#element-81f65207-9c04-490b-b2d9-e41cddb4b670 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

SF Civic Center (McAllister & Polk)
San Francisco (Geary & Divisadero)
Golden Gate Bridge Toll Plaza
Marin City
​(Donahue & Terners)
Tam Valley
(Marin & Spruce)
4:20pm
4:32pm
4:50pm
5:10pm
5:25pm
5:20pm
5:32pm
5:50pm
6:10pm
6:25pm
6:20pm
6:32pm
6:50pm
7:10pm
7:25pm

function setupElement627236226979237350() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3},{“columns_index”:4}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3}],”columns”:5,”rows”:4,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “627236226979237350”;
_Element.prototype.element_id = “81f65207-9c04-490b-b2d9-e41cddb4b670”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-81f65207-9c04-490b-b2d9-e41cddb4b670’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement627236226979237350();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement627236226979237350, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement627236226979237350();
}
});
}

If the Route 10 is to be axed, and no replacement service will be provided, here are the following places where passengers can pick up buses:

Manzanita and Pohono Park-and-Ride Lots

This is one of the most popular pick-up and drop-off stops for Golden Gate and Marin Transit, located under US-101 at CA-1.

  • Route 4 (Mill Valley – San Francisco Financial District)
  • Route 17 (San Rafael – Sausalito via Mill Valley)
  • Route 61 (Bolinas – Marin City via Stinson Beach; Sausalito Ferry served weekends and most holidays)
  • Route 92 (Manzanita Park-and-Ride – San Francisco Civic Center via Sausalito)

Marin City Hub (Donahue & Terners)

While this is a major transit hub for Golden Gate and Marin Transit, its location makes it a bit sketchy to wait for a bus at night.

  • Route 4 (see above; select trips only)
  • Route 17 (see above)
  • Route 22 (San Rafael – Marin City via Corte Madera, College of Marin)
  • Route 36 (Canal District – Marin City via San Rafael TC, US-101 bus pads)
  • Route 61 (see above)
  • Route 70 (Novato – San Francisco via US-101 bus pads)
  • Route 71 (Novato – Marin City)
  • Route 92 (see above)

Seminary Drive Bus Pad

While the park-and-ride lots are relatively small, the number of buses that go through this pad is plentiful.

  • Route 8 (Tiburon – San Francisco Financial District via Strawberry)
  • Route 18 (College of Marin – San Francisco Financial District via Corte Madera)
  • Route 22 (see above)
  • Route 24 (Fairfax Manor – San Francisco Financial District; select trips only)
  • Route 27 (San Anselmo – San Francisco Financial District; one AM trip only)
  • Route 36 (see above)
  • Route 70 (see above)
  • Route 71 (see above)

function setupElement797391001949763422() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.2”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var TabbedBox = PlatformElement.extend({
events: {
‘click .tabbed-box-tab’: ‘clickTab’,
// in case they type and that causes an overflow, we should determine scrollability here
‘keyup .tabbed-box-tab .paragraph’: ‘determineScrollability’,
‘mousedown .scrollArrow-left’: ‘scrollLeft’,
‘mousedown .scrollArrow-right’: ‘scrollRight’,
‘touchstart .scrollArrow-left’: ‘scrollLeft’,
‘touchstart .scrollArrow-right’: ‘scrollRight’
},
initialize: function() {
var view = this;
var tabs = this.$(‘.tabbed-box-tab’);
var content = this.$(‘.tabbed-box-content’);
// optimization
this.scrollArrowLeft = this.$(‘.scrollArrow-left’);
this.scrollArrowRight = this.$(‘.scrollArrow-right’);
this.scrollTabsBar = this.$(‘.tabbed-box-tab-group’);
// resize handler and mouseup handler
// since we want to be able to handle mouseup wherever the user releases (not just over the element)
// we set it here as a property of the window.
$(window).resize(function() {
this.determineScrollability();
}.bind(this)).on(‘mouseup touchend’, function() {
this.stopScrolling();
}.bind(this));
// since scroll events don’t propagate up, we have to bind it here as opposed to in the events object
this.$(‘.tabbed-box-tab-group’).scroll(function() {
this.determineHandlers();
}.bind(this));
// determine whether or not we should show the scroll handlers
this.determineScrollability();
// load the first tab.
$(document).ready(function() {
this.scrollTabsBar.children().first().click();
}.bind(this));
},
/*
Handle click event on a tab.
Uses ‘rel’ attribute of each tab as an index to access
the class of the corresponding content area.
*/
clickTab: function(e) {
var active = $(e.currentTarget); // Clicked tab
var content_wrapper = this.$(‘.tabbed-box-content-group’); // wrapper for all content divs
this.stopScrolling();
this.determineClickScroll(active);
// Set new active tab
active.siblings().removeClass(‘active’);
active.addClass(‘active’);
// mark the new active tab
this.settings.set(‘activeTabIndexInternal’, this.scrollTabsBar.children().index(active));
this.settings.save();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘.’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// Stop propagation in case this is a nested tab app
e.stopPropagation();
},
// determines whether or not the two arrows (left and right scroll handlers) should be visible or not.
determineScrollability: function() {
var group = this.scrollTabsBar[0];
if (group.scrollWidth > group.clientWidth) {
this.$el.children().addClass(‘scrollable’);
this.determineHandlers();
} else {
this.$el.children().removeClass(‘scrollable’);
}
},
// determines whether or not the two arrows (left and right scroll handlers) should be active or not.
determineHandlers: function() {
var target = this.scrollTabsBar[0];
// left handler
if (target.scrollLeft != 0) {
this.scrollArrowLeft.addClass(‘active’);
} else {
this.scrollArrowLeft.removeClass(‘active’);
}
// right handler
if (target.scrollLeft + target.clientWidth < target.scrollWidth – 1) {
this.scrollArrowRight.addClass('active');
} else {
this.scrollArrowRight.removeClass('active');
}
},
// scrolls the tabs bar to the left.
scrollLeft: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowRight.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft -= Math.floor(factor);
factor *= 1.05;
if (scrollEl.scrollLeft == 0) {
view.stopScrolling();
}
}, 10);
},
// scrolls the tabs bar to the right.
scrollRight: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowLeft.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft += Math.floor(factor);
factor *= 1.05;
// forcefully stop the interval if it's not doing anything anymore
if (scrollEl.scrollLeft + scrollEl.clientWidth == scrollEl.scrollWidth) {
view.stopScrolling();
}
}, 10);
},
stopScrolling: function() {
clearInterval(this.scrollInterval);
this.determineHandlers();
},
determineClickScroll: function(active) {
// figure out where the element is, and if we need to change our view to show it
var scroll;
// determine where the element we're going to is in respect to the tabs bar
// 25px is the size of the scroll arrows
var leftSidePosition = active.position().left – 50;
var rightSidePosition = active.position().left + active.width() + 50;
// the gap is how much space we want there to be between the selected element
// when it's out of view, and we go to it.
var gap = 25;
if (this.scrollTabsBar.children().index(active) == 0) {
// this the first element, so define the scroll to be 0.
scroll = 0;
} else if (this.scrollTabsBar.children().index(active) == this.scrollTabsBar.children().length – 1) {
// this the last element, so define the scroll to be all the way to the right.
scroll = this.scrollTabsBar[0].scrollWidth – this.scrollTabsBar[0].clientWidth;
} else if (leftSidePosition this.scrollTabsBar.width()) {
// the right corner is out of view.
scroll = this.scrollTabsBar[0].scrollLeft + (rightSidePosition – this.scrollTabsBar.width()) + gap;
} else {
scroll = this.scrollTabsBar[0].scrollLeft;
}
// start scrolling
scroll = Math.floor(scroll);
var delta = scroll – this.scrollTabsBar[0].scrollLeft;
var startedDown = false;
if (delta != 0) {
clearInterval(this.scrollInterval);
var distance = 0;
var direction = (delta > 0 ? 1 : -1);
var speed = 1;
var factor = 1.25; // for parabolic acceleration
this.scrollInterval = setInterval(function() {
if (distance >= Math.abs(delta)) {
this.stopScrolling();
}
this.scrollTabsBar[0].scrollLeft += (Math.max(1, Math.floor(speed)) * direction);
distance += Math.max(1, Math.floor(speed));
if (distance * 2 >= Math.abs(delta)) { // if we’ve traversed more than half
if (factor == 1.25) { // 5/4
factor = 1; // 4/4
} else {
factor = 0.8; // 4/5
}
}
speed *= factor;
}.bind(this), 20);
}
}
});
return TabbedBox;
})();
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“tabs_each”:[{“tabs_index”:0},{“tabs_index”:1},{“tabs_index”:2}],”activeTabIndexInternal_each”:[{“activeTabIndexInternal_index”:0}],”theme”:”standard”,”tabs”:3,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:1});
_Element.prototype.settings.page_element_id = “797391001949763422”;
_Element.prototype.element_id = “266df23b-0a87-40fb-a713-a69482496448”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.2/assets/”;
new _Element({
el: ‘#element-266df23b-0a87-40fb-a713-a69482496448’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement797391001949763422();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement797391001949763422, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement797391001949763422();
}
});
}


The pending changes with Golden Gate Transit’s Routes 10, 30, and 70 come as Marin Transit is also adjusting its services within the County. The target start date for the adjusted Route 70 and the new Route 30 would be on 12 June 2016, the first day of both agencies’ summer schedule. A preview of the current and adjusted departure times will be described in another post.

Golden Gate Ferry to Launch Tiburon Commute Service in June 2016

During the Transportation Committee meeting, the Golden Gate District Board of Supervisors have approved the takeover of select Blue and Gold Fleet ferry services between San Francisco and Tiburon, in which Golden Gate Ferry will assume responsibility of its weekday, commuter ferry service. Blue and Gold Fleet will still operate weekday midday and weekend services, as well as seasonal trips between Tiburon and Angel Island.
The District targeted a funding of $1.8 million per year for this new service, of which $150,000 will be allocated from its own funds to kick start its operation, which will include promotional announcements and operational alignment. The fares that will be levied for this ferry service will be similar to that found on the Larkspur Ferry (see below), in which the District will adopt Clipper as a form of payment prior to boarding the ferry. On-board fare payment will be discontinued, at least on this service; however, the board will decide whether it will keep the ferry-to-bus ticket book that allows commuters using the Blue and Gold Ferry service to ride Marin Transit Routes 219 and 219F for $1 (a book costs $20 for 20 tickets).

#element-e5b17564-7e58-436a-aa0a-f095caab57cb .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-tab-group {
font-size: 0;
margin: 0;
padding: 0;
float: left;
list-style: none;
height: 60px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-tab {
margin: 0;
cursor: pointer;
height: 60px;
display: inline-block;
min-width: 19%;
position: relative;
background-color: #F7F7F7;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-content-group {
clear: both;
float: left;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .scrollArrow {
width: 25px;
background-color: white;
text-align: center;
position: absolute;
z-index: 3;
top: 0;
display: none;
cursor: pointer;
height: 60px;
line-height: 60px;
font-weight: bold;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .scrollArrow.scrollArrow-left {
left: 0;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .scrollArrow.scrollArrow-right {
right: 0;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box.scrollable .tabbed-box-bar:hover .scrollArrow.active {
display: block;
}
@media only screen and (min-device-width: 414px) and (max-device-width: 736px) and (-webkit-min-device-pixel-ratio: 3),only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 499px) {
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line.scrollable .scrollArrow-left,
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .s3d-content-shadow {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .s3d .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
-webkit-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
-moz-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .s3d .tabbed-box-content-group {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-tab .paragraph {
padding: 0px;
line-height: 60px !important;
text-align: center !important;
font-weight: bold;
font-size: 16px !important;
margin: 0 20px;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-e5b17564-7e58-436a-aa0a-f095caab57cb .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • Fares
  • Affected Schedules
<
>

Fare Comparison

#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table-wrapper {
padding: 20px 0;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table.style-top tr:first-child td,
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table.style-top tr:first-child td .paragraph,
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table tr:last-child td {
border-bottom: none;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table td:last-of-type {
border-right: none;
}
#element-3d775083-4e1c-49d6-b452-e91387216e3e .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Ferry Operator
Adult
Youths (5-18), Seniors, Handicapped, Medicare
Clipper
Blue and Gold Fleet
$11.50
$6.75
Not available
Golden Gate Ferry
$10.50
$5.25
$7.00

function setupElement144363415115589539() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2}],”columns”:4,”rows”:3,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “144363415115589539”;
_Element.prototype.element_id = “3d775083-4e1c-49d6-b452-e91387216e3e”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-3d775083-4e1c-49d6-b452-e91387216e3e’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement144363415115589539();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement144363415115589539, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement144363415115589539();
}
});
}

Note:​ in lieu of Clipper, Blue and Gold Fleet offers a 20-ride commuter book for $140.00
Currently, Blue and Gold Fleet operates to two different terminals in San Francisco from Tiburon:

  • Pier 41 (weekday middays, weekends, and holidays)
  • Ferry Building (weekday peak periods only)

​The following trips will be transferred to Golden Gate Ferry as a result of the Board approval of the takeover:

Morning Commute

#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table-wrapper {
padding: 20px 0;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table.style-top tr:first-child td,
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table.style-top tr:first-child td .paragraph,
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table tr:last-child td {
border-bottom: none;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table td:last-of-type {
border-right: none;
}
#element-42c6c961-5472-4286-a0c3-22fdb023ad4d .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Leave Tiburon
Arrive Ferry Building
Leave Ferry Building
Arrive Tiburon
​5:35am
6:00am
6:05am
6:30am
6:40am
7:05am
7:10am
7:35am
7:50am
8:15am
8:20am
8:40am
8:45am
9:10am

function setupElement196854339542640624() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4}],”columns”:4,”rows”:5,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “196854339542640624”;
_Element.prototype.element_id = “42c6c961-5472-4286-a0c3-22fdb023ad4d”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-42c6c961-5472-4286-a0c3-22fdb023ad4d’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement196854339542640624();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement196854339542640624, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement196854339542640624();
}
});
}

Afternoon and Evening Commute

#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table-wrapper {
padding: 20px 0;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table.style-top tr:first-child td,
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table.style-top tr:first-child td .paragraph,
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table tr:last-child td {
border-bottom: none;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table td:last-of-type {
border-right: none;
}
#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Leave Tiburon
Arrive Ferry Building
Leave Ferry Building
Arrive Tiburon
4:25pm
4:50pm
4:55pm
5:20pm
5:25pm
5:50pm
5:55pm
6:20pm
6:30pm
6:55pm
7:05pm
7:30pm
7:35pm
7:55pm

function setupElement613209133251274854() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4}],”columns”:4,”rows”:5,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “613209133251274854”;
_Element.prototype.element_id = “1eca93a4-25ee-4af1-9482-c85c24b10ed3”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-1eca93a4-25ee-4af1-9482-c85c24b10ed3’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement613209133251274854();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement613209133251274854, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement613209133251274854();
}
});
}

All other departures listed on the Blue and Gold Fleet website from Tiburon will still be operated by the said agency.

function setupElement848438568220499424() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.2”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var TabbedBox = PlatformElement.extend({
events: {
‘click .tabbed-box-tab’: ‘clickTab’,
// in case they type and that causes an overflow, we should determine scrollability here
‘keyup .tabbed-box-tab .paragraph’: ‘determineScrollability’,
‘mousedown .scrollArrow-left’: ‘scrollLeft’,
‘mousedown .scrollArrow-right’: ‘scrollRight’,
‘touchstart .scrollArrow-left’: ‘scrollLeft’,
‘touchstart .scrollArrow-right’: ‘scrollRight’
},
initialize: function() {
var view = this;
var tabs = this.$(‘.tabbed-box-tab’);
var content = this.$(‘.tabbed-box-content’);
// optimization
this.scrollArrowLeft = this.$(‘.scrollArrow-left’);
this.scrollArrowRight = this.$(‘.scrollArrow-right’);
this.scrollTabsBar = this.$(‘.tabbed-box-tab-group’);
// resize handler and mouseup handler
// since we want to be able to handle mouseup wherever the user releases (not just over the element)
// we set it here as a property of the window.
$(window).resize(function() {
this.determineScrollability();
}.bind(this)).on(‘mouseup touchend’, function() {
this.stopScrolling();
}.bind(this));
// since scroll events don’t propagate up, we have to bind it here as opposed to in the events object
this.$(‘.tabbed-box-tab-group’).scroll(function() {
this.determineHandlers();
}.bind(this));
// determine whether or not we should show the scroll handlers
this.determineScrollability();
// load the first tab.
$(document).ready(function() {
this.scrollTabsBar.children().first().click();
}.bind(this));
},
/*
Handle click event on a tab.
Uses ‘rel’ attribute of each tab as an index to access
the class of the corresponding content area.
*/
clickTab: function(e) {
var active = $(e.currentTarget); // Clicked tab
var content_wrapper = this.$(‘.tabbed-box-content-group’); // wrapper for all content divs
this.stopScrolling();
this.determineClickScroll(active);
// Set new active tab
active.siblings().removeClass(‘active’);
active.addClass(‘active’);
// mark the new active tab
this.settings.set(‘activeTabIndexInternal’, this.scrollTabsBar.children().index(active));
this.settings.save();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘.’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// Stop propagation in case this is a nested tab app
e.stopPropagation();
},
// determines whether or not the two arrows (left and right scroll handlers) should be visible or not.
determineScrollability: function() {
var group = this.scrollTabsBar[0];
if (group.scrollWidth > group.clientWidth) {
this.$el.children().addClass(‘scrollable’);
this.determineHandlers();
} else {
this.$el.children().removeClass(‘scrollable’);
}
},
// determines whether or not the two arrows (left and right scroll handlers) should be active or not.
determineHandlers: function() {
var target = this.scrollTabsBar[0];
// left handler
if (target.scrollLeft != 0) {
this.scrollArrowLeft.addClass(‘active’);
} else {
this.scrollArrowLeft.removeClass(‘active’);
}
// right handler
if (target.scrollLeft + target.clientWidth < target.scrollWidth – 1) {
this.scrollArrowRight.addClass('active');
} else {
this.scrollArrowRight.removeClass('active');
}
},
// scrolls the tabs bar to the left.
scrollLeft: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowRight.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft -= Math.floor(factor);
factor *= 1.05;
if (scrollEl.scrollLeft == 0) {
view.stopScrolling();
}
}, 10);
},
// scrolls the tabs bar to the right.
scrollRight: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowLeft.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft += Math.floor(factor);
factor *= 1.05;
// forcefully stop the interval if it's not doing anything anymore
if (scrollEl.scrollLeft + scrollEl.clientWidth == scrollEl.scrollWidth) {
view.stopScrolling();
}
}, 10);
},
stopScrolling: function() {
clearInterval(this.scrollInterval);
this.determineHandlers();
},
determineClickScroll: function(active) {
// figure out where the element is, and if we need to change our view to show it
var scroll;
// determine where the element we're going to is in respect to the tabs bar
// 25px is the size of the scroll arrows
var leftSidePosition = active.position().left – 50;
var rightSidePosition = active.position().left + active.width() + 50;
// the gap is how much space we want there to be between the selected element
// when it's out of view, and we go to it.
var gap = 25;
if (this.scrollTabsBar.children().index(active) == 0) {
// this the first element, so define the scroll to be 0.
scroll = 0;
} else if (this.scrollTabsBar.children().index(active) == this.scrollTabsBar.children().length – 1) {
// this the last element, so define the scroll to be all the way to the right.
scroll = this.scrollTabsBar[0].scrollWidth – this.scrollTabsBar[0].clientWidth;
} else if (leftSidePosition this.scrollTabsBar.width()) {
// the right corner is out of view.
scroll = this.scrollTabsBar[0].scrollLeft + (rightSidePosition – this.scrollTabsBar.width()) + gap;
} else {
scroll = this.scrollTabsBar[0].scrollLeft;
}
// start scrolling
scroll = Math.floor(scroll);
var delta = scroll – this.scrollTabsBar[0].scrollLeft;
var startedDown = false;
if (delta != 0) {
clearInterval(this.scrollInterval);
var distance = 0;
var direction = (delta > 0 ? 1 : -1);
var speed = 1;
var factor = 1.25; // for parabolic acceleration
this.scrollInterval = setInterval(function() {
if (distance >= Math.abs(delta)) {
this.stopScrolling();
}
this.scrollTabsBar[0].scrollLeft += (Math.max(1, Math.floor(speed)) * direction);
distance += Math.max(1, Math.floor(speed));
if (distance * 2 >= Math.abs(delta)) { // if we’ve traversed more than half
if (factor == 1.25) { // 5/4
factor = 1; // 4/4
} else {
factor = 0.8; // 4/5
}
}
speed *= factor;
}.bind(this), 20);
}
}
});
return TabbedBox;
})();
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“tabs_each”:[{“tabs_index”:0},{“tabs_index”:1}],”theme”:”standard”,”tabs”:2,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “848438568220499424”;
_Element.prototype.element_id = “e5b17564-7e58-436a-aa0a-f095caab57cb”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.2/assets/”;
new _Element({
el: ‘#element-e5b17564-7e58-436a-aa0a-f095caab57cb’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement848438568220499424();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement848438568220499424, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement848438568220499424();
}
});
}


Yearly Fare Hike, Larkspur Parking Fee, Route 8 Get a Reprieve

In the same meeting I attended, the Golden Gate District Board also approved two fare-related adjustments, in which it affects all riders in various ways:

Every year since 2007, Golden Gate Ferry and Golden Gate Transit have been increasing its fares by 5% that takes into account the rise in inflation. This year, however, the Board authorized a lower fare hike to 4%, in which it will mean a 20- to 50-cent increase in bus and ferry fares. Passengers riding buses within Marin County will see no fare increase as Marin Transit controls the fares for local services. That means fares for both modes will look like these effective 1 July 2016:

Note: to read the fare matrix, the top value indicates the new fare from July 2016, while the parenthesis below indicates how much the fare will increase compared to July 2015 to June 2016. All fares will be adjusted on 1 July 2016 except where noted otherwise.

#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .border-box {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box {
position: relative;
margin: 20px 0;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-tab-group {
font-size: 0;
margin: 0;
padding: 0;
float: left;
list-style: none;
height: 60px;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
white-space: nowrap;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-tab {
margin: 0;
cursor: pointer;
height: 60px;
display: inline-block;
min-width: 19%;
position: relative;
background-color: #F7F7F7;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-content-group {
clear: both;
float: left;
width: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-content {
padding: 40px 20px 40px 20px;
display: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .scrollArrow {
width: 25px;
background-color: white;
text-align: center;
position: absolute;
z-index: 3;
top: 0;
display: none;
cursor: pointer;
height: 60px;
line-height: 60px;
font-weight: bold;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .scrollArrow.scrollArrow-left {
left: 0;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .scrollArrow.scrollArrow-right {
right: 0;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box.scrollable .tabbed-box-tab-group {
border-bottom: none;
overflow-x: hidden;
overflow-y: hidden;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box.scrollable .tabbed-box-bar:hover .scrollArrow.active {
display: block;
}
@media only screen and (min-device-width: 414px) and (max-device-width: 736px) and (-webkit-min-device-pixel-ratio: 3),only screen and (min-device-width: 375px) and (max-device-width: 667px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 568px) and (-webkit-min-device-pixel-ratio: 2),only screen and (min-device-width: 320px) and (max-device-width: 480px) and (-webkit-min-device-pixel-ratio: 2),only screen and (max-width: 499px) {
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-tab-group {
overflow-x: scroll !important;
}
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard .tabbed-box-tab-group {
border-left: 1px solid #CCCCCC;
border-bottom: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard .tabbed-box-tab {
border: 1px solid #CCCCCC;
border-left: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard .tabbed-box-tab .paragraph {
color: #A8ABAC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard .tabbed-box-content-group {
border: 1px solid #CCCCCC;
border-top: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard.scrollable .tabbed-box-tab-group {
border-right: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard.scrollable .tabbed-box-tab-group .tabbed-box-tab:last-child {
border-right: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard.scrollable .scrollArrow-left {
border: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .standard.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line .tabbed-box-tab-group {
border: 1px solid #CCCCCC;
border-bottom: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line .tabbed-box-content-group {
border: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line.scrollable .tabbed-box-tab-group {
height: 61px;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line.scrollable .tabbed-box-content-group {
border-top: none;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line.scrollable .scrollArrow-left,
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .line.scrollable .scrollArrow-right {
border: 1px solid #CCCCCC;
border-bottom: none;
border-top: none;
height: 61px;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .tabbed-box-tab {
border-bottom: 1px solid #CCCCCC;
height: 61px;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .tabbed-box-tab .paragraph {
color: #BDC2C2;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .tabbed-box-tab.active {
border-bottom: 1px solid black;
background-color: white;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .tabbed-box-content-group {
border-top: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .tabbed-box-content {
padding: 20px 0px 20px 0px;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .scrollArrow-left {
border-right: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .simple .scrollArrow-right {
border-left: 1px solid #CCCCCC;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .s3d-shadow {
-webkit-box-shadow: #f5f5f5;
-moz-box-shadow: #f5f5f5;
box-shadow: #f5f5f5;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .s3d-content-shadow {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .s3d .tabbed-box-tab .paragraph {
color: #A8ABAC;
background-color: #F7F7F7;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .s3d .tabbed-box-tab.active {
border-bottom: 1px solid white;
background-color: white;
-webkit-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
-moz-box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
box-shadow: 0px -10px 31px -4px #f5f5f5, -12px -4px 40px -16px #f5f5f5, 12px -4px 40px -16px #f5f5f5;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .s3d .tabbed-box-tab.active .paragraph {
background-color: white;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .s3d .tabbed-box-content-group {
-webkit-box-shadow: 0px 0px 30px 4px #f5f5f5;
-moz-box-shadow: 0px 0px 30px 4px #f5f5f5;
box-shadow: 0px 0px 30px 4px #f5f5f5;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-tab .paragraph {
padding: 0px;
line-height: 60px !important;
text-align: center !important;
font-weight: bold;
font-size: 16px !important;
margin: 0 20px;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-content .paragraph {
padding: 0;
line-height: 30px;
}
#element-e5d6ba61-2079-47a6-a066-e1614ab822d9 .tabbed-box-tab:last-child .w-delete-outer {
display: none;
position: relative;
float: right;
}

  • San Francisco
  • North Bay
  • East Bay
  • Ferries
<
>

​Notes:

  • For ferry fares between San Francisco and Marin County, see the Ferries tab. For fares between San Francisco and the East Bay, see the East Bay tab.
  • Within San Francisco, pick-ups and drop-offs can only be made at the Golden Gate Bridge Toll Plaza and Richardson Blvd & Francisco/Lyon Streets (Palace of Fine Arts).
  • Fares listed under youth, seniors, and handicapped are the same either by cash or using a specialized Clipper card.

#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table-wrapper {
padding: 20px 0;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table.style-top tr:first-child td,
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table.style-top tr:first-child td .paragraph,
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table tr:last-child td {
border-bottom: none;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table td:last-of-type {
border-right: none;
}
#element-b37b461e-09b1-4efb-9609-b71d9f67a121 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Origin/Destination Zone
Adult Cash
Adult Clipper
Youth (5 to 18), Seniors (65 and up), Handicapped
1
San Francisco 
​$5.00
​(+ $0.25)
$5.00
​(+ $0.25)
$2.50
(+ $0.25)​
2
​Sausalito, Marin City, Mill Valley, Tiburon, Belvedere
$5.50
(+ $0.25)
$4.40
(+ $0.20)
$2.75
​(+ $0.25)
3
San Rafael, San Anselmo, Fairfax, Central Marin
$6.75
​(+ $0.25)
$5.40
(+ $0.20)
$3.25
​(same)
4
​Novato, Ignacio
$8.00
(+ $0.25)
$6.40
​(+ $0.20)
$4.00
​(+ $0.25)
5
​Petaluma, Cotati, Rohnert Park
$11.75
​(+ $0.50)
$9.40
​(+ $0.40)
$5.75
(+ $0.25)
6
​Santa Rosa
$13.00
(+ $0.50)
$10.40
​(+ $0.40)
$6.50
(+ $0.25)

function setupElement755297820358523715() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5},{“rows_index”:6}],”columns”:4,”rows”:7,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “755297820358523715”;
_Element.prototype.element_id = “b37b461e-09b1-4efb-9609-b71d9f67a121”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-b37b461e-09b1-4efb-9609-b71d9f67a121’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement755297820358523715();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement755297820358523715, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement755297820358523715();
}
});
}

Fares listed under youth, seniors, and handicapped are the same either by cash or using a specialized Clipper card.

Within Sonoma County
Applicable to trips originating and ending within the following cities:

  • Petaluma
  • Cotati
  • Rohnert Park
  • Santa Rosa
Interzone Fares
These depend on how many zones a passenger crosses through to get to one’s destination.

  • 2 zones: only applies for trips between zones 4 and 5
  • 3 zones: applies for trips between zones 3 and 5, zones 4 and 6
  • 4 zones: applies to trips between zones 2 and 5, zones 3 and 6
  • 5 zones: only applies to trips between zones 2 and 6

#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table-wrapper {
padding: 20px 0;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table.style-top tr:first-child td,
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table.style-top tr:first-child td .paragraph,
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table tr:last-child td {
border-bottom: none;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table td:last-of-type {
border-right: none;
}
#element-f53cb227-f6ed-4626-9ef7-0df79803e480 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Travel Distance
Adult Cash
Adult Clipper
Youths (5 to 18), Seniors (65 and up), Handicapped
Within Marin County
$2.00
​(same)
$1.80
(same)
$1.00
(same)
Within Sonoma County
$5.00
​(+ $0.25)
$5.00
​(+ $0.25)
$2.50
(+ $0.25)
Two Zones
$5.50
​(+ $0.25)
$4.40
(+ $0.20)
$2.75
(+ $0.25)
Three Zones
$6.75
(+ $0.25)
$5.40
​(+ $0.20)
$3.25
​(same)
Four Zones
$8.00
(+ $0.25)
$6.40
​(+ $0.20)
$4.00
(+ $0.25)
Five Zones
$9.50
(+ $0.25)
$7.60
(+ $0.20)
$4.75
(+ $0.25)

function setupElement427564621502551109() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4},{“rows_index”:5},{“rows_index”:6}],”columns”:4,”rows”:7,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “427564621502551109”;
_Element.prototype.element_id = “f53cb227-f6ed-4626-9ef7-0df79803e480”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-f53cb227-f6ed-4626-9ef7-0df79803e480’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement427564621502551109();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement427564621502551109, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement427564621502551109();
}
});
}

These fares are applicable only to two routes:

  • Route 40 (San Rafael – Del Norte BART via Point Richmond)
  • Route 580 (San Rafael – Emeryville via Albany, Berkeley)

Fares listed under youth, seniors, and handicapped are the same either by cash or using a specialized Clipper card.

#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table-wrapper {
padding: 20px 0;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table.style-top tr:first-child td,
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table.style-top tr:first-child td .paragraph,
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table tr:last-child td {
border-bottom: none;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table td:last-of-type {
border-right: none;
}
#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Origin/Destination Zone
Adult Cash
Adult Clipper
Youth (5 to 18), Seniors (65 and up), Handicapped
Within East Bay
$5.50
(+ $0.25)
$4.40
​(+ $0.20)
$2.75
(+ $0.25)
Marin County
$5.50
​(+ $0.25)
$4.40
(+ $0.20)
$2.75
(+ $0.25)
Sonoma County
$10.25
(+ $0.50)
$8.20
​(+ $0.40)
$5.00
​(+ $0.25)
San Francisco
$10.25
(+ $0.50)
$8.20
(+ $0.40)
$5.00
​(+ $0.25)

function setupElement468129306847124747() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3},{“rows_index”:4}],”columns”:4,”rows”:5,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “468129306847124747”;
_Element.prototype.element_id = “7a0cafff-3ed7-4e20-b6bd-017e35bc61b2”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-7a0cafff-3ed7-4e20-b6bd-017e35bc61b2’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement468129306847124747();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement468129306847124747, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement468129306847124747();
}
});
}

Notes:

  • Fares on The Wave connector buses (Routes 25, 31, and 37) will remain free for patrons continuing to or coming from the Larkspur Ferry. For local passengers, Marin County rates apply.
  • From the Board Meeting, the parking fee collected from the Larkspur Ferry (currently at $3.00 per vehicle) will remain the same. However, the collection time will be adjusted from today’s 5am to 3pm, to 5am to 1pm effective July 2016. This is in consideration to lower midday traffic that come and go from the ferry terminal.
  • For fares to and from Tiburon, see the fares tab under the Tiburon sub-article above.
  • Fares listed under youth, seniors, and handicapped are the same either by cash or using a specialized Clipper card.

#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table-wrapper {
padding: 20px 0;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table {
width: 100%;
border: 1px solid #C9CDCF;
border-spacing: 0;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table td.cell {
border-right: 1px solid #C9CDCF;
border-bottom: 1px solid #C9CDCF;
word-break: break-word;
background-color: #FFFFFF;
width: 25%;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table td.cell .paragraph {
width: 90%;
margin: 0 5%;
padding-bottom: 10px;
padding-top: 10px;
text-align: center;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table.style-top tr:first-child td,
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table.style-side td:first-of-type {
background-color: #F8F8F8;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table.style-top tr:first-child td .paragraph,
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table.style-side td:first-of-type .paragraph {
font-weight: 700;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table tr:last-child td {
border-bottom: none;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table td:last-of-type {
border-right: none;
}
#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3 .simple-table .empty-content-area-element {
padding-left: 0px !important;
}

Origin/Destination
Adults 
Adult Clipper
Youth, Seniors, Handicapped
Sausalito
$11.75
(+ $0.50)
$6.25
​(+ $0.25)
$5.75
(+ $0.25)
Larkspur
$11.00
​(+ $0.50)
$7.25
​(+ $0.25)
$5.50
(+ $0.25)
AT&T Park Service
​(Larkspur only)
$12.50 (from 2/28/16)
$13.00 (from 3/1/17)
Not applicable
Not applicable

function setupElement768214108815100192() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “702688850553606843-1.4.1”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var SimpleTable = PlatformElement.extend({
initialize: function() {
this.setSizes();
},
setSizes: function() {
var sizes = this.settings.get(‘tableSizes’);
// if the # of columns isn’t the size of the array of lengths, ignore it.
if (sizes && sizes != “default” && this.settings.get(‘columns’) == sizes.length) {
var columns = this.$(‘tr’).each(function(index, value) {
var cells = $(value).find(‘td’).each(function(index2, value2) {
$(value2).css(‘width’, sizes[index2] + ‘%’);
});
});
}
}
});
return SimpleTable;
})();;
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“columns_each”:[{“columns_index”:0},{“columns_index”:1},{“columns_index”:2},{“columns_index”:3}],”rows_each”:[{“rows_index”:0},{“rows_index”:1},{“rows_index”:2},{“rows_index”:3}],”columns”:4,”rows”:4,”style”:”top”,”alignment”:”center”,”titleColor”:”#F8F8F8″,”backgroundColor”:”#FFFFFF”,”borderColor”:”#C9CDCF”,”tableSizes”:”default”});
_Element.prototype.settings.page_element_id = “768214108815100192”;
_Element.prototype.element_id = “39a2cdac-88ea-40b9-98a9-a059f8dba2b3”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/702688850553606843-1.4.1/assets/”;
new _Element({
el: ‘#element-39a2cdac-88ea-40b9-98a9-a059f8dba2b3’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement768214108815100192();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement768214108815100192, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement768214108815100192();
}
});
}

function setupElement675762990451397587() {
var elementRequire = require || _wAMD.require;
elementRequire([
‘jquery’,
‘underscore’,
‘backbone’,
‘util/platform/elements/PlatformElement’,
‘util/platform/elements/PlatformElementSettings’
], function(
$,
_,
Backbone,
PlatformElement,
PlatformElementSettings
) {
var dependencies = null || [];
var platform_element_id = “135397292802228534-1.3.2”;
if (typeof _W.loadedPlatformDependencies === ‘undefined’) {
_W.loadedPlatformDependencies = [];
}
if (typeof _W.platformElements === ‘undefined’) {
_W.platformElements = [];
}
if (typeof _W.platformElements[platform_element_id] === ‘undefined’) {
_W.platformElements[platform_element_id] = {};
_W.platformElements[platform_element_id].deferredObject = new $.Deferred();
_W.platformElements[platform_element_id].deferredPromise = _W.platformElements[platform_element_id].deferredObject.promise();
}
if(_.intersection(_W.loadedPlatformDependencies, dependencies).length !== dependencies.length){
_.reduce(dependencies, function(promise, nextScript){
_W.loadedPlatformDependencies.push(nextScript);
return promise.then(function(){
return $.getScript(nextScript);
});
}, $().promise()).then(function(){
_W.platformElements[platform_element_id].deferredObject.resolve();
});
}
if (dependencies.length === 0){
_W.platformElements[platform_element_id].deferredObject.resolve();
}
_W.platformElements[platform_element_id].deferredPromise.done(function(){
var _ElementDefinition = /**
* This is required for element rendering to be possible
* @type {PlatformElement}
*/
(function() {
var TabbedBox = PlatformElement.extend({
events: {
‘click .tabbed-box-tab’: ‘clickTab’,
// in case they type and that causes an overflow, we should determine scrollability here
‘keyup .tabbed-box-tab .paragraph’: ‘determineScrollability’,
‘mousedown .scrollArrow-left’: ‘scrollLeft’,
‘mousedown .scrollArrow-right’: ‘scrollRight’,
‘touchstart .scrollArrow-left’: ‘scrollLeft’,
‘touchstart .scrollArrow-right’: ‘scrollRight’
},
initialize: function() {
var view = this;
var tabs = this.$(‘.tabbed-box-tab’);
var content = this.$(‘.tabbed-box-content’);
// optimization
this.scrollArrowLeft = this.$(‘.scrollArrow-left’);
this.scrollArrowRight = this.$(‘.scrollArrow-right’);
this.scrollTabsBar = this.$(‘.tabbed-box-tab-group’);
// resize handler and mouseup handler
// since we want to be able to handle mouseup wherever the user releases (not just over the element)
// we set it here as a property of the window.
$(window).resize(function() {
this.determineScrollability();
}.bind(this)).on(‘mouseup touchend’, function() {
this.stopScrolling();
}.bind(this));
// since scroll events don’t propagate up, we have to bind it here as opposed to in the events object
this.$(‘.tabbed-box-tab-group’).scroll(function() {
this.determineHandlers();
}.bind(this));
// determine whether or not we should show the scroll handlers
this.determineScrollability();
// load the first tab.
$(document).ready(function() {
this.scrollTabsBar.children().first().click();
}.bind(this));
},
/*
Handle click event on a tab.
Uses ‘rel’ attribute of each tab as an index to access
the class of the corresponding content area.
*/
clickTab: function(e) {
var active = $(e.currentTarget); // Clicked tab
var content_wrapper = this.$(‘.tabbed-box-content-group’); // wrapper for all content divs
this.stopScrolling();
this.determineClickScroll(active);
// Set new active tab
active.siblings().removeClass(‘active’);
active.addClass(‘active’);
// mark the new active tab
this.settings.set(‘activeTabIndexInternal’, this.scrollTabsBar.children().index(active));
this.settings.save();
// Set new active content
content_wrapper.children().hide();
content_wrapper.find(‘.’ + active.attr(‘rel’)).fadeIn();
this.determineHandlers();
// Stop propagation in case this is a nested tab app
e.stopPropagation();
},
// determines whether or not the two arrows (left and right scroll handlers) should be visible or not.
determineScrollability: function() {
var group = this.scrollTabsBar[0];
if (group.scrollWidth > group.clientWidth) {
this.$el.children().addClass(‘scrollable’);
this.determineHandlers();
} else {
this.$el.children().removeClass(‘scrollable’);
}
},
// determines whether or not the two arrows (left and right scroll handlers) should be active or not.
determineHandlers: function() {
var target = this.scrollTabsBar[0];
// left handler
if (target.scrollLeft != 0) {
this.scrollArrowLeft.addClass(‘active’);
} else {
this.scrollArrowLeft.removeClass(‘active’);
}
// right handler
if (target.scrollLeft + target.clientWidth < target.scrollWidth – 1) {
this.scrollArrowRight.addClass('active');
} else {
this.scrollArrowRight.removeClass('active');
}
},
// scrolls the tabs bar to the left.
scrollLeft: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowRight.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft -= Math.floor(factor);
factor *= 1.05;
if (scrollEl.scrollLeft == 0) {
view.stopScrolling();
}
}, 10);
},
// scrolls the tabs bar to the right.
scrollRight: function(e) {
e.stopPropagation();
this.stopScrolling();
var scrollEl = this.scrollTabsBar[0];
var view = this;
var factor = 2;
this.scrollArrowLeft.addClass('active');
this.scrollInterval = setInterval(function() {
scrollEl.scrollLeft += Math.floor(factor);
factor *= 1.05;
// forcefully stop the interval if it's not doing anything anymore
if (scrollEl.scrollLeft + scrollEl.clientWidth == scrollEl.scrollWidth) {
view.stopScrolling();
}
}, 10);
},
stopScrolling: function() {
clearInterval(this.scrollInterval);
this.determineHandlers();
},
determineClickScroll: function(active) {
// figure out where the element is, and if we need to change our view to show it
var scroll;
// determine where the element we're going to is in respect to the tabs bar
// 25px is the size of the scroll arrows
var leftSidePosition = active.position().left – 50;
var rightSidePosition = active.position().left + active.width() + 50;
// the gap is how much space we want there to be between the selected element
// when it's out of view, and we go to it.
var gap = 25;
if (this.scrollTabsBar.children().index(active) == 0) {
// this the first element, so define the scroll to be 0.
scroll = 0;
} else if (this.scrollTabsBar.children().index(active) == this.scrollTabsBar.children().length – 1) {
// this the last element, so define the scroll to be all the way to the right.
scroll = this.scrollTabsBar[0].scrollWidth – this.scrollTabsBar[0].clientWidth;
} else if (leftSidePosition this.scrollTabsBar.width()) {
// the right corner is out of view.
scroll = this.scrollTabsBar[0].scrollLeft + (rightSidePosition – this.scrollTabsBar.width()) + gap;
} else {
scroll = this.scrollTabsBar[0].scrollLeft;
}
// start scrolling
scroll = Math.floor(scroll);
var delta = scroll – this.scrollTabsBar[0].scrollLeft;
var startedDown = false;
if (delta != 0) {
clearInterval(this.scrollInterval);
var distance = 0;
var direction = (delta > 0 ? 1 : -1);
var speed = 1;
var factor = 1.25; // for parabolic acceleration
this.scrollInterval = setInterval(function() {
if (distance >= Math.abs(delta)) {
this.stopScrolling();
}
this.scrollTabsBar[0].scrollLeft += (Math.max(1, Math.floor(speed)) * direction);
distance += Math.max(1, Math.floor(speed));
if (distance * 2 >= Math.abs(delta)) { // if we’ve traversed more than half
if (factor == 1.25) { // 5/4
factor = 1; // 4/4
} else {
factor = 0.8; // 4/5
}
}
speed *= factor;
}.bind(this), 20);
}
}
});
return TabbedBox;
})();
if (typeof _ElementDefinition == ‘undefined’ || typeof _ElementDefinition == ‘null’) {
var _ElementDefinition = PlatformElement.extend({});
}
var _Element = _ElementDefinition.extend({
initialize: function() {
// we still want to call the initialize function defined by the developer
// however, we don’t want to call it until placeholders have been replaced
this.placeholderInterval = setInterval(function() {
// so use setInterval to check for placeholders.
if (this.$(‘.platform-element-child-placeholder’).length == 0) {
clearInterval(this.placeholderInterval);
this.constructor.__super__.initialize.apply(this);
}
}.bind(this), 100);
}
});
_Element.prototype.settings = new PlatformElementSettings({“tabs_each”:[{“tabs_index”:0},{“tabs_index”:1},{“tabs_index”:2},{“tabs_index”:3}],”theme”:”standard”,”tabs”:4,”active_tab”:”white”,”inactive_tab”:”#F7F7F7″,”border_color”:”#CCCCCC”,”activeTabIndexInternal”:0});
_Element.prototype.settings.page_element_id = “675762990451397587”;
_Element.prototype.element_id = “e5d6ba61-2079-47a6-a066-e1614ab822d9”;
_Element.prototype.user_id = “3466466”;
_Element.prototype.site_id = “484589221176252212”;
_Element.prototype.assets_path = “//marketplace.editmysite.com/elements/135397292802228534-1.3.2/assets/”;
new _Element({
el: ‘#element-e5d6ba61-2079-47a6-a066-e1614ab822d9’
});
});
});
}
if (typeof document.documentElement.appReady == ‘undefined’) {
document.documentElement.appReady = 0;
}
if (document.documentElement.appReady || (window.inEditor && window.inEditor())) {
setupElement675762990451397587();
} else if (document.createEvent && document.addEventListener) {
document.addEventListener(‘appReady’, setupElement675762990451397587, false);
} else {
document.documentElement.attachEvent(‘onpropertychange’, function(event){
if (event.propertyName == ‘appReady’) {
setupElement675762990451397587();
}
});
}


Finally, after much deliberation, the Golden Gate District has given a reprieve on Route 8, one of the District’s most under-performing commuter routes. This weekday peak period-only service, operating between Tiburon and San Francisco Financial District via Belvedere and Strawberry, has been threatened to be axed for some time now. But, thanks to two public hearings in Tiburon last January, the District’s Board of Directors adopted a six-month intensive ridership study to see how the service will perform over time.

The District mandates that in order for a commuter route to continue service, it requires each southbound trip to have 20 or more passengers on board a bus before it hits US-101 and its associated bus pads. Currently, the Route 8 has two southbound trips (leaving at around 6:30am and 7:30am) and one northbound trip (leaving the Financial District at around 5:15pm). Two riders from the route’s service area have testified to the Board that they started doing manual passenger counts on their own to determine how many passengers actually use the service, in which I personally applaud for their effort to tell the District that the service deserves to stay. The directors will revisit the ridership study in July 2016 (month 5) to determine whether this route will continue service or be eliminated altogether from September 2016.

Should this route be axed, however, affected passengers may be redirected to either the following options:

  • Marin Transit Routes 219 and 219F to the Tiburon Ferry Terminal
  • Marin Transit Route 219 to either Strawberry (Route 4) or Seminary Drive bus pads (Routes 18, 30, 70; select trips on Route 24)

Leave a Reply

Top