1<!doctype html> 2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> 4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]--> 5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]--> 6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]--> 7<head> 8 9 <!-- Basic page needs ================================================== --> 10 <meta charset="utf-8"> 11 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 12 13 14 15 <!-- Title and description ================================================== --> 16 <title> 17 About Solano – Solano Press Books 18 </title> 19 20 21 <meta name="description" content="Books That Matter from Solano Press Solano Press Books is a California publishing house specializing in land use, planning law, urban affairs, and environmental subjects. Our publications have earned a reputation for being definitive references on a wide variety of land use and land use-related legal matters. Valuable "> 22 23 24 <!-- Social meta ================================================== --> 25 26 27 <meta property="og:type" content="website"> 28 <meta property="og:title" content="About Solano"> 29 <meta property="og:url" content="https://solano.com/pages/about-solano"> 30 31 32 <meta property="og:description" content="Books That Matter from Solano Press Solano Press Books is a California publishing house specializing in land use, planning law, urban affairs, and environmental subjects. Our publications have earned a reputation for being definitive references on a wide variety of land use and land use-related legal matters. Valuable "> 33 34<meta property="og:site_name" content="Solano Press Books"> 35 36 37 <meta name="twitter:card" content="summary"> 38 39 40 41 42 43 <!-- Helpers ================================================== --> 44 <link rel="canonical" href="https://solano.com/pages/about-solano"> 45 <meta name="viewport" content="width=device-width,initial-scale=1"> 46 <meta name="theme-color" content="#efa128"> 47 48 <!-- CSS ================================================== --> 49 <link href="//solano.com/cdn/shop/t/2/assets/timber.scss.css?v=68397187645703530661709335829" rel="stylesheet" type="text/css" media="all" /> 50 <link href="//solano.com/cdn/shop/t/2/assets/theme.scss.css?v=79965251139101327371709335829" rel="stylesheet" type="text/css" media="all" /> 51 52 53 54 55 56 57 <link href="//fonts.googleapis.com/css?family=Arvo:400" rel="stylesheet" type="text/css" media="all" /> 58 59 60 61 62 63
63<script> 64 window.theme = window.theme || {}; 65 66 var theme = { 67 strings: { 68 zoomClose: "Close (Esc)", 69 zoomPrev: "Previous (Left arrow key)", 70 zoomNext: "Next (Right arrow key)" 71 }, 72 settings: { 73 // Adding some settings to allow the editor to update correctly when they are changed 74 themeBgImage: false, 75 customBgImage: '', 76 enableWideLayout: false, 77 typeAccentTransform: false, 78 typeAccentSpacing: false, 79 baseFontSize: '16px', 80 headerBaseFontSize: '32px', 81 accentFontSize: '16px' 82 }, 83 variables: { 84 mediaQueryMedium: 'screen and (max-width: 768px)', 85 bpSmall: false 86 }, 87 moneyFormat: "${{amount}}" 88 } 89 90 document.documentElement.className = document.documentElement.className.replace('no-js', 'supports-js'); 91 </script>
91 92 93 <!-- Header hook for plugins ================================================== --> 94
94<script>window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.start');</script>
94<meta id="shopify-digital-wallet" name="shopify-digital-wallet" content="/20948333/digital_wallets/dialog"> 95<link rel="ucp" href="/.well-known/ucp" version="2026-08-25">
95<script async="async" src="/checkouts/internal/preloads.js?locale=en-US"></script>
95 96<link rel="preconnect" href="https://shop.app" crossorigin="anonymous">
97<script async="async" src="https://shop.app/checkouts/internal/preloads.js?locale=en-US&shop_id=20948333" crossorigin="anonymous"></script>
vendor: 1 bytes, line 97
97
98<script id="apple-pay-shop-capabilities" type="application/json">{"shopId":20948333,"countryCode":"US","currencyCode":"USD","merchantCapabilities":["supports3DS"],"merchantId":"gid:\/\/shopify\/Shop\/20948333","merchantName":"Solano Press Books","requiredBillingContactFields":["postalAddress","email","phone"],"requiredShippingContactFields":["postalAddress","email","phone"],"shippingType":"shipping","supportedNetworks":["visa","masterCard","amex","discover","elo","jcb"],"total":{"type":"pending","label":"Solano Press Books","amount":"1.00"},"shopifyPaymentsEnabled":true,"supportsSubscriptions":true}</script>
vendor: 1 bytes, line 98
98
99<script id="shopify-features" type="application/json">{"accessToken":"60b2f3c60eb493103d87dec63fa18ff5","betas":["rich-media-storefront-analytics"],"domain":"solano.com","predictiveSearch":true,"shopId":20948333,"locale":"en"}</script>
vendor: 1 bytes, line 99
99
100<script>var Shopify = Shopify || {}; 101Shopify.shop = "solano-press-books.myshopify.com"; 102Shopify.locale = "en"; 103Shopify.currency = {"active":"USD","rate":"1.0"}; 104Shopify.country = "US"; 105Shopify.theme = {"name":"minimal","id":158940555,"schema_name":"Minimal","schema_version":"3.3.0","theme_store_id":380,"role":"main"}; 106Shopify.theme.handle = "null"; 107Shopify.theme.style = {"id":null,"handle":null}; 108Shopify.cdnHost = "solano.com/cdn"; 109Shopify.routes = Shopify.routes || {}; 110Shopify.routes.root = "/"; 111Shopify.shopJsCdnBaseUrl = "https://cdn.shopify.com/shopifycloud/shop-js"; 112Shopify.SignInWithShop = Shopify.SignInWithShop || {}; 113Shopify.SignInWithShop.User = Shopify.SignInWithShop.User || {}; 114Shopify.SignInWithShop.User.recognized = false;</script>
vendor: 1 bytes, line 114
114
115<script type="module">!function(o){(o.Shopify=o.Shopify||{}).modules=!0}(window);</script>
vendor: 1 bytes, line 115
115
116<script>!function(o){function n(){var o=[];function n(){o.push(Array.prototype.slice.apply(arguments))}return n.q=o,n}var t=o.Shopify=o.Shopify||{};t.loadFeatures=n(),t.autoloadFeatures=n()}(window);</script>
vendor: 1 bytes, line 116
116
117<script> 118 window.ShopifyPay = window.ShopifyPay || {}; 119 window.ShopifyPay.apiHost = "shop.app\/pay"; 120 window.ShopifyPay.redirectState = null; 121</script>
vendor: 1 bytes, line 121
121
122<script> 123 window.Shopify = window.Shopify || {}; 124 window.Shopify.SignInWithShop = window.Shopify.SignInWithShop || {}; 125 window.Shopify.SignInWithShop.assetMetrics = { sampleRate: 0.25 }; 126 window.Shopify.SignInWithShop.eligible = true; 127</script>
vendor: 1 bytes, line 127
127
128<script id="shop-js-analytics" type="application/json">{"pageType":"page"}</script>
vendor: 1 bytes, line 128
128
129<script defer="defer" async type="module" src="https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"></script>
vendor: 1 bytes, line 129
129
130<script type="module"> 131 await import("https://cdn.shopify.com/shopifycloud/shop-js/modules/v2/loader.init-shop-cart-sync.en.esm.js"); 132 133 window.Shopify.SignInWithShop?.initShopCartSync?.({"fedCMEnabled":true,"windoidEnabled":true}); 134 135</script>
vendor: 1 bytes, line 135
135
136<script> 137 window.Shopify = window.Shopify || {}; 138 if (!window.Shopify.featureAssets) window.Shopify.featureAssets = {}; 139 window.Shopify.featureAssets['shop-js'] = {"avatar":["modules/v2/loader.avatar.en.esm.js"],"checkout-modal":["modules/v2/loader.checkout-modal.en.esm.js"],"init-customer-accounts-sign-up":["modules/v2/loader.init-customer-accounts-sign-up.en.esm.js"],"init-customer-accounts":["modules/v2/loader.init-customer-accounts.en.esm.js"],"init-fed-cm":["modules/v2/loader.init-fed-cm.en.esm.js"],"init-shop-cart-sync":["modules/v2/loader.init-shop-cart-sync.en.esm.js"],"init-shop-email-lookup-coordinator":["modules/v2/loader.init-shop-email-lookup-coordinator.en.esm.js"],"init-shop-for-new-customer-accounts":["modules/v2/loader.init-shop-for-new-customer-accounts.en.esm.js"],"init-shop-user-recognition":["modules/v2/loader.init-shop-user-recognition.en.esm.js"],"init-windoid":["modules/v2/loader.init-windoid.en.esm.js"],"lead-capture":["modules/v2/loader.lead-capture.en.esm.js"],"listener":["modules/v2/loader.listener.en.esm.js"],"pay-button":["modules/v2/loader.pay-button.en.esm.js"],"payment-terms":["modules/v2/loader.payment-terms.en.esm.js"],"shop-button":["modules/v2/loader.shop-button.en.esm.js"],"shop-cart-sync":["modules/v2/loader.shop-cart-sync.en.esm.js"],"shop-cash-offers":["modules/v2/loader.shop-cash-offers.en.esm.js"],"shop-follow-button":["modules/v2/loader.shop-follow-button.en.esm.js"],"shop-login-button":["modules/v2/loader.shop-login-button.en.esm.js"],"shop-login":["modules/v2/loader.shop-login.en.esm.js"],"shop-toast-manager":["modules/v2/loader.shop-toast-manager.en.esm.js"],"shop-user-recognition":["modules/v2/loader.shop-user-recognition.en.esm.js"]}; 140</script>
vendor: 1 bytes, line 140
140
141<script id="__st">var __st={"a":20948333,"offset":-25200,"reqid":"0c29be46-d4f1-4dd1-a147-33ef4c9ee640-1790984892","pageurl":"solano.com\/pages\/about-solano","s":"pages-224695499","u":"4846703056ac","p":"page","rtyp":"page","rid":224695499};</script>
vendor: 1 bytes, line 141
141
142<script>window.ShopifyPaypalV4VisibilityTracking = true;</script>
vendor: 1 bytes, line 142
142
143<script id="captcha-bootstrap">!function(){'use strict';const t='contact',e='account',n='new_comment',o=[[t,t],['blogs',n],['comments',n],[t,'customer']],c=[[e,'customer_login'],[e,'guest_login'],[e,'recover_customer_password'],[e,'create_customer']],r=t=>t.map((([t,e])=>`form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe',I='https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.5.3.iife.js',D={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=w[L][v],c=o.bindForm;if(c)return c(t,g,e,D).then(n);var r;o.q.push([[t,g,e,D],n]),r=I,A||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:r})),A=!0)});var g,I,D;w[L]=w[L]||{},w[L][v]=w[L][v]||{},w[L][v].q=[],w[L][y]=w[L][y]||{},w[L][y].protect=function(t,e){n(t,void 0,e),T(t)},Object.freeze(w[L][y]),function(t,e,n,w,h,L){const[v,y,A,g]=function(t,e,n){const i=e?o:[],u=t?c:[],d=[...i,...u],f=r(d),m=r(i),_=r(d.filter((([t,e])=>n.includes(e))));return[a(f),a(m),a(_),s()]}(w,h,L),I=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},D=t=>v().includes(t);t.addEventListener('submit',(t=>{const e=I(t);if(!e)return;const n=D(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=_(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!f())return;!function(t){const e=f();if(!e)return;const n=_(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){_(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:u})),t.elements[u].value=e}(t,e),function(t,e){const n=f();if(!n)return;const o=[...t.querySelectorAll(`input[type='${i}']`)].map((({name:t})=>t)),c=[...d,...o],r={};for(const[a,s]of new FormData(t).entries())c.includes(a)||(r[a]=s);n.setItem(e,JSON.stringify({[m]:1,action:t.action,data:r}))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const S=(t,e)=>{t&&!t.dataset[E]&&(n(t,e.some((e=>e===t))),T(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=I(t);D(e)&&S(e,y())}));const B=e.get('form_key'),M=e.get(l),P=B&&M;t.addEventListener('DOMContentLoaded',(()=>{const t=y();if(P)for(const e of t)e.elements[l].value===M&&p(e,B);[...new Set([...A(),...v().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>S(e,t)))}))}(h,new URLSearchParams(w.location.search),n,t,e,['guest_login'])})(!0,!0)}();</script>
vendor: 1 bytes, line 143
143
144<script integrity="sha256-JjoPp5ZfB1sSAs5SQaol1x1GgvveM+BgmRzyDexInEQ=" data-source-attribution="shopify.loadfeatures" defer="defer" src="//solano.com/cdn/shopifycloud/storefront/assets/storefront/load_feature-1bd60354.js" crossorigin="anonymous"></script>
vendor: 1 bytes, line 144
144
145<script>(function () {var userAgent = navigator.userAgent;var platform = navigator.platform;var maxTouchPoints = navigator.maxTouchPoints || 0;var isIOS = /iPad|iPhone|iPod/.test(platform) || (platform === 'MacIntel' && maxTouchPoints > 1);var isMacSafari = platform.indexOf('Mac') === 0 && /Safari/.test(userAgent) && !/Chrome|Chromium|CriOS|FxiOS|Edg|OPR|Android/.test(userAgent);var isAppleSafari = isIOS || isMacSafari;if (isAppleSafari) {fetch('/sf_private_access_tokens' + location.search).catch(function () {});}function browserMajorVersion(pattern) {var match = userAgent.match(pattern);return match ? parseInt(match[1], 10) : null;}function shouldLoadAutosizesPolyfill() {if (!window.PerformanceObserver?.supportedEntryTypes?.includes('paint')) {return false;}var chromeVersion = browserMajorVersion(/Chrome\/(\d+)/);if (chromeVersion !== null) {return chromeVersion < 126;}var firefoxVersion = browserMajorVersion(/Firefox\/(\d+)/);if (firefoxVersion !== null) {return firefoxVersion < 150;}var safariVersion = isAppleSafari ? browserMajorVersion(/Version\/(\d+).*Safari\//) : null;if (safariVersion !== null) {return safariVersion < 27;}return true;}if (shouldLoadAutosizesPolyfill()) {var autosizesScript = document.createElement('script');autosizesScript.async = true;autosizesScript.crossOrigin = 'anonymous';autosizesScript.src = "//solano.com/cdn/shopifycloud/storefront/assets/storefront/autosizes-84416378.js";(document.head || document.documentElement).appendChild(autosizesScript);}window.ShopifyAnalytics = window.ShopifyAnalytics || {};window.ShopifyAnalytics.performance = window.ShopifyAnalytics.performance || {};(function () {var LONG_FRAME_THRESHOLD = 50;var longAnimationFrames = [];var activeRafId = null;function collectLongFrames() {var previousTime = null;function rafMonitor(now) {if (activeRafId === null) {return;}var delta = now - previousTime;if (delta > LONG_FRAME_THRESHOLD) {longAnimationFrames.push({startTime: previousTime,endTime: now,});}previousTime = now;activeRafId = requestAnimationFrame(rafMonitor);}previousTime = performance.now();activeRafId = requestAnimationFrame(rafMonitor);}if (!window.PerformanceObserver?.supportedEntryTypes?.includes('long-animation-frame')) {collectLongFrames();var timeoutId = setTimeout(function () {cancelAnimationFrame(activeRafId);}, 10000);window.ShopifyAnalytics.performance.getLongAnimationFrames = function (stopCollection) {if (stopCollection === undefined) {stopCollection = false;}if (stopCollection) {clearTimeout(timeoutId);cancelAnimationFrame(activeRafId);}return longAnimationFrames;};}})();})();</script>
145<script crossorigin="anonymous" defer="defer" src="//solano.com/cdn/shopifycloud/storefront/assets/shopify_pay/storefront-616277c7.js?v=20250812"></script>
vendor: 1 bytes, line 145
145
146<script id="shopify-origin-trials" async="async" integrity="sha256-qJbe/jEZBHtr5W/BlA2cKAz3vkXu6vJQyLjgvgCC86g=" src="//cdn.shopify.com/shopifycloud/storefront/assets/storefront/origin_trials-318ab40a.js" crossorigin="anonymous" onload="window.__shopifyOriginTrialsDone = true" onerror="window.__shopifyOriginTrialsDone = true"></script>
vendor: 1 bytes, line 146
146
147<script> 148 window.Shopify = window.Shopify || {}; 149 window.Shopify.MCP = window.Shopify.MCP || {}; 150 window.Shopify.MCP.enabled = true; 151 window.Shopify.MCP.shop = "solano-press-books.myshopify.com"; 152 window.Shopify.MCP.mcpEndpoint = "https:\/\/solano.com\/api\/mcp"; 153 window.Shopify.MCP.tools = [{"name":"search_shop_policies_and_faqs","description":"Used to get facts about the stores policies, products, or services.\nSome examples of questions you can ask are:\n - What is your return policy?\n - What is your shipping policy?\n - What is your phone number?\n - What are your hours of operation?\"\n","inputSchema":{"$schema":"https:\/\/json-schema.org\/draft\/2020-12\/schema","type":"object","properties":{"query":{"type":"string","description":"A natural language query."},"context":{"type":"string","description":"Additional information about the request such as user demographics, mood, location, or other relevant details that could help in tailoring the response appropriately."}},"required":["query"]}}]; 154</script>
vendor: 1 bytes, line 154
154
155<script>(()=>{var d="shopify:webmcp_adapter_loaded",n=Symbol.for("shopify.webmcp_adapter_loading");function s(c,a,{win:r=window,doc:o=document}={}){function p(){try{return r.localStorage.getItem(d)==="true"}catch{return!1}}function l(){try{r.localStorage.setItem(d,"true")}catch{}}function u(){return typeof(o.modelContext||r.navigator?.modelContext)?.registerTool=="function"}function f(){if(r[n]||!u())return;let t=o.head||o.getElementsByTagName("head")[0];if(!t)return;let e=o.createElement("script");e.type="module",e.crossOrigin="anonymous",a&&(e.integrity=a),e.src=c,e.addEventListener("load",l,{once:!0}),e.addEventListener("error",()=>{r[n]=!1},{once:!0}),t.appendChild(e),r[n]=!0}function _(t){let e=o.getElementById("shopify-origin-trials");if(!e||r.__shopifyOriginTrialsDone){t();return}e.addEventListener("load",t,{once:!0}),e.addEventListener("error",t,{once:!0})}function i(){_(()=>r.setTimeout(f,0))}function m(){o.addEventListener("DOMContentLoaded",i,{once:!0})}p()?i():m()}s("\/\/solano.com\/cdn\/shopifycloud\/storefront\/assets\/storefront\/webmcp-c6b62ece.js","sha256-ke4DDuBjdvea3vxLWxHc9E9nq8zihuG4IfYEGbb77ys=");})(); 156</script>
vendor: 1 bytes, line 156
156
157<script data-source-attribution="shopify.dynamic_checkout.dynamic.init">var Shopify=Shopify||{};Shopify.PaymentButton=Shopify.PaymentButton||{isStorefrontPortableWallets:!0,init:function(){window.Shopify.PaymentButton.init=function(){};var t=document.createElement("script");t.src="https://solano.com/cdn/shopifycloud/portable-wallets/latest/portable-wallets.en.js",t.type="module",document.head.appendChild(t)}}; 158</script>
vendor: 1 bytes, line 158
158
159<script data-source-attribution="shopify.dynamic_checkout.buyer_consent"> 160 function portableWalletsHideBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.add("hidden"),t.setAttribute("aria-hidden","true"),n.removeEventListener("click",e))}function portableWalletsShowBuyerConsent(e){var t=document.getElementById("shopify-buyer-consent"),n=document.getElementById("shopify-subscription-policy-button");t&&n&&(t.classList.remove("hidden"),t.removeAttribute("aria-hidden"),n.addEventListener("click",e))}window.Shopify?.PaymentButton&&(window.Shopify.PaymentButton.hideBuyerConsent=portableWalletsHideBuyerConsent,window.Shopify.PaymentButton.showBuyerConsent=portableWalletsShowBuyerConsent); 161</script>
vendor: 1 bytes, line 161
161
162<script data-source-attribution="shopify.dynamic_checkout.cart.bootstrap">document.addEventListener("DOMContentLoaded",(function(){function t(){return document.querySelector("shopify-accelerated-checkout-cart, shopify-accelerated-checkout")}if(t())Shopify.PaymentButton.init();else{new MutationObserver((function(e,n){t()&&(Shopify.PaymentButton.init(),n.disconnect())})).observe(document.body,{childList:!0,subtree:!0})}})); 163</script>
163 164<link id="shopify-accelerated-checkout-styles" rel="stylesheet" media="screen" href="https://solano.com/cdn/shopifycloud/portable-wallets/latest/accelerated-checkout-backwards-compat.css" crossorigin="anonymous"> 165<style id="shopify-accelerated-checkout-cart"> 166 #shopify-buyer-consent { 167 margin-top: 1em; 168 display: inline-block; 169 width: 100%; 170} 171 172#shopify-buyer-consent.hidden { 173 display: none; 174} 175 176#shopify-subscription-policy-button { 177 background: none; 178 border: none; 179 padding: 0; 180 text-decoration: underline; 181 font-size: inherit; 182 cursor: pointer; 183} 184 185#shopify-subscription-policy-button::before { 186 box-shadow: none; 187} 188 189 </style> 190
191<script id="shopify-cfh-end">window.performance && window.performance.mark && window.performance.mark('shopify.content_for_header.end');</script>
191 192 193 194 195<!--[if lt IE 9]>
196<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript"></script>
196 197<link href="//solano.com/cdn/shop/t/2/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" /> 198<link href="//solano.com/search?q=1dd89a53d9bdf26ddb8fa4f38bcf6856" id="respond-redirect" rel="respond-redirect" />
199<script src="//solano.com/search?q=1dd89a53d9bdf26ddb8fa4f38bcf6856" type="text/javascript"></script>
199 200<![endif]--> 201 202 203
203<script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.3/jquery.min.js" type="text/javascript"></script>
203 204 205 <!--[if (gt IE 9)|!(IE)]><!-->
205<script src="//solano.com/cdn/shop/t/2/assets/lazysizes.min.js?v=172743651710887164711498076894" async="async"></script>
205<!--<![endif]--> 206 <!--[if lte IE 9]>
206<script src="//solano.com/cdn/shop/t/2/assets/lazysizes.min.js?v=172743651710887164711498076894"></script>
206<![endif]--> 207 208 209 210
211<script src="https://cdn.shopify.com/extensions/a424d896-690a-47f2-a3ae-a82565eec47e/preorder-now-wolf-5/assets/preorde_panda.js" type="text/javascript" defer="defer"></script>
211 212<meta property="og:image" content="https://cdn.shopify.com/s/files/1/2094/8333/files/LogoSolano_02.jpg?height=628&pad_color=ffffff&v=1613151794&width=1200" /> 213<meta property="og:image:secure_url" content="https://cdn.shopify.com/s/files/1/2094/8333/files/LogoSolano_02.jpg?height=628&pad_color=ffffff&v=1613151794&width=1200" /> 214<meta property="og:image:width" content="1200" /> 215<meta property="og:image:height" content="628" /> 216<link href="https://monorail-edge.shopifysvc.com" rel="dns-prefetch">
217<script>(function(){if ("sendBeacon" in navigator && "performance" in window) {try {var session_token_from_headers = performance.getEntriesByType('navigation')[0].serverTiming.find(x => x.name == '_s').description;} catch {var session_token_from_headers = undefined;}var session_cookie_matches = document.cookie.match(/_shopify_s=([^;]*)/);var session_token_from_cookie = session_cookie_matches && session_cookie_matches.length === 2 ? session_cookie_matches[1] : "";var session_token = session_token_from_headers || session_token_from_cookie || "";function handle_abandonment_event(e) {var entries = performance.getEntries().filter(function(entry) {return /monorail-edge.shopifysvc.com/.test(entry.name);});if (!window.abandonment_tracked && entries.length === 0) {window.abandonment_tracked = true;var currentMs = Date.now();var navigation_start = performance.timing.navigationStart;var payload = {shop_id: 20948333,url: window.location.href,navigation_start,duration: currentMs - navigation_start,session_token,page_type: "page"};window.navigator.sendBeacon("https://monorail-edge.shopifysvc.com/v1/produce", JSON.stringify({schema_id: "online_store_buyer_site_abandonment/1.1",payload: payload,metadata: {event_created_at_ms: currentMs,event_sent_at_ms: currentMs}}));}}window.addEventListener('pagehide', handle_abandonment_event);}}());</script>
vendor: 1 bytes, line 217
217
218<script> 219 window.__TREKKIE_SHIM_QUEUE = window.__TREKKIE_SHIM_QUEUE || []; 220</script>
vendor: 1 bytes, line 220
220
221<script>(function(){var wpmLoader=function(){"use strict";var e=/Googlebot|Storebot-Google|bingbot|Baiduspider|YandexBot|DuckDuckBot|Slurp|facebookexternalhit|Twitterbot|LinkedInBot|Applebot|AdsBot-Google|Mediapartners-Google|APIs-Google|PetalBot|SemrushBot|AhrefsBot|MJ12bot|DotBot|Acunetix|PerplexityBot|Perplexity-User/i,t=/bytedance/i;function i(){try{var e=document.cookie;if(!e||"string"!=typeof e)return;for(var t=0,i=e.split(";");t<i.length;t++){var n=i[t],r=n.indexOf("=");if(-1!==r){var o=n.slice(0,r).trim();if(o){var a=void 0;try{a=decodeURIComponent(o)}catch(e){a=o}if("_shopify_s"===a){var d=n.slice(r+1).trim();try{return decodeURIComponent(d)}catch(e){return d}}}}}return}catch(e){return}}function n(e){try{"undefined"!=typeof console&&"function"==typeof console.warn&&console.warn(e)}catch(e){}}function r(e,t){return"string"==typeof e&&e.length>0&&e.length<=t?e:void 0}function o(e){var t;switch(null==(t=null==e?void 0:e.navigation)?void 0:t.type){case 0:return"navigate";case 1:return"reload";case 2:return"back_forward";default:return}}function a(){var e,t,i;try{var n=null==(i=null==(t=null==(e=self.ShopifyAnalytics)?void 0:e.lib)?void 0:t.trekkie)?void 0:i.state;return"awaiting-consent"===n||"initialized"===n?n:void 0}catch(e){return}}return function(d,s,u,l){var c=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};try{var p=c.trekkieShim;!0!==p&&"true"!==p||null!=window.__TREKKIE_SHIM_QUEUE||(window.__TREKKIE_SHIM_QUEUE=[])}catch(e){}var f,v,h,y,g=(v=(f={modern:/Edge?\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Firefox\/(1{2}[4-9]|1[2-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Chrom(ium|e)\/(9{2}|\d{3,})\.\d+(\.\d+|)|(Maci|X1{2}).+ Version\/(15\.\d+|(1[6-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(9{2}|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(15[._]\d+|(1[6-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|SamsungBrowser\/([2-9]\d|\d{3,})\.\d+/,legacy:/Edge?\/(1[6-9]|[2-9]\d|\d{3,})\.\d+(\.\d+|)|Firefox\/(5[4-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)|Chrom(ium|e)\/(5[1-9]|[6-9]\d|\d{3,})\.\d+(\.\d+|)([\d.]+$|.*Safari\/(?![\d.]+ Edge\/[\d.]+$))|(Maci|X1{2}).+ Version\/(10\.\d+|(1[1-9]|[2-9]\d|\d{3,})\.\d+)([,.]\d+|)( \(\w+\)|)( Mobile\/\w+|) Safari\/|Chrome.+OPR\/(3[89]|[4-9]\d|\d{3,})\.\d+\.\d+|(CPU[ +]OS|iPhone[ +]OS|CPU[ +]iPhone|CPU IPhone OS|CPU iPad OS)[ +]+(10[._]\d+|(1[1-9]|[2-9]\d|\d{3,})[._]\d+)([._]\d+|)|Android:?[ /-](14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})(\.\d+|)(\.\d+|)|Mobile Safari.+OPR\/([89]\d|\d{3,})\.\d+\.\d+|Android.+Firefox\/(15\d|1[6-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+Chrom(ium|e)\/(14[89]|1[5-9]\d|[2-9]\d{2}|\d{4,})\.\d+(\.\d+|)|Android.+(UC? ?Browser|UCWEB|U3)[ /]?(15\.([5-9]|\d{2,})|(1[6-9]|[2-9]\d|\d{3,})\.\d+)\.\d+|SamsungBrowser\/(5\.\d+|([6-9]|\d{2,})\.\d+)|Android.+MQ{2}Browser\/(14(\.(9|\d{2,})|)|(1[5-9]|[2-9]\d|\d{3,})(\.\d+|))(\.\d+|)|K[Aa][Ii]OS\/(3\.\d+|([4-9]|\d{2,})\.\d+)(\.\d+|)/}).modern,h=f.legacy,(y=navigator.userAgent).match(e)?"bot":y.match(v)?"modern":y.match(h)?"legacy":y.match(t)?"bot":"unknown"),m=function(e){var t,i,n=r(e,128);try{var a=window.performance,d=null==(t=null==a?void 0:a.getEntriesByType)?void 0:t.call(a,"navigation")[0];if(!d)return{requestId:n,navigationType:o(a)};var s="type"in d?r(d.type,64):void 0,u="serverTiming"in d&&Array.isArray(d.serverTiming)?d.serverTiming:[];return{requestId:null!=n?n:r(null==(i=u.find(function(e){return"requestID"===e.name}))?void 0:i.description,128),navigationType:s}}catch(e){return{requestId:n}}}(c.requestId),w=function(e){var t=e.version,r=e.browserTarget,o=e.surface,a=e.shopId,d=e.monorailEndpoint,s=window.location.href;return{emit:function(e){var u=e.status,l=e.errorMsg,c=e.failureReason,p=e.useKeepaliveFallback,f=void 0!==p&&p,v=e.navigationType,h=e.pagehidePersisted,y=e.requestId,g=e.trekkieState;if(d){var m,w;try{var b=(new Date).getTime();m=JSON.stringify({metadata:{event_sent_at_ms:b},events:[{schema_id:"web_pixels_manager_load/3.3",payload:{version:t,bundle_target:r,page_url:s,status:u,surface:o,error_msg:l,failure_reason:c,navigation_type:v,pagehide_persisted:h,request_id:y,trekkie_state:g,shop_id:a,visit_token:i()},metadata:{event_created_at_ms:b}}]})}catch(e){return}try{if("function"==typeof window.navigator.sendBeacon&&-1===(w=window.navigator.userAgent).indexOf("iPhone; CPU iPhone OS 12_")&&-1===w.indexOf("iPad; CPU OS 12_")&&-1===w.indexOf("iPod touch; CPU iPhone OS 12_")&&window.navigator.sendBeacon.bind(window.navigator)(d,m))return}catch(e){}if(f)try{"function"==typeof window.fetch&&window.fetch(d,{method:"POST",headers:{"Content-Type":"text/plain"},body:m,keepalive:!0}
221).catch(function(){})}catch(e){}else try{var _=new XMLHttpRequest;_.open("POST",d,!0),_.setRequestHeader("Content-Type","text/plain"),_.send(m)}catch(e){n("[Web Pixels Manager] Got an unhandled error while logging to Monorail.")}}else n("[Web Pixels Manager] No Monorail endpoint provided, skipping logging.")}}}({version:u,browserTarget:g,surface:d.surface,shopId:d.shopId,monorailEndpoint:d.monorailEndpoint});if(Boolean(null==(_=null==(b=window.Shopify)?void 0:b.analytics)?void 0:_.replayQueue))w.emit({status:"setup-skipped",errorMsg:"replay queue already initialized."});else{var b,_;w.emit({status:"setup-started"}),window.Shopify=window.Shopify||{};var S=window.Shopify;S.analytics=S.analytics||{};var P=S.analytics;P.replayQueue=[],P.publish=function(e,t,i){return P.replayQueue.push([e,t,i]),!0};try{self.performance.mark("wpm:start")}catch(e){}var k,C="modern"===g?"modern":"legacy",E=(null!=l?l:{modern:"",legacy:""})[C],I=[(k={baseUrl:s,hashVersion:u,buildTarget:C}).baseUrl,"/wpm","/b",k.hashVersion,"modern"===k.buildTarget?"m":"l",".js"].join(""),O=!1,T=!1;try{c.browserTarget=g,function(){O=!0;try{window.addEventListener("pagehide",M)}catch(e){O=!1}}(),R(function(){try{R(x)}catch(e){D(e)}}),w.emit({status:"loading",requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()})}catch(e){D(e)}}function U(){var e;if(q(),!function(){var e,t;return Boolean(null==(t=null==(e=window.Shopify)?void 0:e.analytics)?void 0:t.initialized)}()){var t,i,n;try{if("function"!=typeof(null==(e=window.webPixelsManager)?void 0:e.init))return void A();if(!(null!==(n=i=t=window.webPixelsManager.init(d))&&"function"!=typeof n&&Object(n)===n&&"publish"in i&&"function"==typeof i.publish&&"publishCustomEvent"in i&&"function"==typeof i.publishCustomEvent&&"visitor"in i&&"function"==typeof i.visitor))return void A()}catch(e){return void A(e)}var r=window.Shopify.analytics;r.replayQueue.forEach(function(e){var i=e[0],n=e[1],r=e[2];t.publishCustomEvent(i,n,r)}),r.replayQueue=[],r.publish=t.publishCustomEvent,r.visitor=t.visitor,r.initialized=!0}}function A(e){B("manager_api_unavailable",void 0===e?void 0:Q(e))}function x(){B("script_load_failed","".concat(I," has failed to load"))}function B(e,t){T||(T=!0,q(),w.emit({status:"failed",errorMsg:t,failureReason:e,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function M(e){O&&(q(),w.emit({status:"pagehide-while-loading",useKeepaliveFallback:!0,pagehidePersisted:e.persisted,requestId:m.requestId,navigationType:m.navigationType,trekkieState:a()}))}function q(){O=!1;try{window.removeEventListener("pagehide",M)}catch(e){}}function R(e){var t;!function(e){var t=e.src,i=e.async,n=void 0===i||i,r=e.onload,o=e.onerror,a=e.sri,d=e.scriptDataAttributes,s=void 0===d?{}:d,u=document.createElement("script"),l=document.querySelector("head"),c=document.querySelector("body");if(u.async=n,u.src=t,a&&(u.integrity=a,u.crossOrigin="anonymous"),s)for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))try{u.dataset[p]=String(s[p])}catch(e){}if(r&&u.addEventListener("load",r),o&&u.addEventListener("error",o),l)l.appendChild(u);else{if(!c)throw new Error("Did not find a head or body element to append the script");c.appendChild(u)}}({src:I,async:!0,onload:U,onerror:e,sri:(t=E,"string"==typeof t&&/^sha384-[A-Za-z0-9+/=]+$/.test(t)?E:""),scriptDataAttributes:c})}function D(e){B("script_append_failed",Q(e))}function Q(e){return e instanceof Error?e.message:"Unknown error"}}}();wpmLoader({shopId: 20948333,storefrontBaseUrl: "https://solano.com",extensionsBaseUrl: "https://extensions.shopifycdn.com/cdn/shopifycloud/web-pixels-manager",monorailEndpoint: "https://solano.com/.well-known/shopify/monorail/unstable/produce_batch",surface: "storefront-renderer",enabledBetaFlags: ["4c64608a","16072cab","8450a54b","7ee89bf1"],webPixelsConfigList: [{"id":"90112184","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"1","type":"CUSTOM","privacyPurposes":["ANALYTICS"],"name":"Google Analytics tag (migrated)"},{"id":"shopify-app-pixel","configuration":"{}","eventPayloadVersion":"v1","runtimeContext":"STRICT","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"APP","privacyPurposes":["ANALYTICS","MARKETING"]},{"id":"shopify-custom-pixel","eventPayloadVersion":"v1","runtimeContext":"LAX","scriptVersion":"0530","apiClientId":"shopify-pixel","type":"CUSTOM","privacyPurposes":["ANALYTICS","MARKETING"]}],isMerchantRequest: false,initData: {"shop":{"name":"Solano Press Books","paymentSettings":{"currencyCode":"USD"},"myshopifyDomain":"solano-press-books.myshopify.com","countryCode":"US","storefrontUrl":"https:\/\/solano.com"},"customer":null,"cart":null,"checkout":null,"productVariants":[],"products":[],"purchasingCompany":null},},"https://solano.com/cdn","5982071ew7ea472e3p69b68784m2150dfea",{"modern":"","legacy":""},{"trekkieShim":true,"agentContext":true,"apiClientId":"580111","facebookCapiEnabled":"false","themeId":"158940555","themeStoreId":"380","themePublished":"true","eventMetadataId":"49b112c2-99d2-4248-a720-4ce4ba659f4b","pageType":"page","resourceId":"224695499","shopId":"20948333","storefrontBaseUrl":"https:\/\/solano.com","extensionBaseUrl":"https:\/\/extensions.shopifycdn.com\/cdn\/shopifycloud\/web-pixels-manager","surface":"storefront-renderer","enabledBetaFlags":"[\"4c64608a\", \"16072cab\", \"8450a54b\", \"7ee89bf1\"]","isMerchantRequest":"false","hashVersion":"5982071ew7ea472e3p69b68784m2150dfea","publish":"custom","events":"[[\"page_viewed\",{}]]"});})();</script>
221<script> 222 window.ShopifyAnalytics = window.ShopifyAnalytics || {}; 223 window.ShopifyAnalytics.meta = window.ShopifyAnalytics.meta || {}; 224 window.ShopifyAnalytics.meta.currency = 'USD'; 225 var meta = {"page":{"pageType":"page","resourceType":"page","resourceId":224695499,"requestId":"0c29be46-d4f1-4dd1-a147-33ef4c9ee640-1790984892"}}; 226 for (var attr in meta) { 227 window.ShopifyAnalytics.meta[attr] = meta[attr]; 228 } 229</script>
vendor: 1 bytes, line 229
229
230<script class="analytics"> 231 (function () { 232 var customDocumentWrite = function(content) { 233 var jquery = null; 234 235 if (window.jQuery) { 236 jquery = window.jQuery; 237 } else if (window.Checkout && window.Checkout.$) { 238 jquery = window.Checkout.$; 239 } 240 241 if (jquery) { 242 jquery('body').append(content); 243 } 244 }; 245 246 var hasLoggedConversion = function(token) { 247 if (token) { 248 return document.cookie.indexOf('loggedConversion=' + token) !== -1; 249 } 250 return false; 251 } 252 253 var setCookieIfConversion = function(token) { 254 if (token) { 255 var twoMonthsFromNow = new Date(Date.now()); 256 twoMonthsFromNow.setMonth(twoMonthsFromNow.getMonth() + 2); 257 258 document.cookie = 'loggedConversion=' + token + '; expires=' + twoMonthsFromNow; 259 } 260 } 261 262 var trekkie = window.ShopifyAnalytics.lib = window.trekkie = window.trekkie || []; 263 window.ShopifyAnalytics.lib.trekkie = window.trekkie; 264 if (trekkie.integrations) { 265 return; 266 } 267 trekkie.methods = [ 268 'identify', 269 'page', 270 'ready', 271 'track', 272 'trackForm', 273 'trackLink' 274 ]; 275 trekkie.factory = function(method) { 276 return function() { 277 var args = Array.prototype.slice.call(arguments); 278 args.unshift(method); 279 trekkie.push(args); 280 if (method == 'track' || method == 'page') { 281 var pageUrl; 282 try { 283 pageUrl = window.location.href; 284 } catch (e) {} 285 var pageReferrer; 286 try { 287 pageReferrer = document.referrer; 288 } catch (e) {} 289 try { 290 if (window.__TREKKIE_SHIM_QUEUE == null) { 291 window.__TREKKIE_SHIM_QUEUE = []; 292 } 293 window.__TREKKIE_SHIM_QUEUE.push({ 294 from: 'trekkie-stub', 295 method: method, 296 args: args.slice(1), 297 pageContext: { 298 url: pageUrl, 299 referrer: pageReferrer 300 } 301 }); 302 } catch (e) { 303 // no-op 304 } 305 } 306 return trekkie; 307 }; 308 }; 309 for (var i = 0; i < trekkie.methods.length; i++) { 310 var key = trekkie.methods[i]; 311 trekkie[key] = trekkie.factory(key); 312 } 313 trekkie.load = function(config) { 314 trekkie.config = config || {}; 315 trekkie.config.initialDocumentCookie = document.cookie; 316 var first = document.getElementsByTagName('script')[0]; 317var script = document.createElement('script'); 318script.type = 'text/javascript'; 319script.onerror = function(e) { 320 var scriptFallback = document.createElement('script'); 321 scriptFallback.type = 'text/javascript'; 322 scriptFallback.onerror = function(error) { 323 var Monorail = { 324 produce: function produce(monorailDomain, schemaId, payload) { 325 var currentMs = new Date().getTime(); 326 var event = { 327 schema_id: schemaId, 328 payload: payload, 329 metadata: { 330 event_created_at_ms: currentMs, 331 event_sent_at_ms: currentMs 332 } 333 }; 334 return Monorail.sendRequest("https://" + monorailDomain + "/v1/produce", JSON.stringify(event)); 335 }, 336 sendRequest: function sendRequest(endpointUrl, payload) { 337 // Try the sendBeacon API 338 if (window && window.navigator && typeof window.navigator.sendBeacon === 'function' && typeof window.Blob === 'function' && !Monorail.isIos12()) { 339 var blobData = new window.Blob([payload], { 340 type: 'text/plain' 341 }); 342 343 if (window.navigator.sendBeacon(endpointUrl, blobData)) { 344 return true; 345 } // sendBeacon was not successful 346 347 } // XHR beacon 348 349 var xhr = new XMLHttpRequest(); 350 351 try { 352 xhr.open('POST', endpointUrl); 353 xhr.setRequestHeader('Content-Type', 'text/plain'); 354 xhr.send(payload); 355 } catch (e) { 356 console.log(e); 357 } 358 359 return false; 360 }, 361 isIos12: function isIos12() { 362 return window.navigator.userAgent.lastIndexOf('iPhone; CPU iPhone OS 12_') !== -1 || window.navigator.userAgent.lastIndexOf('iPad; CPU OS 12_') !== -1; 363 } 364 }; 365 Monorail.produce('monorail-edge.shopifysvc.com', 366 'trekkie_storefront_load_errors/1.1', 367 {shop_id: 20948333, 368 theme_id: 158940555, 369 app_name: "storefront", 370 context_url: window.location.href, 371 source_url: "//solano.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js"}); 372 373 }; 374 scriptFallback.async = true; 375 scriptFallback.src = '//solano.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 376 first.parentNode.insertBefore(scriptFallback, first); 377}; 378script.async = true; 379script.src = '//solano.com/cdn/s/trekkie.storefront.2f6d7d7ede7d24234881a9cd5f47e679642fa1f6.min.js'; 380first.parentNode.insertBefore(script, first); 381 382 }; 383 trekkie.load( 384 {"Trekkie":{"appName":"storefront","development":false,"defaultAttributes":{"shopId":20948333,"isMerchantRequest":null,"themeId":158940555,"themeCityHash":"6631563929789988105","contentLanguage":"en","currency":"USD","eventMetadataId":"49b112c2-99d2-4248-a720-4ce4ba659f4b"},"isServerSideCookieWritingEnabled":true,"monorailRegion":"shop_domain","enabledBetaFlags":["764d78cb","8450a54b","7ee89bf1","4c64608a"]},"Session Attribution":{},"S2S":{"facebookCapiEnabled":false,"source":"trekkie-storefront-renderer","apiClientId":580111}} 385 ); 386 387 var loaded = false;
388 trekkie.ready(function() { 389 if (loaded) return; 390 loaded = true; 391 392 window.ShopifyAnalytics.lib = window.trekkie; 393 394 var originalDocumentWrite = document.write; 395 document.write = customDocumentWrite; 396 try { window.ShopifyAnalytics.merchantGoogleAnalytics.call(this); } catch(error) {}; 397 document.write = originalDocumentWrite; 398 399 var match = window.location.pathname.match(/checkouts\/(.+)\/(thank_you|post_purchase)/) 400 var token = match? match[1]: undefined; 401 if (!hasLoggedConversion(token)) { 402 setCookieIfConversion(token); 403 404 } 405 }); 406 407 window.ShopifyAnalytics.lib.page(null,{"pageType":"page","resourceType":"page","resourceId":224695499,"requestId":"0c29be46-d4f1-4dd1-a147-33ef4c9ee640-1790984892","shopifyEmitted":true}); 408 409 var eventsListenerScript = document.createElement('script'); 410 eventsListenerScript.async = true; 411 eventsListenerScript.src = "//solano.com/cdn/shopifycloud/storefront/assets/shop_events_listener-4e26a9ce.js"; 412 document.getElementsByTagName('head')[0].appendChild(eventsListenerScript); 413})();</script>
413 414
414<script> 415 if (!window.ga || (window.ga && typeof window.ga !== 'function')) { 416 window.ga = function ga() { 417 (window.ga.q = window.ga.q || []).push(arguments); 418 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 419 window.Shopify.analytics.publish("ga_stub_called", {}, {sendTo: "google_osp_migration"}); 420 } 421 console.error("Shopify's Google Analytics stub called with:", Array.from(arguments), "\nSee https://help.shopify.com/manual/promoting-marketing/pixels/pixel-migration#google for more information."); 422 }; 423 if (window.Shopify && window.Shopify.analytics && typeof window.Shopify.analytics.publish === 'function') { 424 window.Shopify.analytics.publish("ga_stub_initialized", {}, {sendTo: "google_osp_migration"}); 425 } 426 } 427</script>
vendor: 1 bytes, line 427
427
428<script 429 defer 430 src="https://solano.com/cdn/shopifycloud/perf-kit/shopify-perf-kit-3.9.4.min.js" 431 data-application="storefront-renderer" 432 data-shop-id="20948333" 433 data-render-region="gcp-us-central1" 434 data-page-type="page" 435 data-theme-instance-id="158940555" 436 data-theme-name="Minimal" 437 data-theme-version="3.3.0" 438 data-monorail-region="shop_domain" 439 data-resource-timing-sampling-rate="10" 440 data-shs="true" 441 data-shs-beacon="true" 442 data-shs-export-with-fetch="true" 443 data-shs-logs-sample-rate="1" 444 data-shs-beacon-endpoint="https://solano.com/api/collect" 445></script>
445 446<meta name="shopify-y" content="52fe1edb-cf00-462e-9b52-93276a5691ab" data-expiration="1822542492000"><meta name="shopify-s" content="d8060ca4-6152-4b0c-a89f-1f0b14257051" data-expiration="1790986692000"><meta name="new-cookie-storage-activated" content="t"> 447</head> 448 449<body id="about-solano" class="template-page" > 450 451 <div id="shopify-section-header" class="shopify-section"><style> 452 .logo__image-wrapper { 453 max-width: 450px; 454 } 455 /*================= If logo is above navigation ================== */ 456 457 .site-nav { 458 459 border-top: 1px solid #dddddd; 460 border-bottom: 1px solid #dddddd; 461 462 margin-top: 30px; 463 } 464 465 466 .logo__image-wrapper { 467 margin: 0 auto; 468 } 469 470 471 472 /*============ If logo is on the same line as navigation ============ */ 473 474 475 476 477</style> 478 479<div data-section-id="header" data-section-type="header-section"> 480 <div class="header-bar"> 481 <div class="wrapper medium-down--hide"> 482 <div class="post-large--display-table"> 483 484 485 <div class="header-bar__left post-large--display-table-cell"> 486 487 488 489 490 491 492 <div class="header-bar__module header-bar__search"> 493 494 495 496 <form action="/search" method="get" class="header-bar__search-form clearfix" role="search"> 497 498 <button type="submit" class="btn icon-fallback-text header-bar__search-submit"> 499 <span class="icon icon-search" aria-hidden="true"></span> 500 <span class="fallback-text">Search</span> 501 </button> 502 <input type="search" name="q" value="" aria-label="Search" class="header-bar__search-input" placeholder="Search"> 503 </form> 504 505 506 </div> 507 508 509 </div> 510 511 512 <div class="header-bar__right post-large--display-table-cell"> 513 514 515 <ul class="header-bar__module header-bar__module--list"> 516 517 <li> 518 <a href="https://solano.com/customer_authentication/redirect?locale=en&region_country=US" id="customer_login_link">Log in</a> 519 </li> 520 <li>or</li> 521 <li> 522 <a href="https://shopify.com/20948333/account?locale=en®ion_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzb2xhbm8tcHJlc3MtYm9va3MubXlzaG9waWZ5LmNvbSIsImZsYWdzIjpbXSwiZXhwIjoxNzkxNTg5NjkyLCJuYmYiOjE3OTA5ODQ4OTJ9.-575LifVX8izhsFtEG8h9Fdf3Mya0B3DCXqFlzp2VaU" id="customer_register_link">Create account</a> 523 </li> 524 525 </ul> 526 527 528 <div class="header-bar__module"> 529 <span class="header-bar__sep" aria-hidden="true"></span> 530 <a href="/cart" class="cart-page-link"> 531 <span class="icon icon-cart header-bar__cart-icon" aria-hidden="true"></span> 532 </a> 533 </div> 534 535 <div class="header-bar__module"> 536 <a href="/cart" class="cart-page-link"> 537 Cart 538 <span class="cart-count header-bar__cart-count hidden-count">0</span> 539 </a> 540 </div> 541 542 543 544 545 546 </div> 547 </div> 548 </div> 549 <div class="wrapper post-large--hide"> 550 551 <button type="button" class="mobile-nav-trigger" id="MobileNavTrigger" data-menu-state="close"> 552 <span class="icon icon-hamburger" aria-hidden="true"></span> 553 Menu 554 </button> 555 556 <a href="/cart" class="cart-page-link mobile-cart-page-link"> 557 <span class="icon icon-cart header-bar__cart-icon" aria-hidden="true"></span> 558 Cart <span class="cart-count hidden-count">0</span> 559 </a> 560 </div> 561 <ul id="MobileNav" class="mobile-nav post-large--hide"> 562 563 564 565 <li class="mobile-nav__link" aria-haspopup="true"> 566 567 <a href="/collections/featured-titles" class="mobile-nav"> 568 All Titles 569 </a> 570 571 </li> 572 573 574 <li class="mobile-nav__link" aria-haspopup="true"> 575 576 <a href="/pages/e-books" class="mobile-nav"> 577 E-Books 578 </a> 579 580 </li> 581 582 583 <li class="mobile-nav__link" aria-haspopup="true"> 584 585 <a href="/pages/supplements" class="mobile-nav"> 586 Supplements 587 </a> 588 589 </li> 590 591 592 <li class="mobile-nav__link" aria-haspopup="true"> 593 594 <a href="/blogs/news" class="mobile-nav"> 595 News 596 </a> 597 598 </li> 599 600 601 <li class="mobile-nav__link" aria-haspopup="true"> 602 603 <a href="/pages/about-solano" class="mobile-nav"> 604 About Us 605 </a> 606 607 </li> 608 609 610 <li class="mobile-nav__link" aria-haspopup="true"> 611 612 <a href="/pages/book-proposals" class="mobile-nav"> 613 Book Proposals 614 </a> 615 616 </li> 617 618 619 <li class="mobile-nav__link" aria-haspopup="true"> 620 621 <a href="/pages/links" class="mobile-nav"> 622 Resources 623 </a> 624 625 </li> 626 627 628 <li class="mobile-nav__link" aria-haspopup="true"> 629 630 <a href="https://cdn.shopify.com/s/files/1/2094/8333/files/ordform_v11_abc6d957-37b8-4aa0-936d-041b1700de35.pdf?v=1678995847" class="mobile-nav"> 631 Order Form 632 </a> 633 634 </li> 635 636 637 <li class="mobile-nav__link" aria-haspopup="true"> 638 639 <a href="/pages/contact" class="mobile-nav"> 640 Contact 641 </a> 642 643 </li> 644 645 646 <li class="mobile-nav__link" aria-haspopup="true"> 647 648 <a href="/collections/previous-editions" class="mobile-nav"> 649 Previous Editions 650 </a> 651 652 </li> 653 654 655 656 657 <li class="mobile-nav__link"> 658 <a href="https://solano.com/customer_authentication/redirect?locale=en&region_country=US" id="customer_login_link">Log in</a> 659 </li> 660 <li class="mobile-nav__link"> 661 <a href="https://shopify.com/20948333/account?locale=en®ion_country=US&buyer_flags=eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzb2xhbm8tcHJlc3MtYm9va3MubXlzaG9waWZ5LmNvbSIsImZsYWdzIjpbXSwiZXhwIjoxNzkxNTg5NjkyLCJuYmYiOjE3OTA5ODQ4OTJ9.-575LifVX8izhsFtEG8h9Fdf3Mya0B3DCXqFlzp2VaU" id="customer_register_link">Create account</a> 662 </li> 663 664 665 666 <li class="mobile-nav__link"> 667 668 <div class="header-bar__module header-bar__search"> 669 670 671 672 <form action="/search" method="get" class="header-bar__search-form clearfix" role="search"> 673 674 <button type="submit" class="btn icon-fallback-text header-bar__search-submit">
675 <span class="icon icon-search" aria-hidden="true"></span> 676 <span class="fallback-text">Search</span> 677 </button> 678 <input type="search" name="q" value="" aria-label="Search" class="header-bar__search-input" placeholder="Search"> 679 </form> 680 681 682 </div> 683 684 </li> 685 686</ul> 687 688 </div> 689 690 <header class="site-header" role="banner"> 691 <div class="wrapper"> 692 693 694 <div class="grid--full"> 695 <div class="grid__item"> 696 697 <div class="h1 site-header__logo" itemscope itemtype="http://schema.org/Organization"> 698 699 700 <noscript> 701 702 <div class="logo__image-wrapper"> 703 <img src="//solano.com/cdn/shop/files/LogoSolano_02_450x.jpg?v=1613151794" alt="Solano Press Books" /> 704 </div> 705 </noscript> 706 <div class="logo__image-wrapper supports-js"> 707 <a href="/" itemprop="url" style="padding-top:36.59003831417624%;"> 708 709 <img class="logo__image lazyload" 710 src="//solano.com/cdn/shop/files/LogoSolano_02_300x300.jpg?v=1613151794" 711 data-src="//solano.com/cdn/shop/files/LogoSolano_02_{width}x.jpg?v=1613151794" 712 data-widths="[120, 180, 360, 540, 720, 900, 1080, 1296, 1512, 1728, 1944, 2048]" 713 data-aspectratio="2.7329842931937174" 714 data-sizes="auto" 715 alt="Solano Press Books" 716 itemprop="logo"> 717 </a> 718 </div> 719 720 721 </div> 722 723 724 </div> 725 </div> 726 <div class="grid--full medium-down--hide"> 727 <div class="grid__item"> 728 729<ul class="site-nav" role="navigation" id="AccessibleNav"> 730 731 732 733 734 <li > 735 <a href="/collections/featured-titles" class="site-nav__link">All Titles</a> 736 </li> 737 738 739 740 741 742 <li > 743 <a href="/pages/e-books" class="site-nav__link">E-Books</a> 744 </li> 745 746 747 748 749 750 <li > 751 <a href="/pages/supplements" class="site-nav__link">Supplements</a> 752 </li> 753 754 755 756 757 758 <li > 759 <a href="/blogs/news" class="site-nav__link">News</a> 760 </li> 761 762 763 764 765 766 <li class="site-nav--active"> 767 <a href="/pages/about-solano" class="site-nav__link">About Us</a> 768 </li> 769 770 771 772 773 774 <li > 775 <a href="/pages/book-proposals" class="site-nav__link">Book Proposals</a> 776 </li> 777 778 779 780 781 782 <li > 783 <a href="/pages/links" class="site-nav__link">Resources</a> 784 </li> 785 786 787 788 789 790 <li > 791 <a href="https://cdn.shopify.com/s/files/1/2094/8333/files/ordform_v11_abc6d957-37b8-4aa0-936d-041b1700de35.pdf?v=1678995847" class="site-nav__link">Order Form</a> 792 </li> 793 794 795 796 797 798 <li > 799 <a href="/pages/contact" class="site-nav__link">Contact</a> 800 </li> 801 802 803 804 805 806 <li > 807 <a href="/collections/previous-editions" class="site-nav__link">Previous Editions</a> 808 </li> 809 810 811</ul> 812 813 </div> 814 </div> 815 816 817 </div> 818 </header> 819</div> 820 821</div> 822 823 <main class="wrapper main-content" role="main"> 824 <div class="grid"> 825 <div class="grid__item"> 826 <div class="grid"> 827 828 <div class="grid__item post-large--two-thirds push--post-large--one-sixth"> 829 830 <div class="section-header"> 831 <h1 class="section-header--title">About Solano</h1> 832 </div> 833 834 <div class="rte"> 835 <div style="margin-bottom: 50px;"><img src="//cdn.shopify.com/s/files/1/2094/8333/files/All-titles-v5_1024x1024.png?v=1503522371" alt="" style="width: 100%;"></div> 836<div style="margin-top: -40px;"> 837<h4 style="margin: 0; text-align: right;">Books That Matter</h4> 838<p style="text-align: right; font-size: 0.9em;">from Solano Press</p> 839</div> 840<div> 841<strong>Solano Press Books</strong> is a California publishing house specializing in land use, planning law, urban affairs, and environmental subjects. Our publications have earned a reputation for being definitive references on a wide variety of land use and land use-related legal matters. Valuable not only as important technical references, many of our publications offer readers detailed guidance on policy matters and instruction on implementing and complying with specific programs and procedures.</div> 842<hr> 843<div> 844<img src="//cdn.shopify.com/s/files/1/2094/8333/files/planning-meeting_free_to_reuse_commercially_medium.jpg?v=1502834265" alt="" style="float: right; padding-left: 20px;"> 845<p>People who use our books include students of California planning and public policy, interested citizen activists, attorneys and judges, city and county planners, environmental specialists, geologists, ecologists, transportation planners, engineers, city managers, real estate developers, and specialists in economic development and community development.</p> 846</div> 847<hr> 848<div> 849<div style="text-align: left; float: left; padding-right: 20px;"> 850<img src="//cdn.shopify.com/s/files/1/2094/8333/files/WarrenPortrait_01_medium.jpg?v=1500501922" alt="Warren W. Jones, Founder of Solano Press Books"> 851<h4 style="margin: 0;">Warren W. Jones</h4> 852<p style="text-align: right; font-size: 0.9em;">Founder | Solano Press</p> 853</div> 854<p><strong>Warren W. Jones</strong> (1929-2007) was a city planning consultant and instructor who founded Solano Press Books in 1985. His long and varied career began in 1957, when he received a master's degree in city planning from the University of California at Berkeley. He worked for the City of Oakland and s
854oon after established a planning consulting firm in Berkeley, California. Warren was a pioneer in the California planning education field. He founded UC Berkeley Extension's planning program in 1972 and also taught at the UC Berkeley Department of City and Regional Planning. Solano Press Books evolved from Warren's experiences at UC Berkeley Extension and his interest in providing practical information that professionals can use on the job. The company began with publication of a single book -- Curtin's California Land Use and Planning Law, an authoritative source cited by the California courts and updated every year since its first edition. Solano Press expanded and flourished over two decades under Warren's leadership. Today, Warren's legacy is carried on by his daughter Ling-Yen Jones and son-in-law Jon Handel.</p> 855</div> 856 </div> 857 858 </div> 859 860</div> 861 862 </div> 863 </div> 864 </main> 865 866 <div id="shopify-section-footer" class="shopify-section"><footer class="site-footer small--text-center" role="contentinfo"> 867 868<div class="wrapper"> 869 870 <div class="grid-uniform"> 871 872 873 874 875 876 877 878 <div class="grid__item post-large--one-sixth medium--one-half"> 879 <h3 class="h4">Newsletter</h3> 880 <p>Sign up for the latest news, offers and styles</p> 881 <div class="form-vertical small--hide"> 882 <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /> 883 884 885 <input type="hidden" name="contact[tags]" value="newsletter"> 886 <input type="email" value="" placeholder="Your email" name="contact[email]" id="Email" class="input-group-field" aria-label="Your email" autocorrect="off" autocapitalize="off"> 887 <input type="submit" class="btn" name="subscribe" id="subscribe" value="Subscribe"> 888 889 </form> 890</div> 891<div class="form-vertical post-large--hide large--hide medium--hide"> 892 <form method="post" action="/contact#contact_form" id="contact_form" accept-charset="UTF-8" class="contact-form"><input type="hidden" name="form_type" value="customer" /><input type="hidden" name="utf8" value="â" /> 893 894 895 <input type="hidden" name="contact[tags]" value="newsletter"> 896 <div class="input-group"> 897 <input type="email" value="" placeholder="Your email" name="contact[email]" id="Email" class="input-group-field" aria-label="Your email" autocorrect="off" autocapitalize="off"> 898 <span class="input-group-btn"> 899 <button type="submit" class="btn" name="commit" id="subscribe">Subscribe</button> 900 </span> 901 </div> 902 903 </form> 904</div> 905 906 </div> 907 908 909 910 911 <div class="grid__item post-large--one-sixth medium--one-half site-footer__links"> 912 <h3 class="h4"><a href="/blogs/news">Latest News</a></h3> 913 914 <p class="h5"><a href="/blogs/news/practical-ceqa-2023-update-now-available-for-download" title="">Practical CEQA 2026 update now available for download</a></p> 915 916 917 918<style> 919 920 921 #ArticleImage-footer--113630806200 { 922 max-width: 370px; 923 max-height: 479px; 924 } 925 #ArticleImageWrapper-footer--113630806200 { 926 max-width: 370px; 927 } 928</style> 929 930 <p> 931 <div id="ArticleImageWrapper-footer--113630806200" class="article__image-wrapper supports-js"> 932 <div style="padding-top:129.45945945945945%;"> 933 <img id="ArticleImage-footer--113630806200" 934 class="article__image lazyload" 935 src="//solano.com/cdn/shop/articles/PracticalCEQAFrontCoverhires_370x_1_57a39fd9-05d9-4716-8f61-5c0f8798ca31_300x300.webp?v=1770175498" 936 data-src="//solano.com/cdn/shop/articles/PracticalCEQAFrontCoverhires_370x_1_57a39fd9-05d9-4716-8f61-5c0f8798ca31_{width}x.webp?v=1770175498" 937 data-widths="[90, 120, 150, 180, 360, 480, 600, 750, 940, 1080, 1296]" 938 data-aspectratio="0.7724425887265136" 939 data-sizes="auto" 940 alt="Practical CEQA 2026 update now available for download"> 941 </div> 942 </div> 943 </p> 944 945 <noscript> 946 <p><a href="/blogs/news/practical-ceqa-2023-update-now-available-for-download" title="">
946<img src="//solano.com/cdn/shop/articles/PracticalCEQAFrontCoverhires_370x_1_57a39fd9-05d9-4716-8f61-5c0f8798ca31_large.webp?v=1770175498" alt="Practical CEQA 2026 update now available for download" class="article__image" /></a></p> 947 </noscript> 948 949 950 <p>Practical CEQA: A Stepwise Guide to California Environmental Quality Act Compliance, 2026 supplement by Antero Rivasplata and Greta Brownlow is now available to download from our Supplements page. The update...</p> 951 952 </div> 953 954 955 956 957 <div class="grid__item post-large--one-sixth medium--one-half"> 958 <h3 class="h4">Partners</h3> 959 <div class="rte"><p>Solano Press is proud to be a sponsor of the following program(s):</p><p><a href="https://californiaplanningfoundation.org/auction/" title="https://californiaplanningfoundation.org/auction/">APA California Planning Foundation Auction</a>, supporting scholarships for planning students</p><p><a href="http://uclaextension.edu/public-policy/landuse" title="http://uclaextension.edu/public-policy/landuse">UCLA Extension Public Policy Program Annual Land Use Law and Planning Conference</a>, supporting scholarships for individuals to attend UCLA Extension public policy courses and conferences.</p></div> 960 </div> 961 962 963 964 965 <div class="grid__item post-large--one-sixth medium--one-half"> 966 <h3 class="h4">Shipping Notice</h3> 967 <div class="rte"><p>International orders (outside US and Canada) cannot be processed online. Please contact us by phone, or e-mail to place orders.</p><p></p><p>Books are shipped from our offices in Point Arena, California.</p><p></p><p><a href="/pages/contact" title="Contact">Learn More</a></p></div> 968 </div> 969 970 971 972 973 <div class="grid__item post-large--one-sixth medium--one-half"> 974 <h3 class="h4">Contact us</h3> 975 <div class="rte"><p>If you need personalized service please email us at <a href="mailto:[email protected]">[email protected]</a><br/>or call Katherine at <em>(800) 931-9373</em> and we will be happy to help you.</p></div> 976 </div> 977 978 979 980 981 <div class="grid__item post-large--one-sixth medium--one-half"> 982 <h3 class="h4">Follow Us</h3> 983 984 <ul class="inline-list social-icons"> 985 986 987 <li> 988 <a class="icon-fallback-text" href="https://www.facebook.com/pages/category/Bookstore/Solano-Press-Books-142648795806743/" title="Solano Press Books on Facebook"> 989 <span class="icon icon-facebook" aria-hidden="true"></span> 990 <span class="fallback-text">Facebook</span> 991 </a> 992 </li> 993 994 995 996 997 998 999 1000 1001 1002 1003</ul> 1004 1005 </div> 1006 1007 1008 1009 </div> 1010 1011 <hr class="hr--small hr--clear"> 1012 1013 <div class="grid"> 1014 <div class="grid__item text-center"> 1015 <p>Solano logo designed by Shinga Shell</p> 1016 <p class="site-footer__links">Copyright © 2026, <a href="/" title="">Solano Press Books</a>. <a href="https://andmoorestudios.xyz" title="">Powered by And Moore Studios</a></p> 1017 </div> 1018 </div> 1019 1020 1021 1022 <div class="grid"> 1023 <div class="grid__item text-center"> 1024 1025 <ul class="inline-list payment-icons"> 1026 1027 1028 <li> 1029 <span class="icon-fallback-text"> 1030 <span class="icon icon-american_express" aria-hidden="true"></span> 1031 <span class="fallback-text">american express</span> 1032 </span> 1033 </li> 1034 1035 1036 1037 <li> 1038 <span class="icon-fallback-text"> 1039 <span class="icon icon-apple_pay" aria-hidden="true"></span> 1040 <span class="fallback-text">apple pay</span> 1041 </span> 1042 </li> 1043 1044 1045 1046 <li> 1047 <span class="icon-fallback-text"> 1048 <span class="icon icon-diners_club" aria-hidden="true"></span> 1049 <span class="fallback-text">
1049diners club</span> 1050 </span> 1051 </li> 1052 1053 1054 1055 <li> 1056 <span class="icon-fallback-text"> 1057 <span class="icon icon-discover" aria-hidden="true"></span> 1058 <span class="fallback-text">discover</span> 1059 </span> 1060 </li> 1061 1062 1063 1064 <li> 1065 <span class="icon-fallback-text"> 1066 <span class="icon icon-master" aria-hidden="true"></span> 1067 <span class="fallback-text">master</span> 1068 </span> 1069 </li> 1070 1071 1072 1073 1074 1075 <li> 1076 <span class="icon-fallback-text"> 1077 <span class="icon icon-visa" aria-hidden="true"></span> 1078 <span class="fallback-text">visa</span> 1079 </span> 1080 </li> 1081 1082 1083 </ul> 1084 </div> 1085 </div> 1086 1087 1088</div> 1089 1090</footer> 1091 1092 1093</div> 1094 1095
1095<script src="//solano.com/cdn/shop/t/2/assets/theme.js?v=28804185256239678001498076895" type="text/javascript"></script>
1095 1096 1097<div id="shopify-block-AbGRNWFRpbUt4QTQra__6986766168588894248" class="shopify-block shopify-app-block"> 1098</div>
1098<script src="https://cdn.shopify.com/storefront/standard-actions.js" type="module" data-source-attribution="shopify.standard_actions"></script>
1098 1099</body> 1100</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.